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
14633e05
Commit
14633e05
authored
Feb 16, 2006
by
aivanov@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
The patch adds PROCESSLIST information schema
parent
b04be221
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
152 additions
and
2 deletions
+152
-2
mysql-test/r/information_schema.result
mysql-test/r/information_schema.result
+8
-2
mysql-test/r/information_schema_db.result
mysql-test/r/information_schema_db.result
+1
-0
mysql-test/t/information_schema.test
mysql-test/t/information_schema.test
+13
-0
sql/sql_show.cc
sql/sql_show.cc
+129
-0
sql/table.h
sql/table.h
+1
-0
No files found.
mysql-test/r/information_schema.result
View file @
14633e05
...
...
@@ -49,6 +49,7 @@ FILES
KEY_COLUMN_USAGE
PARTITIONS
PLUGINS
PROCESSLIST
ROUTINES
SCHEMATA
SCHEMA_PRIVILEGES
...
...
@@ -737,7 +738,7 @@ CREATE TABLE t_crashme ( f1 BIGINT);
CREATE VIEW a1 (t_CRASHME) AS SELECT f1 FROM t_crashme GROUP BY f1;
CREATE VIEW a2 AS SELECT t_CRASHME FROM a1;
count(*)
11
1
11
2
drop view a2, a1;
drop table t_crashme;
select table_schema,table_name, column_name from
...
...
@@ -835,7 +836,7 @@ flush privileges;
SELECT table_schema, count(*) FROM information_schema.TABLES GROUP BY TABLE_SCHEMA;
table_schema count(*)
cluster_replication 1
information_schema 2
1
information_schema 2
2
mysql 21
create table t1 (i int, j int);
create trigger trg1 before insert on t1 for each row
...
...
@@ -1142,3 +1143,8 @@ varchar(20) information_schema.COLUMNS,information_schema.FILES,information_sche
select * from information_schema.engines WHERE ENGINE="MyISAM";
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
MyISAM ENABLED Default engine as of MySQL 3.23 with great performance NO NO NO
grant select on *.* to user3148@localhost;
select user,db from information_schema.processlist;
user db
user3148 test
drop user user3148@localhost;
mysql-test/r/information_schema_db.result
View file @
14633e05
...
...
@@ -12,6 +12,7 @@ FILES
KEY_COLUMN_USAGE
PARTITIONS
PLUGINS
PROCESSLIST
ROUTINES
SCHEMATA
SCHEMA_PRIVILEGES
...
...
mysql-test/t/information_schema.test
View file @
14633e05
...
...
@@ -821,3 +821,16 @@ group by column_type order by num;
#
select
*
from
information_schema
.
engines
WHERE
ENGINE
=
"MyISAM"
;
#
# INFORMATION_SCHEMA.PROCESSLIST
#
grant
select
on
*.*
to
user3148
@
localhost
;
connect
(
con3148
,
localhost
,
user3148
,,
test
);
connection
con3148
;
select
user
,
db
from
information_schema
.
processlist
;
connection
default
;
drop
user
user3148
@
localhost
;
sql/sql_show.cc
View file @
14633e05
...
...
@@ -1519,6 +1519,119 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
DBUG_VOID_RETURN
;
}
int
fill_schema_processlist
(
THD
*
thd
,
TABLE_LIST
*
tables
,
COND
*
cond
)
{
TABLE
*
table
=
tables
->
table
;
CHARSET_INFO
*
cs
=
system_charset_info
;
char
*
user
;
bool
verbose
;
ulong
max_query_length
;
time_t
now
=
time
(
0
);
DBUG_ENTER
(
"fill_process_list"
);
user
=
thd
->
security_ctx
->
master_access
&
PROCESS_ACL
?
NullS
:
thd
->
security_ctx
->
priv_user
;
verbose
=
thd
->
lex
->
verbose
;
max_query_length
=
PROCESS_LIST_WIDTH
;
VOID
(
pthread_mutex_lock
(
&
LOCK_thread_count
));
if
(
!
thd
->
killed
)
{
I_List_iterator
<
THD
>
it
(
threads
);
THD
*
tmp
;
while
((
tmp
=
it
++
))
{
Security_context
*
tmp_sctx
=
tmp
->
security_ctx
;
struct
st_my_thread_var
*
mysys_var
;
const
char
*
val
;
if
((
!
tmp
->
vio_ok
()
&&
!
tmp
->
system_thread
)
||
(
user
&&
(
!
tmp_sctx
->
user
||
strcmp
(
tmp_sctx
->
user
,
user
))))
continue
;
restore_record
(
table
,
s
->
default_values
);
/* ID */
table
->
field
[
0
]
->
store
((
longlong
)
tmp
->
thread_id
,
TRUE
);
/* USER */
val
=
tmp_sctx
->
user
?
tmp_sctx
->
user
:
(
tmp
->
system_thread
?
"system user"
:
"unauthenticated user"
);
table
->
field
[
1
]
->
store
(
val
,
strlen
(
val
),
cs
);
/* HOST */
if
(
tmp
->
peer_port
&&
(
tmp_sctx
->
host
||
tmp_sctx
->
ip
)
&&
thd
->
security_ctx
->
host_or_ip
[
0
])
{
char
host
[
LIST_PROCESS_HOST_LEN
+
1
];
my_snprintf
(
host
,
LIST_PROCESS_HOST_LEN
,
"%s:%u"
,
tmp_sctx
->
host_or_ip
,
tmp
->
peer_port
);
table
->
field
[
2
]
->
store
(
host
,
strlen
(
host
),
cs
);
}
else
table
->
field
[
2
]
->
store
(
tmp_sctx
->
host_or_ip
,
strlen
(
tmp_sctx
->
host_or_ip
),
cs
);
/* DB */
if
(
tmp
->
db
)
{
table
->
field
[
3
]
->
store
(
tmp
->
db
,
strlen
(
tmp
->
db
),
cs
);
table
->
field
[
3
]
->
set_notnull
();
}
if
((
mysys_var
=
tmp
->
mysys_var
))
pthread_mutex_lock
(
&
mysys_var
->
mutex
);
/* COMMAND */
if
((
val
=
(
char
*
)
(
tmp
->
killed
==
THD
::
KILL_CONNECTION
?
"Killed"
:
0
)))
table
->
field
[
4
]
->
store
(
val
,
strlen
(
val
),
cs
);
else
table
->
field
[
4
]
->
store
(
command_name
[
tmp
->
command
].
str
,
command_name
[
tmp
->
command
].
length
,
cs
);
/* TIME */
table
->
field
[
5
]
->
store
((
uint32
)(
tmp
->
start_time
?
now
-
tmp
->
start_time
:
0
),
TRUE
);
/* STATE */
#ifndef EMBEDDED_LIBRARY
val
=
(
char
*
)
(
tmp
->
locked
?
"Locked"
:
tmp
->
net
.
reading_or_writing
?
(
tmp
->
net
.
reading_or_writing
==
2
?
"Writing to net"
:
tmp
->
command
==
COM_SLEEP
?
""
:
"Reading from net"
)
:
tmp
->
proc_info
?
tmp
->
proc_info
:
tmp
->
mysys_var
&&
tmp
->
mysys_var
->
current_cond
?
"Waiting on cond"
:
NullS
);
#else
val
=
(
char
*
)
"Writing to net"
;
#endif
if
(
val
)
{
table
->
field
[
6
]
->
store
(
val
,
strlen
(
val
),
cs
);
table
->
field
[
6
]
->
set_notnull
();
}
if
(
mysys_var
)
pthread_mutex_unlock
(
&
mysys_var
->
mutex
);
/* INFO */
if
(
tmp
->
query
)
{
table
->
field
[
7
]
->
store
(
tmp
->
query
,
min
(
max_query_length
,
tmp
->
query_length
),
cs
);
table
->
field
[
7
]
->
set_notnull
();
}
if
(
schema_table_store_record
(
thd
,
table
))
{
VOID
(
pthread_mutex_unlock
(
&
LOCK_thread_count
));
DBUG_RETURN
(
1
);
}
}
}
VOID
(
pthread_mutex_unlock
(
&
LOCK_thread_count
));
DBUG_RETURN
(
0
);
}
/*****************************************************************************
Status functions
*****************************************************************************/
...
...
@@ -4945,6 +5058,20 @@ ST_FIELD_INFO variables_fields_info[]=
};
ST_FIELD_INFO
processlist_fields_info
[]
=
{
{
"ID"
,
4
,
MYSQL_TYPE_LONG
,
0
,
0
,
"Id"
},
{
"USER"
,
16
,
MYSQL_TYPE_STRING
,
0
,
0
,
"User"
},
{
"HOST"
,
LIST_PROCESS_HOST_LEN
,
MYSQL_TYPE_STRING
,
0
,
0
,
"Host"
},
{
"DB"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
1
,
"Db"
},
{
"COMMAND"
,
16
,
MYSQL_TYPE_STRING
,
0
,
0
,
"Command"
},
{
"TIME"
,
4
,
MYSQL_TYPE_LONG
,
0
,
0
,
"Time"
},
{
"STATE"
,
30
,
MYSQL_TYPE_STRING
,
0
,
1
,
"State"
},
{
"INFO"
,
PROCESS_LIST_WIDTH
,
MYSQL_TYPE_STRING
,
0
,
1
,
"Info"
},
{
0
,
0
,
MYSQL_TYPE_STRING
,
0
,
0
,
0
}
};
ST_FIELD_INFO
plugin_fields_info
[]
=
{
{
"PLUGIN_NAME"
,
NAME_LEN
,
MYSQL_TYPE_STRING
,
0
,
0
,
"Name"
},
...
...
@@ -5035,6 +5162,8 @@ ST_SCHEMA_TABLE schema_tables[]=
get_all_tables
,
0
,
get_schema_partitions_record
,
1
,
2
,
0
},
{
"PLUGINS"
,
plugin_fields_info
,
create_schema_table
,
fill_plugins
,
make_old_format
,
0
,
-
1
,
-
1
,
0
},
{
"PROCESSLIST"
,
processlist_fields_info
,
create_schema_table
,
fill_schema_processlist
,
make_old_format
,
0
,
-
1
,
-
1
,
0
},
{
"ROUTINES"
,
proc_fields_info
,
create_schema_table
,
fill_schema_proc
,
make_proc_old_format
,
0
,
-
1
,
-
1
,
0
},
{
"SCHEMATA"
,
schema_fields_info
,
create_schema_table
,
...
...
sql/table.h
View file @
14633e05
...
...
@@ -344,6 +344,7 @@ enum enum_schema_tables
SCH_OPEN_TABLES
,
SCH_PARTITIONS
,
SCH_PLUGINS
,
SCH_PROCESSLIST
,
SCH_PROCEDURES
,
SCH_SCHEMATA
,
SCH_SCHEMA_PRIVILEGES
,
...
...
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