Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into mysql.com:/scratch/tnurnberg/31700/51-31700
This commit is contained in:
commit
4bd91d2b27
@ -820,3 +820,31 @@ Execute select '000 001 002 003 004 005 006 007 008 009010 011 012 013 014 015 0
|
|||||||
Query set global general_log = off
|
Query set global general_log = off
|
||||||
deallocate prepare long_query;
|
deallocate prepare long_query;
|
||||||
set global general_log = @old_general_log_state;
|
set global general_log = @old_general_log_state;
|
||||||
|
SET @old_slow_log_state = @@global.slow_query_log;
|
||||||
|
SET SESSION long_query_time = 0;
|
||||||
|
SET GLOBAL slow_query_log = ON;
|
||||||
|
FLUSH LOGS;
|
||||||
|
TRUNCATE TABLE mysql.slow_log;
|
||||||
|
CREATE TABLE t1 (f1 SERIAL,f2 INT, f3 INT, PRIMARY KEY(f1), KEY(f2));
|
||||||
|
INSERT INTO t1 VALUES (1,1,1);
|
||||||
|
INSERT INTO t1 VALUES (2,2,2);
|
||||||
|
INSERT INTO t1 VALUES (3,3,3);
|
||||||
|
INSERT INTO t1 VALUES (4,4,4);
|
||||||
|
SELECT SQL_NO_CACHE 'Bug#31700 - SCAN',f1,f2,f3 FROM t1 WHERE f3=4;
|
||||||
|
Bug#31700 - SCAN f1 f2 f3
|
||||||
|
Bug#31700 - SCAN 4 4 4
|
||||||
|
SELECT SQL_NO_CACHE 'Bug#31700 - KEY', f1,f2,f3 FROM t1 WHERE f2=3;
|
||||||
|
Bug#31700 - KEY f1 f2 f3
|
||||||
|
Bug#31700 - KEY 3 3 3
|
||||||
|
SELECT SQL_NO_CACHE 'Bug#31700 - PK', f1,f2,f3 FROM t1 WHERE f1=2;
|
||||||
|
Bug#31700 - PK f1 f2 f3
|
||||||
|
Bug#31700 - PK 2 2 2
|
||||||
|
SELECT start_time, rows_examined, rows_sent, sql_text FROM mysql.slow_log WHERE sql_text LIKE '%Bug#31700%' ORDER BY start_time;
|
||||||
|
start_time rows_examined rows_sent sql_text
|
||||||
|
TIMESTAMP 4 1 SELECT SQL_NO_CACHE 'Bug#31700 - SCAN',f1,f2,f3 FROM t1 WHERE f3=4
|
||||||
|
TIMESTAMP 1 1 SELECT SQL_NO_CACHE 'Bug#31700 - KEY', f1,f2,f3 FROM t1 WHERE f2=3
|
||||||
|
TIMESTAMP 1 1 SELECT SQL_NO_CACHE 'Bug#31700 - PK', f1,f2,f3 FROM t1 WHERE f1=2
|
||||||
|
DROP TABLE t1;
|
||||||
|
TRUNCATE TABLE mysql.slow_log;
|
||||||
|
SET GLOBAL slow_query_log = @old_slow_log_state;
|
||||||
|
SET SESSION long_query_time =@old_long_query_time;
|
||||||
|
@ -924,3 +924,34 @@ set global general_log = off;
|
|||||||
select command_type, argument from mysql.general_log;
|
select command_type, argument from mysql.general_log;
|
||||||
deallocate prepare long_query;
|
deallocate prepare long_query;
|
||||||
set global general_log = @old_general_log_state;
|
set global general_log = @old_general_log_state;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #31700: thd->examined_row_count not incremented for 'const' type queries
|
||||||
|
#
|
||||||
|
SET @old_slow_log_state = @@global.slow_query_log;
|
||||||
|
|
||||||
|
SET SESSION long_query_time = 0;
|
||||||
|
SET GLOBAL slow_query_log = ON;
|
||||||
|
FLUSH LOGS;
|
||||||
|
TRUNCATE TABLE mysql.slow_log;
|
||||||
|
|
||||||
|
# Let there be three columns, unique, non-unique, and non-indexed:
|
||||||
|
CREATE TABLE t1 (f1 SERIAL,f2 INT, f3 INT, PRIMARY KEY(f1), KEY(f2));
|
||||||
|
INSERT INTO t1 VALUES (1,1,1);
|
||||||
|
INSERT INTO t1 VALUES (2,2,2);
|
||||||
|
INSERT INTO t1 VALUES (3,3,3);
|
||||||
|
INSERT INTO t1 VALUES (4,4,4);
|
||||||
|
|
||||||
|
SELECT SQL_NO_CACHE 'Bug#31700 - SCAN',f1,f2,f3 FROM t1 WHERE f3=4;
|
||||||
|
SELECT SQL_NO_CACHE 'Bug#31700 - KEY', f1,f2,f3 FROM t1 WHERE f2=3;
|
||||||
|
SELECT SQL_NO_CACHE 'Bug#31700 - PK', f1,f2,f3 FROM t1 WHERE f1=2;
|
||||||
|
|
||||||
|
--replace_column 1 TIMESTAMP
|
||||||
|
SELECT start_time, rows_examined, rows_sent, sql_text FROM mysql.slow_log WHERE sql_text LIKE '%Bug#31700%' ORDER BY start_time;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
TRUNCATE TABLE mysql.slow_log;
|
||||||
|
|
||||||
|
SET GLOBAL slow_query_log = @old_slow_log_state;
|
||||||
|
SET SESSION long_query_time =@old_long_query_time;
|
||||||
|
@ -1366,8 +1366,19 @@ public:
|
|||||||
ulonglong limit_found_rows;
|
ulonglong limit_found_rows;
|
||||||
ulonglong options; /* Bitmap of states */
|
ulonglong options; /* Bitmap of states */
|
||||||
longlong row_count_func; /* For the ROW_COUNT() function */
|
longlong row_count_func; /* For the ROW_COUNT() function */
|
||||||
ha_rows cuted_fields,
|
ha_rows cuted_fields;
|
||||||
sent_row_count, examined_row_count;
|
|
||||||
|
/*
|
||||||
|
number of rows we actually sent to the client, including "synthetic"
|
||||||
|
rows in ROLLUP etc.
|
||||||
|
*/
|
||||||
|
ha_rows sent_row_count;
|
||||||
|
|
||||||
|
/*
|
||||||
|
number of rows we read, sent or not, including in create_sort_index()
|
||||||
|
*/
|
||||||
|
ha_rows examined_row_count;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The set of those tables whose fields are referenced in all subqueries
|
The set of those tables whose fields are referenced in all subqueries
|
||||||
of the query.
|
of the query.
|
||||||
@ -1403,7 +1414,11 @@ public:
|
|||||||
/* Statement id is thread-wide. This counter is used to generate ids */
|
/* Statement id is thread-wide. This counter is used to generate ids */
|
||||||
ulong statement_id_counter;
|
ulong statement_id_counter;
|
||||||
ulong rand_saved_seed1, rand_saved_seed2;
|
ulong rand_saved_seed1, rand_saved_seed2;
|
||||||
ulong row_count; // Row counter, mainly for errors and warnings
|
/*
|
||||||
|
Row counter, mainly for errors and warnings. Not increased in
|
||||||
|
create_sort_index(); may differ from examined_row_count.
|
||||||
|
*/
|
||||||
|
ulong row_count;
|
||||||
pthread_t real_id; /* For debugging */
|
pthread_t real_id; /* For debugging */
|
||||||
my_thread_id thread_id;
|
my_thread_id thread_id;
|
||||||
uint tmp_table, global_read_lock;
|
uint tmp_table, global_read_lock;
|
||||||
|
@ -10665,6 +10665,15 @@ do_select(JOIN *join,List<Item> *fields,TABLE *table,Procedure *procedure)
|
|||||||
error= (*end_select)(join, 0, 0);
|
error= (*end_select)(join, 0, 0);
|
||||||
if (error == NESTED_LOOP_OK || error == NESTED_LOOP_QUERY_LIMIT)
|
if (error == NESTED_LOOP_OK || error == NESTED_LOOP_QUERY_LIMIT)
|
||||||
error= (*end_select)(join, 0, 1);
|
error= (*end_select)(join, 0, 1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
If we don't go through evaluate_join_record(), do the counting
|
||||||
|
here. join->send_records is increased on success in end_send(),
|
||||||
|
so we don't touch it here.
|
||||||
|
*/
|
||||||
|
join->examined_rows++;
|
||||||
|
join->thd->row_count++;
|
||||||
|
DBUG_ASSERT(join->examined_rows <= 1);
|
||||||
}
|
}
|
||||||
else if (join->send_row_on_empty_set())
|
else if (join->send_row_on_empty_set())
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user