Commit 6d029fe
Encode null presence inline in column data
Replace the nullable type-code flag (0x80 high bit) with an
inline null-count byte at the start of each column's data.
QwpColumnWriter.writeNullHeader() now writes a single byte
(0 = no nulls, 1 = has nulls) followed by the bitmap only
when nulls are present.
QwpColumnDef no longer stores or OR's a nullable flag into
the type code. The hasNullBitmap field and the 3-argument
constructor are removed. QwpSchemaHash hashes only the base
type code.
QwpTableBuffer.ColumnBuffer defers null bitmap expansion to
addNull() calls instead of checking capacity on every row.
Non-null addXxx() methods no longer touch the bitmap at all.
The bitmap is tail-expanded to the full row count at
serialization time in writeNullHeader().
Safety fixes: isNull() returns false for indices beyond
bitmap capacity, truncateTo() and clearToEmptyFast() clamp
to the allocated bitmap size.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent aa55767 commit 6d029fe
9 files changed
Lines changed: 52 additions & 108 deletions
File tree
- core/src
- main/java/io/questdb/client/cutlass/qwp
- client
- protocol
- test/java/io/questdb/client/test/cutlass/qwp
- client
- protocol
Lines changed: 7 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | | - | |
62 | | - | |
63 | | - | |
| 61 | + | |
64 | 62 | | |
65 | 63 | | |
66 | 64 | | |
| |||
281 | 279 | | |
282 | 280 | | |
283 | 281 | | |
284 | | - | |
285 | | - | |
286 | | - | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
287 | 287 | | |
288 | 288 | | |
289 | 289 | | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
| 290 | + | |
294 | 291 | | |
295 | 292 | | |
296 | 293 | | |
| |||
Lines changed: 7 additions & 37 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
38 | 37 | | |
39 | 38 | | |
40 | 39 | | |
41 | 40 | | |
42 | 41 | | |
43 | 42 | | |
44 | | - | |
| 43 | + | |
45 | 44 | | |
46 | 45 | | |
47 | 46 | | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
| 47 | + | |
64 | 48 | | |
65 | 49 | | |
66 | 50 | | |
| |||
69 | 53 | | |
70 | 54 | | |
71 | 55 | | |
72 | | - | |
73 | 56 | | |
74 | 57 | | |
75 | 58 | | |
| |||
81 | 64 | | |
82 | 65 | | |
83 | 66 | | |
84 | | - | |
| 67 | + | |
85 | 68 | | |
86 | | - | |
| 69 | + | |
87 | 70 | | |
88 | 71 | | |
89 | 72 | | |
| |||
97 | 80 | | |
98 | 81 | | |
99 | 82 | | |
100 | | - | |
| 83 | + | |
101 | 84 | | |
102 | 85 | | |
103 | 86 | | |
104 | 87 | | |
105 | | - | |
| 88 | + | |
106 | 89 | | |
107 | 90 | | |
108 | 91 | | |
109 | 92 | | |
110 | 93 | | |
111 | 94 | | |
112 | | - | |
113 | 95 | | |
114 | 96 | | |
115 | 97 | | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | 98 | | |
124 | 99 | | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
| 100 | + | |
131 | 101 | | |
132 | 102 | | |
133 | 103 | | |
| |||
Lines changed: 4 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
269 | 269 | | |
270 | 270 | | |
271 | 271 | | |
272 | | - | |
| 272 | + | |
273 | 273 | | |
274 | 274 | | |
275 | 275 | | |
| |||
308 | 308 | | |
309 | 309 | | |
310 | 310 | | |
311 | | - | |
312 | | - | |
| 311 | + | |
313 | 312 | | |
314 | 313 | | |
315 | 314 | | |
| |||
382 | 381 | | |
383 | 382 | | |
384 | 383 | | |
385 | | - | |
| 384 | + | |
386 | 385 | | |
387 | 386 | | |
388 | 387 | | |
| |||
392 | 391 | | |
393 | 392 | | |
394 | 393 | | |
395 | | - | |
| 394 | + | |
396 | 395 | | |
397 | 396 | | |
398 | 397 | | |
| |||
Lines changed: 2 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
156 | | - | |
157 | | - | |
| 155 | + | |
| 156 | + | |
158 | 157 | | |
159 | 158 | | |
160 | 159 | | |
| |||
Lines changed: 12 additions & 32 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
179 | | - | |
| 179 | + | |
180 | 180 | | |
181 | 181 | | |
182 | 182 | | |
| |||
633 | 633 | | |
634 | 634 | | |
635 | 635 | | |
636 | | - | |
637 | 636 | | |
638 | 637 | | |
639 | 638 | | |
640 | 639 | | |
641 | 640 | | |
642 | 641 | | |
643 | | - | |
644 | 642 | | |
645 | 643 | | |
646 | 644 | | |
| |||
651 | 649 | | |
652 | 650 | | |
653 | 651 | | |
654 | | - | |
655 | 652 | | |
656 | 653 | | |
657 | 654 | | |
| |||
684 | 681 | | |
685 | 682 | | |
686 | 683 | | |
687 | | - | |
688 | 684 | | |
689 | 685 | | |
690 | 686 | | |
| |||
711 | 707 | | |
712 | 708 | | |
713 | 709 | | |
714 | | - | |
715 | 710 | | |
716 | 711 | | |
717 | 712 | | |
| |||
737 | 732 | | |
738 | 733 | | |
739 | 734 | | |
740 | | - | |
741 | 735 | | |
742 | 736 | | |
743 | 737 | | |
| |||
844 | 838 | | |
845 | 839 | | |
846 | 840 | | |
847 | | - | |
848 | 841 | | |
849 | 842 | | |
850 | 843 | | |
| |||
867 | 860 | | |
868 | 861 | | |
869 | 862 | | |
870 | | - | |
871 | 863 | | |
872 | 864 | | |
873 | 865 | | |
874 | 866 | | |
875 | 867 | | |
876 | 868 | | |
877 | | - | |
878 | 869 | | |
879 | 870 | | |
880 | 871 | | |
881 | 872 | | |
882 | 873 | | |
883 | 874 | | |
884 | | - | |
885 | 875 | | |
886 | 876 | | |
887 | 877 | | |
888 | 878 | | |
889 | 879 | | |
890 | 880 | | |
891 | | - | |
892 | 881 | | |
893 | 882 | | |
894 | 883 | | |
| |||
995 | 984 | | |
996 | 985 | | |
997 | 986 | | |
998 | | - | |
| 987 | + | |
999 | 988 | | |
1000 | 989 | | |
1001 | 990 | | |
| |||
1069 | 1058 | | |
1070 | 1059 | | |
1071 | 1060 | | |
1072 | | - | |
1073 | 1061 | | |
1074 | 1062 | | |
1075 | 1063 | | |
1076 | 1064 | | |
1077 | 1065 | | |
1078 | 1066 | | |
1079 | 1067 | | |
1080 | | - | |
| 1068 | + | |
1081 | 1069 | | |
1082 | 1070 | | |
1083 | | - | |
1084 | 1071 | | |
1085 | 1072 | | |
1086 | 1073 | | |
| |||
1100 | 1087 | | |
1101 | 1088 | | |
1102 | 1089 | | |
1103 | | - | |
1104 | 1090 | | |
1105 | 1091 | | |
1106 | 1092 | | |
| |||
1128 | 1114 | | |
1129 | 1115 | | |
1130 | 1116 | | |
1131 | | - | |
1132 | 1117 | | |
1133 | 1118 | | |
1134 | 1119 | | |
| |||
1140 | 1125 | | |
1141 | 1126 | | |
1142 | 1127 | | |
1143 | | - | |
1144 | 1128 | | |
1145 | 1129 | | |
1146 | 1130 | | |
| |||
1158 | 1142 | | |
1159 | 1143 | | |
1160 | 1144 | | |
1161 | | - | |
1162 | 1145 | | |
1163 | 1146 | | |
1164 | 1147 | | |
| |||
1332 | 1315 | | |
1333 | 1316 | | |
1334 | 1317 | | |
1335 | | - | |
| 1318 | + | |
1336 | 1319 | | |
1337 | 1320 | | |
1338 | 1321 | | |
| |||
1422 | 1405 | | |
1423 | 1406 | | |
1424 | 1407 | | |
1425 | | - | |
| 1408 | + | |
1426 | 1409 | | |
1427 | 1410 | | |
1428 | 1411 | | |
| |||
1617 | 1600 | | |
1618 | 1601 | | |
1619 | 1602 | | |
1620 | | - | |
| 1603 | + | |
| 1604 | + | |
1621 | 1605 | | |
1622 | 1606 | | |
1623 | 1607 | | |
| |||
1650 | 1634 | | |
1651 | 1635 | | |
1652 | 1636 | | |
1653 | | - | |
| 1637 | + | |
| 1638 | + | |
1654 | 1639 | | |
1655 | 1640 | | |
1656 | 1641 | | |
| |||
1664 | 1649 | | |
1665 | 1650 | | |
1666 | 1651 | | |
1667 | | - | |
1668 | | - | |
1669 | | - | |
1670 | | - | |
1671 | | - | |
1672 | 1652 | | |
1673 | 1653 | | |
1674 | 1654 | | |
| |||
1694 | 1674 | | |
1695 | 1675 | | |
1696 | 1676 | | |
1697 | | - | |
1698 | | - | |
| 1677 | + | |
| 1678 | + | |
1699 | 1679 | | |
1700 | 1680 | | |
1701 | | - | |
| 1681 | + | |
1702 | 1682 | | |
1703 | 1683 | | |
1704 | 1684 | | |
| |||
0 commit comments