|
Ran
|
Jobs
1
|
Files
518
|
Run time
2min
|
Badge
README BADGES
|
push
github
box: make 'double' an alias for 'number' When 'double' field type was introduced, it would only allow MP_DOUBLE MessagePack values. This would work fine. The numbers were compared correctly, could be promoted to 'number' and 'scalar' types. Then the users were complaining that it is too hard to insert integer values into a 'double' column because, at least when come from the Lua land, the numbers with 0 fractional part are saved as MP_INT/MP_UINT. The commit 51af059c1 ("box: compare and hash msgpack value of double key field as double") allowed the users to insert MP_INT and MP_UINT into the 'double' field, but it kept the C-double comparison logic. Meaning that all the numbers would be cast to C-language doubles and compared like that, regardless of their MessagePack type. It would behave like if the numbers are all actually stored as MP_DOUBLE. This eventually led to problems, because the assumption of 'double' being included into 'scalar' and 'number' broke. The same values stored in a 'double' index and in a 'number' index would be sorted differently, because large integers, when cast to C-double, loose precision. In double-world UINT64_MAX == UINT64_MAX + 1, while it is obviously not so in number- and scalar-world. The index simply broke when it was altered to 'number' or 'scalar', because it doesn't get rebuilt, and with the new sorting rules it became sorted incorrectly. This led to all sorts of data inconsistencies, assertions and crashes. With vinyl it was particularly bad, because it can't even be fixed automatically. If a user ever had a vinyl 'double' index with large integers and then converted it to 'number' or 'scalar', then the index is broken. And it is undetectable from just looking at the field types. The unlucky users of vinyl with 'double'-type indexes are going to have to pay attention to the next release and rebuild their indexes manually. Closes #9965 Follow-up for #7483 @TarantoolBot docu... (continued)
69777 of 123347 branches covered (56.57%)
3 of 3 new or added lines in 1 file covered. (100.0%)
376 existing lines in 16 files now uncovered.102778 of 117598 relevant lines covered (87.4%)
2479586.34 hits per line
| Lines | Coverage | ∆ | File |
|---|---|---|---|
| 1 |
89.05 |
-0.08% | src/box/vy_log.c |
| 1 |
90.51 |
-0.63% | src/box/engine.c |
| 1 |
94.74 |
-1.75% | src/box/engine.h |
| 1 |
74.81 |
-0.25% | src/main.cc |
| 1 |
92.92 |
-0.1% | src/lib/core/fiber.c |
| 1 |
91.68 |
0.0% | src/lib/swim/swim.c |
| 3 |
97.95 |
-0.22% | src/box/memtx_tx.c |
| 3 |
93.71 |
-0.47% | src/box/memtx_space.c |
| 3 |
94.2 |
0.0% | src/box/iproto_constants.h |
| 4 |
93.31 |
-1.27% | src/lib/swim/swim_io.c |
| 4 |
96.75 |
-0.87% | src/box/tuple_hash.cc |
| 10 |
96.42 |
1.02% | src/box/tuple_compare.cc |
| 26 |
97.26 |
1.57% | src/lib/msgpuck/msgpuck.h |
| 42 |
81.07 |
1.93% | src/box/tuple_bloom.c |
| 124 |
92.22 |
-0.11% | src/box/vinyl.c |
| 151 |
87.3 |
-0.32% | src/box/vy_run.c |
| ID | Job ID | Ran | Files | Coverage | |
|---|---|---|---|---|---|
| 1 | 13209158455.1 | 518 |
87.4 |
GitHub Action Run |
| Coverage | ∆ | File | Lines | Relevant | Covered | Missed | Hits/Line | Branch Hits | Branch Misses |
|---|