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
233d5523
Commit
233d5523
authored
Jul 21, 2007
by
igor@olga.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29911
parents
43dab6b5
2313bbc3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
75 additions
and
3 deletions
+75
-3
mysql-test/r/sp.result
mysql-test/r/sp.result
+32
-1
mysql-test/t/sp.test
mysql-test/t/sp.test
+32
-1
sql/item_func.cc
sql/item_func.cc
+10
-0
sql/item_func.h
sql/item_func.h
+1
-1
No files found.
mysql-test/r/sp.result
View file @
233d5523
use test;
drop table if exists t1,t2,t3,t4;
drop function if exists f1;
drop function if exists f2;
create table t1 (
id char(16) not null default '',
data int not null
...
...
@@ -6144,7 +6146,7 @@ drop table t1,t2;
CREATE TABLE t1 (a int auto_increment primary key) engine=MyISAM;
CREATE TABLE t2 (a int auto_increment primary key, b int) engine=innodb;
set @a=0;
CREATE function bug27354() RETURNS int deterministic
CREATE function bug27354() RETURNS int
not
deterministic
begin
insert into t1 values (null);
set @a=@a+1;
...
...
@@ -6201,4 +6203,33 @@ Level Code Message
use test;
drop procedure sp_bug29050;
drop table t1;
CREATE FUNCTION f1() RETURNS INT DETERMINISTIC RETURN 2;
CREATE FUNCTION f2(I INT) RETURNS INT DETERMINISTIC RETURN 3;
CREATE TABLE t1 (c1 INT, INDEX(c1));
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
CREATE VIEW v1 AS SELECT c1 FROM t1;
EXPLAIN SELECT * FROM t1 WHERE c1=1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref c1 c1 5 const 1 Using where; Using index
EXPLAIN SELECT * FROM t1 WHERE c1=f1();
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref c1 c1 5 const 1 Using where; Using index
EXPLAIN SELECT * FROM v1 WHERE c1=1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref c1 c1 5 const 1 Using where; Using index
EXPLAIN SELECT * FROM v1 WHERE c1=f1();
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref c1 c1 5 const 1 Using where; Using index
EXPLAIN SELECT * FROM t1 WHERE c1=f2(10);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref c1 c1 5 const 1 Using where; Using index
EXPLAIN SELECT * FROM t1 WHERE c1=f2(c1);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL c1 5 NULL 5 Using where; Using index
EXPLAIN SELECT * FROM t1 WHERE c1=f2(rand());
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL c1 5 NULL 5 Using where; Using index
DROP VIEW v1;
DROP FUNCTION f1;
DROP TABLE t1;
End of 5.0 tests
mysql-test/t/sp.test
View file @
233d5523
...
...
@@ -23,6 +23,8 @@ use test;
#
--
disable_warnings
drop
table
if
exists
t1
,
t2
,
t3
,
t4
;
drop
function
if
exists
f1
;
drop
function
if
exists
f2
;
--
enable_warnings
create
table
t1
(
id
char
(
16
)
not
null
default
''
,
...
...
@@ -7098,7 +7100,7 @@ CREATE TABLE t2 (a int auto_increment primary key, b int) engine=innodb;
set
@
a
=
0
;
delimiter
|
;
CREATE
function
bug27354
()
RETURNS
int
deterministic
CREATE
function
bug27354
()
RETURNS
int
not
deterministic
begin
insert
into
t1
values
(
null
);
set
@
a
=@
a
+
1
;
...
...
@@ -7172,4 +7174,33 @@ use test;
drop
procedure
sp_bug29050
;
drop
table
t1
;
#
# Bug #29338: no optimization for stored functions with a trivial body
# always returning constant.
#
CREATE
FUNCTION
f1
()
RETURNS
INT
DETERMINISTIC
RETURN
2
;
CREATE
FUNCTION
f2
(
I
INT
)
RETURNS
INT
DETERMINISTIC
RETURN
3
;
CREATE
TABLE
t1
(
c1
INT
,
INDEX
(
c1
));
INSERT
INTO
t1
VALUES
(
1
),
(
2
),
(
3
),
(
4
),
(
5
);
CREATE
VIEW
v1
AS
SELECT
c1
FROM
t1
;
EXPLAIN
SELECT
*
FROM
t1
WHERE
c1
=
1
;
EXPLAIN
SELECT
*
FROM
t1
WHERE
c1
=
f1
();
EXPLAIN
SELECT
*
FROM
v1
WHERE
c1
=
1
;
EXPLAIN
SELECT
*
FROM
v1
WHERE
c1
=
f1
();
EXPLAIN
SELECT
*
FROM
t1
WHERE
c1
=
f2
(
10
);
EXPLAIN
SELECT
*
FROM
t1
WHERE
c1
=
f2
(
c1
);
EXPLAIN
SELECT
*
FROM
t1
WHERE
c1
=
f2
(
rand
());
DROP
VIEW
v1
;
DROP
FUNCTION
f1
;
DROP
TABLE
t1
;
--
echo
End
of
5.0
tests
sql/item_func.cc
View file @
233d5523
...
...
@@ -5591,5 +5591,15 @@ Item_func_sp::fix_fields(THD *thd, Item **ref)
#endif
/* ! NO_EMBEDDED_ACCESS_CHECKS */
}
if
(
!
m_sp
->
m_chistics
->
detistic
)
used_tables_cache
|=
RAND_TABLE_BIT
;
DBUG_RETURN
(
res
);
}
void
Item_func_sp
::
update_used_tables
()
{
Item_func
::
update_used_tables
();
if
(
!
m_sp
->
m_chistics
->
detistic
)
used_tables_cache
|=
RAND_TABLE_BIT
;
}
sql/item_func.h
View file @
233d5523
...
...
@@ -1467,7 +1467,7 @@ class Item_func_sp :public Item_func
virtual
~
Item_func_sp
()
{}
table_map
used_tables
()
const
{
return
RAND_TABLE_BIT
;
}
void
update_used_tables
();
void
cleanup
();
...
...
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