1
0
mirror of https://github.com/MariaDB/server.git synced 2026-10-23 18:49:29 +03:00

MDEV-41171 SQL_SELECT_LIMIT and FOUND_ROWS() on the I_S.TABLES fast path

Set limit_found_rows from matching rows sent on the fast path so
FOUND_ROWS() matches the fallback path when SQL_CALC_FOUND_ROWS is
not used.
This commit is contained in:
Anway Durge
2026-10-01 10:31:41 +05:30
committed by Jan Lindström
parent b372c80a84
commit 74b0c78409
3 changed files with 59 additions and 0 deletions

View File

@@ -841,3 +841,25 @@ LIMIT 1;
TABLE_NAME
tb3
DROP DATABASE mdev41167;
#
# MDEV-41171: @@sql_select_limit and FOUND_ROWS() on the fast path
#
CREATE DATABASE mdev41171;
CREATE TABLE mdev41171.t1(i INT);
CREATE TABLE mdev41171.t2(i INT);
CREATE TABLE mdev41171.t3(i INT);
SET @@session.sql_select_limit=2;
SELECT TABLE_CATALOG FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mdev41171';
SET @@session.sql_select_limit=DEFAULT;
SELECT 1;
1
1
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mdev41171';
TABLE_NAME
t1
t2
t3
SELECT FOUND_ROWS();
FOUND_ROWS()
3
DROP DATABASE mdev41171;

View File

@@ -323,3 +323,38 @@ SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='mdev41167' AND (TABLE_NAME='tb3' OR TABLE_CATALOG='nope')
LIMIT 1;
DROP DATABASE mdev41167;
--echo #
--echo # MDEV-41171: @@sql_select_limit and FOUND_ROWS() on the fast path
--echo #
CREATE DATABASE mdev41171;
CREATE TABLE mdev41171.t1(i INT);
CREATE TABLE mdev41171.t2(i INT);
CREATE TABLE mdev41171.t3(i INT);
SET @@session.sql_select_limit=2;
# CALL (used by --sp-protocol) sets sql_select_limit=HA_POS_ERROR, so
# do not compare the row list. Capture FOUND_ROWS() immediately.
--disable_result_log
SELECT TABLE_CATALOG FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mdev41171';
--enable_result_log
--disable_query_log
--disable_result_log
let $n= query_get_value(SELECT FOUND_ROWS(), FOUND_ROWS(), 1);
--enable_result_log
--enable_query_log
if (`SELECT $SP_PROTOCOL = 0`)
{
if ($n != 2)
{
--echo # sql_select_limit=2 returned $n rows
--die
}
}
SET @@session.sql_select_limit=DEFAULT;
SELECT 1;
--sorted_result
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mdev41171';
--disable_ps_protocol
SELECT FOUND_ROWS();
--enable_ps_protocol
DROP DATABASE mdev41171;

View File

@@ -10295,6 +10295,8 @@ bool get_schema_tables_result(JOIN *join,
}
plan->fp_state= IS_table_read_plan::FP_STREAMING;
}
/* FOUND_ROWS() without SQL_CALC_FOUND_ROWS is rows sent. */
thd->limit_found_rows= plan->sent_rows;
my_eof(thd);
result= 1;
}