fix(api-topics): avoid doing full scans over router tables
This commit is contained in:
parent
9bb0868628
commit
bd578a799e
|
@ -164,14 +164,17 @@ eval_topic_query(MS, QState) ->
|
||||||
finalize_query(eval_topic_query(MS, QState, emqx_mgmt_api:init_query_result())).
|
finalize_query(eval_topic_query(MS, QState, emqx_mgmt_api:init_query_result())).
|
||||||
|
|
||||||
eval_topic_query(MS, QState, QResult) ->
|
eval_topic_query(MS, QState, QResult) ->
|
||||||
QPage = eval_topic_query_page(MS, QState),
|
case eval_topic_query_page(MS, QState) of
|
||||||
case QPage of
|
|
||||||
{Rows, '$end_of_table'} ->
|
{Rows, '$end_of_table'} ->
|
||||||
{_, NQResult} = emqx_mgmt_api:accumulate_query_rows(node(), Rows, QState, QResult),
|
{_, NQResult} = emqx_mgmt_api:accumulate_query_rows(node(), Rows, QState, QResult),
|
||||||
NQResult#{complete => true};
|
NQResult#{complete => true};
|
||||||
{Rows, NCont} ->
|
{Rows, NCont} ->
|
||||||
{_, NQResult} = emqx_mgmt_api:accumulate_query_rows(node(), Rows, QState, QResult),
|
case emqx_mgmt_api:accumulate_query_rows(node(), Rows, QState, QResult) of
|
||||||
eval_topic_query(MS, QState#{continuation := NCont}, NQResult);
|
{more, NQResult} ->
|
||||||
|
eval_topic_query(MS, QState#{continuation := NCont}, NQResult);
|
||||||
|
{enough, NQResult} ->
|
||||||
|
NQResult#{complete => false}
|
||||||
|
end;
|
||||||
'$end_of_table' ->
|
'$end_of_table' ->
|
||||||
QResult#{complete => true}
|
QResult#{complete => true}
|
||||||
end.
|
end.
|
||||||
|
|
Loading…
Reference in New Issue