- Notifications
You must be signed in to change notification settings - Fork5
Commit0454f13
committed
Rewrite the rbtree routines so that an RBNode is the first field of the
struct representing a tree entry, rather than being a separately allocatedpiece of storage. This API is at least as clean as the old one (if notmore so --- there were some bizarre choices in there) and it permits avery substantial memory savings, on the order of 2X in ginbulk.c's usage.Also, fix minor memory leaks in code called by ginEntryInsert, inparticular in ginInsertValue and entryFillRoot, as well as ginEntryInsertitself. These leaks resulted in the GIN index build context continuingto bloat even after we'd filled it to maintenance_work_mem and startedto dump data out to the index.In combination these fixes restore the GIN index build code to honoringthe maintenance_work_mem limit about as well as it did in 8.4. Speedseems on par with 8.4 too, maybe even a bit faster, for a non-pathologicalcase in which HEAD was formerly slower.Back-patch to 9.0 so we don't have a performance regression from 8.4.1 parentafc2900 commit0454f13
File tree
8 files changed
+410
-293
lines changed- src
- backend
- access/gin
- utils/misc
- include
- access
- utils
8 files changed
+410
-293
lines changedLines changed: 9 additions & 7 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
267 | 267 |
| |
268 | 268 |
| |
269 | 269 |
| |
| 270 | + | |
| 271 | + | |
270 | 272 |
| |
271 | 273 |
| |
272 | 274 |
| |
| |||
308 | 310 |
| |
309 | 311 |
| |
310 | 312 |
| |
311 |
| - | |
| 313 | + | |
312 | 314 |
| |
313 | 315 |
| |
314 |
| - | |
| 316 | + | |
| 317 | + | |
315 | 318 |
| |
316 | 319 |
| |
317 | 320 |
| |
| |||
325 | 328 |
| |
326 | 329 |
| |
327 | 330 |
| |
328 |
| - | |
329 | 331 |
| |
330 | 332 |
| |
331 | 333 |
| |
| |||
341 | 343 |
| |
342 | 344 |
| |
343 | 345 |
| |
344 |
| - | |
345 | 346 |
| |
346 | 347 |
| |
347 | 348 |
| |
| |||
375 | 376 |
| |
376 | 377 |
| |
377 | 378 |
| |
378 |
| - | |
379 |
| - | |
| 379 | + | |
380 | 380 |
| |
381 | 381 |
| |
| 382 | + | |
| 383 | + | |
382 | 384 |
| |
383 | 385 |
| |
384 | 386 |
| |
|
Lines changed: 78 additions & 56 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
19 | 19 |
| |
20 | 20 |
| |
21 | 21 |
| |
22 |
| - | |
23 |
| - | |
| 22 | + | |
| 23 | + | |
24 | 24 |
| |
25 |
| - | |
26 |
| - | |
27 |
| - | |
28 |
| - | |
29 |
| - | |
30 | 25 |
| |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
31 | 32 |
| |
32 | 33 |
| |
| 34 | + | |
| 35 | + | |
| 36 | + | |
33 | 37 |
| |
34 | 38 |
| |
35 | 39 |
| |
| |||
53 | 57 |
| |
54 | 58 |
| |
55 | 59 |
| |
56 |
| - | |
57 |
| - | |
58 | 60 |
| |
59 | 61 |
| |
| 62 | + | |
60 | 63 |
| |
61 |
| - | |
| 64 | + | |
62 | 65 |
| |
63 |
| - | |
64 |
| - | |
| 66 | + | |
| 67 | + | |
65 | 68 |
| |
66 | 69 |
| |
67 | 70 |
| |
68 | 71 |
| |
69 | 72 |
| |
70 | 73 |
| |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
71 | 99 |
| |
72 | 100 |
| |
73 | 101 |
| |
74 | 102 |
| |
| 103 | + | |
75 | 104 |
| |
76 |
| - | |
77 |
| - | |
78 |
| - | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
79 | 111 |
| |
80 | 112 |
| |
81 | 113 |
| |
| |||
104 | 136 |
| |
105 | 137 |
| |
106 | 138 |
| |
107 |
| - | |
108 |
| - | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
109 | 142 |
| |
110 | 143 |
| |
111 |
| - | |
112 |
| - | |
113 |
| - | |
| 144 | + | |
| 145 | + | |
114 | 146 |
| |
115 |
| - | |
116 |
| - | |
117 |
| - | |
118 |
| - | |
119 |
| - | |
120 |
| - | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
121 | 151 |
| |
122 |
| - | |
123 |
| - | |
124 |
| - | |
| 152 | + | |
125 | 153 |
| |
126 |
| - | |
127 |
| - | |
128 |
| - | |
129 |
| - | |
130 |
| - | |
131 |
| - | |
132 |
| - | |
133 |
| - | |
134 |
| - | |
135 |
| - | |
136 |
| - | |
137 |
| - | |
| 154 | + | |
138 | 155 |
| |
139 | 156 |
| |
140 |
| - | |
| 157 | + | |
| 158 | + | |
141 | 159 |
| |
142 |
| - | |
143 |
| - | |
144 |
| - | |
145 |
| - | |
146 |
| - | |
147 |
| - | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
148 | 168 |
| |
149 | 169 |
| |
150 | 170 |
| |
151 | 171 |
| |
152 |
| - | |
153 |
| - | |
| 172 | + | |
154 | 173 |
| |
155 |
| - | |
156 | 174 |
| |
157 | 175 |
| |
158 | 176 |
| |
| |||
214 | 232 |
| |
215 | 233 |
| |
216 | 234 |
| |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
217 | 242 |
| |
218 | 243 |
| |
219 | 244 |
| |
220 | 245 |
| |
221 | 246 |
| |
222 | 247 |
| |
223 |
| - | |
224 |
| - | |
225 |
| - | |
226 |
| - | |
| 248 | + | |
227 | 249 |
| |
228 | 250 |
| |
229 | 251 |
| |
|
Lines changed: 4 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
615 | 615 |
| |
616 | 616 |
| |
617 | 617 |
| |
618 |
| - | |
| 618 | + | |
619 | 619 |
| |
620 | 620 |
| |
621 | 621 |
| |
| |||
646 | 646 |
| |
647 | 647 |
| |
648 | 648 |
| |
| 649 | + | |
649 | 650 |
| |
650 | 651 |
| |
651 | 652 |
| |
652 | 653 |
| |
| 654 | + | |
653 | 655 |
| |
654 | 656 |
| |
655 | 657 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
14 |
| - | |
| 14 | + | |
15 | 15 |
| |
16 | 16 |
| |
17 | 17 |
| |
| |||
786 | 786 |
| |
787 | 787 |
| |
788 | 788 |
| |
| 789 | + | |
789 | 790 |
| |
790 | 791 |
| |
791 | 792 |
| |
| |||
820 | 821 |
| |
821 | 822 |
| |
822 | 823 |
| |
| 824 | + | |
823 | 825 |
| |
824 | 826 |
| |
825 | 827 |
| |
|
Lines changed: 4 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
176 | 176 |
| |
177 | 177 |
| |
178 | 178 |
| |
| 179 | + | |
179 | 180 |
| |
180 | 181 |
| |
181 | 182 |
| |
| |||
254 | 255 |
| |
255 | 256 |
| |
256 | 257 |
| |
| 258 | + | |
257 | 259 |
| |
258 | 260 |
| |
259 | 261 |
| |
| |||
360 | 362 |
| |
361 | 363 |
| |
362 | 364 |
| |
| 365 | + | |
363 | 366 |
| |
364 | 367 |
| |
365 | 368 |
| |
|
0 commit comments
Comments
(0)