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
ed7e869b
Commit
ed7e869b
authored
May 20, 2006
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
parents
ce288ebc
719bfafc
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
387 additions
and
35 deletions
+387
-35
include/my_pthread.h
include/my_pthread.h
+4
-2
include/sslopt-longopts.h
include/sslopt-longopts.h
+6
-6
include/sslopt-vars.h
include/sslopt-vars.h
+12
-7
mysql-test/r/func_str.result
mysql-test/r/func_str.result
+6
-0
mysql-test/r/having.result
mysql-test/r/having.result
+1
-1
mysql-test/r/join_outer.result
mysql-test/r/join_outer.result
+37
-2
mysql-test/r/subselect.result
mysql-test/r/subselect.result
+6
-0
mysql-test/r/variables.result
mysql-test/r/variables.result
+29
-1
mysql-test/r/view.result
mysql-test/r/view.result
+34
-0
mysql-test/t/func_str.test
mysql-test/t/func_str.test
+6
-0
mysql-test/t/join_outer.test
mysql-test/t/join_outer.test
+18
-0
mysql-test/t/subselect.test
mysql-test/t/subselect.test
+9
-0
mysql-test/t/variables.test
mysql-test/t/variables.test
+36
-3
mysql-test/t/view.test
mysql-test/t/view.test
+39
-0
sql/item.cc
sql/item.cc
+11
-1
sql/item.h
sql/item.h
+3
-0
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+27
-6
sql/item_func.cc
sql/item_func.cc
+1
-0
sql/item_strfunc.h
sql/item_strfunc.h
+1
-1
sql/item_subselect.cc
sql/item_subselect.cc
+1
-0
sql/mysql_priv.h
sql/mysql_priv.h
+1
-0
sql/mysqld.cc
sql/mysqld.cc
+4
-2
sql/set_var.cc
sql/set_var.cc
+66
-3
sql/set_var.h
sql/set_var.h
+29
-0
No files found.
include/my_pthread.h
View file @
ed7e869b
...
...
@@ -332,12 +332,14 @@ int sigwait(sigset_t *setp, int *sigp); /* Use our implemention */
we want to make sure that no such flags are set.
*/
#if defined(HAVE_SIGACTION) && !defined(my_sigset)
#define my_sigset(A,B) do { struct sigaction s; sigset_t set; \
#define my_sigset(A,B) do { struct sigaction s; sigset_t set; int rc; \
DBUG_ASSERT((A) != 0); \
sigemptyset(&set); \
s.sa_handler = (B); \
s.sa_mask = set; \
s.sa_flags = 0; \
sigaction((A), &s, (struct sigaction *) NULL); \
rc= sigaction((A), &s, (struct sigaction *) NULL);\
DBUG_ASSERT(rc == 0); \
} while (0)
#elif defined(HAVE_SIGSET) && !defined(my_sigset)
#define my_sigset(A,B) sigset((A),(B))
...
...
include/sslopt-longopts.h
View file @
ed7e869b
...
...
@@ -20,12 +20,6 @@
"Enable SSL for connection (automatically enabled with other flags). Disable with --skip-ssl."
,
(
gptr
*
)
&
opt_use_ssl
,
(
gptr
*
)
&
opt_use_ssl
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"ssl-key"
,
OPT_SSL_KEY
,
"X509 key in PEM format (implies --ssl)."
,
(
gptr
*
)
&
opt_ssl_key
,
(
gptr
*
)
&
opt_ssl_key
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"ssl-cert"
,
OPT_SSL_CERT
,
"X509 cert in PEM format (implies --ssl)."
,
(
gptr
*
)
&
opt_ssl_cert
,
(
gptr
*
)
&
opt_ssl_cert
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"ssl-ca"
,
OPT_SSL_CA
,
"CA file in PEM format (check OpenSSL docs, implies --ssl)."
,
(
gptr
*
)
&
opt_ssl_ca
,
(
gptr
*
)
&
opt_ssl_ca
,
0
,
GET_STR
,
REQUIRED_ARG
,
...
...
@@ -34,9 +28,15 @@
"CA directory (check OpenSSL docs, implies --ssl)."
,
(
gptr
*
)
&
opt_ssl_capath
,
(
gptr
*
)
&
opt_ssl_capath
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"ssl-cert"
,
OPT_SSL_CERT
,
"X509 cert in PEM format (implies --ssl)."
,
(
gptr
*
)
&
opt_ssl_cert
,
(
gptr
*
)
&
opt_ssl_cert
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"ssl-cipher"
,
OPT_SSL_CIPHER
,
"SSL cipher to use (implies --ssl)."
,
(
gptr
*
)
&
opt_ssl_cipher
,
(
gptr
*
)
&
opt_ssl_cipher
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"ssl-key"
,
OPT_SSL_KEY
,
"X509 key in PEM format (implies --ssl)."
,
(
gptr
*
)
&
opt_ssl_key
,
(
gptr
*
)
&
opt_ssl_key
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
#ifdef MYSQL_CLIENT
{
"ssl-verify-server-cert"
,
OPT_SSL_VERIFY_SERVER_CERT
,
"Verify server's
\"
Common Name
\"
in its cert against hostname used when connecting. This option is disabled by default."
,
...
...
include/sslopt-vars.h
View file @
ed7e869b
...
...
@@ -15,13 +15,18 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#ifdef HAVE_OPENSSL
static
my_bool
opt_use_ssl
=
0
;
static
char
*
opt_ssl_key
=
0
;
static
char
*
opt_ssl_cert
=
0
;
static
char
*
opt_ssl_ca
=
0
;
static
char
*
opt_ssl_capath
=
0
;
static
char
*
opt_ssl_cipher
=
0
;
#ifdef SSL_VARS_NOT_STATIC
#define SSL_STATIC
#else
#define SSL_STATIC static
#endif
SSL_STATIC
my_bool
opt_use_ssl
=
0
;
SSL_STATIC
char
*
opt_ssl_ca
=
0
;
SSL_STATIC
char
*
opt_ssl_capath
=
0
;
SSL_STATIC
char
*
opt_ssl_cert
=
0
;
SSL_STATIC
char
*
opt_ssl_cipher
=
0
;
SSL_STATIC
char
*
opt_ssl_key
=
0
;
#ifdef MYSQL_CLIENT
static
my_bool
opt_ssl_verify_server_cert
=
0
;
SSL_STATIC
my_bool
opt_ssl_verify_server_cert
=
0
;
#endif
#endif
mysql-test/r/func_str.result
View file @
ed7e869b
...
...
@@ -1046,4 +1046,10 @@ cast(ltrim(' 20.06 ') as decimal(19,2))
select cast(rtrim(ltrim(' 20.06 ')) as decimal(19,2));
cast(rtrim(ltrim(' 20.06 ')) as decimal(19,2))
20.06
select conv("18383815659218730760",10,10) + 0;
conv("18383815659218730760",10,10) + 0
1.8383815659219e+19
select "18383815659218730760" + 0;
"18383815659218730760" + 0
1.8383815659219e+19
End of 5.0 tests
mysql-test/r/having.result
View file @
ed7e869b
...
...
@@ -12,7 +12,7 @@ explain extended select count(a) as b from t1 where a=0 having b >=0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
Note 1003 select count(`test`.`t1`.`a`) AS `b` from `test`.`t1` where 0 having (
count(`test`.`t1`.`a`)
>= 0)
Note 1003 select count(`test`.`t1`.`a`) AS `b` from `test`.`t1` where 0 having (
`b`
>= 0)
drop table t1;
CREATE TABLE t1 (
raw_id int(10) NOT NULL default '0',
...
...
mysql-test/r/join_outer.result
View file @
ed7e869b
...
...
@@ -1151,8 +1151,8 @@ EXPLAIN
SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
WHERE t1.name LIKE 'A%' OR FALSE;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t
1 index PRIMARY,name name 23 NULL 3 Using where;
Using index
1 SIMPLE t
2 ref fkey fkey 5 test.t1.id 1 Using where; Using index
1 SIMPLE t
2 index NULL fkey 5 NULL 5
Using index
1 SIMPLE t
1 eq_ref PRIMARY PRIMARY 4 test.t2.fkey 1 Using where
DROP TABLE t1,t2;
DROP VIEW IF EXISTS v1,v2;
DROP TABLE IF EXISTS t1,t2;
...
...
@@ -1176,3 +1176,38 @@ a b
3 3
DROP VIEW v1,v2;
DROP TABLE t1,t2;
CREATE TABLE t1 (a int);
CREATE TABLE t2 (b int);
INSERT INTO t1 VALUES (1), (2), (3), (4);
INSERT INTO t2 VALUES (2), (3);
SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.b WHERE (1=1);
a b
1 NULL
2 2
3 3
4 NULL
SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.b WHERE (1 OR 1);
a b
1 NULL
2 2
3 3
4 NULL
SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.b WHERE (0 OR 1);
a b
1 NULL
2 2
3 3
4 NULL
SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.b WHERE (1=1 OR 2=2);
a b
1 NULL
2 2
3 3
4 NULL
SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.b WHERE (1=1 OR 1=0);
a b
1 NULL
2 2
3 3
4 NULL
DROP TABLE t1,t2;
mysql-test/r/subselect.result
View file @
ed7e869b
...
...
@@ -3177,3 +3177,9 @@ ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
ERROR 42S22: Unknown column 'no_such_column' in 'IN/ALL/ANY subquery'
DROP TABLE t1;
create table t1 (i int, j bigint);
insert into t1 values (1, 2), (2, 2), (3, 2);
select * from (select min(i) from t1 where j=(select * from (select min(j) from t1) t2)) t3;
min(i)
1
drop table t1;
mysql-test/r/variables.result
View file @
ed7e869b
...
...
@@ -639,6 +639,35 @@ select @@version, @@version_comment, @@version_compile_machine,
@@version_compile_os;
@@version @@version_comment @@version_compile_machine @@version_compile_os
# # # #
select @@basedir, @@datadir, @@tmpdir;
@@basedir @@datadir @@tmpdir
# # #
show variables like 'basedir';
Variable_name Value
basedir #
show variables like 'datadir';
Variable_name Value
datadir #
show variables like 'tmpdir';
Variable_name Value
tmpdir #
select @@ssl_ca, @@ssl_capath, @@ssl_cert, @@ssl_cipher, @@ssl_key;
@@ssl_ca @@ssl_capath @@ssl_cert @@ssl_cipher @@ssl_key
# # # # #
show variables like 'ssl%';
Variable_name Value
ssl_ca #
ssl_capath #
ssl_cert #
ssl_cipher #
ssl_key #
select @@log_queries_not_using_indexes;
@@log_queries_not_using_indexes
0
show variables like 'log_queries_not_using_indexes';
Variable_name Value
log_queries_not_using_indexes OFF
End of 5.0 tests
set global binlog_cache_size =@my_binlog_cache_size;
set global connect_timeout =@my_connect_timeout;
set global delayed_insert_timeout =@my_delayed_insert_timeout;
...
...
@@ -666,4 +695,3 @@ set global server_id =@my_server_id;
set global slow_launch_time =@my_slow_launch_time;
set global storage_engine =@my_storage_engine;
set global thread_cache_size =@my_thread_cache_size;
End of 5.0 tests
mysql-test/r/view.result
View file @
ed7e869b
...
...
@@ -2660,3 +2660,37 @@ SELECT * FROM v1;
id t COUNT(*)
DROP VIEW v1;
DROP TABLE t1;
CREATE TABLE t1 (i INT, j BIGINT);
INSERT INTO t1 VALUES (1, 2), (2, 2), (3, 2);
CREATE VIEW v1 AS SELECT MIN(j) AS j FROM t1;
CREATE VIEW v2 AS SELECT MIN(i) FROM t1 WHERE j = ( SELECT * FROM v1 );
SELECT * FROM v2;
MIN(i)
1
DROP VIEW v2, v1;
DROP TABLE t1;
CREATE TABLE t1(
fName varchar(25) NOT NULL,
lName varchar(25) NOT NULL,
DOB date NOT NULL,
uID int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO t1(fName, lName, DOB) VALUES
('Hank', 'Hill', '1964-09-29'),
('Tom', 'Adams', '1908-02-14'),
('Homer', 'Simpson', '1968-03-05');
CREATE VIEW v1 AS
SELECT (year(now())-year(DOB)) AS Age
FROM t1 HAVING Age < 75;
SHOW CREATE VIEW v1;
View Create View
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache (year(now()) - year(`t1`.`DOB`)) AS `Age` from `t1` having (`Age` < 75)
SELECT (year(now())-year(DOB)) AS Age FROM t1 HAVING Age < 75;
Age
42
38
SELECT * FROM v1;
Age
42
38
DROP VIEW v1;
DROP TABLE t1;
mysql-test/t/func_str.test
View file @
ed7e869b
...
...
@@ -698,4 +698,10 @@ select cast(rtrim(' 20.06 ') as decimal(19,2));
select
cast
(
ltrim
(
' 20.06 '
)
as
decimal
(
19
,
2
));
select
cast
(
rtrim
(
ltrim
(
' 20.06 '
))
as
decimal
(
19
,
2
));
#
# Bug #13975: "same string" + 0 has 2 different results
#
select
conv
(
"18383815659218730760"
,
10
,
10
)
+
0
;
select
"18383815659218730760"
+
0
;
--
echo
End
of
5.0
tests
mysql-test/t/join_outer.test
View file @
ed7e869b
...
...
@@ -805,3 +805,21 @@ SELECT v1.a, v2. b
DROP
VIEW
v1
,
v2
;
DROP
TABLE
t1
,
t2
;
#
# Bug 19816: LEFT OUTER JOIN with constant ORed predicates in WHERE clause
#
CREATE
TABLE
t1
(
a
int
);
CREATE
TABLE
t2
(
b
int
);
INSERT
INTO
t1
VALUES
(
1
),
(
2
),
(
3
),
(
4
);
INSERT
INTO
t2
VALUES
(
2
),
(
3
);
SELECT
*
FROM
t1
LEFT
JOIN
t2
ON
t1
.
a
=
t2
.
b
WHERE
(
1
=
1
);
SELECT
*
FROM
t1
LEFT
JOIN
t2
ON
t1
.
a
=
t2
.
b
WHERE
(
1
OR
1
);
SELECT
*
FROM
t1
LEFT
JOIN
t2
ON
t1
.
a
=
t2
.
b
WHERE
(
0
OR
1
);
SELECT
*
FROM
t1
LEFT
JOIN
t2
ON
t1
.
a
=
t2
.
b
WHERE
(
1
=
1
OR
2
=
2
);
SELECT
*
FROM
t1
LEFT
JOIN
t2
ON
t1
.
a
=
t2
.
b
WHERE
(
1
=
1
OR
1
=
0
);
DROP
TABLE
t1
,
t2
;
mysql-test/t/subselect.test
View file @
ed7e869b
...
...
@@ -2100,3 +2100,12 @@ CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
SELECT
*
FROM
t1
WHERE
no_such_column
=
ANY
(
SELECT
1
);
DROP
TABLE
t1
;
#
# Bug#19077: A nested materialized derived table is used before being populated.
#
create
table
t1
(
i
int
,
j
bigint
);
insert
into
t1
values
(
1
,
2
),
(
2
,
2
),
(
3
,
2
);
select
*
from
(
select
min
(
i
)
from
t1
where
j
=
(
select
*
from
(
select
min
(
j
)
from
t1
)
t2
))
t3
;
drop
table
t1
;
mysql-test/t/variables.test
View file @
ed7e869b
...
...
@@ -540,7 +540,42 @@ select @@version, @@version_comment, @@version_compile_machine,
@@
version_compile_os
;
#
# Bug #19263: variables.test doesn't clean up after itself (II/II -- restore)
# Bug #1039: make tmpdir and datadir available as @@variables (also included
# basedir)
#
# Don't actually output, since it depends on the system
--
replace_column
1
# 2 # 3 #
select
@@
basedir
,
@@
datadir
,
@@
tmpdir
;
--
replace_column
2
#
show
variables
like
'basedir'
;
--
replace_column
2
#
show
variables
like
'datadir'
;
--
replace_column
2
#
show
variables
like
'tmpdir'
;
#
# Bug #19606: make ssl settings available via SHOW VARIABLES and @@variables
#
# Don't actually output, since it depends on the system
--
replace_column
1
# 2 # 3 # 4 # 5 #
select
@@
ssl_ca
,
@@
ssl_capath
,
@@
ssl_cert
,
@@
ssl_cipher
,
@@
ssl_key
;
--
replace_column
2
#
show
variables
like
'ssl%'
;
#
# Bug #19616: make log_queries_not_using_indexes available in SHOW VARIABLES
# and as @@log_queries_not_using_indexes
#
select
@@
log_queries_not_using_indexes
;
show
variables
like
'log_queries_not_using_indexes'
;
--
echo
End
of
5.0
tests
# This is at the very after the versioned tests, since it involves doing
# cleanup
#
# Bug #19263: variables.test doesn't clean up after itself (II/II --
# restore)
#
set
global
binlog_cache_size
=@
my_binlog_cache_size
;
set
global
connect_timeout
=@
my_connect_timeout
;
...
...
@@ -569,5 +604,3 @@ set global server_id =@my_server_id;
set
global
slow_launch_time
=@
my_slow_launch_time
;
set
global
storage_engine
=@
my_storage_engine
;
set
global
thread_cache_size
=@
my_thread_cache_size
;
--
echo
End
of
5.0
tests
mysql-test/t/view.test
View file @
ed7e869b
...
...
@@ -2528,3 +2528,42 @@ SELECT * FROM v1;
DROP
VIEW
v1
;
DROP
TABLE
t1
;
#
# Bug#19077: A nested materialized view is used before being populated.
#
CREATE
TABLE
t1
(
i
INT
,
j
BIGINT
);
INSERT
INTO
t1
VALUES
(
1
,
2
),
(
2
,
2
),
(
3
,
2
);
CREATE
VIEW
v1
AS
SELECT
MIN
(
j
)
AS
j
FROM
t1
;
CREATE
VIEW
v2
AS
SELECT
MIN
(
i
)
FROM
t1
WHERE
j
=
(
SELECT
*
FROM
v1
);
SELECT
*
FROM
v2
;
DROP
VIEW
v2
,
v1
;
DROP
TABLE
t1
;
#
# Bug #19573: VIEW with HAVING that refers an alias name
#
CREATE
TABLE
t1
(
fName
varchar
(
25
)
NOT
NULL
,
lName
varchar
(
25
)
NOT
NULL
,
DOB
date
NOT
NULL
,
uID
int
unsigned
NOT
NULL
AUTO_INCREMENT
PRIMARY
KEY
);
INSERT
INTO
t1
(
fName
,
lName
,
DOB
)
VALUES
(
'Hank'
,
'Hill'
,
'1964-09-29'
),
(
'Tom'
,
'Adams'
,
'1908-02-14'
),
(
'Homer'
,
'Simpson'
,
'1968-03-05'
);
CREATE
VIEW
v1
AS
SELECT
(
year
(
now
())
-
year
(
DOB
))
AS
Age
FROM
t1
HAVING
Age
<
75
;
SHOW
CREATE
VIEW
v1
;
SELECT
(
year
(
now
())
-
year
(
DOB
))
AS
Age
FROM
t1
HAVING
Age
<
75
;
SELECT
*
FROM
v1
;
DROP
VIEW
v1
;
DROP
TABLE
t1
;
sql/item.cc
View file @
ed7e869b
...
...
@@ -304,6 +304,7 @@ Item::Item():
marker
=
0
;
maybe_null
=
null_value
=
with_sum_func
=
unsigned_flag
=
0
;
decimals
=
0
;
max_length
=
0
;
with_subselect
=
0
;
/* Put item in free list so that we can free all items at end */
THD
*
thd
=
current_thd
;
...
...
@@ -4840,7 +4841,16 @@ void Item_ref::cleanup()
void
Item_ref
::
print
(
String
*
str
)
{
if
(
ref
)
(
*
ref
)
->
print
(
str
);
{
if
((
*
ref
)
->
type
()
!=
Item
::
CACHE_ITEM
&&
ref_type
()
!=
VIEW_REF
&&
name
&&
alias_name_used
)
{
THD
*
thd
=
current_thd
;
append_identifier
(
thd
,
str
,
name
,
(
uint
)
strlen
(
name
));
}
else
(
*
ref
)
->
print
(
str
);
}
else
Item_ident
::
print
(
str
);
}
...
...
sql/item.h
View file @
ed7e869b
...
...
@@ -460,6 +460,9 @@ class Item {
my_bool
is_autogenerated_name
;
/* indicate was name of this Item
autogenerated or set by user */
DTCollation
collation
;
my_bool
with_subselect
;
/* If this item is a subselect or some
of its arguments is or contains a
subselect */
// alloc & destruct is done as start of select using sql_alloc
Item
();
...
...
sql/item_cmpfunc.cc
View file @
ed7e869b
...
...
@@ -204,10 +204,28 @@ longlong Item_func_nop_all::val_int()
/*
Convert a constant expression or string to an integer.
This is done when comparing DATE's of different formats and
also when comparing bigint to strings (in which case the string
is converted once to a bigint).
Convert a constant item to an int and replace the original item
SYNOPSIS
convert_constant_item()
thd thread handle
field item will be converted using the type of this field
item [in/out] reference to the item to convert
DESCRIPTION
The function converts a constant expression or string to an integer.
On successful conversion the original item is substituted for the
result of the item evaluation.
This is done when comparing DATE/TIME of different formats and
also when comparing bigint to strings (in which case strings
are converted to bigints).
NOTES
This function is called only at prepare stage.
As all derived tables are filled only after all derived tables
are prepared we do not evaluate items with subselects here because
they can contain derived tables and thus we may attempt to use a
table that has not been populated yet.
RESULT VALUES
0 Can't convert item
...
...
@@ -216,7 +234,7 @@ longlong Item_func_nop_all::val_int()
static
bool
convert_constant_item
(
THD
*
thd
,
Field
*
field
,
Item
**
item
)
{
if
((
*
item
)
->
const_item
())
if
(
!
(
*
item
)
->
with_subselect
&&
(
*
item
)
->
const_item
())
{
/* For comparison purposes allow invalid dates like 2000-01-32 */
ulong
orig_sql_mode
=
field
->
table
->
in_use
->
variables
.
sql_mode
;
...
...
@@ -2570,7 +2588,9 @@ Item_cond::fix_fields(THD *thd, Item **ref)
(
item
=
*
li
.
ref
())
->
check_cols
(
1
))
return
TRUE
;
/* purecov: inspected */
used_tables_cache
|=
item
->
used_tables
();
if
(
!
item
->
const_item
())
if
(
item
->
const_item
())
and_tables_cache
=
(
table_map
)
0
;
else
{
tmp_table_map
=
item
->
not_null_tables
();
not_null_tables_cache
|=
tmp_table_map
;
...
...
@@ -2578,6 +2598,7 @@ Item_cond::fix_fields(THD *thd, Item **ref)
const_item_cache
=
FALSE
;
}
with_sum_func
=
with_sum_func
||
item
->
with_sum_func
;
with_subselect
|=
item
->
with_subselect
;
if
(
item
->
maybe_null
)
maybe_null
=
1
;
}
...
...
sql/item_func.cc
View file @
ed7e869b
...
...
@@ -184,6 +184,7 @@ Item_func::fix_fields(THD *thd, Item **ref)
used_tables_cache
|=
item
->
used_tables
();
not_null_tables_cache
|=
item
->
not_null_tables
();
const_item_cache
&=
item
->
const_item
();
with_subselect
|=
item
->
with_subselect
;
}
}
fix_length_and_dec
();
...
...
sql/item_strfunc.h
View file @
ed7e869b
...
...
@@ -542,7 +542,7 @@ class Item_func_conv :public Item_str_func
void
fix_length_and_dec
()
{
collation
.
set
(
default_charset
());
decimals
=
0
;
max_length
=
64
;
max_length
=
64
;
}
};
...
...
sql/item_subselect.cc
View file @
ed7e869b
...
...
@@ -39,6 +39,7 @@ Item_subselect::Item_subselect():
engine
(
0
),
old_engine
(
0
),
used_tables_cache
(
0
),
have_to_be_excluded
(
0
),
const_item_cache
(
1
),
engine_changed
(
0
),
changed
(
0
)
{
with_subselect
=
1
;
reset
();
/*
item value is NULL if select_subselect not changed this value
...
...
sql/mysql_priv.h
View file @
ed7e869b
...
...
@@ -1179,6 +1179,7 @@ extern my_bool locked_in_memory;
extern
bool
opt_using_transactions
,
mysqld_embedded
;
extern
bool
using_update_log
,
opt_large_files
,
server_id_supplied
;
extern
bool
opt_log
,
opt_update_log
,
opt_bin_log
,
opt_slow_log
,
opt_error_log
;
extern
my_bool
opt_log_queries_not_using_indexes
;
extern
bool
opt_disable_networking
,
opt_skip_show_db
;
extern
my_bool
opt_character_set_client_handshake
;
extern
bool
volatile
abort_loop
,
shutdown_in_progress
,
grant_option
;
...
...
sql/mysqld.cc
View file @
ed7e869b
...
...
@@ -311,7 +311,6 @@ static bool volatile ready_to_exit;
static
my_bool
opt_debugging
=
0
,
opt_external_locking
=
0
,
opt_console
=
0
;
static
my_bool
opt_bdb
,
opt_isam
,
opt_ndbcluster
;
static
my_bool
opt_short_log_format
=
0
;
static
my_bool
opt_log_queries_not_using_indexes
=
0
;
static
uint
kill_cached_threads
,
wake_thread
;
static
ulong
killed_threads
,
thread_created
;
static
ulong
max_used_connections
;
...
...
@@ -337,6 +336,7 @@ static my_bool opt_sync_bdb_logs;
/* Global variables */
bool
opt_log
,
opt_update_log
,
opt_bin_log
,
opt_slow_log
;
my_bool
opt_log_queries_not_using_indexes
=
0
;
bool
opt_error_log
=
IF_WIN
(
1
,
0
);
bool
opt_disable_networking
=
0
,
opt_skip_show_db
=
0
;
my_bool
opt_character_set_client_handshake
=
1
;
...
...
@@ -603,6 +603,7 @@ my_bool opt_enable_shared_memory;
HANDLE
smem_event_connect_request
=
0
;
#endif
#define SSL_VARS_NOT_STATIC
#include "sslopt-vars.h"
#ifdef HAVE_OPENSSL
#include <openssl/crypto.h>
...
...
@@ -954,7 +955,8 @@ static void __cdecl kill_server(int sig_ptr)
RETURN_FROM_KILL_SERVER
;
kill_in_progress
=
TRUE
;
abort_loop
=
1
;
// This should be set
my_sigset
(
sig
,
SIG_IGN
);
if
(
sig
!=
0
)
// 0 is not a valid signal number
my_sigset
(
sig
,
SIG_IGN
);
if
(
sig
==
MYSQL_KILL_SIGNAL
||
sig
==
0
)
sql_print_information
(
ER
(
ER_NORMAL_SHUTDOWN
),
my_progname
);
else
...
...
sql/set_var.cc
View file @
ed7e869b
...
...
@@ -122,6 +122,7 @@ static byte *get_error_count(THD *thd);
static
byte
*
get_warning_count
(
THD
*
thd
);
static
byte
*
get_prepared_stmt_count
(
THD
*
thd
);
static
byte
*
get_have_innodb
(
THD
*
thd
);
static
byte
*
get_tmpdir
(
THD
*
thd
);
/*
Variable definition list
...
...
@@ -138,6 +139,7 @@ sys_var_thd_ulong sys_auto_increment_offset("auto_increment_offset",
sys_var_bool_ptr
sys_automatic_sp_privileges
(
"automatic_sp_privileges"
,
&
sp_automatic_privileges
);
sys_var_const_str
sys_basedir
(
"basedir"
,
mysql_home
);
sys_var_long_ptr
sys_binlog_cache_size
(
"binlog_cache_size"
,
&
binlog_cache_size
);
sys_var_thd_ulong
sys_bulk_insert_buff_size
(
"bulk_insert_buffer_size"
,
...
...
@@ -161,6 +163,7 @@ sys_var_long_ptr sys_concurrent_insert("concurrent_insert",
&
myisam_concurrent_insert
);
sys_var_long_ptr
sys_connect_timeout
(
"connect_timeout"
,
&
connect_timeout
);
sys_var_const_str
sys_datadir
(
"datadir"
,
mysql_real_data_home
);
sys_var_enum
sys_delay_key_write
(
"delay_key_write"
,
&
delay_key_write_options
,
&
delay_key_write_typelib
,
...
...
@@ -208,6 +211,9 @@ sys_trust_routine_creators("log_bin_trust_routine_creators",
sys_var_bool_ptr
sys_trust_function_creators
(
"log_bin_trust_function_creators"
,
&
trust_function_creators
);
sys_var_bool_ptr
sys_log_queries_not_using_indexes
(
"log_queries_not_using_indexes"
,
&
opt_log_queries_not_using_indexes
);
sys_var_thd_ulong
sys_log_warnings
(
"log_warnings"
,
&
SV
::
log_warnings
);
sys_var_thd_ulong
sys_long_query_time
(
"long_query_time"
,
&
SV
::
long_query_time
);
...
...
@@ -331,6 +337,7 @@ sys_var_thd_ulong sys_query_alloc_block_size("query_alloc_block_size",
sys_var_thd_ulong
sys_query_prealloc_size
(
"query_prealloc_size"
,
&
SV
::
query_prealloc_size
,
0
,
fix_thd_mem_root
);
sys_var_readonly
sys_tmpdir
(
"tmpdir"
,
OPT_GLOBAL
,
SHOW_CHAR
,
get_tmpdir
);
sys_var_thd_ulong
sys_trans_alloc_block_size
(
"transaction_alloc_block_size"
,
&
SV
::
trans_alloc_block_size
,
0
,
fix_trans_mem_root
);
...
...
@@ -367,6 +374,21 @@ sys_var_thd_ulong sys_sort_buffer("sort_buffer_size",
&
SV
::
sortbuff_size
);
sys_var_thd_sql_mode
sys_sql_mode
(
"sql_mode"
,
&
SV
::
sql_mode
);
#ifdef HAVE_OPENSSL
extern
char
*
opt_ssl_ca
,
*
opt_ssl_capath
,
*
opt_ssl_cert
,
*
opt_ssl_cipher
,
*
opt_ssl_key
;
sys_var_const_str_ptr
sys_ssl_ca
(
"ssl_ca"
,
&
opt_ssl_ca
);
sys_var_const_str_ptr
sys_ssl_capath
(
"ssl_capath"
,
&
opt_ssl_capath
);
sys_var_const_str_ptr
sys_ssl_cert
(
"ssl_cert"
,
&
opt_ssl_cert
);
sys_var_const_str_ptr
sys_ssl_cipher
(
"ssl_cipher"
,
&
opt_ssl_cipher
);
sys_var_const_str_ptr
sys_ssl_key
(
"ssl_key"
,
&
opt_ssl_key
);
#else
sys_var_const_str
sys_ssl_ca
(
"ssl_ca"
,
NULL
);
sys_var_const_str
sys_ssl_capath
(
"ssl_capath"
,
NULL
);
sys_var_const_str
sys_ssl_cert
(
"ssl_cert"
,
NULL
);
sys_var_const_str
sys_ssl_cipher
(
"ssl_cipher"
,
NULL
);
sys_var_const_str
sys_ssl_key
(
"ssl_key"
,
NULL
);
#endif
sys_var_thd_enum
sys_updatable_views_with_limit
(
"updatable_views_with_limit"
,
&
SV
::
updatable_views_with_limit
,
...
...
@@ -582,6 +604,7 @@ sys_var *sys_variables[]=
&
sys_auto_increment_offset
,
&
sys_autocommit
,
&
sys_automatic_sp_privileges
,
&
sys_basedir
,
&
sys_big_tables
,
&
sys_big_selects
,
&
sys_binlog_cache_size
,
...
...
@@ -600,6 +623,7 @@ sys_var *sys_variables[]=
&
sys_completion_type
,
&
sys_concurrent_insert
,
&
sys_connect_timeout
,
&
sys_datadir
,
&
sys_date_format
,
&
sys_datetime_format
,
&
sys_div_precincrement
,
...
...
@@ -631,6 +655,7 @@ sys_var *sys_variables[]=
&
sys_local_infile
,
&
sys_log_binlog
,
&
sys_log_off
,
&
sys_log_queries_not_using_indexes
,
&
sys_log_update
,
&
sys_log_warnings
,
&
sys_long_query_time
,
...
...
@@ -710,6 +735,11 @@ sys_var *sys_variables[]=
&
sys_sql_mode
,
&
sys_sql_warnings
,
&
sys_sql_notes
,
&
sys_ssl_ca
,
&
sys_ssl_capath
,
&
sys_ssl_cert
,
&
sys_ssl_cipher
,
&
sys_ssl_key
,
&
sys_storage_engine
,
#ifdef HAVE_REPLICATION
&
sys_sync_binlog_period
,
...
...
@@ -724,6 +754,7 @@ sys_var *sys_variables[]=
&
sys_timed_mutexes
,
&
sys_timestamp
,
&
sys_time_zone
,
&
sys_tmpdir
,
&
sys_tmp_table_size
,
&
sys_trans_alloc_block_size
,
&
sys_trans_prealloc_size
,
...
...
@@ -775,7 +806,7 @@ struct show_var_st init_vars[]= {
{
"auto_increment_offset"
,
(
char
*
)
&
sys_auto_increment_offset
,
SHOW_SYS
},
{
sys_automatic_sp_privileges
.
name
,(
char
*
)
&
sys_automatic_sp_privileges
,
SHOW_SYS
},
{
"back_log"
,
(
char
*
)
&
back_log
,
SHOW_LONG
},
{
"basedir"
,
mysql_home
,
SHOW_CHAR
},
{
sys_basedir
.
name
,
(
char
*
)
&
sys_basedir
,
SHOW_SYS
},
#ifdef HAVE_BERKELEY_DB
{
"bdb_cache_size"
,
(
char
*
)
&
berkeley_cache_size
,
SHOW_LONG
},
{
"bdb_home"
,
(
char
*
)
&
berkeley_home
,
SHOW_CHAR_PTR
},
...
...
@@ -801,7 +832,7 @@ struct show_var_st init_vars[]= {
{
sys_completion_type
.
name
,
(
char
*
)
&
sys_completion_type
,
SHOW_SYS
},
{
sys_concurrent_insert
.
name
,(
char
*
)
&
sys_concurrent_insert
,
SHOW_SYS
},
{
sys_connect_timeout
.
name
,
(
char
*
)
&
sys_connect_timeout
,
SHOW_SYS
},
{
"datadir"
,
mysql_real_data_home
,
SHOW_CHAR
},
{
sys_datadir
.
name
,
(
char
*
)
&
sys_datadir
,
SHOW_SYS
},
{
sys_date_format
.
name
,
(
char
*
)
&
sys_date_format
,
SHOW_SYS
},
{
sys_datetime_format
.
name
,
(
char
*
)
&
sys_datetime_format
,
SHOW_SYS
},
{
sys_default_week_format
.
name
,
(
char
*
)
&
sys_default_week_format
,
SHOW_SYS
},
...
...
@@ -899,6 +930,8 @@ struct show_var_st init_vars[]= {
{
"log_bin"
,
(
char
*
)
&
opt_bin_log
,
SHOW_BOOL
},
{
sys_trust_function_creators
.
name
,(
char
*
)
&
sys_trust_function_creators
,
SHOW_SYS
},
{
"log_error"
,
(
char
*
)
log_error_file
,
SHOW_CHAR
},
{
sys_log_queries_not_using_indexes
.
name
,
(
char
*
)
&
sys_log_queries_not_using_indexes
,
SHOW_SYS
},
#ifdef HAVE_REPLICATION
{
"log_slave_updates"
,
(
char
*
)
&
opt_log_slave_updates
,
SHOW_MY_BOOL
},
#endif
...
...
@@ -1017,6 +1050,11 @@ struct show_var_st init_vars[]= {
{
sys_sql_mode
.
name
,
(
char
*
)
&
sys_sql_mode
,
SHOW_SYS
},
{
"sql_notes"
,
(
char
*
)
&
sys_sql_notes
,
SHOW_SYS
},
{
"sql_warnings"
,
(
char
*
)
&
sys_sql_warnings
,
SHOW_SYS
},
{
sys_ssl_ca
.
name
,
(
char
*
)
&
sys_ssl_ca
,
SHOW_SYS
},
{
sys_ssl_capath
.
name
,
(
char
*
)
&
sys_ssl_capath
,
SHOW_SYS
},
{
sys_ssl_cert
.
name
,
(
char
*
)
&
sys_ssl_cert
,
SHOW_SYS
},
{
sys_ssl_cipher
.
name
,
(
char
*
)
&
sys_ssl_cipher
,
SHOW_SYS
},
{
sys_ssl_key
.
name
,
(
char
*
)
&
sys_ssl_key
,
SHOW_SYS
},
{
sys_storage_engine
.
name
,
(
char
*
)
&
sys_storage_engine
,
SHOW_SYS
},
#ifdef HAVE_REPLICATION
{
sys_sync_binlog_period
.
name
,(
char
*
)
&
sys_sync_binlog_period
,
SHOW_SYS
},
...
...
@@ -1037,7 +1075,7 @@ struct show_var_st init_vars[]= {
{
"time_zone"
,
(
char
*
)
&
sys_time_zone
,
SHOW_SYS
},
{
sys_timed_mutexes
.
name
,
(
char
*
)
&
sys_timed_mutexes
,
SHOW_SYS
},
{
sys_tmp_table_size
.
name
,
(
char
*
)
&
sys_tmp_table_size
,
SHOW_SYS
},
{
"tmpdir"
,
(
char
*
)
&
opt_mysql_tmpdir
,
SHOW_CHAR_PTR
},
{
sys_tmpdir
.
name
,
(
char
*
)
&
sys_tmpdir
,
SHOW_SYS
},
{
sys_trans_alloc_block_size
.
name
,
(
char
*
)
&
sys_trans_alloc_block_size
,
SHOW_SYS
},
{
sys_trans_prealloc_size
.
name
,
(
char
*
)
&
sys_trans_prealloc_size
,
SHOW_SYS
},
...
...
@@ -2863,6 +2901,31 @@ static byte *get_prepared_stmt_count(THD *thd)
return
(
byte
*
)
&
thd
->
sys_var_tmp
.
ulong_value
;
}
/*
Get the tmpdir that was specified or chosen by default
SYNOPSIS
get_tmpdir()
thd thread handle
DESCRIPTION
This is necessary because if the user does not specify a temporary
directory via the command line, one is chosen based on the environment
or system defaults. But we can't just always use mysql_tmpdir, because
that is actually a call to my_tmpdir() which cycles among possible
temporary directories.
RETURN VALUES
ptr pointer to NUL-terminated string
*/
static
byte
*
get_tmpdir
(
THD
*
thd
)
{
if
(
opt_mysql_tmpdir
)
return
(
byte
*
)
opt_mysql_tmpdir
;
return
(
byte
*
)
mysql_tmpdir
;
}
/****************************************************************************
Main handling of variables:
- Initialisation
...
...
sql/set_var.h
View file @
ed7e869b
...
...
@@ -222,6 +222,35 @@ class sys_var_const_str :public sys_var
};
class
sys_var_const_str_ptr
:
public
sys_var
{
public:
char
**
value
;
// Pointer to const value
sys_var_const_str_ptr
(
const
char
*
name_arg
,
char
**
value_arg
)
:
sys_var
(
name_arg
),
value
(
value_arg
)
{}
bool
check
(
THD
*
thd
,
set_var
*
var
)
{
return
1
;
}
bool
update
(
THD
*
thd
,
set_var
*
var
)
{
return
1
;
}
SHOW_TYPE
type
()
{
return
SHOW_CHAR
;
}
byte
*
value_ptr
(
THD
*
thd
,
enum_var_type
type
,
LEX_STRING
*
base
)
{
return
(
byte
*
)
*
value
;
}
bool
check_update_type
(
Item_result
type
)
{
return
1
;
}
bool
check_default
(
enum_var_type
type
)
{
return
1
;
}
bool
is_readonly
()
const
{
return
1
;
}
};
class
sys_var_enum
:
public
sys_var
{
uint
*
value
;
...
...
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