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
64cac0d6
Commit
64cac0d6
authored
Jun 27, 2007
by
malff/marcsql@weblab.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
parents
39e900e5
083bd79b
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
197 additions
and
122 deletions
+197
-122
mysql-test/include/query_cache_sql_prepare.inc
mysql-test/include/query_cache_sql_prepare.inc
+10
-2
mysql-test/r/ps_1general.result
mysql-test/r/ps_1general.result
+2
-0
mysql-test/r/query_cache_ps_no_prot.result
mysql-test/r/query_cache_ps_no_prot.result
+47
-34
mysql-test/r/query_cache_ps_ps_prot.result
mysql-test/r/query_cache_ps_ps_prot.result
+47
-34
mysql-test/r/sp-dynamic.result
mysql-test/r/sp-dynamic.result
+17
-1
mysql-test/r/sp-error.result
mysql-test/r/sp-error.result
+2
-2
mysql-test/t/ps_1general.test
mysql-test/t/ps_1general.test
+4
-0
mysql-test/t/sp-dynamic.test
mysql-test/t/sp-dynamic.test
+10
-2
mysql-test/t/sp-error.test
mysql-test/t/sp-error.test
+5
-5
sql/Makefile.am
sql/Makefile.am
+12
-18
sql/sql_class.h
sql/sql_class.h
+7
-0
sql/sql_parse.cc
sql/sql_parse.cc
+4
-0
sql/sql_prepare.cc
sql/sql_prepare.cc
+7
-13
sql/sql_view.cc
sql/sql_view.cc
+9
-10
sql/sql_yacc.yy
sql/sql_yacc.yy
+14
-1
No files found.
mysql-test/include/query_cache_sql_prepare.inc
View file @
64cac0d6
...
@@ -33,7 +33,7 @@ drop table if exists t1;
...
@@ -33,7 +33,7 @@ drop table if exists t1;
create
table
t1
(
c1
int
);
create
table
t1
(
c1
int
);
insert
into
t1
values
(
1
),(
10
),(
100
);
insert
into
t1
values
(
1
),(
10
),(
100
);
#
Prepared statements has no parameters, query caching should happen
#
First, prepared statements with no parameters
prepare
stmt1
from
"select * from t1 where c1=10"
;
prepare
stmt1
from
"select * from t1 where c1=10"
;
show
status
like
'Qcache_hits'
;
show
status
like
'Qcache_hits'
;
execute
stmt1
;
execute
stmt1
;
...
@@ -113,7 +113,9 @@ show status like 'Qcache_hits';
...
@@ -113,7 +113,9 @@ show status like 'Qcache_hits';
--
echo
----
switch
to
connection
default
----
--
echo
----
switch
to
connection
default
----
connection
default
;
connection
default
;
# Prepared statement has parameters, query caching should not happen
# Query caching also works when statement has parameters
# (BUG#29318 Statements prepared with PREPARE and with one parameter don't use
# query cache)
prepare
stmt1
from
"select * from t1 where c1=?"
;
prepare
stmt1
from
"select * from t1 where c1=?"
;
show
status
like
'Qcache_hits'
;
show
status
like
'Qcache_hits'
;
set
@
a
=
1
;
set
@
a
=
1
;
...
@@ -127,6 +129,12 @@ set @a=1;
...
@@ -127,6 +129,12 @@ set @a=1;
prepare
stmt4
from
"select * from t1 where c1=?"
;
prepare
stmt4
from
"select * from t1 where c1=?"
;
execute
stmt4
using
@
a
;
execute
stmt4
using
@
a
;
show
status
like
'Qcache_hits'
;
show
status
like
'Qcache_hits'
;
# verify that presence of user variables forbids caching
prepare
stmt4
from
"select @a from t1 where c1=?"
;
execute
stmt4
using
@
a
;
show
status
like
'Qcache_hits'
;
execute
stmt4
using
@
a
;
show
status
like
'Qcache_hits'
;
--
echo
----
switch
to
connection
default
----
--
echo
----
switch
to
connection
default
----
connection
default
;
connection
default
;
...
...
mysql-test/r/ps_1general.result
View file @
64cac0d6
...
@@ -378,6 +378,8 @@ prepare stmt1 from ' execute stmt2 ' ;
...
@@ -378,6 +378,8 @@ prepare stmt1 from ' execute stmt2 ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from ' deallocate prepare never_prepared ' ;
prepare stmt1 from ' deallocate prepare never_prepared ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from 'alter view v1 as select 2';
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt4 from ' use test ' ;
prepare stmt4 from ' use test ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt3 from ' create database mysqltest ';
prepare stmt3 from ' create database mysqltest ';
...
...
mysql-test/r/query_cache_ps_no_prot.result
View file @
64cac0d6
...
@@ -144,7 +144,7 @@ c1
...
@@ -144,7 +144,7 @@ c1
1
1
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
5
---- switch to connection con1 ----
---- switch to connection con1 ----
set @a=1;
set @a=1;
prepare stmt4 from "select * from t1 where c1=?";
prepare stmt4 from "select * from t1 where c1=?";
...
@@ -153,50 +153,63 @@ c1
...
@@ -153,50 +153,63 @@ c1
1
1
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 14
Qcache_hits 16
prepare stmt4 from "select @a from t1 where c1=?";
execute stmt4 using @a;
@a
1
show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 16
execute stmt4 using @a;
@a
1
show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 16
---- switch to connection default ----
---- switch to connection default ----
prepare stmt1 from "select * from t1 where c1=10";
prepare stmt1 from "select * from t1 where c1=10";
set global query_cache_size=0;
set global query_cache_size=0;
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
6
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
6
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
6
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
6
---- switch to connection con1 ----
---- switch to connection con1 ----
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
6
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
6
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
6
---- switch to connection default ----
---- switch to connection default ----
set global query_cache_size=100000;
set global query_cache_size=100000;
execute stmt1;
execute stmt1;
...
@@ -204,80 +217,80 @@ c1
...
@@ -204,80 +217,80 @@ c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
6
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
5
Qcache_hits 1
7
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
6
Qcache_hits 1
8
---- switch to connection con1 ----
---- switch to connection con1 ----
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
18
Qcache_hits
20
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
---- switch to connection default ----
---- switch to connection default ----
set global query_cache_size=0;
set global query_cache_size=0;
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
---- switch to connection con1 ----
---- switch to connection con1 ----
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
---- switch to connection default ----
---- switch to connection default ----
set global query_cache_size=0;
set global query_cache_size=0;
prepare stmt1 from "select * from t1 where c1=10";
prepare stmt1 from "select * from t1 where c1=10";
...
@@ -287,75 +300,75 @@ prepare stmt3 from "select * from t1 where c1=10";
...
@@ -287,75 +300,75 @@ prepare stmt3 from "select * from t1 where c1=10";
set global query_cache_size=100000;
set global query_cache_size=100000;
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
---- switch to connection con1 ----
---- switch to connection con1 ----
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
---- switch to connection default ----
---- switch to connection default ----
set global query_cache_size=0;
set global query_cache_size=0;
prepare stmt1 from "select * from t1 where c1=?";
prepare stmt1 from "select * from t1 where c1=?";
set global query_cache_size=100000;
set global query_cache_size=100000;
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
set @a=1;
set @a=1;
execute stmt1 using @a;
execute stmt1 using @a;
c1
c1
1
1
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
set @a=100;
set @a=100;
execute stmt1 using @a;
execute stmt1 using @a;
c1
c1
100
100
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
set @a=10;
set @a=10;
execute stmt1 using @a;
execute stmt1 using @a;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits
19
Qcache_hits
21
drop table t1;
drop table t1;
---- disconnect connection con1 ----
---- disconnect connection con1 ----
set @@global.query_cache_size=@initial_query_cache_size;
set @@global.query_cache_size=@initial_query_cache_size;
...
...
mysql-test/r/query_cache_ps_ps_prot.result
View file @
64cac0d6
...
@@ -144,7 +144,7 @@ c1
...
@@ -144,7 +144,7 @@ c1
1
1
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
2
Qcache_hits 1
3
---- switch to connection con1 ----
---- switch to connection con1 ----
set @a=1;
set @a=1;
prepare stmt4 from "select * from t1 where c1=?";
prepare stmt4 from "select * from t1 where c1=?";
...
@@ -153,50 +153,63 @@ c1
...
@@ -153,50 +153,63 @@ c1
1
1
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 12
Qcache_hits 14
prepare stmt4 from "select @a from t1 where c1=?";
execute stmt4 using @a;
@a
1
show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 14
execute stmt4 using @a;
@a
1
show status like 'Qcache_hits';
Variable_name Value
Qcache_hits 14
---- switch to connection default ----
---- switch to connection default ----
prepare stmt1 from "select * from t1 where c1=10";
prepare stmt1 from "select * from t1 where c1=10";
set global query_cache_size=0;
set global query_cache_size=0;
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
2
Qcache_hits 1
4
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
2
Qcache_hits 1
4
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
2
Qcache_hits 1
4
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
2
Qcache_hits 1
4
---- switch to connection con1 ----
---- switch to connection con1 ----
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
2
Qcache_hits 1
4
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
2
Qcache_hits 1
4
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
2
Qcache_hits 1
4
---- switch to connection default ----
---- switch to connection default ----
set global query_cache_size=100000;
set global query_cache_size=100000;
execute stmt1;
execute stmt1;
...
@@ -204,80 +217,80 @@ c1
...
@@ -204,80 +217,80 @@ c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
2
Qcache_hits 1
4
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
3
Qcache_hits 1
5
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
4
Qcache_hits 1
6
---- switch to connection con1 ----
---- switch to connection con1 ----
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
5
Qcache_hits 1
7
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
6
Qcache_hits 1
8
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
---- switch to connection default ----
---- switch to connection default ----
set global query_cache_size=0;
set global query_cache_size=0;
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
---- switch to connection con1 ----
---- switch to connection con1 ----
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
---- switch to connection default ----
---- switch to connection default ----
set global query_cache_size=0;
set global query_cache_size=0;
prepare stmt1 from "select * from t1 where c1=10";
prepare stmt1 from "select * from t1 where c1=10";
...
@@ -287,75 +300,75 @@ prepare stmt3 from "select * from t1 where c1=10";
...
@@ -287,75 +300,75 @@ prepare stmt3 from "select * from t1 where c1=10";
set global query_cache_size=100000;
set global query_cache_size=100000;
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt1;
execute stmt1;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
---- switch to connection con1 ----
---- switch to connection con1 ----
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
execute stmt3;
execute stmt3;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
---- switch to connection default ----
---- switch to connection default ----
set global query_cache_size=0;
set global query_cache_size=0;
prepare stmt1 from "select * from t1 where c1=?";
prepare stmt1 from "select * from t1 where c1=?";
set global query_cache_size=100000;
set global query_cache_size=100000;
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
set @a=1;
set @a=1;
execute stmt1 using @a;
execute stmt1 using @a;
c1
c1
1
1
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
set @a=100;
set @a=100;
execute stmt1 using @a;
execute stmt1 using @a;
c1
c1
100
100
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
set @a=10;
set @a=10;
execute stmt1 using @a;
execute stmt1 using @a;
c1
c1
10
10
show status like 'Qcache_hits';
show status like 'Qcache_hits';
Variable_name Value
Variable_name Value
Qcache_hits 1
7
Qcache_hits 1
9
drop table t1;
drop table t1;
---- disconnect connection con1 ----
---- disconnect connection con1 ----
set @@global.query_cache_size=@initial_query_cache_size;
set @@global.query_cache_size=@initial_query_cache_size;
...
...
mysql-test/r/sp-dynamic.result
View file @
64cac0d6
...
@@ -87,6 +87,10 @@ prepare stmt from "create table t1 (a int)";
...
@@ -87,6 +87,10 @@ prepare stmt from "create table t1 (a int)";
execute stmt;
execute stmt;
insert into t1 (a) values (1);
insert into t1 (a) values (1);
select * from t1;
select * from t1;
prepare stmt_alter from "alter table t1 add (b int)";
execute stmt_alter;
insert into t1 (a,b) values (2,1);
deallocate prepare stmt_alter;
deallocate prepare stmt;
deallocate prepare stmt;
deallocate prepare stmt_drop;
deallocate prepare stmt_drop;
end|
end|
...
@@ -245,6 +249,9 @@ a
...
@@ -245,6 +249,9 @@ a
1
1
drop procedure p1|
drop procedure p1|
drop table if exists t1|
drop table if exists t1|
drop table if exists t2|
Warnings:
Note 1051 Unknown table 't2'
create table t1 (id integer primary key auto_increment,
create table t1 (id integer primary key auto_increment,
stmt_text char(35), status varchar(20))|
stmt_text char(35), status varchar(20))|
insert into t1 (stmt_text) values
insert into t1 (stmt_text) values
...
@@ -255,7 +262,10 @@ insert into t1 (stmt_text) values
...
@@ -255,7 +262,10 @@ insert into t1 (stmt_text) values
("help help"), ("show databases"), ("show tables"),
("help help"), ("show databases"), ("show tables"),
("show table status"), ("show open tables"), ("show storage engines"),
("show table status"), ("show open tables"), ("show storage engines"),
("insert into t1 (id) values (1)"), ("update t1 set status=''"),
("insert into t1 (id) values (1)"), ("update t1 set status=''"),
("delete from t1"), ("truncate t1"), ("call p1()"), ("foo bar")|
("delete from t1"), ("truncate t1"), ("call p1()"), ("foo bar"),
("create view v1 as select 1"), ("alter view v1 as select 2"),
("drop view v1"),("create table t2 (a int)"),("alter table t2 add (b int)"),
("drop table t2")|
create procedure p1()
create procedure p1()
begin
begin
declare v_stmt_text varchar(255);
declare v_stmt_text varchar(255);
...
@@ -305,6 +315,12 @@ id stmt_text status
...
@@ -305,6 +315,12 @@ id stmt_text status
20 truncate t1 supported
20 truncate t1 supported
21 call p1() supported
21 call p1() supported
22 foo bar syntax error
22 foo bar syntax error
23 create view v1 as select 1 supported
24 alter view v1 as select 2 not supported
25 drop view v1 supported
26 create table t2 (a int) supported
27 alter table t2 add (b int) supported
28 drop table t2 supported
drop procedure p1|
drop procedure p1|
drop table t1|
drop table t1|
prepare stmt from 'select 1'|
prepare stmt from 'select 1'|
...
...
mysql-test/r/sp-error.result
View file @
64cac0d6
...
@@ -982,9 +982,9 @@ ERROR HY000: Explicit or implicit commit is not allowed in stored function or tr
...
@@ -982,9 +982,9 @@ ERROR HY000: Explicit or implicit commit is not allowed in stored function or tr
CREATE FUNCTION bug_13627_f() returns int BEGIN create view v1 as select 1; return 1; END |
CREATE FUNCTION bug_13627_f() returns int BEGIN create view v1 as select 1; return 1; END |
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter view v1 as select 1; END |
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter view v1 as select 1; END |
ERROR
HY000: Explicit or implicit commit is not allowed in stored function or trigger.
ERROR
0A000: ALTER VIEW is not allowed in stored procedures
CREATE FUNCTION bug_13627_f() returns int BEGIN alter view v1 as select 1; return 1; END |
CREATE FUNCTION bug_13627_f() returns int BEGIN alter view v1 as select 1; return 1; END |
ERROR
HY000: Explicit or implicit commit is not allowed in stored function or trigger.
ERROR
0A000: ALTER VIEW is not allowed in stored procedures
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop view v1; END |
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop view v1; END |
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE FUNCTION bug_13627_f() returns int BEGIN drop view v1; return 1; END |
CREATE FUNCTION bug_13627_f() returns int BEGIN drop view v1; return 1; END |
...
...
mysql-test/t/ps_1general.test
View file @
64cac0d6
...
@@ -414,6 +414,10 @@ prepare stmt1 from ' execute stmt2 ' ;
...
@@ -414,6 +414,10 @@ prepare stmt1 from ' execute stmt2 ' ;
--
error
ER_UNSUPPORTED_PS
--
error
ER_UNSUPPORTED_PS
prepare
stmt1
from
' deallocate prepare never_prepared '
;
prepare
stmt1
from
' deallocate prepare never_prepared '
;
## We don't support alter view as prepared statements
--
error
ER_UNSUPPORTED_PS
prepare
stmt1
from
'alter view v1 as select 2'
;
## switch the database connection
## switch the database connection
--
error
ER_UNSUPPORTED_PS
--
error
ER_UNSUPPORTED_PS
prepare
stmt4
from
' use test '
;
prepare
stmt4
from
' use test '
;
...
...
mysql-test/t/sp-dynamic.test
View file @
64cac0d6
...
@@ -85,7 +85,7 @@ call p1()|
...
@@ -85,7 +85,7 @@ call p1()|
call
p1
()
|
call
p1
()
|
drop
procedure
p1
|
drop
procedure
p1
|
#
#
# D. Create/Drop a table (a DDL that issues a commit) in Dynamic SQL.
# D. Create/Drop
/Alter
a table (a DDL that issues a commit) in Dynamic SQL.
# (should work ok).
# (should work ok).
#
#
create
procedure
p1
()
create
procedure
p1
()
...
@@ -96,6 +96,10 @@ begin
...
@@ -96,6 +96,10 @@ begin
execute
stmt
;
execute
stmt
;
insert
into
t1
(
a
)
values
(
1
);
insert
into
t1
(
a
)
values
(
1
);
select
*
from
t1
;
select
*
from
t1
;
prepare
stmt_alter
from
"alter table t1 add (b int)"
;
execute
stmt_alter
;
insert
into
t1
(
a
,
b
)
values
(
2
,
1
);
deallocate
prepare
stmt_alter
;
deallocate
prepare
stmt
;
deallocate
prepare
stmt
;
deallocate
prepare
stmt_drop
;
deallocate
prepare
stmt_drop
;
end
|
end
|
...
@@ -239,6 +243,7 @@ drop procedure p1|
...
@@ -239,6 +243,7 @@ drop procedure p1|
# K. Use of continue handlers with Dynamic SQL.
# K. Use of continue handlers with Dynamic SQL.
#
#
drop
table
if
exists
t1
|
drop
table
if
exists
t1
|
drop
table
if
exists
t2
|
create
table
t1
(
id
integer
primary
key
auto_increment
,
create
table
t1
(
id
integer
primary
key
auto_increment
,
stmt_text
char
(
35
),
status
varchar
(
20
))
|
stmt_text
char
(
35
),
status
varchar
(
20
))
|
insert
into
t1
(
stmt_text
)
values
insert
into
t1
(
stmt_text
)
values
...
@@ -249,7 +254,10 @@ insert into t1 (stmt_text) values
...
@@ -249,7 +254,10 @@ insert into t1 (stmt_text) values
(
"help help"
),
(
"show databases"
),
(
"show tables"
),
(
"help help"
),
(
"show databases"
),
(
"show tables"
),
(
"show table status"
),
(
"show open tables"
),
(
"show storage engines"
),
(
"show table status"
),
(
"show open tables"
),
(
"show storage engines"
),
(
"insert into t1 (id) values (1)"
),
(
"update t1 set status=''"
),
(
"insert into t1 (id) values (1)"
),
(
"update t1 set status=''"
),
(
"delete from t1"
),
(
"truncate t1"
),
(
"call p1()"
),
(
"foo bar"
)
|
(
"delete from t1"
),
(
"truncate t1"
),
(
"call p1()"
),
(
"foo bar"
),
(
"create view v1 as select 1"
),
(
"alter view v1 as select 2"
),
(
"drop view v1"
),(
"create table t2 (a int)"
),(
"alter table t2 add (b int)"
),
(
"drop table t2"
)
|
create
procedure
p1
()
create
procedure
p1
()
begin
begin
declare
v_stmt_text
varchar
(
255
);
declare
v_stmt_text
varchar
(
255
);
...
...
mysql-test/t/sp-error.test
View file @
64cac0d6
...
@@ -1087,12 +1087,12 @@ delimiter ;|
...
@@ -1087,12 +1087,12 @@ delimiter ;|
#
#
# BUG 12490 (Packets out of order if calling HELP CONTENTS from Stored Procedure)
# BUG 12490 (Packets out of order if calling HELP CONTENTS from Stored Procedure)
#
#
--
error
1314
--
error
ER_SP_BADSTATEMENT
CREATE
PROCEDURE
BUG_12490
()
HELP
CONTENTS
;
CREATE
PROCEDURE
BUG_12490
()
HELP
CONTENTS
;
--
error
1314
--
error
ER_SP_BADSTATEMENT
CREATE
FUNCTION
BUG_12490
()
RETURNS
INT
HELP
CONTENTS
;
CREATE
FUNCTION
BUG_12490
()
RETURNS
INT
HELP
CONTENTS
;
CREATE
TABLE
t_bug_12490
(
a
int
);
CREATE
TABLE
t_bug_12490
(
a
int
);
--
error
1314
--
error
ER_SP_BADSTATEMENT
CREATE
TRIGGER
BUG_12490
BEFORE
UPDATE
ON
t_bug_12490
FOR
EACH
ROW
HELP
CONTENTS
;
CREATE
TRIGGER
BUG_12490
BEFORE
UPDATE
ON
t_bug_12490
FOR
EACH
ROW
HELP
CONTENTS
;
DROP
TABLE
t_bug_12490
;
DROP
TABLE
t_bug_12490
;
...
@@ -1401,9 +1401,9 @@ CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create view v1 as sele
...
@@ -1401,9 +1401,9 @@ CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create view v1 as sele
--
error
ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
--
error
ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
CREATE
FUNCTION
bug_13627_f
()
returns
int
BEGIN
create
view
v1
as
select
1
;
return
1
;
END
|
CREATE
FUNCTION
bug_13627_f
()
returns
int
BEGIN
create
view
v1
as
select
1
;
return
1
;
END
|
--
error
ER_
COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
--
error
ER_
SP_BADSTATEMENT
CREATE
TRIGGER
tr1
BEFORE
INSERT
ON
t1
FOR
EACH
ROW
BEGIN
alter
view
v1
as
select
1
;
END
|
CREATE
TRIGGER
tr1
BEFORE
INSERT
ON
t1
FOR
EACH
ROW
BEGIN
alter
view
v1
as
select
1
;
END
|
--
error
ER_
COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
--
error
ER_
SP_BADSTATEMENT
CREATE
FUNCTION
bug_13627_f
()
returns
int
BEGIN
alter
view
v1
as
select
1
;
return
1
;
END
|
CREATE
FUNCTION
bug_13627_f
()
returns
int
BEGIN
alter
view
v1
as
select
1
;
return
1
;
END
|
--
error
ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
--
error
ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
...
...
sql/Makefile.am
View file @
64cac0d6
...
@@ -27,6 +27,10 @@ SUBDIRS = share
...
@@ -27,6 +27,10 @@ SUBDIRS = share
libexec_PROGRAMS
=
mysqld
libexec_PROGRAMS
=
mysqld
EXTRA_PROGRAMS
=
gen_lex_hash
EXTRA_PROGRAMS
=
gen_lex_hash
bin_PROGRAMS
=
mysql_tzinfo_to_sql
bin_PROGRAMS
=
mysql_tzinfo_to_sql
noinst_LTLIBRARIES
=
libndb.la
\
udf_example.la
SUPPORTING_LIBS
=
$(top_builddir)
/vio/libvio.a
\
SUPPORTING_LIBS
=
$(top_builddir)
/vio/libvio.a
\
$(top_builddir)
/mysys/libmysys.a
\
$(top_builddir)
/mysys/libmysys.a
\
$(top_builddir)
/dbug/libdbug.a
\
$(top_builddir)
/dbug/libdbug.a
\
...
@@ -34,7 +38,8 @@ SUPPORTING_LIBS = $(top_builddir)/vio/libvio.a \
...
@@ -34,7 +38,8 @@ SUPPORTING_LIBS = $(top_builddir)/vio/libvio.a \
$(top_builddir)
/strings/libmystrings.a
$(top_builddir)
/strings/libmystrings.a
mysqld_DEPENDENCIES
=
@mysql_plugin_libs@
$(SUPPORTING_LIBS)
mysqld_DEPENDENCIES
=
@mysql_plugin_libs@
$(SUPPORTING_LIBS)
LDADD
=
$(SUPPORTING_LIBS)
@ZLIB_LIBS@ @NDB_SCI_LIBS@
LDADD
=
$(SUPPORTING_LIBS)
@ZLIB_LIBS@ @NDB_SCI_LIBS@
mysqld_LDADD
=
@MYSQLD_EXTRA_LDFLAGS@
\
mysqld_LDADD
=
libndb.la
\
@MYSQLD_EXTRA_LDFLAGS@
\
@pstack_libs@
\
@pstack_libs@
\
@mysql_plugin_libs@
\
@mysql_plugin_libs@
\
$(LDADD)
$(CXXLDFLAGS)
$(WRAPLIBS)
@LIBDL@
\
$(LDADD)
$(CXXLDFLAGS)
$(WRAPLIBS)
@LIBDL@
\
...
@@ -94,8 +99,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
...
@@ -94,8 +99,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
log_event_old.cc rpl_record_old.cc
\
log_event_old.cc rpl_record_old.cc
\
discover.cc time.cc opt_range.cc opt_sum.cc
\
discover.cc time.cc opt_range.cc opt_sum.cc
\
records.cc filesort.cc handler.cc
\
records.cc filesort.cc handler.cc
\
ha_ndbcluster.cc ha_ndbcluster_cond.cc
\
ha_partition.cc
\
ha_ndbcluster_binlog.cc ha_partition.cc
\
sql_db.cc sql_table.cc sql_rename.cc sql_crypt.cc
\
sql_db.cc sql_table.cc sql_rename.cc sql_crypt.cc
\
sql_load.cc mf_iocache.cc field_conv.cc sql_show.cc
\
sql_load.cc mf_iocache.cc field_conv.cc sql_show.cc
\
sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc
\
sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc
\
...
@@ -116,6 +120,11 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
...
@@ -116,6 +120,11 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
sql_builtin.cc sql_tablespace.cc partition_info.cc
\
sql_builtin.cc sql_tablespace.cc partition_info.cc
\
sql_servers.cc
sql_servers.cc
libndb_la_CPPFLAGS
=
@ndbcluster_includes@
libndb_la_SOURCES
=
ha_ndbcluster.cc
\
ha_ndbcluster_binlog.cc
\
ha_ndbcluster_cond.cc
gen_lex_hash_SOURCES
=
gen_lex_hash.cc
gen_lex_hash_SOURCES
=
gen_lex_hash.cc
gen_lex_hash_LDFLAGS
=
@NOINST_LDFLAGS@
gen_lex_hash_LDFLAGS
=
@NOINST_LDFLAGS@
...
@@ -159,22 +168,7 @@ lex_hash.h: gen_lex_hash.cc lex.h
...
@@ -159,22 +168,7 @@ lex_hash.h: gen_lex_hash.cc lex.h
./gen_lex_hash
$(EXEEXT)
>
$@
-t
./gen_lex_hash
$(EXEEXT)
>
$@
-t
$(MV)
$@
-t
$@
$(MV)
$@
-t
$@
# the following four should eventually be moved out of this directory
ha_ndbcluster.o
:
ha_ndbcluster.cc ha_ndbcluster.h
$(CXXCOMPILE)
@ndbcluster_includes@
$(LM_CFLAGS)
-c
$<
ha_ndbcluster_cond.o
:
ha_ndbcluster_cond.cc ha_ndbcluster_cond.h
$(CXXCOMPILE)
@ndbcluster_includes@
$(LM_CFLAGS)
-c
$<
ha_ndbcluster_binlog.o
:
ha_ndbcluster_binlog.cc ha_ndbcluster_binlog.h
$(CXXCOMPILE)
@ndbcluster_includes@
$(LM_CFLAGS)
-c
$<
#Until we can get rid of dependencies on ha_ndbcluster.h
handler.o
:
handler.cc ha_ndbcluster.h
$(CXXCOMPILE)
@ndbcluster_includes@
$(CXXFLAGS)
-c
$<
# For testing of udf_example.so
# For testing of udf_example.so
noinst_LTLIBRARIES
=
udf_example.la
udf_example_la_SOURCES
=
udf_example.c
udf_example_la_SOURCES
=
udf_example.c
udf_example_la_LDFLAGS
=
-module
-rpath
$(pkglibdir)
udf_example_la_LDFLAGS
=
-module
-rpath
$(pkglibdir)
...
...
sql/sql_class.h
View file @
64cac0d6
...
@@ -436,6 +436,13 @@ class Query_arena
...
@@ -436,6 +436,13 @@ class Query_arena
#ifndef DBUG_OFF
#ifndef DBUG_OFF
bool
is_backup_arena
;
/* True if this arena is used for backup. */
bool
is_backup_arena
;
/* True if this arena is used for backup. */
#endif
#endif
/*
The states relfects three diffrent life cycles for three
different types of statements:
Prepared statement: INITIALIZED -> PREPARED -> EXECUTED.
Stored procedure: INITIALIZED_FOR_SP -> EXECUTED.
Other statements: CONVENTIONAL_EXECUTION never changes.
*/
enum
enum_state
enum
enum_state
{
{
INITIALIZED
=
0
,
INITIALIZED_FOR_SP
=
1
,
PREPARED
=
2
,
INITIALIZED
=
0
,
INITIALIZED_FOR_SP
=
1
,
PREPARED
=
2
,
...
...
sql/sql_parse.cc
View file @
64cac0d6
...
@@ -4076,6 +4076,10 @@ mysql_execute_command(THD *thd)
...
@@ -4076,6 +4076,10 @@ mysql_execute_command(THD *thd)
#endif // ifndef DBUG_OFF
#endif // ifndef DBUG_OFF
case
SQLCOM_CREATE_VIEW
:
case
SQLCOM_CREATE_VIEW
:
{
{
/*
Note: SQLCOM_CREATE_VIEW also handles 'ALTER VIEW' commands
as specified through the thd->lex->create_view_mode flag.
*/
if
(
end_active_trans
(
thd
))
if
(
end_active_trans
(
thd
))
goto
error
;
goto
error
;
...
...
sql/sql_prepare.cc
View file @
64cac0d6
...
@@ -1726,6 +1726,13 @@ static bool check_prepared_statement(Prepared_statement *stmt,
...
@@ -1726,6 +1726,13 @@ static bool check_prepared_statement(Prepared_statement *stmt,
res
=
mysql_test_create_table
(
stmt
);
res
=
mysql_test_create_table
(
stmt
);
break
;
break
;
case
SQLCOM_CREATE_VIEW
:
if
(
lex
->
create_view_mode
==
VIEW_ALTER
)
{
my_message
(
ER_UNSUPPORTED_PS
,
ER
(
ER_UNSUPPORTED_PS
),
MYF
(
0
));
goto
error
;
}
break
;
case
SQLCOM_DO
:
case
SQLCOM_DO
:
res
=
mysql_test_do_fields
(
stmt
,
tables
,
lex
->
insert_list
);
res
=
mysql_test_do_fields
(
stmt
,
tables
,
lex
->
insert_list
);
break
;
break
;
...
@@ -1779,7 +1786,6 @@ static bool check_prepared_statement(Prepared_statement *stmt,
...
@@ -1779,7 +1786,6 @@ static bool check_prepared_statement(Prepared_statement *stmt,
case
SQLCOM_ROLLBACK
:
case
SQLCOM_ROLLBACK
:
case
SQLCOM_TRUNCATE
:
case
SQLCOM_TRUNCATE
:
case
SQLCOM_CALL
:
case
SQLCOM_CALL
:
case
SQLCOM_CREATE_VIEW
:
case
SQLCOM_DROP_VIEW
:
case
SQLCOM_DROP_VIEW
:
case
SQLCOM_REPAIR
:
case
SQLCOM_REPAIR
:
case
SQLCOM_ANALYZE
:
case
SQLCOM_ANALYZE
:
...
@@ -2916,18 +2922,6 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
...
@@ -2916,18 +2922,6 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
thd
->
restore_backup_statement
(
this
,
&
stmt_backup
);
thd
->
restore_backup_statement
(
this
,
&
stmt_backup
);
thd
->
stmt_arena
=
old_stmt_arena
;
thd
->
stmt_arena
=
old_stmt_arena
;
if
((
protocol
->
type
()
==
Protocol
::
PROTOCOL_TEXT
)
&&
(
param_count
>
0
))
{
/*
This is a mysql_sql_stmt_prepare(); query expansion will insert user
variable references, and user variables are uncacheable, thus we have to
mark this statement as uncacheable.
This has to be done before setup_set_params(), as it may make expansion
unneeded.
*/
lex
->
safe_to_cache_query
=
FALSE
;
}
if
(
error
==
0
)
if
(
error
==
0
)
{
{
setup_set_params
();
setup_set_params
();
...
...
sql/sql_view.cc
View file @
64cac0d6
...
@@ -205,18 +205,17 @@ fill_defined_view_parts (THD *thd, TABLE_LIST *view)
...
@@ -205,18 +205,17 @@ fill_defined_view_parts (THD *thd, TABLE_LIST *view)
}
}
/*
/*
*
Creating/altering VIEW procedure
@brief
Creating/altering VIEW procedure
SYNOPSIS
@param thd thread handler
mysql_create_view()
@param views views to create
thd - thread handler
@param mode VIEW_CREATE_NEW, VIEW_ALTER, VIEW_CREATE_OR_REPLACE
views - views to create
mode - VIEW_CREATE_NEW, VIEW_ALTER, VIEW_CREATE_OR_REPLACE
RETURN VALUE
@note This function handles both create and alter view commands.
FALSE OK
TRUE Error
@retval FALSE Operation was a success.
@retval TRUE An error occured.
*/
*/
bool
mysql_create_view
(
THD
*
thd
,
TABLE_LIST
*
views
,
bool
mysql_create_view
(
THD
*
thd
,
TABLE_LIST
*
views
,
...
...
sql/sql_yacc.yy
View file @
64cac0d6
...
@@ -5169,7 +5169,14 @@ alter:
...
@@ -5169,7 +5169,14 @@ alter:
}
}
| ALTER view_algorithm definer
| ALTER view_algorithm definer
{
{
Lex->create_view_mode= VIEW_ALTER;
LEX *lex= Lex;
if (lex->sphead)
{
my_error(ER_SP_BADSTATEMENT, MYF(0), "ALTER VIEW");
MYSQL_YYABORT;
}
lex->create_view_mode= VIEW_ALTER;
}
}
view_tail
view_tail
{}
{}
...
@@ -5181,6 +5188,12 @@ alter:
...
@@ -5181,6 +5188,12 @@ alter:
*/
*/
{
{
LEX *lex= Lex;
LEX *lex= Lex;
if (lex->sphead)
{
my_error(ER_SP_BADSTATEMENT, MYF(0), "ALTER VIEW");
MYSQL_YYABORT;
}
lex->create_view_algorithm= VIEW_ALGORITHM_UNDEFINED;
lex->create_view_algorithm= VIEW_ALGORITHM_UNDEFINED;
lex->create_view_mode= VIEW_ALTER;
lex->create_view_mode= VIEW_ALTER;
}
}
...
...
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