mirror of
https://github.com/MariaDB/server.git
synced 2025-08-09 22:24:09 +03:00
MDEV-7679: ANALYZE crashes when printing WHERE when no default db
Fix Item_ident::print() to work when there is no current database
This commit is contained in:
@@ -210,3 +210,32 @@ EXPLAIN
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
create table t1(a int);
|
||||||
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
#
|
||||||
|
# MDEV-7679: ANALYZE crashes when printing WHERE when no default db
|
||||||
|
#
|
||||||
|
select database();
|
||||||
|
database()
|
||||||
|
test
|
||||||
|
select database();
|
||||||
|
database()
|
||||||
|
NULL
|
||||||
|
analyze format=json select * from test.t1 where t1.a<5;
|
||||||
|
EXPLAIN
|
||||||
|
{
|
||||||
|
"query_block": {
|
||||||
|
"select_id": 1,
|
||||||
|
"table": {
|
||||||
|
"table_name": "t1",
|
||||||
|
"access_type": "ALL",
|
||||||
|
"r_loops": 1,
|
||||||
|
"rows": 10,
|
||||||
|
"r_rows": 10,
|
||||||
|
"filtered": 100,
|
||||||
|
"r_filtered": 50,
|
||||||
|
"attached_condition": "(test.t1.a < 5)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
drop table t1;
|
||||||
|
@@ -51,3 +51,19 @@ analyze format=json select * from t1 straight_join t2 force index(a) where t2.a=
|
|||||||
|
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
create table t1(a int);
|
||||||
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-7679: ANALYZE crashes when printing WHERE when no default db
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
select database();
|
||||||
|
connect (con1,localhost,root,,*NO-ONE*);
|
||||||
|
connection con1;
|
||||||
|
select database();
|
||||||
|
analyze format=json select * from test.t1 where t1.a<5;
|
||||||
|
disconnect con1;
|
||||||
|
connection default;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
@@ -2380,7 +2380,8 @@ void Item_ident::print(String *str, enum_query_type query_type)
|
|||||||
When printing EXPLAIN, don't print database name when it's the same as
|
When printing EXPLAIN, don't print database name when it's the same as
|
||||||
current database.
|
current database.
|
||||||
*/
|
*/
|
||||||
bool skip_db= (query_type & QT_EXPLAIN) && !strcmp(thd->db, db_name);
|
bool skip_db= (query_type & QT_EXPLAIN) && thd->db &&
|
||||||
|
!strcmp(thd->db, db_name);
|
||||||
if (!skip_db &&
|
if (!skip_db &&
|
||||||
!(cached_table && cached_table->belong_to_view &&
|
!(cached_table && cached_table->belong_to_view &&
|
||||||
cached_table->belong_to_view->compact_view_format))
|
cached_table->belong_to_view->compact_view_format))
|
||||||
|
Reference in New Issue
Block a user