MCPcopy Create free account
hub / github.com/DeNA/HandlerSocket-Plugin-for-MySQL / prepare_keybuf

Function prepare_keybuf

handlersocket/database.cpp:707–734  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

705}
706
707static size_t
708prepare_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
736void
737dbcontext::cmd_find_internal(dbcallback_i& cb, const prep_stmt& pst,

Callers 1

database.cppFile · 0.85

Calls 2

beginMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected