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
774e2bd2
Commit
774e2bd2
authored
18 years ago
by
tsmith/tim@siva.hindu.god
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal:/home/bk/mysql-5.1-maint
into siva.hindu.god:/usr/home/tim/m/bk/tmp/51-mrg50
parents
f2508480
52c01e88
Changes
37
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
610 additions
and
341 deletions
+610
-341
dbug/Makefile.am
dbug/Makefile.am
+2
-1
include/mysql_com.h
include/mysql_com.h
+4
-1
libmysql/mytest.c
libmysql/mytest.c
+138
-285
mysql-test/include/loaddata_autocom.inc
mysql-test/include/loaddata_autocom.inc
+23
-0
mysql-test/r/ctype_utf8.result
mysql-test/r/ctype_utf8.result
+13
-0
mysql-test/r/limit.result
mysql-test/r/limit.result
+14
-0
mysql-test/r/loaddata_autocom_innodb.result
mysql-test/r/loaddata_autocom_innodb.result
+21
-0
mysql-test/r/loaddata_autocom_ndb.result
mysql-test/r/loaddata_autocom_ndb.result
+23
-0
mysql-test/r/query_cache.result
mysql-test/r/query_cache.result
+6
-0
mysql-test/r/range.result
mysql-test/r/range.result
+45
-0
mysql-test/r/rpl_ndb_innodb_trans.result
mysql-test/r/rpl_ndb_innodb_trans.result
+103
-0
mysql-test/t/ctype_utf8.test
mysql-test/t/ctype_utf8.test
+17
-0
mysql-test/t/limit.test
mysql-test/t/limit.test
+10
-0
mysql-test/t/loaddata_autocom_innodb.test
mysql-test/t/loaddata_autocom_innodb.test
+4
-0
mysql-test/t/loaddata_autocom_ndb.test
mysql-test/t/loaddata_autocom_ndb.test
+4
-0
mysql-test/t/range.test
mysql-test/t/range.test
+29
-0
mysql-test/t/rpl_ndb_innodb_trans-slave.opt
mysql-test/t/rpl_ndb_innodb_trans-slave.opt
+1
-0
mysql-test/t/rpl_ndb_innodb_trans.test
mysql-test/t/rpl_ndb_innodb_trans.test
+66
-0
sql-common/client.c
sql-common/client.c
+3
-3
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+8
-1
sql/item_sum.cc
sql/item_sum.cc
+3
-1
sql/log.h
sql/log.h
+1
-1
sql/mysql_priv.h
sql/mysql_priv.h
+2
-1
sql/opt_range.cc
sql/opt_range.cc
+8
-1
sql/slave.h
sql/slave.h
+1
-1
sql/sp.cc
sql/sp.cc
+5
-4
sql/sp_head.cc
sql/sp_head.cc
+3
-3
sql/sql_acl.cc
sql/sql_acl.cc
+5
-5
sql/sql_lex.cc
sql/sql_lex.cc
+4
-4
sql/sql_lex.h
sql/sql_lex.h
+7
-1
sql/sql_load.cc
sql/sql_load.cc
+0
-5
sql/sql_parse.cc
sql/sql_parse.cc
+9
-8
sql/sql_repl.h
sql/sql_repl.h
+1
-1
sql/sql_select.cc
sql/sql_select.cc
+14
-7
sql/sql_yacc.yy
sql/sql_yacc.yy
+8
-4
sql/table.cc
sql/table.cc
+4
-2
storage/archive/ha_archive.cc
storage/archive/ha_archive.cc
+1
-1
No files found.
dbug/Makefile.am
View file @
774e2bd2
...
...
@@ -22,7 +22,8 @@ noinst_HEADERS = dbug_long.h
libdbug_a_SOURCES
=
dbug.c sanity.c
EXTRA_DIST
=
CMakeLists.txt example1.c example2.c example3.c
\
user.r monty.doc dbug_add_tags.pl
\
my_main.c main.c factorial.c dbug_analyze.c
my_main.c main.c factorial.c dbug_analyze.c
\
CMakeLists.txt
NROFF_INC
=
example1.r example2.r example3.r main.r
\
factorial.r output1.r output2.r output3.r
\
output4.r output5.r
...
...
This diff is collapsed.
Click to expand it.
include/mysql_com.h
View file @
774e2bd2
...
...
@@ -26,6 +26,9 @@
#define USERNAME_LENGTH 16
#define SERVER_VERSION_LENGTH 60
#define SQLSTATE_LENGTH 5
#define SYSTEM_CHARSET_MBMAXLEN 3
#define NAME_BYTE_LEN NAME_LEN*SYSTEM_CHARSET_MBMAXLEN
#define USERNAME_BYTE_LENGTH USERNAME_LENGTH*SYSTEM_CHARSET_MBMAXLEN
/*
USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain
...
...
@@ -33,7 +36,7 @@
MySQL standard format:
user_name_part@host_name_part\0
*/
#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2
#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_
BYTE_
LENGTH + 2
#define LOCAL_HOST "localhost"
#define LOCAL_HOST_NAMEDPIPE "."
...
...
This diff is collapsed.
Click to expand it.
libmysql/mytest.c
View file @
774e2bd2
/*C4*/
/*C4*/
/****************************************************************/
/* Author: Jethro Wright, III TS : 3/ 4/1998 9:15 */
/* Date: 02/18/1998 */
/* mytest.c : do some testing of the libmySQL.DLL.... */
/* */
/* History: */
/* 02/18/1998 jw3 also sprach zarathustra.... */
/****************************************************************/
/****************************************************************/
/* Author: Jethro Wright, III TS : 3/ 4/1998 9:15 */
#include <windows.h>
#include <stdio.h>
#include <string.h>
/* Date: 02/18/1998 */
#include <mysql.h>
/* mytest.c : do some testing of the libmySQL.DLL.... */
#define DEFALT_SQL_STMT "SELECT * FROM db"
#ifndef offsetof
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif
/* */
/* History: */
/********************************************************
**
** main :-
**
********************************************************/
/* 02/18/1998 jw3 also sprach zarathustra.... */
/****************************************************************/
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <mysql.h>
#define DEFALT_SQL_STMT "SELECT * FROM db"
#ifndef offsetof
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif
/********************************************************
**
** main :-
**
********************************************************/
int
main
(
int
argc
,
char
*
argv
[]
)
{
char
szSQL
[
200
],
aszFlds
[
25
][
25
],
szDB
[
50
]
;
int
main
(
int
argc
,
char
*
argv
[]
)
{
char
szSQL
[
200
],
aszFlds
[
25
][
25
],
szDB
[
50
]
;
const
char
*
pszT
;
int
i
,
j
,
k
,
l
,
x
;
MYSQL
*
myData
;
MYSQL_RES
*
res
;
MYSQL_FIELD
*
fd
;
MYSQL_ROW
row
;
//....just curious....
int
i
,
j
,
k
,
l
,
x
;
MYSQL
*
myData
;
MYSQL_RES
*
res
;
MYSQL_FIELD
*
fd
;
MYSQL_ROW
row
;
//....just curious....
printf
(
"sizeof( MYSQL ) == %d
\n
"
,
(
int
)
sizeof
(
MYSQL
)
)
;
if
(
argc
==
2
)
{
strcpy
(
szDB
,
argv
[
1
]
)
;
strcpy
(
szSQL
,
DEFALT_SQL_STMT
)
;
if
(
!
strcmp
(
szDB
,
"--debug"
))
{
strcpy
(
szDB
,
"mysql"
)
;
printf
(
"Some mysql struct information (size and offset):
\n
"
);
if
(
argc
==
2
)
{
strcpy
(
szDB
,
argv
[
1
]
)
;
strcpy
(
szSQL
,
DEFALT_SQL_STMT
)
;
if
(
!
strcmp
(
szDB
,
"--debug"
))
{
strcpy
(
szDB
,
"mysql"
)
;
printf
(
"Some mysql struct information (size and offset):
\n
"
);
printf
(
"net:
\t
%3d %3d
\n
"
,(
int
)
sizeof
(
myData
->
net
),
(
int
)
offsetof
(
MYSQL
,
net
));
printf
(
"host:
\t
%3d %3d
\n
"
,(
int
)
sizeof
(
myData
->
host
),
...
...
@@ -123,200 +74,102 @@ main( int argc, char * argv[] )
(
int
)
offsetof
(
MYSQL
,
free_me
));
printf
(
"options:
\t
%3d %3d
\n
"
,(
int
)
sizeof
(
myData
->
options
),
(
int
)
offsetof
(
MYSQL
,
options
));
puts
(
""
);
}
}
else
if
(
argc
>
2
)
{
strcpy
(
szDB
,
argv
[
1
]
)
;
strcpy
(
szSQL
,
argv
[
2
]
)
;
}
else
{
strcpy
(
szDB
,
"mysql"
)
;
strcpy
(
szSQL
,
DEFALT_SQL_STMT
)
;
}
//....
if
(
(
myData
=
mysql_init
((
MYSQL
*
)
0
))
&&
mysql_real_connect
(
myData
,
NULL
,
NULL
,
NULL
,
NULL
,
MYSQL_PORT
,
NULL
,
0
)
)
{
puts
(
""
);
}
}
else
if
(
argc
>
2
)
{
strcpy
(
szDB
,
argv
[
1
]
)
;
strcpy
(
szSQL
,
argv
[
2
]
)
;
}
else
{
strcpy
(
szDB
,
"mysql"
)
;
strcpy
(
szSQL
,
DEFALT_SQL_STMT
)
;
}
//....
if
(
(
myData
=
mysql_init
((
MYSQL
*
)
0
))
&&
mysql_real_connect
(
myData
,
NULL
,
NULL
,
NULL
,
NULL
,
MYSQL_PORT
,
NULL
,
0
)
)
{
myData
->
reconnect
=
1
;
if
(
mysql_select_db
(
myData
,
szDB
)
<
0
)
{
printf
(
"Can't select the %s database !
\n
"
,
szDB
)
;
mysql_close
(
myData
)
;
return
2
;
}
}
else
{
printf
(
"Can't connect to the mysql server on port %d !
\n
"
,
MYSQL_PORT
)
;
mysql_close
(
myData
)
;
return
1
;
}
//....
if
(
!
mysql_query
(
myData
,
szSQL
)
)
{
res
=
mysql_store_result
(
myData
)
;
i
=
(
int
)
mysql_num_rows
(
res
)
;
l
=
1
;
printf
(
"Query: %s
\n
Number of records found: %ld
\n
"
,
szSQL
,
i
)
;
//....we can get the field-specific characteristics here....
for
(
x
=
0
;
fd
=
mysql_fetch_field
(
res
)
;
x
++
)
strcpy
(
aszFlds
[
x
],
fd
->
name
)
;
//....
while
(
row
=
mysql_fetch_row
(
res
)
)
{
j
=
mysql_num_fields
(
res
)
;
printf
(
"Record #%ld:-
\n
"
,
l
++
)
;
for
(
k
=
0
;
k
<
j
;
k
++
)
printf
(
" Fld #%d (%s): %s
\n
"
,
k
+
1
,
aszFlds
[
k
],
(((
row
[
k
]
==
NULL
)
||
(
!
strlen
(
row
[
k
])))
?
"NULL"
:
row
[
k
]))
;
puts
(
"==============================
\n
"
)
;
}
mysql_free_result
(
res
)
;
}
else
printf
(
"Couldn't execute %s on the server !
\n
"
,
szSQL
)
;
//....
puts
(
"==== Diagnostic info ===="
)
;
pszT
=
mysql_get_client_info
()
;
printf
(
"Client info: %s
\n
"
,
pszT
)
;
//....
pszT
=
mysql_get_host_info
(
myData
)
;
printf
(
"Host info: %s
\n
"
,
pszT
)
;
//....
pszT
=
mysql_get_server_info
(
myData
)
;
printf
(
"Server info: %s
\n
"
,
pszT
)
;
//....
res
=
mysql_list_processes
(
myData
)
;
l
=
1
;
if
(
res
)
{
for
(
x
=
0
;
fd
=
mysql_fetch_field
(
res
)
;
x
++
)
strcpy
(
aszFlds
[
x
],
fd
->
name
)
;
while
(
row
=
mysql_fetch_row
(
res
)
)
{
j
=
mysql_num_fields
(
res
)
;
printf
(
"Process #%ld:-
\n
"
,
l
++
)
;
for
(
k
=
0
;
k
<
j
;
k
++
)
printf
(
" Fld #%d (%s): %s
\n
"
,
k
+
1
,
aszFlds
[
k
],
(((
row
[
k
]
==
NULL
)
||
(
!
strlen
(
row
[
k
])))
?
"NULL"
:
row
[
k
]))
;
puts
(
"==============================
\n
"
)
;
}
}
else
{
printf
(
"Got error %s when retreiving processlist
\n
"
,
mysql_error
(
myData
));
}
//....
res
=
mysql_list_tables
(
myData
,
"%"
)
;
l
=
1
;
for
(
x
=
0
;
fd
=
mysql_fetch_field
(
res
)
;
x
++
)
strcpy
(
aszFlds
[
x
],
fd
->
name
)
;
while
(
row
=
mysql_fetch_row
(
res
)
)
{
j
=
mysql_num_fields
(
res
)
;
printf
(
"Table #%ld:-
\n
"
,
l
++
)
;
for
(
k
=
0
;
k
<
j
;
k
++
)
printf
(
" Fld #%d (%s): %s
\n
"
,
k
+
1
,
aszFlds
[
k
],
(((
row
[
k
]
==
NULL
)
||
(
!
strlen
(
row
[
k
])))
?
"NULL"
:
row
[
k
]))
;
puts
(
"==============================
\n
"
)
;
}
//....
pszT
=
mysql_stat
(
myData
)
;
puts
(
pszT
)
;
//....
mysql_close
(
myData
)
;
return
0
;
}
if
(
mysql_select_db
(
myData
,
szDB
)
<
0
)
{
printf
(
"Can't select the %s database !
\n
"
,
szDB
)
;
mysql_close
(
myData
)
;
return
2
;
}
}
else
{
printf
(
"Can't connect to the mysql server on port %d !
\n
"
,
MYSQL_PORT
)
;
mysql_close
(
myData
)
;
return
1
;
}
//....
if
(
!
mysql_query
(
myData
,
szSQL
)
)
{
res
=
mysql_store_result
(
myData
)
;
i
=
(
int
)
mysql_num_rows
(
res
)
;
l
=
1
;
printf
(
"Query: %s
\n
Number of records found: %ld
\n
"
,
szSQL
,
i
)
;
//....we can get the field-specific characteristics here....
for
(
x
=
0
;
fd
=
mysql_fetch_field
(
res
)
;
x
++
)
strcpy
(
aszFlds
[
x
],
fd
->
name
)
;
//....
while
(
row
=
mysql_fetch_row
(
res
)
)
{
j
=
mysql_num_fields
(
res
)
;
printf
(
"Record #%ld:-
\n
"
,
l
++
)
;
for
(
k
=
0
;
k
<
j
;
k
++
)
printf
(
" Fld #%d (%s): %s
\n
"
,
k
+
1
,
aszFlds
[
k
],
(((
row
[
k
]
==
NULL
)
||
(
!
strlen
(
row
[
k
])))
?
"NULL"
:
row
[
k
]))
;
puts
(
"==============================
\n
"
)
;
}
mysql_free_result
(
res
)
;
}
else
printf
(
"Couldn't execute %s on the server !
\n
"
,
szSQL
)
;
//....
puts
(
"==== Diagnostic info ===="
)
;
pszT
=
mysql_get_client_info
()
;
printf
(
"Client info: %s
\n
"
,
pszT
)
;
//....
pszT
=
mysql_get_host_info
(
myData
)
;
printf
(
"Host info: %s
\n
"
,
pszT
)
;
//....
pszT
=
mysql_get_server_info
(
myData
)
;
printf
(
"Server info: %s
\n
"
,
pszT
)
;
//....
res
=
mysql_list_processes
(
myData
)
;
l
=
1
;
if
(
res
)
{
for
(
x
=
0
;
fd
=
mysql_fetch_field
(
res
)
;
x
++
)
strcpy
(
aszFlds
[
x
],
fd
->
name
)
;
while
(
row
=
mysql_fetch_row
(
res
)
)
{
j
=
mysql_num_fields
(
res
)
;
printf
(
"Process #%ld:-
\n
"
,
l
++
)
;
for
(
k
=
0
;
k
<
j
;
k
++
)
printf
(
" Fld #%d (%s): %s
\n
"
,
k
+
1
,
aszFlds
[
k
],
(((
row
[
k
]
==
NULL
)
||
(
!
strlen
(
row
[
k
])))
?
"NULL"
:
row
[
k
]))
;
puts
(
"==============================
\n
"
)
;
}
}
else
{
printf
(
"Got error %s when retreiving processlist
\n
"
,
mysql_error
(
myData
));
}
//....
res
=
mysql_list_tables
(
myData
,
"%"
)
;
l
=
1
;
for
(
x
=
0
;
fd
=
mysql_fetch_field
(
res
)
;
x
++
)
strcpy
(
aszFlds
[
x
],
fd
->
name
)
;
while
(
row
=
mysql_fetch_row
(
res
)
)
{
j
=
mysql_num_fields
(
res
)
;
printf
(
"Table #%ld:-
\n
"
,
l
++
)
;
for
(
k
=
0
;
k
<
j
;
k
++
)
printf
(
" Fld #%d (%s): %s
\n
"
,
k
+
1
,
aszFlds
[
k
],
(((
row
[
k
]
==
NULL
)
||
(
!
strlen
(
row
[
k
])))
?
"NULL"
:
row
[
k
]))
;
puts
(
"==============================
\n
"
)
;
}
//....
pszT
=
mysql_stat
(
myData
)
;
puts
(
pszT
)
;
//....
mysql_close
(
myData
)
;
return
0
;
}
This diff is collapsed.
Click to expand it.
mysql-test/include/loaddata_autocom.inc
0 → 100644
View file @
774e2bd2
# Test if the engine does autocommit in LOAD DATA INFILE, or not
# (NDB wants to do, others don't).
eval
SET
SESSION
STORAGE_ENGINE
=
$engine_type
;
--
disable_warnings
drop
table
if
exists
t1
;
--
enable_warnings
# NDB does not support the create option 'Binlog of table with BLOB attribute and no PK'
# So use a dummy PK here.
create
table
t1
(
id
int
unsigned
not
null
auto_increment
primary
key
,
a
text
,
b
text
);
start
transaction
;
load
data
infile
'../std_data_ln/loaddata2.dat'
into
table
t1
fields
terminated
by
','
enclosed
by
''''
(
a
,
b
);
commit
;
select
count
(
*
)
from
t1
;
truncate
table
t1
;
start
transaction
;
load
data
infile
'../std_data_ln/loaddata2.dat'
into
table
t1
fields
terminated
by
','
enclosed
by
''''
(
a
,
b
);
rollback
;
select
count
(
*
)
from
t1
;
drop
table
t1
;
This diff is collapsed.
Click to expand it.
mysql-test/r/ctype_utf8.result
View file @
774e2bd2
...
...
@@ -1340,6 +1340,19 @@ select a from t1 group by a;
a
e
drop table t1;
set names utf8;
grant select on test.* to юзер_юзер@localhost;
user()
юзер_юзер@localhost
revoke all on test.* from юзер_юзер@localhost;
drop user юзер_юзер@localhost;
create database имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
use имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
select database();
database()
имя_базы_в_кодировке_утф8_длиной_больше_чем_45
drop database имя_базы_в_кодировке_утф8_длиной_больше_чем_45;
use test;
CREATE TABLE t1(id varchar(20) NOT NULL) DEFAULT CHARSET=utf8;
INSERT INTO t1 VALUES ('xxx'), ('aa'), ('yyy'), ('aa');
SELECT id FROM t1;
...
...
This diff is collapsed.
Click to expand it.
mysql-test/r/limit.result
View file @
774e2bd2
...
...
@@ -76,3 +76,17 @@ a
a
1
drop table t1;
create table t1 (a int);
insert into t1 values (1),(2),(3),(4),(5),(6),(7);
explain select count(*) c FROM t1 WHERE a > 0 ORDER BY c LIMIT 3;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 7 Using where; Using temporary
select count(*) c FROM t1 WHERE a > 0 ORDER BY c LIMIT 3;
c
7
explain select sum(a) c FROM t1 WHERE a > 0 ORDER BY c LIMIT 3;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 7 Using where; Using temporary
select sum(a) c FROM t1 WHERE a > 0 ORDER BY c LIMIT 3;
c
28
This diff is collapsed.
Click to expand it.
mysql-test/r/loaddata_autocom_innodb.result
0 → 100644
View file @
774e2bd2
SET SESSION STORAGE_ENGINE = InnoDB;
drop table if exists t1;
create table t1 (id int unsigned not null auto_increment primary key, a text, b text);
start transaction;
load data infile '../std_data_ln/loaddata2.dat' into table t1 fields terminated by ',' enclosed by '''' (a, b);
Warnings:
Warning 1261 Row 3 doesn't contain data for all columns
commit;
select count(*) from t1;
count(*)
4
truncate table t1;
start transaction;
load data infile '../std_data_ln/loaddata2.dat' into table t1 fields terminated by ',' enclosed by '''' (a, b);
Warnings:
Warning 1261 Row 3 doesn't contain data for all columns
rollback;
select count(*) from t1;
count(*)
0
drop table t1;
This diff is collapsed.
Click to expand it.
mysql-test/r/loaddata_autocom_ndb.result
0 → 100644
View file @
774e2bd2
SET SESSION STORAGE_ENGINE = ndbcluster;
drop table if exists t1;
create table t1 (id int unsigned not null auto_increment primary key, a text, b text);
start transaction;
load data infile '../std_data_ln/loaddata2.dat' into table t1 fields terminated by ',' enclosed by '''' (a, b);
Warnings:
Warning 1261 Row 3 doesn't contain data for all columns
commit;
select count(*) from t1;
count(*)
4
truncate table t1;
start transaction;
load data infile '../std_data_ln/loaddata2.dat' into table t1 fields terminated by ',' enclosed by '''' (a, b);
Warnings:
Warning 1261 Row 3 doesn't contain data for all columns
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
select count(*) from t1;
count(*)
4
drop table t1;
This diff is collapsed.
Click to expand it.
mysql-test/r/query_cache.result
View file @
774e2bd2
...
...
@@ -949,18 +949,24 @@ COUNT(*)
Warnings:
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
Warning 1292 Truncated incorrect DOUBLE value: '20050327 invalid'
Warning 1292 Truncated incorrect DOUBLE value: '20050327 invalid'
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050328 invalid';
COUNT(*)
0
Warnings:
Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 1
Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 1
Warning 1292 Truncated incorrect DOUBLE value: '20050328 invalid'
Warning 1292 Truncated incorrect DOUBLE value: '20050328 invalid'
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 invalid';
COUNT(*)
0
Warnings:
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
Warning 1292 Truncated incorrect DOUBLE value: '20050327 invalid'
Warning 1292 Truncated incorrect DOUBLE value: '20050327 invalid'
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
...
...
This diff is collapsed.
Click to expand it.
mysql-test/r/range.result
View file @
774e2bd2
...
...
@@ -896,3 +896,48 @@ EXPLAIN SELECT * FROM t1 WHERE 0 NOT BETWEEN b AND c;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index_merge idx1,idx2 idx1,idx2 4,4 NULL 4 Using sort_union(idx1,idx2); Using where
DROP TABLE t1;
CREATE TABLE t1 (
item char(20) NOT NULL default '',
started datetime NOT NULL default '0000-00-00 00:00:00',
price decimal(16,3) NOT NULL default '0.000',
PRIMARY KEY (item,started)
) ENGINE=MyISAM;
INSERT INTO t1 VALUES
('A1','2005-11-01 08:00:00',1000),
('A1','2005-11-15 00:00:00',2000),
('A1','2005-12-12 08:00:00',3000),
('A2','2005-12-01 08:00:00',1000);
EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref PRIMARY PRIMARY 20 const 2 Using where
Warnings:
Warning 1292 Incorrect datetime value: '2005-12-01 24:00:00' for column 'started' at row 1
Warning 1292 Incorrect datetime value: '2005-12-01 24:00:00' for column 'started' at row 1
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
item started price
A1 2005-11-01 08:00:00 1000.000
A1 2005-11-15 00:00:00 2000.000
Warnings:
Warning 1292 Incorrect datetime value: '2005-12-01 24:00:00' for column 'started' at row 1
Warning 1292 Incorrect datetime value: '2005-12-01 24:00:00' for column 'started' at row 1
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
item started price
A1 2005-11-01 08:00:00 1000.000
A1 2005-11-15 00:00:00 2000.000
DROP INDEX `PRIMARY` ON t1;
EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
Warnings:
Warning 1292 Incorrect datetime value: '2005-12-01 24:00:00' for column 'started' at row 1
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
item started price
A1 2005-11-01 08:00:00 1000.000
A1 2005-11-15 00:00:00 2000.000
Warnings:
Warning 1292 Incorrect datetime value: '2005-12-01 24:00:00' for column 'started' at row 1
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
item started price
A1 2005-11-01 08:00:00 1000.000
A1 2005-11-15 00:00:00 2000.000
DROP TABLE t1;
This diff is collapsed.
Click to expand it.
mysql-test/r/rpl_ndb_innodb_trans.result
0 → 100644
View file @
774e2bd2
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
create table t1 (a int, unique(a)) engine=ndbcluster;
create table t2 (a int, unique(a)) engine=innodb;
begin;
insert into t1 values(1);
insert into t2 values(1);
rollback;
select count(*) from t1;
count(*)
0
select count(*) from t2;
count(*)
0
select count(*) from t1;
count(*)
0
select count(*) from t2;
count(*)
0
begin;
load data infile '../std_data_ln/rpl_loaddata.dat' into table t2;
Warnings:
Warning 1262 Row 1 was truncated; it contained more data than there were input columns
Warning 1262 Row 2 was truncated; it contained more data than there were input columns
load data infile '../std_data_ln/rpl_loaddata.dat' into table t1;
Warnings:
Warning 1262 Row 1 was truncated; it contained more data than there were input columns
Warning 1262 Row 2 was truncated; it contained more data than there were input columns
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
select count(*) from t1;
count(*)
2
select count(*) from t2;
count(*)
0
select count(*) from t1;
count(*)
2
select count(*) from t2;
count(*)
0
delete from t1;
delete from t2;
begin;
load data infile '../std_data_ln/rpl_loaddata.dat' into table t2;
Warnings:
Warning 1262 Row 1 was truncated; it contained more data than there were input columns
Warning 1262 Row 2 was truncated; it contained more data than there were input columns
load data infile '../std_data_ln/rpl_loaddata.dat' into table t1;
Warnings:
Warning 1262 Row 1 was truncated; it contained more data than there were input columns
Warning 1262 Row 2 was truncated; it contained more data than there were input columns
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
select count(*) from t1;
count(*)
2
select count(*) from t2;
count(*)
0
select count(*) from t1;
count(*)
2
select count(*) from t2;
count(*)
0
delete from t1;
delete from t2;
begin;
insert into t2 values(3),(4);
insert into t1 values(3),(4);
load data infile '../std_data_ln/rpl_loaddata.dat' into table t2;
Warnings:
Warning 1262 Row 1 was truncated; it contained more data than there were input columns
Warning 1262 Row 2 was truncated; it contained more data than there were input columns
load data infile '../std_data_ln/rpl_loaddata.dat' into table t1;
Warnings:
Warning 1262 Row 1 was truncated; it contained more data than there were input columns
Warning 1262 Row 2 was truncated; it contained more data than there were input columns
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
select count(*) from t1;
count(*)
4
select count(*) from t2;
count(*)
0
select count(*) from t1;
count(*)
4
select count(*) from t2;
count(*)
0
drop table t1,t2;
This diff is collapsed.
Click to expand it.
mysql-test/t/ctype_utf8.test
View file @
774e2bd2
...
...
@@ -1069,6 +1069,23 @@ explain select a from t1 group by a;
select
a
from
t1
group
by
a
;
drop
table
t1
;
#
# Bug#20393: User name truncation in mysql client
# Bug#21432: Database/Table name limited to 64 bytes, not chars, problems with multi-byte
#
set
names
utf8
;
#create user юзер_юзер@localhost;
grant
select
on
test
.*
to
юзер_юзер
@
localhost
;
--
exec
$MYSQL
--
default
-
character
-
set
=
utf8
--
user
=
юзер_юзер
-
e
"select user()"
revoke
all
on
test
.*
from
юзер_юзер
@
localhost
;
drop
user
юзер_юзер
@
localhost
;
create
database
имя_базы_в_кодировке_утф8_длиной_больше_чем_45
;
use
имя_базы_в_кодировке_утф8_длиной_больше_чем_45
;
select
database
();
drop
database
имя_базы_в_кодировке_утф8_длиной_больше_чем_45
;
use
test
;
# End of 4.1 tests
#
...
...
This diff is collapsed.
Click to expand it.
mysql-test/t/limit.test
View file @
774e2bd2
...
...
@@ -60,4 +60,14 @@ select 1 as a from t1 union all select 1 from dual limit 1;
(
select
1
as
a
from
t1
)
union
all
(
select
1
from
dual
)
limit
1
;
drop
table
t1
;
#
# Bug #21787: COUNT(*) + ORDER BY + LIMIT returns wrong result
#
create
table
t1
(
a
int
);
insert
into
t1
values
(
1
),(
2
),(
3
),(
4
),(
5
),(
6
),(
7
);
explain
select
count
(
*
)
c
FROM
t1
WHERE
a
>
0
ORDER
BY
c
LIMIT
3
;
select
count
(
*
)
c
FROM
t1
WHERE
a
>
0
ORDER
BY
c
LIMIT
3
;
explain
select
sum
(
a
)
c
FROM
t1
WHERE
a
>
0
ORDER
BY
c
LIMIT
3
;
select
sum
(
a
)
c
FROM
t1
WHERE
a
>
0
ORDER
BY
c
LIMIT
3
;
# End of 4.1 tests
This diff is collapsed.
Click to expand it.
mysql-test/t/loaddata_autocom_innodb.test
0 → 100644
View file @
774e2bd2
--
source
include
/
have_innodb
.
inc
let
$engine_type
=
InnoDB
;
--
source
include
/
loaddata_autocom
.
inc
This diff is collapsed.
Click to expand it.
mysql-test/t/loaddata_autocom_ndb.test
0 → 100644
View file @
774e2bd2
--
source
include
/
have_ndb
.
inc
let
$engine_type
=
ndbcluster
;
--
source
include
/
loaddata_autocom
.
inc
This diff is collapsed.
Click to expand it.
mysql-test/t/range.test
View file @
774e2bd2
...
...
@@ -709,5 +709,34 @@ EXPLAIN SELECT * FROM t1 WHERE 0 NOT BETWEEN b AND c;
DROP
TABLE
t1
;
#
# Bug #16249: different results for a range with an without index
# when a range condition use an invalid datetime constant
#
CREATE
TABLE
t1
(
item
char
(
20
)
NOT
NULL
default
''
,
started
datetime
NOT
NULL
default
'0000-00-00 00:00:00'
,
price
decimal
(
16
,
3
)
NOT
NULL
default
'0.000'
,
PRIMARY
KEY
(
item
,
started
)
)
ENGINE
=
MyISAM
;
INSERT
INTO
t1
VALUES
(
'A1'
,
'2005-11-01 08:00:00'
,
1000
),
(
'A1'
,
'2005-11-15 00:00:00'
,
2000
),
(
'A1'
,
'2005-12-12 08:00:00'
,
3000
),
(
'A2'
,
'2005-12-01 08:00:00'
,
1000
);
EXPLAIN
SELECT
*
FROM
t1
WHERE
item
=
'A1'
AND
started
<=
'2005-12-01 24:00:00'
;
SELECT
*
FROM
t1
WHERE
item
=
'A1'
AND
started
<=
'2005-12-01 24:00:00'
;
SELECT
*
FROM
t1
WHERE
item
=
'A1'
AND
started
<=
'2005-12-02 00:00:00'
;
DROP
INDEX
`PRIMARY`
ON
t1
;
EXPLAIN
SELECT
*
FROM
t1
WHERE
item
=
'A1'
AND
started
<=
'2005-12-01 24:00:00'
;
SELECT
*
FROM
t1
WHERE
item
=
'A1'
AND
started
<=
'2005-12-01 24:00:00'
;
SELECT
*
FROM
t1
WHERE
item
=
'A1'
AND
started
<=
'2005-12-02 00:00:00'
;
DROP
TABLE
t1
;
# End of 5.0 tests
This diff is collapsed.
Click to expand it.
mysql-test/t/rpl_ndb_innodb_trans-slave.opt
0 → 100644
View file @
774e2bd2
--innodb
This diff is collapsed.
Click to expand it.
mysql-test/t/rpl_ndb_innodb_trans.test
0 → 100644
View file @
774e2bd2
# Test of a transaction mixing the two engines
--
source
include
/
have_ndb
.
inc
--
source
include
/
have_innodb
.
inc
--
source
include
/
master
-
slave
.
inc
create
table
t1
(
a
int
,
unique
(
a
))
engine
=
ndbcluster
;
create
table
t2
(
a
int
,
unique
(
a
))
engine
=
innodb
;
begin
;
insert
into
t1
values
(
1
);
insert
into
t2
values
(
1
);
rollback
;
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t2
;
sync_slave_with_master
;
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t2
;
connection
master
;
begin
;
load
data
infile
'../std_data_ln/rpl_loaddata.dat'
into
table
t2
;
load
data
infile
'../std_data_ln/rpl_loaddata.dat'
into
table
t1
;
rollback
;
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t2
;
sync_slave_with_master
;
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t2
;
connection
master
;
delete
from
t1
;
delete
from
t2
;
begin
;
load
data
infile
'../std_data_ln/rpl_loaddata.dat'
into
table
t2
;
load
data
infile
'../std_data_ln/rpl_loaddata.dat'
into
table
t1
;
rollback
;
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t2
;
sync_slave_with_master
;
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t2
;
connection
master
;
delete
from
t1
;
delete
from
t2
;
begin
;
insert
into
t2
values
(
3
),(
4
);
insert
into
t1
values
(
3
),(
4
);
load
data
infile
'../std_data_ln/rpl_loaddata.dat'
into
table
t2
;
load
data
infile
'../std_data_ln/rpl_loaddata.dat'
into
table
t1
;
rollback
;
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t2
;
sync_slave_with_master
;
select
count
(
*
)
from
t1
;
select
count
(
*
)
from
t2
;
connection
master
;
drop
table
t1
,
t2
;
sync_slave_with_master
;
This diff is collapsed.
Click to expand it.
sql-common/client.c
View file @
774e2bd2
...
...
@@ -1753,7 +1753,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
const
char
*
passwd
,
const
char
*
db
,
uint
port
,
const
char
*
unix_socket
,
ulong
client_flag
)
{
char
buff
[
NAME_
LEN
+
USERNAM
E_LENGTH
+
100
];
char
buff
[
NAME_
BYTE_LEN
+
USERNAME_BYT
E_LENGTH
+
100
];
char
*
end
,
*
host_info
;
my_socket
sock
;
in_addr_t
ip_addr
;
...
...
@@ -2212,7 +2212,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
mysql
->
server_status
,
client_flag
));
/* This needs to be changed as it's not useful with big packets */
if
(
user
&&
user
[
0
])
strmake
(
end
,
user
,
USERNAME_LENGTH
);
/* Max user name */
strmake
(
end
,
user
,
USERNAME_
BYTE_
LENGTH
);
/* Max user name */
else
read_user_name
((
char
*
)
end
);
...
...
@@ -2242,7 +2242,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
/* Add database if needed */
if
(
db
&&
(
mysql
->
server_capabilities
&
CLIENT_CONNECT_WITH_DB
))
{
end
=
strmake
(
end
,
db
,
NAME_LEN
)
+
1
;
end
=
strmake
(
end
,
db
,
NAME_
BYTE_
LEN
)
+
1
;
mysql
->
db
=
my_strdup
(
db
,
MYF
(
MY_WME
));
db
=
0
;
}
...
...
This diff is collapsed.
Click to expand it.
sql/ha_ndbcluster.cc
View file @
774e2bd2
...
...
@@ -3986,7 +3986,14 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
if
(
lock_type
!=
F_UNLCK
)
{
DBUG_PRINT
(
"info"
,
(
"lock_type != F_UNLCK"
));
if
(
!
thd
->
transaction
.
on
)
if
(
thd
->
lex
->
sql_command
==
SQLCOM_LOAD
)
{
m_transaction_on
=
FALSE
;
/* Would be simpler if has_transactions() didn't always say "yes" */
thd
->
options
|=
OPTION_STATUS_NO_TRANS_UPDATE
;
thd
->
no_trans_update
=
TRUE
;
}
else
if
(
!
thd
->
transaction
.
on
)
m_transaction_on
=
FALSE
;
else
m_transaction_on
=
thd
->
variables
.
ndb_use_transactions
;
...
...
This diff is collapsed.
Click to expand it.
sql/item_sum.cc
View file @
774e2bd2
...
...
@@ -290,7 +290,9 @@ Item_sum::Item_sum(THD *thd, Item_sum *item):
void
Item_sum
::
mark_as_sum_func
()
{
current_thd
->
lex
->
current_select
->
with_sum_func
=
1
;
SELECT_LEX
*
cur_select
=
current_thd
->
lex
->
current_select
;
cur_select
->
n_sum_items
++
;
cur_select
->
with_sum_func
=
1
;
with_sum_func
=
1
;
}
...
...
This diff is collapsed.
Click to expand it.
sql/log.h
View file @
774e2bd2
...
...
@@ -177,7 +177,7 @@ public:
pthread_mutex_t
LOCK_log
;
char
*
name
;
char
log_file_name
[
FN_REFLEN
];
char
time_buff
[
20
],
db
[
NAME_LEN
+
1
];
char
time_buff
[
20
],
db
[
NAME_
BYTE_
LEN
+
1
];
bool
write_error
,
inited
;
IO_CACHE
log_file
;
enum_log_type
log_type
;
...
...
This diff is collapsed.
Click to expand it.
sql/mysql_priv.h
View file @
774e2bd2
...
...
@@ -584,7 +584,8 @@ void get_default_definer(THD *thd, LEX_USER *definer);
LEX_USER
*
create_default_definer
(
THD
*
thd
);
LEX_USER
*
create_definer
(
THD
*
thd
,
LEX_STRING
*
user_name
,
LEX_STRING
*
host_name
);
LEX_USER
*
get_current_user
(
THD
*
thd
,
LEX_USER
*
user
);
bool
check_string_length
(
LEX_STRING
*
str
,
const
char
*
err_msg
,
uint
max_length
);
bool
check_string_length
(
CHARSET_INFO
*
cs
,
LEX_STRING
*
str
,
const
char
*
err_msg
,
uint
max_length
);
enum
enum_mysql_completiontype
{
ROLLBACK_RELEASE
=-
2
,
ROLLBACK
=
1
,
ROLLBACK_AND_CHAIN
=
7
,
...
...
This diff is collapsed.
Click to expand it.
sql/opt_range.cc
View file @
774e2bd2
...
...
@@ -5427,6 +5427,7 @@ get_mm_leaf(RANGE_OPT_PARAM *param, COND *conf_func, Field *field,
MEM_ROOT
*
alloc
=
param
->
mem_root
;
char
*
str
;
ulong
orig_sql_mode
;
int
err
;
DBUG_ENTER
(
"get_mm_leaf"
);
/*
...
...
@@ -5581,7 +5582,13 @@ get_mm_leaf(RANGE_OPT_PARAM *param, COND *conf_func, Field *field,
(
field
->
type
()
==
FIELD_TYPE_DATE
||
field
->
type
()
==
FIELD_TYPE_DATETIME
))
field
->
table
->
in_use
->
variables
.
sql_mode
|=
MODE_INVALID_DATES
;
if
(
value
->
save_in_field_no_warnings
(
field
,
1
)
<
0
)
err
=
value
->
save_in_field_no_warnings
(
field
,
1
);
if
(
err
>
0
&&
field
->
cmp_type
()
!=
value
->
result_type
())
{
tree
=
0
;
goto
end
;
}
if
(
err
<
0
)
{
field
->
table
->
in_use
->
variables
.
sql_mode
=
orig_sql_mode
;
/* This happens when we try to insert a NULL field in a not null column */
...
...
This diff is collapsed.
Click to expand it.
sql/slave.h
View file @
774e2bd2
...
...
@@ -152,7 +152,7 @@ typedef struct st_master_info
/* the variables below are needed because we can change masters on the fly */
char
master_log_name
[
FN_REFLEN
];
char
host
[
HOSTNAME_LENGTH
+
1
];
char
user
[
USERNAME_LENGTH
+
1
];
char
user
[
USERNAME_
BYTE_
LENGTH
+
1
];
char
password
[
MAX_PASSWORD_LENGTH
+
1
];
my_bool
ssl
;
// enables use of SSL connection if true
char
ssl_ca
[
FN_REFLEN
],
ssl_capath
[
FN_REFLEN
],
ssl_cert
[
FN_REFLEN
];
...
...
This diff is collapsed.
Click to expand it.
sql/sp.cc
View file @
774e2bd2
...
...
@@ -406,15 +406,16 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
{
LEX
*
old_lex
=
thd
->
lex
,
newlex
;
String
defstr
;
char
old_db_buf
[
NAME_LEN
+
1
];
char
old_db_buf
[
NAME_
BYTE_
LEN
+
1
];
LEX_STRING
old_db
=
{
old_db_buf
,
sizeof
(
old_db_buf
)
};
bool
dbchanged
;
ulong
old_sql_mode
=
thd
->
variables
.
sql_mode
;
ha_rows
old_select_limit
=
thd
->
variables
.
select_limit
;
sp_rcontext
*
old_spcont
=
thd
->
spcont
;
char
definer_user_name_holder
[
USERNAME_LENGTH
+
1
];
LEX_STRING
definer_user_name
=
{
definer_user_name_holder
,
USERNAME_LENGTH
};
char
definer_user_name_holder
[
USERNAME_BYTE_LENGTH
+
1
];
LEX_STRING
definer_user_name
=
{
definer_user_name_holder
,
USERNAME_BYTE_LENGTH
};
char
definer_host_name_holder
[
HOSTNAME_LENGTH
+
1
];
LEX_STRING
definer_host_name
=
{
definer_host_name_holder
,
HOSTNAME_LENGTH
};
...
...
@@ -513,7 +514,7 @@ db_create_routine(THD *thd, int type, sp_head *sp)
int
ret
;
TABLE
*
table
;
char
definer
[
USER_HOST_BUFF_SIZE
];
char
old_db_buf
[
NAME_LEN
+
1
];
char
old_db_buf
[
NAME_
BYTE_
LEN
+
1
];
LEX_STRING
old_db
=
{
old_db_buf
,
sizeof
(
old_db_buf
)
};
bool
dbchanged
;
DBUG_ENTER
(
"db_create_routine"
);
...
...
This diff is collapsed.
Click to expand it.
sql/sp_head.cc
View file @
774e2bd2
...
...
@@ -953,7 +953,7 @@ bool
sp_head
::
execute
(
THD
*
thd
)
{
DBUG_ENTER
(
"sp_head::execute"
);
char
old_db_buf
[
NAME_LEN
+
1
];
char
old_db_buf
[
NAME_
BYTE_
LEN
+
1
];
LEX_STRING
old_db
=
{
old_db_buf
,
sizeof
(
old_db_buf
)
};
bool
dbchanged
;
sp_rcontext
*
ctx
;
...
...
@@ -1998,8 +1998,8 @@ sp_head::set_info(longlong created, longlong modified,
void
sp_head
::
set_definer
(
const
char
*
definer
,
uint
definerlen
)
{
char
user_name_holder
[
USERNAME_LENGTH
+
1
];
LEX_STRING
user_name
=
{
user_name_holder
,
USERNAME_LENGTH
};
char
user_name_holder
[
USERNAME_
BYTE_
LENGTH
+
1
];
LEX_STRING
user_name
=
{
user_name_holder
,
USERNAME_
BYTE_
LENGTH
};
char
host_name_holder
[
HOSTNAME_LENGTH
+
1
];
LEX_STRING
host_name
=
{
host_name_holder
,
HOSTNAME_LENGTH
};
...
...
This diff is collapsed.
Click to expand it.
sql/sql_acl.cc
View file @
774e2bd2
...
...
@@ -169,7 +169,7 @@ static byte* acl_entry_get_key(acl_entry *entry,uint *length,
}
#define IP_ADDR_STRLEN (3+1+3+1+3+1+3)
#define ACL_KEY_LENGTH (IP_ADDR_STRLEN+1+NAME_
LEN+1+USERNAM
E_LENGTH+1)
#define ACL_KEY_LENGTH (IP_ADDR_STRLEN+1+NAME_
BYTE_LEN+1+USERNAME_BYT
E_LENGTH+1)
static
DYNAMIC_ARRAY
acl_hosts
,
acl_users
,
acl_dbs
;
static
MEM_ROOT
mem
,
memex
;
...
...
@@ -312,7 +312,7 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
READ_RECORD
read_record_info
;
my_bool
return_val
=
1
;
bool
check_no_resolve
=
specialflag
&
SPECIAL_NO_RESOLVE
;
char
tmp_name
[
NAME_LEN
+
1
];
char
tmp_name
[
NAME_
BYTE_
LEN
+
1
];
int
password_length
;
DBUG_ENTER
(
"acl_load"
);
...
...
@@ -2401,7 +2401,7 @@ static GRANT_NAME *name_hash_search(HASH *name_hash,
const
char
*
user
,
const
char
*
tname
,
bool
exact
)
{
char
helping
[
NAME_
LEN
*
2
+
USERNAM
E_LENGTH
+
3
];
char
helping
[
NAME_
BYTE_LEN
*
2
+
USERNAME_BYT
E_LENGTH
+
3
];
uint
len
;
GRANT_NAME
*
grant_name
,
*
found
=
0
;
HASH_SEARCH_STATE
state
;
...
...
@@ -3308,7 +3308,7 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
{
List_iterator
<
LEX_USER
>
str_list
(
list
);
LEX_USER
*
Str
,
*
tmp_Str
;
char
tmp_db
[
NAME_LEN
+
1
];
char
tmp_db
[
NAME_
BYTE_
LEN
+
1
];
bool
create_new_users
=
0
;
TABLE_LIST
tables
[
2
];
DBUG_ENTER
(
"mysql_grant"
);
...
...
@@ -4012,7 +4012,7 @@ err2:
bool
check_grant_db
(
THD
*
thd
,
const
char
*
db
)
{
Security_context
*
sctx
=
thd
->
security_ctx
;
char
helping
[
NAME_
LEN
+
USERNAM
E_LENGTH
+
2
];
char
helping
[
NAME_
BYTE_LEN
+
USERNAME_BYT
E_LENGTH
+
2
];
uint
len
;
bool
error
=
1
;
...
...
This diff is collapsed.
Click to expand it.
sql/sql_lex.cc
View file @
774e2bd2
...
...
@@ -1531,10 +1531,10 @@ bool st_select_lex::setup_ref_array(THD *thd, uint order_group_num)
*/
Query_arena
*
arena
=
thd
->
stmt_arena
;
return
(
ref_pointer_array
=
(
Item
**
)
arena
->
alloc
(
sizeof
(
Item
*
)
*
(
item_list
.
elements
+
select_n_having_items
+
order_group_num
)
*
5
))
==
0
;
(
Item
**
)
arena
->
alloc
(
sizeof
(
Item
*
)
*
(
n_child_sum_items
+
item_list
.
elements
+
select_n_having_items
+
order_group_num
)
*
5
))
==
0
;
}
...
...
This diff is collapsed.
Click to expand it.
sql/sql_lex.h
View file @
774e2bd2
...
...
@@ -575,6 +575,12 @@ public:
bool
braces
;
/* SELECT ... UNION (SELECT ... ) <- this braces */
/* TRUE when having fix field called in processing of this SELECT */
bool
having_fix_field
;
/* Number of Item_sum-derived objects in this SELECT */
uint
n_sum_items
;
/* Number of Item_sum-derived objects in children and descendant SELECTs */
uint
n_child_sum_items
;
/* explicit LIMIT clause was used */
bool
explicit_limit
;
/*
...
...
@@ -667,7 +673,7 @@ public:
bool
test_limit
();
friend
void
lex_start
(
THD
*
thd
,
const
uchar
*
buf
,
uint
length
);
st_select_lex
()
{}
st_select_lex
()
:
n_sum_items
(
0
),
n_child_sum_items
(
0
)
{}
void
make_empty_select
()
{
init_query
();
...
...
This diff is collapsed.
Click to expand it.
sql/sql_load.cc
View file @
774e2bd2
...
...
@@ -146,10 +146,6 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
MYF
(
0
));
DBUG_RETURN
(
TRUE
);
}
/*
This needs to be done before external_lock
*/
ha_enable_transaction
(
thd
,
FALSE
);
if
(
open_and_lock_tables
(
thd
,
table_list
))
DBUG_RETURN
(
TRUE
);
if
(
setup_tables_and_check_access
(
thd
,
&
thd
->
lex
->
select_lex
.
context
,
...
...
@@ -393,7 +389,6 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
table
->
file
->
extra
(
HA_EXTRA_WRITE_CANNOT_REPLACE
);
table
->
next_number_field
=
0
;
}
ha_enable_transaction
(
thd
,
TRUE
);
if
(
file
>=
0
)
my_close
(
file
,
MYF
(
0
));
free_blobs
(
table
);
/* if pack_blob was used */
...
...
This diff is collapsed.
Click to expand it.
sql/sql_parse.cc
View file @
774e2bd2
...
...
@@ -1047,8 +1047,8 @@ static int check_connection(THD *thd)
char
*
passwd
=
strend
(
user
)
+
1
;
uint
user_len
=
passwd
-
user
-
1
;
char
*
db
=
passwd
;
char
db_buff
[
NAME_
LEN
+
1
];
// buffer to store db in utf8
char
user_buff
[
USERNAME_
LENGTH
+
1
];
// buffer to store user in utf8
char
db_buff
[
NAME_
BYTE_LEN
+
1
];
// buffer to store db in utf8
char
user_buff
[
USERNAME_
BYTE_LENGTH
+
1
];
// buffer to store user in utf8
uint
dummy_errors
;
/*
...
...
@@ -1724,7 +1724,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
password. New clients send the size (1 byte) + string (not null
terminated, so also '\0' for empty string).
*/
char
db_buff
[
NAME_
LEN
+
1
];
// buffer to store db in utf8
char
db_buff
[
NAME_
BYTE_LEN
+
1
];
// buffer to store db in utf8
char
*
db
=
passwd
;
uint
passwd_len
=
thd
->
client_capabilities
&
CLIENT_SECURE_CONNECTION
?
*
passwd
++
:
strlen
(
passwd
);
...
...
@@ -7803,6 +7803,7 @@ LEX_USER *get_current_user(THD *thd, LEX_USER *user)
SYNOPSIS
check_string_length()
cs string charset
str string to be checked
err_msg error message to be displayed if the string is too long
max_length max length
...
...
@@ -7812,13 +7813,13 @@ LEX_USER *get_current_user(THD *thd, LEX_USER *user)
TRUE the passed string is longer than max_length
*/
bool
check_string_length
(
LEX_STRING
*
str
,
const
char
*
err_msg
,
uint
max_length
)
bool
check_string_length
(
CHARSET_INFO
*
cs
,
LEX_STRING
*
str
,
const
char
*
err_msg
,
uint
max_length
)
{
if
(
str
->
length
<=
max_length
)
return
FALSE
;
if
(
cs
->
cset
->
charpos
(
cs
,
str
->
str
,
str
->
str
+
str
->
length
,
max_length
)
>=
str
->
length
)
return
FALSE
;
my_error
(
ER_WRONG_STRING_LENGTH
,
MYF
(
0
),
str
->
str
,
err_msg
,
max_length
);
return
TRUE
;
}
This diff is collapsed.
Click to expand it.
sql/sql_repl.h
View file @
774e2bd2
...
...
@@ -24,7 +24,7 @@ typedef struct st_slave_info
uint32
server_id
;
uint32
rpl_recovery_rank
,
master_id
;
char
host
[
HOSTNAME_LENGTH
+
1
];
char
user
[
USERNAME_LENGTH
+
1
];
char
user
[
USERNAME_
BYTE_
LENGTH
+
1
];
char
password
[
MAX_PASSWORD_LENGTH
+
1
];
uint16
port
;
THD
*
thd
;
...
...
This diff is collapsed.
Click to expand it.
sql/sql_select.cc
View file @
774e2bd2
...
...
@@ -9094,11 +9094,6 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
keyinfo
->
key_length
+=
key_part_info
->
length
;
}
}
else
{
set_if_smaller
(
table
->
s
->
max_rows
,
rows_limit
);
param
->
end_write_records
=
rows_limit
;
}
if
(
distinct
&&
field_count
!=
param
->
hidden_field_count
)
{
...
...
@@ -9113,8 +9108,6 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
null_pack_length
-=
hidden_null_pack_length
;
keyinfo
->
key_parts
=
((
field_count
-
param
->
hidden_field_count
)
+
test
(
null_pack_length
));
set_if_smaller
(
share
->
max_rows
,
rows_limit
);
param
->
end_write_records
=
rows_limit
;
table
->
distinct
=
1
;
share
->
keys
=
1
;
if
(
blob_count
)
...
...
@@ -9169,6 +9162,20 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
0
:
FIELDFLAG_BINARY
;
}
}
/*
Push the LIMIT clause to the temporary table creation, so that we
materialize only up to 'rows_limit' records instead of all result records.
This optimization is not applicable when there is GROUP BY or there is
no GROUP BY, but there are aggregate functions, because both must be
computed for all result rows.
*/
if
(
!
group
&&
!
thd
->
lex
->
current_select
->
with_sum_func
)
{
set_if_smaller
(
table
->
s
->
max_rows
,
rows_limit
);
param
->
end_write_records
=
rows_limit
;
}
if
(
thd
->
is_fatal_error
)
// If end of memory
goto
err
;
/* purecov: inspected */
share
->
db_record_offset
=
1
;
...
...
This diff is collapsed.
Click to expand it.
sql/sql_yacc.yy
View file @
774e2bd2
...
...
@@ -9346,7 +9346,8 @@ user:
$$->host.str= (char *) "%";
$$->host.length= 1;
if (check_string_length(&$$->user, ER(ER_USERNAME), USERNAME_LENGTH))
if (check_string_length(system_charset_info, &$$->user,
ER(ER_USERNAME), USERNAME_LENGTH))
YYABORT;
}
| ident_or_text '@' ident_or_text
...
...
@@ -9356,9 +9357,10 @@ user:
YYABORT;
$$->user = $1; $$->host=$3;
if (check_string_length(&$$->user, ER(ER_USERNAME), USERNAME_LENGTH) ||
check_string_length(&$$->host, ER(ER_HOSTNAME),
HOSTNAME_LENGTH))
if (check_string_length(system_charset_info, &$$->user,
ER(ER_USERNAME), USERNAME_LENGTH) ||
check_string_length(&my_charset_latin1, &$$->host,
ER(ER_HOSTNAME), HOSTNAME_LENGTH))
YYABORT;
}
| CURRENT_USER optional_braces
...
...
@@ -10834,8 +10836,10 @@ subselect_end:
{
LEX *lex=Lex;
lex->pop_context();
SELECT_LEX *child= lex->current_select;
lex->current_select = lex->current_select->return_after_parsing();
lex->nest_level--;
lex->current_select->n_child_sum_items += child->n_sum_items;
};
/**************************************************************************
...
...
This diff is collapsed.
Click to expand it.
sql/table.cc
View file @
774e2bd2
...
...
@@ -2257,7 +2257,7 @@ char *get_field(MEM_ROOT *mem, Field *field)
bool
check_db_name
(
char
*
name
)
{
char
*
start
=
name
;
uint
name_length
=
0
;
// name length in symbols
/* Used to catch empty names and names with end space */
bool
last_char_is_space
=
TRUE
;
...
...
@@ -2277,13 +2277,15 @@ bool check_db_name(char *name)
name
+=
len
;
continue
;
}
name_length
++
;
}
#else
last_char_is_space
=
*
name
==
' '
;
#endif
name_length
++
;
name
++
;
}
return
last_char_is_space
||
(
uint
)
(
name
-
start
)
>
NAME_LEN
;
return
last_char_is_space
||
name_length
>
NAME_LEN
;
}
...
...
This diff is collapsed.
Click to expand it.
storage/archive/ha_archive.cc
View file @
774e2bd2
...
...
@@ -728,7 +728,7 @@ int ha_archive::create(const char *name, TABLE *table_arg,
goto
error
;
}
}
if
(
!
azdopen
(
&
archive
,
create_file
,
O_WRONLY
|
O_BINARY
))
if
(
!
azdopen
(
&
archive
,
dup
(
create_file
)
,
O_WRONLY
|
O_BINARY
))
{
error
=
errno
;
goto
error2
;
...
...
This diff is collapsed.
Click to expand it.
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