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
7fa3897e
Commit
7fa3897e
authored
Oct 15, 2008
by
Kristofer Pettersson
Browse files
Options
Browse Files
Download
Plain Diff
automerge
parents
5a308622
f985e787
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
164 additions
and
9 deletions
+164
-9
mysql-test/r/status2.result
mysql-test/r/status2.result
+64
-0
mysql-test/t/status2.test
mysql-test/t/status2.test
+64
-0
sql/mysqld.cc
sql/mysqld.cc
+3
-1
sql/sql_class.h
sql/sql_class.h
+10
-3
sql/sql_parse.cc
sql/sql_parse.cc
+22
-1
sql/sql_show.cc
sql/sql_show.cc
+0
-3
sql/structs.h
sql/structs.h
+1
-1
No files found.
mysql-test/r/status2.result
0 → 100644
View file @
7fa3897e
#
# Bug#24289 Status Variable "Questions" gets wrong values with Stored Routines
#
FLUSH STATUS;
DROP TABLE IF EXISTS t1,t2;
DROP PROCEDURE IF EXISTS p1;
DROP FUNCTION IF EXISTS f1;
CREATE FUNCTION f1() RETURNS INTEGER
BEGIN
DECLARE foo INTEGER;
DECLARE bar INTEGER;
SET foo=1;
SET bar=2;
RETURN foo;
END $$
CREATE PROCEDURE p1()
BEGIN
SELECT 1;
END $$
CREATE TABLE t1 (c1 INT);
CREATE TABLE t2 (c1 INT);
INSERT INTO t1 VALUES (1);
Assert Questions == 9
SHOW STATUS LIKE 'Questions';
Variable_name Value
Questions 9
SELECT f1();
f1()
1
Assert Questions == 11
SHOW STATUS LIKE 'Questions';
Variable_name Value
Questions 11
CALL p1();
1
1
Assert Questions == 13
SHOW STATUS LIKE 'Questions';
Variable_name Value
Questions 13
SELECT 1;
1
1
Assert Questions == 15
SHOW STATUS LIKE 'Questions';
Variable_name Value
Questions 15
FLUSH STATUS;
SELECT 1;
1
1
Assert Questions == 16
SHOW STATUS LIKE 'Questions';
Variable_name Value
Questions 16
Global status updated; Assert diff == 5
FLUSH STATUS;
SELECT 5;
5
5
DROP TABLE t1,t2;
DROP PROCEDURE p1;
DROP FUNCTION f1;
End of 6.0 tests
mysql-test/t/status2.test
0 → 100644
View file @
7fa3897e
--
echo
#
--
echo
# Bug#24289 Status Variable "Questions" gets wrong values with Stored Routines
--
echo
#
# The bogus connection below is needed to make the gobal statement count
# deterministic when the test is run for the first time.
connect
(
con1
,
localhost
,
root
,,);
connection
con1
;
connection
default
;
disconnect
con1
;
FLUSH
STATUS
;
--
disable_warnings
DROP
TABLE
IF
EXISTS
t1
,
t2
;
DROP
PROCEDURE
IF
EXISTS
p1
;
DROP
FUNCTION
IF
EXISTS
f1
;
--
enable_warnings
DELIMITER
$$
;
CREATE
FUNCTION
f1
()
RETURNS
INTEGER
BEGIN
DECLARE
foo
INTEGER
;
DECLARE
bar
INTEGER
;
SET
foo
=
1
;
SET
bar
=
2
;
RETURN
foo
;
END
$$
CREATE
PROCEDURE
p1
()
BEGIN
SELECT
1
;
END
$$
DELIMITER
;
$$
CREATE
TABLE
t1
(
c1
INT
);
CREATE
TABLE
t2
(
c1
INT
);
INSERT
INTO
t1
VALUES
(
1
);
--
echo
Assert
Questions
==
9
SHOW
STATUS
LIKE
'Questions'
;
SELECT
f1
();
--
echo
Assert
Questions
==
11
SHOW
STATUS
LIKE
'Questions'
;
CALL
p1
();
--
echo
Assert
Questions
==
13
SHOW
STATUS
LIKE
'Questions'
;
SELECT
1
;
--
echo
Assert
Questions
==
15
SHOW
STATUS
LIKE
'Questions'
;
connect
(
con1
,
localhost
,
root
,,);
connection
con1
;
FLUSH
STATUS
;
let
$org_questions
=
`SHOW GLOBAL STATUS LIKE 'questions'`
;
SELECT
1
;
connection
default
;
disconnect
con1
;
--
echo
Assert
Questions
==
16
SHOW
STATUS
LIKE
'Questions'
;
--
echo
Global
status
updated
;
Assert
diff
==
5
FLUSH
STATUS
;
let
$new_questions
=
`SHOW GLOBAL STATUS LIKE 'questions'`
;
--
disable_log
let
$diff
=
`SELECT SUBSTRING('$new_questions',10)-SUBSTRING('$org_questions',10)`
;
--
enable_log
eval
SELECT
$diff
;
DROP
TABLE
t1
,
t2
;
DROP
PROCEDURE
p1
;
DROP
FUNCTION
f1
;
--
echo
End
of
6.0
tests
sql/mysqld.cc
View file @
7fa3897e
...
...
@@ -6573,7 +6573,9 @@ struct show_var_st status_vars[]= {
{
"Qcache_queries_in_cache"
,
(
char
*
)
&
query_cache
.
queries_in_cache
,
SHOW_LONG_CONST
},
{
"Qcache_total_blocks"
,
(
char
*
)
&
query_cache
.
total_blocks
,
SHOW_LONG_CONST
},
#endif
/*HAVE_QUERY_CACHE*/
{
"Questions"
,
(
char
*
)
0
,
SHOW_QUESTION
},
{
"Questions"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
questions
),
SHOW_LONG_STATUS
},
{
"Rpl_status"
,
(
char
*
)
0
,
SHOW_RPL_STATUS
},
{
"Select_full_join"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
select_full_join_count
),
SHOW_LONG_STATUS
},
{
"Select_full_range_join"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
select_full_range_join_count
),
SHOW_LONG_STATUS
},
...
...
sql/sql_class.h
View file @
7fa3897e
...
...
@@ -664,10 +664,17 @@ typedef struct system_status_var
ulong
com_stmt_fetch
;
ulong
com_stmt_reset
;
ulong
com_stmt_close
;
/*
Number of statements sent from the client
*/
ulong
questions
;
/*
Status variables which it does not make sense to add to
global status variable counter
IMPORTANT!
SEE last_system_status_var DEFINITION BELOW.
Below 'last_system_status_var' are all variables which doesn't make any
sense to add to the /global/ status variable counter.
*/
double
last_query_cost
;
}
STATUS_VAR
;
...
...
@@ -678,7 +685,7 @@ typedef struct system_status_var
counter
*/
#define last_system_status_var
com_stmt_close
#define last_system_status_var
questions
void
free_tmp_table
(
THD
*
thd
,
TABLE
*
entry
);
...
...
sql/sql_parse.cc
View file @
7fa3897e
...
...
@@ -1690,8 +1690,24 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
thd
->
set_time
();
VOID
(
pthread_mutex_lock
(
&
LOCK_thread_count
));
thd
->
query_id
=
global_query_id
;
if
(
command
!=
COM_STATISTICS
&&
command
!=
COM_PING
)
switch
(
command
)
{
/* Ignore these statements. */
case
COM_STATISTICS
:
case
COM_PING
:
break
;
/* Only increase id on these statements but don't count them. */
case
COM_STMT_PREPARE
:
case
COM_STMT_CLOSE
:
case
COM_STMT_RESET
:
next_query_id
();
break
;
/* Increase id and count all other statements. */
default:
statistic_increment
(
thd
->
status_var
.
questions
,
&
LOCK_status
);
next_query_id
();
}
thread_running
++
;
/* TODO: set thd->lex->sql_command to SQLCOM_END here */
VOID
(
pthread_mutex_unlock
(
&
LOCK_thread_count
));
...
...
@@ -1896,6 +1912,11 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
VOID
(
pthread_mutex_lock
(
&
LOCK_thread_count
));
thd
->
query_length
=
length
;
thd
->
query
=
next_packet
;
/*
Count each statement from the client.
*/
statistic_increment
(
thd
->
status_var
.
questions
,
&
LOCK_status
);
thd
->
query_id
=
next_query_id
();
thd
->
set_time
();
/* Reset the query start time. */
/* TODO: set thd->lex->sql_command to SQLCOM_END here */
...
...
sql/sql_show.cc
View file @
7fa3897e
...
...
@@ -1520,9 +1520,6 @@ static bool show_status_array(THD *thd, const char *wild,
nr
=
(
long
)
(
thd
->
query_start
()
-
server_start_time
);
end
=
int10_to_str
(
nr
,
buff
,
10
);
break
;
case
SHOW_QUESTION
:
end
=
int10_to_str
((
long
)
thd
->
query_id
,
buff
,
10
);
break
;
#ifdef HAVE_REPLICATION
case
SHOW_RPL_STATUS
:
end
=
strmov
(
buff
,
rpl_status_type
[(
int
)
rpl_status
]);
...
...
sql/structs.h
View file @
7fa3897e
...
...
@@ -170,7 +170,7 @@ enum SHOW_TYPE
SHOW_UNDEF
,
SHOW_LONG
,
SHOW_LONGLONG
,
SHOW_INT
,
SHOW_CHAR
,
SHOW_CHAR_PTR
,
SHOW_DOUBLE_STATUS
,
SHOW_BOOL
,
SHOW_MY_BOOL
,
SHOW_OPENTABLES
,
SHOW_STARTTIME
,
SHOW_QUESTION
,
SHOW_BOOL
,
SHOW_MY_BOOL
,
SHOW_OPENTABLES
,
SHOW_STARTTIME
,
SHOW_LONG_CONST
,
SHOW_INT_CONST
,
SHOW_HAVE
,
SHOW_SYS
,
SHOW_HA_ROWS
,
SHOW_VARS
,
#ifdef HAVE_OPENSSL
...
...
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