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())).
|
||||
|
||||
eval_topic_query(MS, QState, QResult) ->
|
||||
QPage = eval_topic_query_page(MS, QState),
|
||||
case QPage of
|
||||
case eval_topic_query_page(MS, QState) of
|
||||
{Rows, '$end_of_table'} ->
|
||||
{_, NQResult} = emqx_mgmt_api:accumulate_query_rows(node(), Rows, QState, QResult),
|
||||
NQResult#{complete => true};
|
||||
{Rows, NCont} ->
|
||||
{_, NQResult} = emqx_mgmt_api:accumulate_query_rows(node(), Rows, QState, QResult),
|
||||
eval_topic_query(MS, QState#{continuation := NCont}, NQResult);
|
||||
case emqx_mgmt_api:accumulate_query_rows(node(), Rows, QState, QResult) of
|
||||
{more, NQResult} ->
|
||||
eval_topic_query(MS, QState#{continuation := NCont}, NQResult);
|
||||
{enough, NQResult} ->
|
||||
NQResult#{complete => false}
|
||||
end;
|
||||
'$end_of_table' ->
|
||||
QResult#{complete => true}
|
||||
end.
|
||||
|
|
Loading…
Reference in New Issue