Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
c528084a
Commit
c528084a
authored
Jun 09, 2007
by
holyfoot/hf@hfmain.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into mysql.com:/home/hf/work/28333/my50-28333
parents
c55e9c5f
47ecabe9
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
72 additions
and
1 deletion
+72
-1
mysql-test/r/information_schema.result
mysql-test/r/information_schema.result
+11
-0
mysql-test/r/view.result
mysql-test/r/view.result
+13
-0
mysql-test/t/information_schema.test
mysql-test/t/information_schema.test
+15
-0
mysql-test/t/view.test
mysql-test/t/view.test
+4
-0
sql/sql_show.cc
sql/sql_show.cc
+29
-1
No files found.
mysql-test/r/information_schema.result
View file @
c528084a
...
...
@@ -1315,3 +1315,14 @@ TABLE_PRIVILEGES information_schema.TABLE_PRIVILEGES 1
TRIGGERS information_schema.TRIGGERS 1
USER_PRIVILEGES information_schema.USER_PRIVILEGES 1
VIEWS information_schema.VIEWS 1
create table t1(f1 int);
create view v1 as select f1+1 as a from t1;
create table t2 (f1 int, f2 int);
create view v2 as select f1+1 as a, f2 as b from t2;
select table_name, is_updatable from information_schema.views;
table_name is_updatable
v1 NO
v2 YES
delete from v1;
drop view v1,v2;
drop table t1,t2;
mysql-test/r/view.result
View file @
c528084a
...
...
@@ -23,6 +23,9 @@ c
5
6
11
select is_updatable from information_schema.views where table_name='v1';
is_updatable
NO
create temporary table t1 (a int, b int);
select * from t1;
a b
...
...
@@ -322,6 +325,12 @@ create table t1 (a int, b int, primary key(a));
insert into t1 values (10,2), (20,3), (30,4), (40,5), (50,10);
create view v1 (a,c) as select a, b+1 from t1;
create algorithm=temptable view v2 (a,c) as select a, b+1 from t1;
select is_updatable from information_schema.views where table_name='v2';
is_updatable
NO
select is_updatable from information_schema.views where table_name='v1';
is_updatable
YES
update v1 set c=a+c;
ERROR HY000: Column 'c' is not updatable
update v2 set a=a+c;
...
...
@@ -604,6 +613,10 @@ insert into t1 values(5,'Hello, world of views');
create view v1 as select * from t1;
create view v2 as select * from v1;
update v2 set col2='Hello, view world';
select is_updatable from information_schema.views;
is_updatable
YES
YES
select * from t1;
col1 col2
5 Hello, view world
...
...
mysql-test/t/information_schema.test
View file @
c528084a
...
...
@@ -1023,4 +1023,19 @@ where t.table_schema = 'information_schema' and
group
by
c2
.
column_type
order
by
num
limit
1
)
group
by
t
.
table_name
order
by
num1
,
t
.
table_name
;
#
# Bug#28266 IS_UPDATABLE field on VIEWS table in I_S database is wrong
#
create
table
t1
(
f1
int
);
create
view
v1
as
select
f1
+
1
as
a
from
t1
;
create
table
t2
(
f1
int
,
f2
int
);
create
view
v2
as
select
f1
+
1
as
a
,
f2
as
b
from
t2
;
select
table_name
,
is_updatable
from
information_schema
.
views
;
#
# Note: we can perform 'delete' for non updatable view.
#
delete
from
v1
;
drop
view
v1
,
v2
;
drop
table
t1
,
t2
;
# End of 5.0 tests.
mysql-test/t/view.test
View file @
c528084a
...
...
@@ -32,6 +32,7 @@ create view v1 (c,d) as select a,b from t1
# simple view
create
view
v1
(
c
)
as
select
b
+
1
from
t1
;
select
c
from
v1
;
select
is_updatable
from
information_schema
.
views
where
table_name
=
'v1'
;
# temporary table should not hide table of view
create
temporary
table
t1
(
a
int
,
b
int
);
...
...
@@ -228,6 +229,8 @@ create table t1 (a int, b int, primary key(a));
insert
into
t1
values
(
10
,
2
),
(
20
,
3
),
(
30
,
4
),
(
40
,
5
),
(
50
,
10
);
create
view
v1
(
a
,
c
)
as
select
a
,
b
+
1
from
t1
;
create
algorithm
=
temptable
view
v2
(
a
,
c
)
as
select
a
,
b
+
1
from
t1
;
select
is_updatable
from
information_schema
.
views
where
table_name
=
'v2'
;
select
is_updatable
from
information_schema
.
views
where
table_name
=
'v1'
;
# try to update expression
--
error
1348
update
v1
set
c
=
a
+
c
;
...
...
@@ -497,6 +500,7 @@ insert into t1 values(5,'Hello, world of views');
create
view
v1
as
select
*
from
t1
;
create
view
v2
as
select
*
from
v1
;
update
v2
set
col2
=
'Hello, view world'
;
select
is_updatable
from
information_schema
.
views
;
select
*
from
t1
;
drop
view
v2
,
v1
;
drop
table
t1
;
...
...
sql/sql_show.cc
View file @
c528084a
...
...
@@ -3158,6 +3158,7 @@ static int get_schema_views_record(THD *thd, struct st_table_list *tables,
DBUG_ENTER
(
"get_schema_views_record"
);
char
definer
[
USER_HOST_BUFF_SIZE
];
uint
definer_len
;
bool
updatable_view
;
if
(
tables
->
view
)
{
...
...
@@ -3195,7 +3196,34 @@ static int get_schema_views_record(THD *thd, struct st_table_list *tables,
else
table
->
field
[
4
]
->
store
(
STRING_WITH_LEN
(
"NONE"
),
cs
);
if
(
tables
->
updatable_view
)
updatable_view
=
0
;
if
(
tables
->
algorithm
!=
VIEW_ALGORITHM_TMPTABLE
)
{
/*
We should use tables->view->select_lex.item_list here and
can not use Field_iterator_view because the view always uses
temporary algorithm during opening for I_S and
TABLE_LIST fields 'field_translation' & 'field_translation_end'
are uninitialized is this case.
*/
List
<
Item
>
*
fields
=
&
tables
->
view
->
select_lex
.
item_list
;
List_iterator
<
Item
>
it
(
*
fields
);
Item
*
item
;
Item_field
*
field
;
/*
chech that at least one coulmn in view is updatable
*/
while
((
item
=
it
++
))
{
if
((
field
=
item
->
filed_for_view_update
())
&&
field
->
field
&&
!
field
->
field
->
table
->
pos_in_table_list
->
schema_table
)
{
updatable_view
=
1
;
break
;
}
}
}
if
(
updatable_view
)
table
->
field
[
5
]
->
store
(
STRING_WITH_LEN
(
"YES"
),
cs
);
else
table
->
field
[
5
]
->
store
(
STRING_WITH_LEN
(
"NO"
),
cs
);
...
...
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