| 705 | } |
| 706 | |
| 707 | static size_t |
| 708 | prepare_keybuf(const cmd_exec_args& args, uchar *key_buf, TABLE *table, |
| 709 | KEY& kinfo, size_t invalues_index) |
| 710 | { |
| 711 | size_t kplen_sum = 0; |
| 712 | DBG_KEY(fprintf(stderr, "SLOW\n")); |
| 713 | for (size_t i = 0; i < args.kvalslen; ++i) { |
| 714 | const KEY_PART_INFO & kpt = kinfo.key_part[i]; |
| 715 | string_ref kval = args.kvals[i]; |
| 716 | if (args.invalues_keypart >= 0 && |
| 717 | static_cast<size_t>(args.invalues_keypart) == i) { |
| 718 | kval = args.invalues[invalues_index]; |
| 719 | } |
| 720 | if (kval.begin() == 0) { |
| 721 | kpt.field->set_null(); |
| 722 | } else { |
| 723 | kpt.field->set_notnull(); |
| 724 | } |
| 725 | kpt.field->store(kval.begin(), kval.size(), &my_charset_bin); |
| 726 | kplen_sum += kpt.store_length; |
| 727 | DBG_KEYLEN(fprintf(stderr, "l=%u sl=%zu\n", kpt.length, |
| 728 | kpt.store_length)); |
| 729 | } |
| 730 | key_copy(key_buf, table->record[0], &kinfo, kplen_sum); |
| 731 | DBG_KEYLEN(fprintf(stderr, "sum=%zu flen=%u\n", kplen_sum, |
| 732 | kinfo.key_length)); |
| 733 | return kplen_sum; |
| 734 | } |
| 735 | |
| 736 | void |
| 737 | dbcontext::cmd_find_internal(dbcallback_i& cb, const prep_stmt& pst, |
no test coverage detected