23#ifndef CMP_VARLEN_KEYS_INCLUDED
24#define CMP_VARLEN_KEYS_INCLUDED
52 uint kp1_len, kp2_len, kp_len;
53 if (sort_field.maybe_null) {
54 const int k1_nullbyte = *kp1++;
55 const int k2_nullbyte = *kp2++;
56 if (k1_nullbyte != k2_nullbyte)
return k1_nullbyte < k2_nullbyte;
57 if (k1_nullbyte == 0 || k1_nullbyte == 0xff) {
58 if (!sort_field.is_varlen) {
59 kp1 += sort_field.length;
60 kp2 += sort_field.length;
65 if (sort_field.is_varlen) {
75 kp_len = std::min(kp1_len, kp2_len);
77 kp_len = kp1_len = kp2_len = sort_field.length;
80 res = memcmp(kp1, kp2, kp_len);
82 if (res)
return res < 0;
83 if (kp1_len != kp2_len) {
84 if (sort_field.reverse)
85 return kp2_len < kp1_len;
87 return kp1_len < kp2_len;
96 return memcmp(kp1, kp2, 8) < 0;
A wrapper class which provides array bounds checking.
Definition: sql_array.h:46
There are several record formats for sorting:
Definition: sort_param.h:301
Bounds_checked_array< st_sort_field > local_sortorder
ORDER BY list with some precalculated info for filesort.
Definition: sort_param.h:322
static const uint size_of_varlength_field
Definition: sort_param.h:466
bool use_hash
Definition: sort_param.h:310
bool cmp_varlen_keys(Bounds_checked_array< st_sort_field > sort_field_array, bool use_hash, const uchar *s1, const uchar *s2)
A compare function for variable-length keys used by filesort().
Definition: cmp_varlen_keys.h:45
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:221
static uint16 key1[1001]
Definition: hp_test2.cc:49
uint32 uint4korr(const char *pT)
Definition: my_byteorder.h:144
unsigned char uchar
Definition: my_inttypes.h:51
This struct is used for merging chunks for filesort() For filesort() with fixed-size keys we use memc...
Definition: cmp_varlen_keys.h:107
Merge_chunk_greater(Sort_param *param)
Definition: cmp_varlen_keys.h:115
bool key_is_greater_than(uchar *key1, uchar *key2) const
Definition: cmp_varlen_keys.h:121
Sort_param * m_param
Definition: cmp_varlen_keys.h:109
bool operator()(Merge_chunk *a, Merge_chunk *b) const
Definition: cmp_varlen_keys.h:117
size_t m_len
Definition: cmp_varlen_keys.h:108
Merge_chunk_greater(size_t len)
Definition: cmp_varlen_keys.h:112
Descriptor for a merge chunk to be sort-merged.
Definition: sql_sort.h:56
uchar * current_key() const
Definition: sql_sort.h:81
Struct that holds information about a sort field.
Definition: sort_param.h:85