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
c67d4799
Commit
c67d4799
authored
Nov 15, 2004
by
gluh@gluh.mysql.r18.ru
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixes for information_schema
parent
bb529506
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
117 additions
and
27 deletions
+117
-27
mysql-test/r/information_schema.result
mysql-test/r/information_schema.result
+51
-12
mysql-test/t/information_schema.test
mysql-test/t/information_schema.test
+36
-0
sql/sql_acl.cc
sql/sql_acl.cc
+2
-2
sql/sql_show.cc
sql/sql_show.cc
+28
-13
No files found.
mysql-test/r/information_schema.result
View file @
c67d4799
grant all privileges on test.* to mysqltest_1@localhost;
grant all privileges on test.* to mysqltest_1@localhost;
select * from information_schema.SCHEMATA where schema_name > 'm';
select * from information_schema.SCHEMATA where schema_name > 'm';
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
NULL mysql latin1
_swedish_ci
NULL mysql latin1
NULL test latin1
_swedish_ci
NULL test latin1
select schema_name from information_schema.schemata;
select schema_name from information_schema.schemata;
schema_name
schema_name
mysql
mysql
test
test
show databases *;
show databases *;
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
NULL mysql latin1
_swedish_ci
NULL mysql latin1
NULL test latin1
_swedish_ci
NULL test latin1
show databases like 't%';
show databases like 't%';
Database (t%)
Database (t%)
test
test
...
@@ -20,7 +20,7 @@ mysql
...
@@ -20,7 +20,7 @@ mysql
test
test
show databases * where schema_name like 't%';
show databases * where schema_name like 't%';
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
NULL test latin1
_swedish_ci
NULL test latin1
show databases * where schema_name = 't%';
show databases * where schema_name = 't%';
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME
create database testtets;
create database testtets;
...
@@ -119,10 +119,10 @@ Field Type Collation Null Key Default Extra Privileges Comment
...
@@ -119,10 +119,10 @@ Field Type Collation Null Key Default Extra Privileges Comment
c char(64) latin1_swedish_ci select,insert,update,references
c char(64) latin1_swedish_ci select,insert,update,references
select * from information_schema.COLUMNS where table_name="t1"
select * from information_schema.COLUMNS where table_name="t1"
and column_name= "a";
and column_name= "a";
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME TYPE COLLATION_NAME IS_NULLABLE KEY COLUMN_DEFAULT EXTRA PRIVIL
I
GES COMMENT
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME TYPE COLLATION_NAME IS_NULLABLE KEY COLUMN_DEFAULT EXTRA PRIVIL
E
GES COMMENT
NULL testtets t1 a 1 int 0 11 4 0 NULL int(11) NULL YES NULL select,insert,update,references
NULL testtets t1 a 1 int 0 11 4 0 NULL int(11) NULL YES NULL select,insert,update,references
show columns * where table_name = "t1";
show columns * where table_name = "t1";
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME TYPE COLLATION_NAME IS_NULLABLE KEY COLUMN_DEFAULT EXTRA PRIVIL
I
GES COMMENT
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME TYPE COLLATION_NAME IS_NULLABLE KEY COLUMN_DEFAULT EXTRA PRIVIL
E
GES COMMENT
NULL testtets t1 a 1 int 0 11 4 0 NULL int(11) NULL YES NULL
NULL testtets t1 a 1 int 0 11 4 0 NULL int(11) NULL YES NULL
NULL testtets t1 b 2 varchar 30 30 30 31 latin1 varchar(30) latin1_swedish_ci YES MUL NULL
NULL testtets t1 b 2 varchar 30 30 30 31 latin1 varchar(30) latin1_swedish_ci YES MUL NULL
drop view v1;
drop view v1;
...
@@ -352,7 +352,7 @@ t1 CREATE TABLE `t1` (
...
@@ -352,7 +352,7 @@ t1 CREATE TABLE `t1` (
select * from information_schema.TABLE_CONSTRAINTS where
select * from information_schema.TABLE_CONSTRAINTS where
TABLE_SCHEMA= "test";
TABLE_SCHEMA= "test";
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_METHOD
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_METHOD
NULL test PRIMARY test t1 PRIMARY NULL
NULL test PRIMARY test t1 PRIMARY
KEY
NULL
NULL test constraint_1 test t1 UNIQUE NULL
NULL test constraint_1 test t1 UNIQUE NULL
NULL test key_1 test t1 UNIQUE NULL
NULL test key_1 test t1 UNIQUE NULL
NULL test key_2 test t1 UNIQUE NULL
NULL test key_2 test t1 UNIQUE NULL
...
@@ -371,10 +371,10 @@ FOREIGN KEY (t1_id) REFERENCES t1(id) ON UPDATE CASCADE) ENGINE=INNODB;
...
@@ -371,10 +371,10 @@ FOREIGN KEY (t1_id) REFERENCES t1(id) ON UPDATE CASCADE) ENGINE=INNODB;
select * from information_schema.TABLE_CONSTRAINTS where
select * from information_schema.TABLE_CONSTRAINTS where
TABLE_SCHEMA= "test";
TABLE_SCHEMA= "test";
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_METHOD
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_METHOD
NULL test PRIMARY test t1 PRIMARY NULL
NULL test PRIMARY test t1 PRIMARY
KEY
NULL
NULL test PRIMARY test t2 PRIMARY NULL
NULL test PRIMARY test t2 PRIMARY
KEY
NULL
NULL test t2_ibfk_1 test t2 FOREIGN ON DELETE CASCADE
NULL test t2_ibfk_1 test t2 FOREIGN
KEY
ON DELETE CASCADE
NULL test t2_ibfk_2 test t2 FOREIGN ON UPDATE CASCADE
NULL test t2_ibfk_2 test t2 FOREIGN
KEY
ON UPDATE CASCADE
select * from information_schema.KEY_COLUMN_USAGE where
select * from information_schema.KEY_COLUMN_USAGE where
TABLE_SCHEMA= "test";
TABLE_SCHEMA= "test";
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
...
@@ -400,3 +400,42 @@ drop table t2;
...
@@ -400,3 +400,42 @@ drop table t2;
drop table t1;
drop table t1;
drop procedure sel2;
drop procedure sel2;
drop function sub1;
drop function sub1;
create table t1(a int);
create view v1 (c) as select a from t1 with check option;
create view v2 (c) as select a from t1 WITH LOCAL CHECK OPTION;
create view v3 (c) as select a from t1 WITH CASCADED CHECK OPTION;
select * from information_schema.views;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE
NULL test v1 select `test`.`t1`.`a` AS `c` from `test`.`t1` WITH CASCADED CHECK OPTION YES
NULL test v2 select `test`.`t1`.`a` AS `c` from `test`.`t1` WITH LOCAL CHECK OPTION YES
NULL test v3 select `test`.`t1`.`a` AS `c` from `test`.`t1` WITH CASCADED CHECK OPTION YES
grant select (a) on test.t1 to joe@localhost with grant option;
select * from INFORMATION_SCHEMA.COLUMN_PRIVILEGES;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE
'joe'@'localhost' NULL test t1 a SELECT YES
select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES;
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
'joe'@'localhost' NULL test t1 USAGE YES
drop view v1, v2, v3;
drop table t1;
delete from mysql.user where user='joe';
delete from mysql.db where user='joe';
delete from mysql.tables_priv where user='joe';
delete from mysql.columns_priv where user='joe';
flush privileges;
create procedure px5 ()
begin
declare v int;
declare c cursor for select version from
information_schema.tables;
open c;
fetch c into v;
select v;
close c;
end;//
call px5()//
v
9
call px5()//
v
9
mysql-test/t/information_schema.test
View file @
c67d4799
...
@@ -186,3 +186,39 @@ drop table t1;
...
@@ -186,3 +186,39 @@ drop table t1;
drop
procedure
sel2
;
drop
procedure
sel2
;
drop
function
sub1
;
drop
function
sub1
;
create
table
t1
(
a
int
);
create
view
v1
(
c
)
as
select
a
from
t1
with
check
option
;
create
view
v2
(
c
)
as
select
a
from
t1
WITH
LOCAL
CHECK
OPTION
;
create
view
v3
(
c
)
as
select
a
from
t1
WITH
CASCADED
CHECK
OPTION
;
select
*
from
information_schema
.
views
;
grant
select
(
a
)
on
test
.
t1
to
joe
@
localhost
with
grant
option
;
select
*
from
INFORMATION_SCHEMA
.
COLUMN_PRIVILEGES
;
select
*
from
INFORMATION_SCHEMA
.
TABLE_PRIVILEGES
;
drop
view
v1
,
v2
,
v3
;
drop
table
t1
;
delete
from
mysql
.
user
where
user
=
'joe'
;
delete
from
mysql
.
db
where
user
=
'joe'
;
delete
from
mysql
.
tables_priv
where
user
=
'joe'
;
delete
from
mysql
.
columns_priv
where
user
=
'joe'
;
flush
privileges
;
delimiter
//;
create
procedure
px5
()
begin
declare
v
int
;
declare
c
cursor
for
select
version
from
information_schema
.
tables
;
open
c
;
fetch
c
into
v
;
select
v
;
close
c
;
end
;
//
call
px5
()
//
call
px5
()
//
delimiter
;
//
\ No newline at end of file
sql/sql_acl.cc
View file @
c67d4799
...
@@ -4107,10 +4107,10 @@ int fill_schema_column_privileges(THD *thd, TABLE_LIST *tables, COND *cond)
...
@@ -4107,10 +4107,10 @@ int fill_schema_column_privileges(THD *thd, TABLE_LIST *tables, COND *cond)
ulong
table_access
=
grant_table
->
cols
;
ulong
table_access
=
grant_table
->
cols
;
if
(
table_access
!=
0
)
if
(
table_access
!=
0
)
{
{
ulong
test_access
=
grant_table
->
cols
&
~
GRANT_ACL
;
if
(
!
(
grant_table
->
privs
&
GRANT_ACL
))
if
(
!
(
table_access
&
GRANT_ACL
))
is_grantable
=
"NO"
;
is_grantable
=
"NO"
;
ulong
test_access
=
table_access
&
~
GRANT_ACL
;
strxmov
(
buff
,
"'"
,
user
,
"'@'"
,
grant_table
->
orig_host
,
"'"
,
NullS
);
strxmov
(
buff
,
"'"
,
user
,
"'@'"
,
grant_table
->
orig_host
,
"'"
,
NullS
);
if
(
!
test_access
)
if
(
!
test_access
)
continue
;
continue
;
...
...
sql/sql_show.cc
View file @
c67d4799
...
@@ -1891,10 +1891,10 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
...
@@ -1891,10 +1891,10 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
LEX
*
lex
=
thd
->
lex
;
LEX
*
lex
=
thd
->
lex
;
TABLE
*
table
=
tables
->
table
;
TABLE
*
table
=
tables
->
table
;
SELECT_LEX
*
select_lex
=
&
lex
->
select_lex
;
SELECT_LEX
*
select_lex
=
&
lex
->
select_lex
;
SELECT_LEX
*
lsel
=
tables
->
schema_select_lex
;
ST_SCHEMA_TABLE
*
schema_table
=
tables
->
schema_table
;
ST_SCHEMA_TABLE
*
schema_table
=
tables
->
schema_table
;
DBUG_ENTER
(
"fill_schema_tables"
);
DBUG_ENTER
(
"fill_schema_tables"
);
SELECT_LEX
*
lsel
=
tables
->
schema_select_lex
;
if
(
lsel
)
if
(
lsel
)
{
{
TABLE
*
old_open_tables
=
thd
->
open_tables
;
TABLE
*
old_open_tables
=
thd
->
open_tables
;
...
@@ -1947,7 +1947,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
...
@@ -1947,7 +1947,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
#endif
#endif
{
{
List
<
char
>
files
;
List
<
char
>
files
;
(
void
)
sprintf
(
path
,
"%s/%s"
,
mysql_data_home
,
base_name
);
strxmov
(
path
,
mysql_data_home
,
"/"
,
base_name
,
NullS
);
end
=
path
+
(
len
=
unpack_dirname
(
path
,
path
));
end
=
path
+
(
len
=
unpack_dirname
(
path
,
path
));
len
=
FN_LEN
-
len
;
len
=
FN_LEN
-
len
;
if
(
mysql_find_files
(
thd
,
&
files
,
base_name
,
if
(
mysql_find_files
(
thd
,
&
files
,
base_name
,
...
@@ -2035,7 +2035,7 @@ int fill_schema_shemata(THD *thd, TABLE_LIST *tables, COND *cond)
...
@@ -2035,7 +2035,7 @@ int fill_schema_shemata(THD *thd, TABLE_LIST *tables, COND *cond)
(
grant_option
&&
!
check_grant_db
(
thd
,
file_name
)))
(
grant_option
&&
!
check_grant_db
(
thd
,
file_name
)))
#endif
#endif
{
{
(
void
)
sprintf
(
path
,
"%s/%s"
,
mysql_data_home
,
file_name
);
strxmov
(
path
,
mysql_data_home
,
"/"
,
file_name
,
NullS
);
length
=
unpack_dirname
(
path
,
path
);
// Convert if not unix
length
=
unpack_dirname
(
path
,
path
);
// Convert if not unix
found_libchar
=
0
;
found_libchar
=
0
;
if
(
length
&&
path
[
length
-
1
]
==
FN_LIBCHAR
)
if
(
length
&&
path
[
length
-
1
]
==
FN_LIBCHAR
)
...
@@ -2050,8 +2050,8 @@ int fill_schema_shemata(THD *thd, TABLE_LIST *tables, COND *cond)
...
@@ -2050,8 +2050,8 @@ int fill_schema_shemata(THD *thd, TABLE_LIST *tables, COND *cond)
load_db_opt
(
thd
,
path
,
&
create
);
load_db_opt
(
thd
,
path
,
&
create
);
restore_record
(
table
,
default_values
);
restore_record
(
table
,
default_values
);
table
->
field
[
1
]
->
store
(
file_name
,
strlen
(
file_name
),
system_charset_info
);
table
->
field
[
1
]
->
store
(
file_name
,
strlen
(
file_name
),
system_charset_info
);
table
->
field
[
2
]
->
store
(
create
.
default_table_charset
->
name
,
table
->
field
[
2
]
->
store
(
create
.
default_table_charset
->
cs
name
,
strlen
(
create
.
default_table_charset
->
name
),
strlen
(
create
.
default_table_charset
->
cs
name
),
system_charset_info
);
system_charset_info
);
table
->
file
->
write_row
(
table
->
record
[
0
]);
table
->
file
->
write_row
(
table
->
record
[
0
]);
}
}
...
@@ -2187,7 +2187,8 @@ static int get_schema_tables_record(THD *thd, struct st_table_list *tables,
...
@@ -2187,7 +2187,8 @@ static int get_schema_tables_record(THD *thd, struct st_table_list *tables,
if
(
file
->
raid_type
)
if
(
file
->
raid_type
)
{
{
char
buff
[
100
];
char
buff
[
100
];
sprintf
(
buff
,
" raid_type=%s raid_chunks=%d raid_chunksize=%ld"
,
my_snprintf
(
buff
,
sizeof
(
buff
),
" raid_type=%s raid_chunks=%d raid_chunksize=%ld"
,
my_raid_type
(
file
->
raid_type
),
file
->
raid_chunks
,
my_raid_type
(
file
->
raid_type
),
file
->
raid_chunks
,
file
->
raid_chunksize
/
RAID_BLOCK_SIZE
);
file
->
raid_chunksize
/
RAID_BLOCK_SIZE
);
ptr
=
strmov
(
ptr
,
buff
);
ptr
=
strmov
(
ptr
,
buff
);
...
@@ -2630,7 +2631,17 @@ static int get_schema_views_record(THD *thd, struct st_table_list *tables,
...
@@ -2630,7 +2631,17 @@ static int get_schema_views_record(THD *thd, struct st_table_list *tables,
table
->
field
[
1
]
->
store
(
tables
->
view_db
.
str
,
tables
->
view_db
.
length
,
cs
);
table
->
field
[
1
]
->
store
(
tables
->
view_db
.
str
,
tables
->
view_db
.
length
,
cs
);
table
->
field
[
2
]
->
store
(
tables
->
view_name
.
str
,
tables
->
view_name
.
length
,
cs
);
table
->
field
[
2
]
->
store
(
tables
->
view_name
.
str
,
tables
->
view_name
.
length
,
cs
);
table
->
field
[
3
]
->
store
(
tables
->
query
.
str
,
tables
->
query
.
length
,
cs
);
table
->
field
[
3
]
->
store
(
tables
->
query
.
str
,
tables
->
query
.
length
,
cs
);
if
(
tables
->
with_check
!=
VIEW_CHECK_NONE
)
{
if
(
tables
->
with_check
==
VIEW_CHECK_LOCAL
)
table
->
field
[
4
]
->
store
(
"WITH LOCAL CHECK OPTION"
,
23
,
cs
);
else
table
->
field
[
4
]
->
store
(
"WITH CASCADED CHECK OPTION"
,
26
,
cs
);
}
else
table
->
field
[
4
]
->
store
(
"NONE"
,
4
,
cs
);
table
->
field
[
4
]
->
store
(
"NONE"
,
4
,
cs
);
if
(
tables
->
updatable_view
)
if
(
tables
->
updatable_view
)
table
->
field
[
5
]
->
store
(
"YES"
,
3
,
cs
);
table
->
field
[
5
]
->
store
(
"YES"
,
3
,
cs
);
else
else
...
@@ -2668,7 +2679,7 @@ static int get_schema_constarints_record(THD *thd, struct st_table_list *tables,
...
@@ -2668,7 +2679,7 @@ static int get_schema_constarints_record(THD *thd, struct st_table_list *tables,
table
->
field
[
3
]
->
store
(
base_name
,
strlen
(
base_name
),
cs
);
table
->
field
[
3
]
->
store
(
base_name
,
strlen
(
base_name
),
cs
);
table
->
field
[
4
]
->
store
(
file_name
,
strlen
(
file_name
),
cs
);
table
->
field
[
4
]
->
store
(
file_name
,
strlen
(
file_name
),
cs
);
if
(
i
==
primary_key
&&
!
strcmp
(
key_info
->
name
,
primary_key_name
))
if
(
i
==
primary_key
&&
!
strcmp
(
key_info
->
name
,
primary_key_name
))
table
->
field
[
5
]
->
store
(
"PRIMARY
"
,
7
,
cs
);
table
->
field
[
5
]
->
store
(
"PRIMARY
KEY"
,
11
,
cs
);
else
if
(
key_info
->
flags
&
HA_NOSAME
)
else
if
(
key_info
->
flags
&
HA_NOSAME
)
table
->
field
[
5
]
->
store
(
"UNIQUE"
,
6
,
cs
);
table
->
field
[
5
]
->
store
(
"UNIQUE"
,
6
,
cs
);
table
->
file
->
write_row
(
table
->
record
[
0
]);
table
->
file
->
write_row
(
table
->
record
[
0
]);
...
@@ -2685,7 +2696,7 @@ static int get_schema_constarints_record(THD *thd, struct st_table_list *tables,
...
@@ -2685,7 +2696,7 @@ static int get_schema_constarints_record(THD *thd, struct st_table_list *tables,
f_key_info
->
forein_id
->
length
,
cs
);
f_key_info
->
forein_id
->
length
,
cs
);
table
->
field
[
3
]
->
store
(
base_name
,
strlen
(
base_name
),
cs
);
table
->
field
[
3
]
->
store
(
base_name
,
strlen
(
base_name
),
cs
);
table
->
field
[
4
]
->
store
(
file_name
,
strlen
(
file_name
),
cs
);
table
->
field
[
4
]
->
store
(
file_name
,
strlen
(
file_name
),
cs
);
table
->
field
[
5
]
->
store
(
"FOREIGN
"
,
7
,
system_charset_info
);
table
->
field
[
5
]
->
store
(
"FOREIGN
KEY"
,
11
,
system_charset_info
);
table
->
field
[
6
]
->
store
(
f_key_info
->
constraint_method
->
str
,
table
->
field
[
6
]
->
store
(
f_key_info
->
constraint_method
->
str
,
f_key_info
->
constraint_method
->
length
,
cs
);
f_key_info
->
constraint_method
->
length
,
cs
);
table
->
field
[
6
]
->
set_notnull
();
table
->
field
[
6
]
->
set_notnull
();
...
@@ -3099,6 +3110,8 @@ bool get_schema_tables_result(JOIN *join)
...
@@ -3099,6 +3110,8 @@ bool get_schema_tables_result(JOIN *join)
if
(
!
tab
->
table
||
!
tab
->
table
->
pos_in_table_list
)
if
(
!
tab
->
table
||
!
tab
->
table
->
pos_in_table_list
)
break
;
break
;
TABLE_LIST
*
table_list
=
tab
->
table
->
pos_in_table_list
;
TABLE_LIST
*
table_list
=
tab
->
table
->
pos_in_table_list
;
TABLE_LIST
*
save_next_global
=
table_list
->
next_global
;
if
(
table_list
->
schema_table
&&
thd
->
fill_derived_tables
())
if
(
table_list
->
schema_table
&&
thd
->
fill_derived_tables
())
{
{
TABLE
*
old_derived_tables
=
thd
->
derived_tables
;
TABLE
*
old_derived_tables
=
thd
->
derived_tables
;
...
@@ -3112,11 +3125,13 @@ bool get_schema_tables_result(JOIN *join)
...
@@ -3112,11 +3125,13 @@ bool get_schema_tables_result(JOIN *join)
{
{
thd
->
derived_tables
=
old_derived_tables
;
thd
->
derived_tables
=
old_derived_tables
;
thd
->
lock
=
sql_lock
;
thd
->
lock
=
sql_lock
;
table_list
->
next_global
=
save_next_global
;
DBUG_RETURN
(
TRUE
);
DBUG_RETURN
(
TRUE
);
}
}
thd
->
lock
=
sql_lock
;
thd
->
lock
=
sql_lock
;
thd
->
lex
->
sql_command
=
SQLCOM_SELECT
;
thd
->
lex
->
sql_command
=
SQLCOM_SELECT
;
thd
->
derived_tables
=
old_derived_tables
;
thd
->
derived_tables
=
old_derived_tables
;
table_list
->
next_global
=
save_next_global
;
}
}
}
}
DBUG_RETURN
(
FALSE
);
DBUG_RETURN
(
FALSE
);
...
@@ -3178,7 +3193,7 @@ ST_FIELD_INFO columns_fields_info[]=
...
@@ -3178,7 +3193,7 @@ ST_FIELD_INFO columns_fields_info[]=
{
"KEY"
,
3
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
"Key"
},
{
"KEY"
,
3
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
"Key"
},
{
"COLUMN_DEFAULT"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
1
,
1
,
"Default"
},
{
"COLUMN_DEFAULT"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
1
,
1
,
"Default"
},
{
"EXTRA"
,
20
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
"Extra"
},
{
"EXTRA"
,
20
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
"Extra"
},
{
"PRIVIL
I
GES"
,
80
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
"Privileges"
},
{
"PRIVIL
E
GES"
,
80
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
"Privileges"
},
{
"COMMENT"
,
255
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
"Comment"
},
{
"COMMENT"
,
255
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
"Comment"
},
{
0
,
0
,
MYSQL_TYPE_STRING
,
0
,
0
,
0
,
0
}
{
0
,
0
,
MYSQL_TYPE_STRING
,
0
,
0
,
0
,
0
}
};
};
...
@@ -3265,7 +3280,7 @@ ST_FIELD_INFO view_fields_info[]=
...
@@ -3265,7 +3280,7 @@ ST_FIELD_INFO view_fields_info[]=
{
"TABLE_SCHEMA"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
"TABLE_SCHEMA"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
"TABLE_NAME"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
"TABLE_NAME"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
"VIEW_DEFINITION"
,
65535
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
"VIEW_DEFINITION"
,
65535
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
"CHECK_OPTION"
,
4
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
"CHECK_OPTION"
,
30
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
"IS_UPDATABLE"
,
3
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
"IS_UPDATABLE"
,
3
,
MYSQL_TYPE_STRING
,
0
,
0
,
1
,
0
},
{
0
,
0
,
MYSQL_TYPE_STRING
,
0
,
0
,
0
,
0
}
{
0
,
0
,
MYSQL_TYPE_STRING
,
0
,
0
,
0
,
0
}
};
};
...
...
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