Skip to content
Snippets Groups Projects
Commit ce3cc9eb authored by Konstantin Osipov's avatar Konstantin Osipov
Browse files

Merge branch 'stable'

parents 1cc826e6 bd426b72
No related merge requests found
......@@ -427,20 +427,35 @@ static inline int
tuple_compare_field(const char *field_a, const char *field_b,
enum field_type type)
{
if (type != STRING) {
switch (type) {
case NUM:
{
assert(field_a[0] == field_b[0]);
uint32_t a = *(uint32_t *) (field_a + 1);
uint32_t b = *(uint32_t *) (field_b + 1);
/*
* Little-endian unsigned int is memcmp
* compatible.
*/
return memcmp(field_a + 1, field_b + 1, field_a[0]);
return a < b ? -1 : a > b;
}
uint32_t size_a = load_varint32(&field_a);
uint32_t size_b = load_varint32(&field_b);
int r = memcmp(field_a, field_b, MIN(size_a, size_b));
if (r == 0)
r = size_a < size_b ? -1 : size_a > size_b;
return r;
case NUM64:
{
assert(field_a[0] == field_b[0]);
uint64_t a = *(uint64_t *) (field_a + 1);
uint64_t b = *(uint64_t *) (field_b + 1);
return a < b ? -1 : a > b;
}
default:
{
uint32_t size_a = load_varint32(&field_a);
uint32_t size_b = load_varint32(&field_b);
int r = memcmp(field_a, field_b, MIN(size_a, size_b));
if (r == 0)
r = size_a < size_b ? -1 : size_a > size_b;
return r;
} /* end case */
} /* end switch */
}
int
......@@ -496,20 +511,28 @@ tuple_compare_with_key(const struct tuple *tuple, const char *key,
key_size = load_varint32(&key);
switch (part->type) {
case NUM:
r = memcmp(field, key, sizeof(uint32_t));
{
uint32_t a = *(uint32_t *) field;
uint32_t b = *(uint32_t *) key;
r = a < b ? - 1 : a > b;
break;
}
case NUM64:
{
uint64_t a = *(uint64_t *) field;
uint64_t b;
if (key_size == sizeof(uint32_t)) {
/*
* Allow search in NUM64 indexes
* using NUM keys.
*/
uint64_t b = *(uint32_t *) key;
r = memcmp(field, &b, sizeof(uint64_t));
b = *(uint32_t *) key;
} else {
r = memcmp(field, key, sizeof(uint64_t));
b = *(uint64_t *) key;
}
r = a < b ? -1 : a > b;
break;
}
default:
r = memcmp(field, key, MIN(field_size, key_size));
if (r == 0)
......
......@@ -676,3 +676,620 @@ lua index_random_test(26, 1)
all values have been found
- true
...
#
# A test case for Bug#1200228
# https://bugs.launchpad.net/tarantool/+bug/1200228
# box.auto_increment counter resets
# Test for correct little-endian comparison of integer fields.
# (unsigned)
#
lua for i = 1, 300 do box.insert(2, i, i) print(box.space[2].index[0]:max()) end
---
1: {1}
2: {2}
3: {3}
4: {4}
5: {5}
6: {6}
7: {7}
8: {8}
9: {9}
10: {10}
11: {11}
12: {12}
13: {13}
14: {14}
15: {15}
16: {16}
17: {17}
18: {18}
19: {19}
20: {20}
21: {21}
22: {22}
23: {23}
24: {24}
25: {25}
26: {26}
27: {27}
28: {28}
29: {29}
30: {30}
31: {31}
32: {32}
33: {33}
34: {34}
35: {35}
36: {36}
37: {37}
38: {38}
39: {39}
40: {40}
41: {41}
42: {42}
43: {43}
44: {44}
45: {45}
46: {46}
47: {47}
48: {48}
49: {49}
50: {50}
51: {51}
52: {52}
53: {53}
54: {54}
55: {55}
56: {56}
57: {57}
58: {58}
59: {59}
60: {60}
61: {61}
62: {62}
63: {63}
64: {64}
65: {65}
66: {66}
67: {67}
68: {68}
69: {69}
70: {70}
71: {71}
72: {72}
73: {73}
74: {74}
75: {75}
76: {76}
77: {77}
78: {78}
79: {79}
80: {80}
81: {81}
82: {82}
83: {83}
84: {84}
85: {85}
86: {86}
87: {87}
88: {88}
89: {89}
90: {90}
91: {91}
92: {92}
93: {93}
94: {94}
95: {95}
96: {96}
97: {97}
98: {98}
99: {99}
100: {100}
101: {101}
102: {102}
103: {103}
104: {104}
105: {105}
106: {106}
107: {107}
108: {108}
109: {109}
110: {110}
111: {111}
112: {112}
113: {113}
114: {114}
115: {115}
116: {116}
117: {117}
118: {118}
119: {119}
120: {120}
121: {121}
122: {122}
123: {123}
124: {124}
125: {125}
126: {126}
127: {127}
128: {128}
129: {129}
130: {130}
131: {131}
132: {132}
133: {133}
134: {134}
135: {135}
136: {136}
137: {137}
138: {138}
139: {139}
140: {140}
141: {141}
142: {142}
143: {143}
144: {144}
145: {145}
146: {146}
147: {147}
148: {148}
149: {149}
150: {150}
151: {151}
152: {152}
153: {153}
154: {154}
155: {155}
156: {156}
157: {157}
158: {158}
159: {159}
160: {160}
161: {161}
162: {162}
163: {163}
164: {164}
165: {165}
166: {166}
167: {167}
168: {168}
169: {169}
170: {170}
171: {171}
172: {172}
173: {173}
174: {174}
175: {175}
176: {176}
177: {177}
178: {178}
179: {179}
180: {180}
181: {181}
182: {182}
183: {183}
184: {184}
185: {185}
186: {186}
187: {187}
188: {188}
189: {189}
190: {190}
191: {191}
192: {192}
193: {193}
194: {194}
195: {195}
196: {196}
197: {197}
198: {198}
199: {199}
200: {200}
201: {201}
202: {202}
203: {203}
204: {204}
205: {205}
206: {206}
207: {207}
208: {208}
209: {209}
210: {210}
211: {211}
212: {212}
213: {213}
214: {214}
215: {215}
216: {216}
217: {217}
218: {218}
219: {219}
220: {220}
221: {221}
222: {222}
223: {223}
224: {224}
225: {225}
226: {226}
227: {227}
228: {228}
229: {229}
230: {230}
231: {231}
232: {232}
233: {233}
234: {234}
235: {235}
236: {236}
237: {237}
238: {238}
239: {239}
240: {240}
241: {241}
242: {242}
243: {243}
244: {244}
245: {245}
246: {246}
247: {247}
248: {248}
249: {249}
250: {250}
251: {251}
252: {252}
253: {253}
254: {254}
255: {255}
256: {256}
257: {257}
258: {258}
259: {259}
260: {260}
261: {261}
262: {262}
263: {263}
264: {264}
265: {265}
266: {266}
267: {267}
268: {268}
269: {269}
270: {270}
271: {271}
272: {272}
273: {273}
274: {274}
275: {275}
276: {276}
277: {277}
278: {278}
279: {279}
280: {280}
281: {281}
282: {282}
283: {283}
284: {284}
285: {285}
286: {286}
287: {287}
288: {288}
289: {289}
290: {290}
291: {291}
292: {292}
293: {293}
294: {294}
295: {295}
296: {296}
297: {297}
298: {298}
299: {299}
300: {300}
...
lua box.space[2]:select_range(0, 300)
---
- 1: {1}
- 2: {2}
- 3: {3}
- 4: {4}
- 5: {5}
- 6: {6}
- 7: {7}
- 8: {8}
- 9: {9}
- 10: {10}
- 11: {11}
- 12: {12}
- 13: {13}
- 14: {14}
- 15: {15}
- 16: {16}
- 17: {17}
- 18: {18}
- 19: {19}
- 20: {20}
- 21: {21}
- 22: {22}
- 23: {23}
- 24: {24}
- 25: {25}
- 26: {26}
- 27: {27}
- 28: {28}
- 29: {29}
- 30: {30}
- 31: {31}
- 32: {32}
- 33: {33}
- 34: {34}
- 35: {35}
- 36: {36}
- 37: {37}
- 38: {38}
- 39: {39}
- 40: {40}
- 41: {41}
- 42: {42}
- 43: {43}
- 44: {44}
- 45: {45}
- 46: {46}
- 47: {47}
- 48: {48}
- 49: {49}
- 50: {50}
- 51: {51}
- 52: {52}
- 53: {53}
- 54: {54}
- 55: {55}
- 56: {56}
- 57: {57}
- 58: {58}
- 59: {59}
- 60: {60}
- 61: {61}
- 62: {62}
- 63: {63}
- 64: {64}
- 65: {65}
- 66: {66}
- 67: {67}
- 68: {68}
- 69: {69}
- 70: {70}
- 71: {71}
- 72: {72}
- 73: {73}
- 74: {74}
- 75: {75}
- 76: {76}
- 77: {77}
- 78: {78}
- 79: {79}
- 80: {80}
- 81: {81}
- 82: {82}
- 83: {83}
- 84: {84}
- 85: {85}
- 86: {86}
- 87: {87}
- 88: {88}
- 89: {89}
- 90: {90}
- 91: {91}
- 92: {92}
- 93: {93}
- 94: {94}
- 95: {95}
- 96: {96}
- 97: {97}
- 98: {98}
- 99: {99}
- 100: {100}
- 101: {101}
- 102: {102}
- 103: {103}
- 104: {104}
- 105: {105}
- 106: {106}
- 107: {107}
- 108: {108}
- 109: {109}
- 110: {110}
- 111: {111}
- 112: {112}
- 113: {113}
- 114: {114}
- 115: {115}
- 116: {116}
- 117: {117}
- 118: {118}
- 119: {119}
- 120: {120}
- 121: {121}
- 122: {122}
- 123: {123}
- 124: {124}
- 125: {125}
- 126: {126}
- 127: {127}
- 128: {128}
- 129: {129}
- 130: {130}
- 131: {131}
- 132: {132}
- 133: {133}
- 134: {134}
- 135: {135}
- 136: {136}
- 137: {137}
- 138: {138}
- 139: {139}
- 140: {140}
- 141: {141}
- 142: {142}
- 143: {143}
- 144: {144}
- 145: {145}
- 146: {146}
- 147: {147}
- 148: {148}
- 149: {149}
- 150: {150}
- 151: {151}
- 152: {152}
- 153: {153}
- 154: {154}
- 155: {155}
- 156: {156}
- 157: {157}
- 158: {158}
- 159: {159}
- 160: {160}
- 161: {161}
- 162: {162}
- 163: {163}
- 164: {164}
- 165: {165}
- 166: {166}
- 167: {167}
- 168: {168}
- 169: {169}
- 170: {170}
- 171: {171}
- 172: {172}
- 173: {173}
- 174: {174}
- 175: {175}
- 176: {176}
- 177: {177}
- 178: {178}
- 179: {179}
- 180: {180}
- 181: {181}
- 182: {182}
- 183: {183}
- 184: {184}
- 185: {185}
- 186: {186}
- 187: {187}
- 188: {188}
- 189: {189}
- 190: {190}
- 191: {191}
- 192: {192}
- 193: {193}
- 194: {194}
- 195: {195}
- 196: {196}
- 197: {197}
- 198: {198}
- 199: {199}
- 200: {200}
- 201: {201}
- 202: {202}
- 203: {203}
- 204: {204}
- 205: {205}
- 206: {206}
- 207: {207}
- 208: {208}
- 209: {209}
- 210: {210}
- 211: {211}
- 212: {212}
- 213: {213}
- 214: {214}
- 215: {215}
- 216: {216}
- 217: {217}
- 218: {218}
- 219: {219}
- 220: {220}
- 221: {221}
- 222: {222}
- 223: {223}
- 224: {224}
- 225: {225}
- 226: {226}
- 227: {227}
- 228: {228}
- 229: {229}
- 230: {230}
- 231: {231}
- 232: {232}
- 233: {233}
- 234: {234}
- 235: {235}
- 236: {236}
- 237: {237}
- 238: {238}
- 239: {239}
- 240: {240}
- 241: {241}
- 242: {242}
- 243: {243}
- 244: {244}
- 245: {245}
- 246: {246}
- 247: {247}
- 248: {248}
- 249: {249}
- 250: {250}
- 251: {251}
- 252: {252}
- 253: {253}
- 254: {254}
- 255: {255}
- 256: {256}
- 257: {257}
- 258: {258}
- 259: {259}
- 260: {260}
- 261: {261}
- 262: {262}
- 263: {263}
- 264: {264}
- 265: {265}
- 266: {266}
- 267: {267}
- 268: {268}
- 269: {269}
- 270: {270}
- 271: {271}
- 272: {272}
- 273: {273}
- 274: {274}
- 275: {275}
- 276: {276}
- 277: {277}
- 278: {278}
- 279: {279}
- 280: {280}
- 281: {281}
- 282: {282}
- 283: {283}
- 284: {284}
- 285: {285}
- 286: {286}
- 287: {287}
- 288: {288}
- 289: {289}
- 290: {290}
- 291: {291}
- 292: {292}
- 293: {293}
- 294: {294}
- 295: {295}
- 296: {296}
- 297: {297}
- 298: {298}
- 299: {299}
- 300: {300}
...
lua box.space[2]:truncate()
---
...
......@@ -267,3 +267,14 @@ print """
admin("lua index_random_test(26, 1)")
print """
#
# A test case for Bug#1200228
# https://bugs.launchpad.net/tarantool/+bug/1200228
# box.auto_increment counter resets
# Test for correct little-endian comparison of integer fields.
# (unsigned)
#"""
exec admin "lua for i = 1, 300 do box.insert(2, i, i) print(box.space[2].index[0]:max()) end"
exec admin "lua box.space[2]:select_range(0, 300)"
exec admin "lua box.space[2]:truncate()"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment