@@ -796,23 +796,18 @@ dbcontext::cmd_find_internal(dbcallback_i& cb, const prep_stmt& pst,
796796 size_t modified_count = 0 ;
797797 int r = 0 ;
798798 bool is_first = true ;
799- bool in_loop = false ;
800799 for (uint32_t cnt = 0 ; cnt < limit + skip;) {
801800 if (is_first) {
802801 is_first = false ;
803802 const key_part_map kpm = (1U << args.kvalslen ) - 1 ;
804803 r = hnd->index_read_map (table->record [0 ], key_buf, kpm, find_flag);
805- if (args.invalues_keypart >= 0 ) {
806- in_loop = true ;
807- }
808- } else if (!in_loop && args.invalues_keypart >= 0 ) {
804+ } else if (args.invalues_keypart >= 0 ) {
809805 if (++invalues_idx >= args.invalueslen ) {
810806 break ;
811807 }
812808 kplen_sum = prepare_keybuf (args, key_buf, table, kinfo, invalues_idx);
813809 const key_part_map kpm = (1U << args.kvalslen ) - 1 ;
814810 r = hnd->index_read_map (table->record [0 ], key_buf, kpm, find_flag);
815- in_loop = true ;
816811 } else {
817812 switch (find_flag) {
818813 case HA_READ_BEFORE_KEY:
@@ -857,8 +852,7 @@ dbcontext::cmd_find_internal(dbcallback_i& cb, const prep_stmt& pst,
857852 }
858853 ++cnt;
859854 }
860- if (args.invalues_keypart >= 0 && r != 0 ) {
861- in_loop = false ;
855+ if (args.invalues_keypart >= 0 && r == HA_ERR_KEY_NOT_FOUND) {
862856 continue ;
863857 }
864858 if (r != 0 && r != HA_ERR_RECORD_DELETED) {
@@ -1187,4 +1181,3 @@ dbcontext::set_statistics(size_t num_conns, size_t num_active)
11871181
11881182};
11891183
1190-
0 commit comments