Repository navigation
Commit e71563a
fix(writer): null as a global-dict entry for string and binary columns
## fix(writer): store null as a global-dict entry for string and binary columns
Same shape as the numeric path: a nullable Utf8/Binary global dict now
writes null as one more pool entry, invalid in the pool's validity, with
non-nullable U16 codes and is_nullable_codes = false, as Rust's dict
layout writer does. The pool (FSST/VarBin/Zstd competition) is now masked
when it holds the null entry, so writeSegment's masked override honors
the cascade exclusions too: the pool must never become a dict itself,
which the reader cannot unwrap.
Taxi 2024-01: 42,342,166 -> 42,340,950 bytes (vortex-jni 44,463,892)
store_and_fwd_flag 66,460 -> 64,990 (jni 47,536: 1.40x -> 1.37x)
pool and layout metadata now match vortex-jni's shape; the rest of
the gap is 46 code chunks of 64k rows vs Rust's 6 of 512k
OHLC 10M rows: unchanged at 58,230,658 bytes.
JavaVsJniWriteBenchmark.javaWriteCascading, 5 forks:
0.769 +- 0.026 -> 0.767 +- 0.017 ops/s (per fork 0.769 0.768 0.805 0.742 0.751)
gc.alloc.rate.norm 2.50 -> 2.50 GB/op
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015R8cf8YM8XFQqrkyhSAtYr1 parent 7ad1ba9 commit e71563a
3 files changed
Lines changed: 37 additions & 17 deletions
File tree
- writer/src/main/java/io/github/dfa1/vortex/writer
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
Lines changed: 8 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
452 | 452 | | |
453 | 453 | | |
454 | 454 | | |
455 | | - | |
456 | | - | |
| 455 | + | |
457 | 456 | | |
458 | 457 | | |
459 | 458 | | |
| |||
474 | 473 | | |
475 | 474 | | |
476 | 475 | | |
477 | | - | |
| 476 | + | |
| 477 | + | |
478 | 478 | | |
479 | | - | |
| 479 | + | |
480 | 480 | | |
481 | 481 | | |
482 | 482 | | |
| |||
486 | 486 | | |
487 | 487 | | |
488 | 488 | | |
489 | | - | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
490 | 493 | | |
491 | 494 | | |
492 | 495 | | |
| |||
Lines changed: 28 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
691 | 691 | | |
692 | 692 | | |
693 | 693 | | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
694 | 697 | | |
695 | 698 | | |
696 | 699 | | |
| |||
1366 | 1369 | | |
1367 | 1370 | | |
1368 | 1371 | | |
1369 | | - | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
1370 | 1377 | | |
1371 | 1378 | | |
1372 | 1379 | | |
1373 | 1380 | | |
1374 | 1381 | | |
1375 | 1382 | | |
1376 | | - | |
| 1383 | + | |
| 1384 | + | |
1377 | 1385 | | |
1378 | | - | |
1379 | | - | |
1380 | | - | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
1381 | 1400 | | |
1382 | | - | |
| 1401 | + | |
1383 | 1402 | | |
1384 | 1403 | | |
1385 | | - | |
1386 | | - | |
1387 | | - | |
1388 | | - | |
| 1404 | + | |
| 1405 | + | |
1389 | 1406 | | |
1390 | 1407 | | |
1391 | 1408 | | |
1392 | 1409 | | |
1393 | | - | |
| 1410 | + | |
1394 | 1411 | | |
1395 | 1412 | | |
1396 | 1413 | | |
| |||
0 commit comments