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
9d77d8d9
Commit
9d77d8d9
authored
Feb 20, 2006
by
holyfoot@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk@192.168.21.1:mysql-5.0
into mysql.com:/home/hf/work/mysql-5.0.w2645
parents
796489ea
4e378f7f
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
180 additions
and
44 deletions
+180
-44
mysql-test/r/mix_innodb_myisam_binlog.result
mysql-test/r/mix_innodb_myisam_binlog.result
+24
-0
mysql-test/r/rpl_sp.result
mysql-test/r/rpl_sp.result
+13
-8
mysql-test/r/sql_mode.result
mysql-test/r/sql_mode.result
+16
-0
mysql-test/r/subselect.result
mysql-test/r/subselect.result
+26
-0
mysql-test/t/mix_innodb_myisam_binlog.test
mysql-test/t/mix_innodb_myisam_binlog.test
+33
-1
mysql-test/t/rpl_sp-slave.opt
mysql-test/t/rpl_sp-slave.opt
+1
-1
mysql-test/t/rpl_sp.test
mysql-test/t/rpl_sp.test
+5
-7
mysql-test/t/sql_mode.test
mysql-test/t/sql_mode.test
+9
-0
mysql-test/t/subselect.test
mysql-test/t/subselect.test
+22
-0
sql/log.cc
sql/log.cc
+5
-1
sql/mysqld.cc
sql/mysqld.cc
+2
-2
sql/set_var.cc
sql/set_var.cc
+6
-1
sql/sp_head.cc
sql/sp_head.cc
+3
-9
sql/sql_select.cc
sql/sql_select.cc
+15
-14
No files found.
mysql-test/r/mix_innodb_myisam_binlog.result
View file @
9d77d8d9
...
@@ -256,3 +256,27 @@ master-bin.000001 1648 Query 1 # use `test`; create table t2 (n int) engine=inno
...
@@ -256,3 +256,27 @@ master-bin.000001 1648 Query 1 # use `test`; create table t2 (n int) engine=inno
master-bin.000001 1748 Query 1 # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `test`.`t1`,`test`.`ti`
master-bin.000001 1748 Query 1 # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `test`.`t1`,`test`.`ti`
do release_lock("lock1");
do release_lock("lock1");
drop table t0,t2;
drop table t0,t2;
reset master;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
select get_lock("a",10);
get_lock("a",10)
1
begin;
insert into t1 values(8);
insert into t2 select * from t1;
select get_lock("a",10);
get_lock("a",10)
1
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
is not null;
(@a:=load_file("MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
is not null
1
select
@a like "%#%error_code=0%ROLLBACK;%ROLLBACK /* added by mysqlbinlog */;%",
@a not like "%#%error_code=%error_code=%";
@a like "%#%error_code=0%ROLLBACK;%ROLLBACK /* added by mysqlbinlog */;%" @a not like "%#%error_code=%error_code=%"
1 1
drop table t1, t2;
mysql-test/r/rpl_sp.result
View file @
9d77d8d9
...
@@ -233,20 +233,25 @@ end @ # #
...
@@ -233,20 +233,25 @@ end @ # #
delete from t2;
delete from t2;
alter table t2 add unique (a);
alter table t2 add unique (a);
drop function fn1;
drop function fn1;
create function fn1()
create function fn1(
x int
)
returns int
returns int
begin
begin
insert into t2 values(
20),(20
);
insert into t2 values(
x),(x
);
return 10;
return 10;
end|
end|
select fn1();
do fn1(100);
Warnings:
Error 1062 Duplicate entry '100' for key 1
select fn1(20);
ERROR 23000: Duplicate entry '20' for key 1
ERROR 23000: Duplicate entry '20' for key 1
select * from t2;
select * from t2;
a
a
20
20
100
select * from t2;
select * from t2;
a
a
20
20
100
create trigger trg before insert on t1 for each row set new.a= 10;
create trigger trg before insert on t1 for each row set new.a= 10;
ERROR 42000: Access denied; you need the SUPER privilege for this operation
ERROR 42000: Access denied; you need the SUPER privilege for this operation
delete from t1;
delete from t1;
...
@@ -324,7 +329,7 @@ insert into t1 values (x);
...
@@ -324,7 +329,7 @@ insert into t1 values (x);
return x+2;
return x+2;
end
end
master-bin.000001 # Query 1 # use `mysqltest1`; delete t1,t2 from t1,t2
master-bin.000001 # Query 1 # use `mysqltest1`; delete t1,t2 from t1,t2
master-bin.000001 # Query 1 # use `mysqltest1`;
DO
`fn1`(20)
master-bin.000001 # Query 1 # use `mysqltest1`;
SELECT
`fn1`(20)
master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(fn1(21))
master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(fn1(21))
master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
master-bin.000001 # Query 1 # use `mysqltest1`; create function fn1()
master-bin.000001 # Query 1 # use `mysqltest1`; create function fn1()
...
@@ -351,13 +356,14 @@ end
...
@@ -351,13 +356,14 @@ end
master-bin.000001 # Query 1 # use `mysqltest1`; delete from t2
master-bin.000001 # Query 1 # use `mysqltest1`; delete from t2
master-bin.000001 # Query 1 # use `mysqltest1`; alter table t2 add unique (a)
master-bin.000001 # Query 1 # use `mysqltest1`; alter table t2 add unique (a)
master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
master-bin.000001 # Query 1 # use `mysqltest1`; create function fn1()
master-bin.000001 # Query 1 # use `mysqltest1`; create function fn1(
x int
)
returns int
returns int
begin
begin
insert into t2 values(
20),(20
);
insert into t2 values(
x),(x
);
return 10;
return 10;
end
end
master-bin.000001 # Query 1 # use `mysqltest1`; DO `fn1`()
master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `fn1`(100)
master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `fn1`(20)
master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1
master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1
master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10
master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10
master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (1)
master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (1)
...
@@ -415,4 +421,3 @@ col
...
@@ -415,4 +421,3 @@ col
test
test
DROP PROCEDURE p1;
DROP PROCEDURE p1;
drop table t1;
drop table t1;
reset master;
mysql-test/r/sql_mode.result
View file @
9d77d8d9
...
@@ -478,4 +478,20 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER="root"@"localhost" SQL SECURITY DEFINER VI
...
@@ -478,4 +478,20 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER="root"@"localhost" SQL SECURITY DEFINER VI
create view v2 as select a from t2 where a in (select a from v1);
create view v2 as select a from t2 where a in (select a from v1);
drop view v2, v1;
drop view v2, v1;
drop table t1, t2;
drop table t1, t2;
select @@sql_mode;
@@sql_mode
ANSI_QUOTES
set sql_mode=2097152;
select @@sql_mode;
@@sql_mode
STRICT_TRANS_TABLES
set sql_mode=16384+(65536*4);
select @@sql_mode;
@@sql_mode
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_TABLE_OPTIONS,ANSI
set sql_mode=2147483648;
ERROR 42000: Variable 'sql_mode' can't be set to the value of '2147483648'
select @@sql_mode;
@@sql_mode
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_TABLE_OPTIONS,ANSI
SET @@SQL_MODE=@OLD_SQL_MODE;
SET @@SQL_MODE=@OLD_SQL_MODE;
mysql-test/r/subselect.result
View file @
9d77d8d9
...
@@ -3131,3 +3131,29 @@ a sum
...
@@ -3131,3 +3131,29 @@ a sum
3 20
3 20
4 40
4 40
DROP TABLE t1,t2,t3;
DROP TABLE t1,t2,t3;
CREATE TABLE t1 (a varchar(5), b varchar(10));
INSERT INTO t1 VALUES
('AAA', 5), ('BBB', 4), ('BBB', 1), ('CCC', 2),
('CCC', 7), ('AAA', 2), ('AAA', 4), ('BBB', 3), ('AAA', 8);
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
a b
BBB 4
CCC 7
AAA 8
EXPLAIN
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary; Using filesort
ALTER TABLE t1 ADD INDEX(a);
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
a b
BBB 4
CCC 7
AAA 8
EXPLAIN
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
2 DEPENDENT SUBQUERY t1 index NULL a 8 NULL 9 Using filesort
DROP TABLE t1;
mysql-test/t/mix_innodb_myisam_binlog.test
View file @
9d77d8d9
...
@@ -259,5 +259,37 @@ show binlog events from 98;
...
@@ -259,5 +259,37 @@ show binlog events from 98;
do
release_lock
(
"lock1"
);
do
release_lock
(
"lock1"
);
drop
table
t0
,
t2
;
drop
table
t0
,
t2
;
# End of 4.1 tests
# End of 4.1 tests
# Test for BUG#16559 (ROLLBACK should always have a zero error code in
# binlog). Has to be here and not earlier, as the SELECTs influence
# XIDs differently between normal and ps-protocol (and SHOW BINLOG
# EVENTS above read XIDs).
connect
(
con4
,
localhost
,
root
,,);
connection
con3
;
reset
master
;
create
table
t1
(
a
int
)
engine
=
innodb
;
create
table
t2
(
a
int
)
engine
=
myisam
;
select
get_lock
(
"a"
,
10
);
begin
;
insert
into
t1
values
(
8
);
insert
into
t2
select
*
from
t1
;
disconnect
con3
;
connection
con4
;
select
get_lock
(
"a"
,
10
);
# wait for rollback to finish
# we check that the error code of the "ROLLBACK" event is 0 and not
# ER_SERVER_SHUTDOWN (i.e. disconnection just rolls back transaction
# and does not make slave to stop)
--
exec
$MYSQL_BINLOG
--
start
-
position
=
547
$MYSQLTEST_VARDIR
/
log
/
master
-
bin
.
000001
>
$MYSQLTEST_VARDIR
/
tmp
/
mix_innodb_myisam_binlog
.
output
--
replace_result
$MYSQLTEST_VARDIR
MYSQLTEST_VARDIR
eval
select
(
@
a
:=
load_file
(
"
$MYSQLTEST_VARDIR
/tmp/mix_innodb_myisam_binlog.output"
))
is
not
null
;
--
replace_result
$MYSQL_TEST_DIR
MYSQL_TEST_DIR
eval
select
@
a
like
"%#%error_code=0%ROLLBACK;%ROLLBACK /* added by mysqlbinlog */;%"
,
@
a
not
like
"%#%error_code=%error_code=%"
;
drop
table
t1
,
t2
;
mysql-test/t/rpl_sp-slave.opt
View file @
9d77d8d9
--log_bin_trust_routine_creators=0
--slave-skip-errors=1062
--log_bin_trust_routine_creators=0
mysql-test/t/rpl_sp.test
View file @
9d77d8d9
...
@@ -294,21 +294,19 @@ alter table t2 add unique (a);
...
@@ -294,21 +294,19 @@ alter table t2 add unique (a);
drop
function
fn1
;
drop
function
fn1
;
delimiter
|
;
delimiter
|
;
create
function
fn1
()
create
function
fn1
(
x
int
)
returns
int
returns
int
begin
begin
insert
into
t2
values
(
20
),(
20
);
insert
into
t2
values
(
x
),(
x
);
return
10
;
return
10
;
end
|
end
|
delimiter
;
|
delimiter
;
|
# Because of BUG#14769 the following statement requires that we start
do
fn1
(
100
);
# slave with --slave-skip-errors=1062. When that bug is fixed, that
# option can be removed.
--
error
1062
--
error
1062
select
fn1
();
select
fn1
(
20
);
select
*
from
t2
;
select
*
from
t2
;
sync_slave_with_master
;
sync_slave_with_master
;
...
@@ -440,4 +438,4 @@ DROP PROCEDURE p1;
...
@@ -440,4 +438,4 @@ DROP PROCEDURE p1;
# cleanup
# cleanup
connection
master
;
connection
master
;
drop
table
t1
;
drop
table
t1
;
reset
master
;
sync_slave_with_
master
;
mysql-test/t/sql_mode.test
View file @
9d77d8d9
...
@@ -255,4 +255,13 @@ create view v2 as select a from t2 where a in (select a from v1);
...
@@ -255,4 +255,13 @@ create view v2 as select a from t2 where a in (select a from v1);
drop
view
v2
,
v1
;
drop
view
v2
,
v1
;
drop
table
t1
,
t2
;
drop
table
t1
,
t2
;
select
@@
sql_mode
;
set
sql_mode
=
2097152
;
select
@@
sql_mode
;
set
sql_mode
=
16384
+
(
65536
*
4
);
select
@@
sql_mode
;
--
error
1231
set
sql_mode
=
2147483648
;
# that mode does not exist
select
@@
sql_mode
;
SET
@@
SQL_MODE
=@
OLD_SQL_MODE
;
SET
@@
SQL_MODE
=@
OLD_SQL_MODE
;
mysql-test/t/subselect.test
View file @
9d77d8d9
...
@@ -2051,3 +2051,25 @@ SELECT t1.a, SUM(b) AS sum FROM t1 GROUP BY t1.a
...
@@ -2051,3 +2051,25 @@ SELECT t1.a, SUM(b) AS sum FROM t1 GROUP BY t1.a
HAVING
t2
.
c
+
sum
>
20
);
HAVING
t2
.
c
+
sum
>
20
);
DROP
TABLE
t1
,
t2
,
t3
;
DROP
TABLE
t1
,
t2
,
t3
;
#
# Test for bug #16603: GROUP BY in a row subquery with a quantifier
# when an index is defined on the grouping field
CREATE
TABLE
t1
(
a
varchar
(
5
),
b
varchar
(
10
));
INSERT
INTO
t1
VALUES
(
'AAA'
,
5
),
(
'BBB'
,
4
),
(
'BBB'
,
1
),
(
'CCC'
,
2
),
(
'CCC'
,
7
),
(
'AAA'
,
2
),
(
'AAA'
,
4
),
(
'BBB'
,
3
),
(
'AAA'
,
8
);
SELECT
*
FROM
t1
WHERE
(
a
,
b
)
=
ANY
(
SELECT
a
,
max
(
b
)
FROM
t1
GROUP
BY
a
);
EXPLAIN
SELECT
*
FROM
t1
WHERE
(
a
,
b
)
=
ANY
(
SELECT
a
,
max
(
b
)
FROM
t1
GROUP
BY
a
);
ALTER
TABLE
t1
ADD
INDEX
(
a
);
SELECT
*
FROM
t1
WHERE
(
a
,
b
)
=
ANY
(
SELECT
a
,
max
(
b
)
FROM
t1
GROUP
BY
a
);
EXPLAIN
SELECT
*
FROM
t1
WHERE
(
a
,
b
)
=
ANY
(
SELECT
a
,
max
(
b
)
FROM
t1
GROUP
BY
a
);
DROP
TABLE
t1
;
sql/log.cc
View file @
9d77d8d9
...
@@ -132,6 +132,7 @@ static int binlog_commit(THD *thd, bool all)
...
@@ -132,6 +132,7 @@ static int binlog_commit(THD *thd, bool all)
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
}
}
Query_log_event
qev
(
thd
,
STRING_WITH_LEN
(
"COMMIT"
),
TRUE
,
FALSE
);
Query_log_event
qev
(
thd
,
STRING_WITH_LEN
(
"COMMIT"
),
TRUE
,
FALSE
);
qev
.
error_code
=
0
;
// see comment in MYSQL_LOG::write(THD, IO_CACHE)
DBUG_RETURN
(
binlog_end_trans
(
thd
,
trans_log
,
&
qev
));
DBUG_RETURN
(
binlog_end_trans
(
thd
,
trans_log
,
&
qev
));
}
}
...
@@ -156,6 +157,7 @@ static int binlog_rollback(THD *thd, bool all)
...
@@ -156,6 +157,7 @@ static int binlog_rollback(THD *thd, bool all)
if
(
unlikely
(
thd
->
options
&
OPTION_STATUS_NO_TRANS_UPDATE
))
if
(
unlikely
(
thd
->
options
&
OPTION_STATUS_NO_TRANS_UPDATE
))
{
{
Query_log_event
qev
(
thd
,
STRING_WITH_LEN
(
"ROLLBACK"
),
TRUE
,
FALSE
);
Query_log_event
qev
(
thd
,
STRING_WITH_LEN
(
"ROLLBACK"
),
TRUE
,
FALSE
);
qev
.
error_code
=
0
;
// see comment in MYSQL_LOG::write(THD, IO_CACHE)
error
=
binlog_end_trans
(
thd
,
trans_log
,
&
qev
);
error
=
binlog_end_trans
(
thd
,
trans_log
,
&
qev
);
}
}
else
else
...
@@ -1826,7 +1828,9 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event)
...
@@ -1826,7 +1828,9 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event)
Imagine this is rollback due to net timeout, after all statements of
Imagine this is rollback due to net timeout, after all statements of
the transaction succeeded. Then we want a zero-error code in BEGIN.
the transaction succeeded. Then we want a zero-error code in BEGIN.
In other words, if there was a really serious error code it's already
In other words, if there was a really serious error code it's already
in the statement's events.
in the statement's events, there is no need to put it also in this
internally generated event, and as this event is generated late it
would lead to false alarms.
This is safer than thd->clear_error() against kills at shutdown.
This is safer than thd->clear_error() against kills at shutdown.
*/
*/
qinfo
.
error_code
=
0
;
qinfo
.
error_code
=
0
;
...
...
sql/mysqld.cc
View file @
9d77d8d9
...
@@ -4923,8 +4923,8 @@ Disable with --skip-innodb-doublewrite.", (gptr*) &innobase_use_doublewrite,
...
@@ -4923,8 +4923,8 @@ Disable with --skip-innodb-doublewrite.", (gptr*) &innobase_use_doublewrite,
*/
*/
{
"log-bin-trust-function-creators"
,
OPT_LOG_BIN_TRUST_FUNCTION_CREATORS
,
{
"log-bin-trust-function-creators"
,
OPT_LOG_BIN_TRUST_FUNCTION_CREATORS
,
"If equal to 0 (the default), then when --log-bin is used, creation of "
"If equal to 0 (the default), then when --log-bin is used, creation of "
"a
function is allowed only to users having the SUPER privilege and only
"
"a
stored function is allowed only to users having the SUPER privilege and
"
"if this function may not break binary logging."
,
"
only
if this function may not break binary logging."
,
(
gptr
*
)
&
trust_function_creators
,
(
gptr
*
)
&
trust_function_creators
,
0
,
(
gptr
*
)
&
trust_function_creators
,
(
gptr
*
)
&
trust_function_creators
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"log-error"
,
OPT_ERROR_LOG_FILE
,
"Error log file."
,
{
"log-error"
,
OPT_ERROR_LOG_FILE
,
"Error log file."
,
...
...
sql/set_var.cc
View file @
9d77d8d9
...
@@ -1659,7 +1659,12 @@ bool sys_var::check_set(THD *thd, set_var *var, TYPELIB *enum_names)
...
@@ -1659,7 +1659,12 @@ bool sys_var::check_set(THD *thd, set_var *var, TYPELIB *enum_names)
else
else
{
{
ulonglong
tmp
=
var
->
value
->
val_int
();
ulonglong
tmp
=
var
->
value
->
val_int
();
if
(
tmp
>=
enum_names
->
count
)
/*
For when the enum is made to contain 64 elements, as 1ULL<<64 is
undefined, we guard with a "count<64" test.
*/
if
(
unlikely
((
tmp
>=
((
ULL
(
1
))
<<
enum_names
->
count
))
&&
(
enum_names
->
count
<
64
)))
{
{
llstr
(
tmp
,
buff
);
llstr
(
tmp
,
buff
);
goto
err
;
goto
err
;
...
...
sql/sp_head.cc
View file @
9d77d8d9
...
@@ -737,12 +737,6 @@ int cmp_splocal_locations(Item_splocal * const *a, Item_splocal * const *b)
...
@@ -737,12 +737,6 @@ int cmp_splocal_locations(Item_splocal * const *a, Item_splocal * const *b)
written into binary log. Instead we catch function calls the statement
written into binary log. Instead we catch function calls the statement
makes and write it into binary log separately (see #3).
makes and write it into binary log separately (see #3).
We actually can easily write SELECT statements into the binary log in the
right order (we don't have issues with const tables being unlocked early
because SELECTs that use FUNCTIONs unlock all tables at once) We don't do
it because replication slave thread currently can't execute SELECT
statements. Fixing this is on the TODO.
2. PROCEDURE calls
2. PROCEDURE calls
CALL statements are not written into binary log. Instead
CALL statements are not written into binary log. Instead
...
@@ -763,7 +757,7 @@ int cmp_splocal_locations(Item_splocal * const *a, Item_splocal * const *b)
...
@@ -763,7 +757,7 @@ int cmp_splocal_locations(Item_splocal * const *a, Item_splocal * const *b)
function execution (grep for start_union_events and stop_union_events)
function execution (grep for start_union_events and stop_union_events)
If the answers are No and Yes, we write the function call into the binary
If the answers are No and Yes, we write the function call into the binary
log as "
DO spfunc(<param1value>, <param2value>, ...)"
log as "
SELECT spfunc(<param1value>, <param2value>, ...)".
4. Miscellaneous issues.
4. Miscellaneous issues.
...
@@ -1310,7 +1304,7 @@ sp_head::execute_function(THD *thd, Item **argp, uint argcount,
...
@@ -1310,7 +1304,7 @@ sp_head::execute_function(THD *thd, Item **argp, uint argcount,
char
buf
[
256
];
char
buf
[
256
];
String
bufstr
(
buf
,
sizeof
(
buf
),
&
my_charset_bin
);
String
bufstr
(
buf
,
sizeof
(
buf
),
&
my_charset_bin
);
bufstr
.
length
(
0
);
bufstr
.
length
(
0
);
bufstr
.
append
(
STRING_WITH_LEN
(
"
DO
"
));
bufstr
.
append
(
STRING_WITH_LEN
(
"
SELECT
"
));
append_identifier
(
thd
,
&
bufstr
,
m_name
.
str
,
m_name
.
length
);
append_identifier
(
thd
,
&
bufstr
,
m_name
.
str
,
m_name
.
length
);
bufstr
.
append
(
'('
);
bufstr
.
append
(
'('
);
for
(
uint
i
=
0
;
i
<
argcount
;
i
++
)
for
(
uint
i
=
0
;
i
<
argcount
;
i
++
)
...
...
sql/sql_select.cc
View file @
9d77d8d9
...
@@ -364,22 +364,8 @@ JOIN::prepare(Item ***rref_pointer_array,
...
@@ -364,22 +364,8 @@ JOIN::prepare(Item ***rref_pointer_array,
select_lex
->
having_fix_field
=
0
;
select_lex
->
having_fix_field
=
0
;
if
(
having_fix_rc
||
thd
->
net
.
report_error
)
if
(
having_fix_rc
||
thd
->
net
.
report_error
)
DBUG_RETURN
(
-
1
);
/* purecov: inspected */
DBUG_RETURN
(
-
1
);
/* purecov: inspected */
if
(
having
->
with_sum_func
)
having
->
split_sum_func2
(
thd
,
ref_pointer_array
,
all_fields
,
&
having
,
TRUE
);
thd
->
lex
->
allow_sum_func
=
save_allow_sum_func
;
thd
->
lex
->
allow_sum_func
=
save_allow_sum_func
;
}
}
if
(
select_lex
->
inner_sum_func_list
)
{
Item_sum
*
end
=
select_lex
->
inner_sum_func_list
;
Item_sum
*
item_sum
=
end
;
do
{
item_sum
=
item_sum
->
next
;
item_sum
->
split_sum_func2
(
thd
,
ref_pointer_array
,
all_fields
,
item_sum
->
ref_by
,
FALSE
);
}
while
(
item_sum
!=
end
);
}
if
(
!
thd
->
lex
->
view_prepare_mode
)
if
(
!
thd
->
lex
->
view_prepare_mode
)
{
{
...
@@ -397,6 +383,21 @@ JOIN::prepare(Item ***rref_pointer_array,
...
@@ -397,6 +383,21 @@ JOIN::prepare(Item ***rref_pointer_array,
}
}
}
}
if
(
having
&&
having
->
with_sum_func
)
having
->
split_sum_func2
(
thd
,
ref_pointer_array
,
all_fields
,
&
having
,
TRUE
);
if
(
select_lex
->
inner_sum_func_list
)
{
Item_sum
*
end
=
select_lex
->
inner_sum_func_list
;
Item_sum
*
item_sum
=
end
;
do
{
item_sum
=
item_sum
->
next
;
item_sum
->
split_sum_func2
(
thd
,
ref_pointer_array
,
all_fields
,
item_sum
->
ref_by
,
FALSE
);
}
while
(
item_sum
!=
end
);
}
if
(
setup_ftfuncs
(
select_lex
))
/* should be after having->fix_fields */
if
(
setup_ftfuncs
(
select_lex
))
/* should be after having->fix_fields */
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
...
...
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