|
117 | 117 | --- iterator_opts = <...>,
|
118 | 118 | --- is_full_scan = <boolean>,
|
119 | 119 | --- }
|
120 |
| ---- select_state = <...>, |
121 |
| ---- select_opts = <...>, |
| 120 | +--- select_state = { |
| 121 | +--- count = <number>, |
| 122 | +--- objs = <list of objects>, |
| 123 | +--- pivot_found = <boolean>, |
| 124 | +--- qcontext = <table>, |
| 125 | +--- }, |
| 126 | +--- select_opts = { |
| 127 | +--- model = <compiled avro schema>, |
| 128 | +--- limit = <number>, |
| 129 | +--- filter = <table>, |
| 130 | +--- do_filter = <boolean>, |
| 131 | +--- pivot_filter = <table>, |
| 132 | +--- resulting_object_cnt_max = <number>, |
| 133 | +--- fetched_object_cnt_max = <number>, |
| 134 | +--- resolveField = <function>, |
| 135 | +--- }, |
122 | 136 | --- collection_name = <string>,
|
123 | 137 | --- from = <...>,
|
124 | 138 | --- filter = <...>,
|
@@ -625,10 +639,23 @@ local function invoke_resolve(prepared_object, context, opts)
|
625 | 639 | else
|
626 | 640 | if is_item_cache_only then
|
627 | 641 | -- prevent statisting from being affected by cache only requests
|
628 |
| - -- XXX: catch cache misses for such requests |
629 |
| - -- XXX: avoid deepcopy |
630 |
| - local extra = field_info.prepared_resolve.prepared_select.extra |
631 |
| - extra.qcontext = table.deepcopy(extra.qcontext) |
| 642 | + local prepared_select = field_info.prepared_resolve.prepared_select |
| 643 | + local extra = prepared_select.extra |
| 644 | + local select_state = prepared_select.select_state |
| 645 | + local qcontext = extra.qcontext |
| 646 | + local new_qcontext = { |
| 647 | + initialized = true, |
| 648 | + deadline_clock = qcontext.deadline_clock, |
| 649 | + statistics = { |
| 650 | + resulting_object_cnt = 0, |
| 651 | + fetched_object_cnt = 0, |
| 652 | + select_requests_cnt = 0, |
| 653 | + full_scan_select_requests_cnt = 0, |
| 654 | + index_select_requests_cnt = 0, |
| 655 | + } |
| 656 | + } |
| 657 | + extra.qcontext = new_qcontext |
| 658 | + select_state.qcontext = new_qcontext |
632 | 659 | end
|
633 | 660 | object_or_list, object_type = field_info.prepared_resolve:invoke()
|
634 | 661 | end
|
|
0 commit comments