mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
MDEV-30529: Assertion `rnd_records <= s->found_records' failed in best_access_path
best_access_path() has an assertion: DBUG_ASSERT(rnd_records <= s->found_records); make it rounding-safe.
This commit is contained in:
parent
5faf2ac01b
commit
cc81ea1cc4
3 changed files with 41 additions and 1 deletions
|
@ -314,6 +314,25 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 SIMPLE a ALL NULL NULL NULL NULL 5 Using where
|
||||
1 SIMPLE b hash_ALL NULL #hash#$hj 1341 test.a.Host,test.a.User,test.a.Password,test.a.Select_priv,test.a.Insert_priv,test.a.Update_priv,test.a.Delete_priv,test.a.Create_priv,test.a.Drop_priv,test.a.Reload_priv,test.a.Shutdown_priv,test.a.Process_priv,test.a.File_priv,test.a.Grant_priv,test.a.References_priv,test.a.Index_priv,test.a.Alter_priv,test.a.Show_db_priv,test.a.Super_priv,test.a.Create_tmp_table_priv,test.a.Lock_tables_priv,test.a.Execute_priv,test.a.Repl_slave_priv,test.a.Repl_client_priv,test.a.Create_view_priv,test.a.Show_view_priv,test.a.Create_routine_priv,test.a.Alter_routine_priv,test.a.Create_user_priv,test.a.Event_priv,test.a.Trigger_priv,test.a.Create_tablespace_priv,test.a.Delete_history_priv,test.a.ssl_type,test.a.ssl_cipher,test.a.x509_issuer,test.a.x509_subject,test.a.max_questions,test.a.max_updates,test.a.max_connections,test.a.max_user_connections,test.a.plugin,test.a.authentication_string,test.a.password_expired,test.a.is_role,test.a.default_role,test.a.max_statement_time 5 Using where; Using join buffer (flat, BNLH join)
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# MDEV-30529: Assertion `rnd_records <= s->found_records' failed in best_access_path
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 (b VARCHAR(1), c INT, d VARCHAR(1), e VARCHAR(1), KEY(b), KEY(d), KEY(e)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES ('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',5,'-','-'),('x',0,'-','-'),('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',0,'w','-'),('x',0,'-','-'),('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',0,'-','-'),('x',0,'-','u'),('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',0,'-','t'),('x',0,'-','-'),('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',0,'-','-'),('x',0,'-','-'),('x',0,'-','p'),
|
||||
('x',0,'z','-'),('x',0,'-','-'),('x',0,'-','-'),('x',0,'-','v');
|
||||
set @tmp_jcl=@@join_cache_level;
|
||||
SET JOIN_CACHE_LEVEL= 3;
|
||||
SELECT * FROM t1 JOIN t2 ON t1.a = t2.c WHERE t2.b IN ('o') OR t2.e >= 'f' OR t2.d > 'p';
|
||||
a b c d e
|
||||
set join_cache_level=@tmp_jcl;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# End of the test file
|
||||
#
|
||||
|
|
|
@ -250,6 +250,27 @@ SELECT * FROM t1 AS a NATURAL JOIN t1 AS b;
|
|||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30529: Assertion `rnd_records <= s->found_records' failed in best_access_path
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
|
||||
CREATE TABLE t2 (b VARCHAR(1), c INT, d VARCHAR(1), e VARCHAR(1), KEY(b), KEY(d), KEY(e)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES ('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',5,'-','-'),('x',0,'-','-'),('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',0,'w','-'),('x',0,'-','-'),('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',0,'-','-'),('x',0,'-','u'),('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',0,'-','t'),('x',0,'-','-'),('x',0,'-','-'),
|
||||
('x',0,'-','-'),('x',0,'-','-'),('x',0,'-','-'),('x',0,'-','p'),
|
||||
('x',0,'z','-'),('x',0,'-','-'),('x',0,'-','-'),('x',0,'-','v');
|
||||
|
||||
set @tmp_jcl=@@join_cache_level;
|
||||
SET JOIN_CACHE_LEVEL= 3;
|
||||
SELECT * FROM t1 JOIN t2 ON t1.a = t2.c WHERE t2.b IN ('o') OR t2.e >= 'f' OR t2.d > 'p';
|
||||
set join_cache_level=@tmp_jcl;
|
||||
|
||||
drop table t1,t2;
|
||||
--echo #
|
||||
--echo # End of the test file
|
||||
--echo #
|
||||
|
|
|
@ -8846,7 +8846,7 @@ best_access_path(JOIN *join,
|
|||
use_found_constraint(rnd_records) :
|
||||
rnd_records);
|
||||
|
||||
DBUG_ASSERT(rnd_records <= s->found_records);
|
||||
DBUG_ASSERT(rnd_records <= rows2double(s->found_records) + 0.5);
|
||||
set_if_smaller(best.records_out, records_table_filter);
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue