forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commite502150
committed
Allow Memoize to operate in binary comparison mode
Memoize would always use the hash equality operator for the cache keytypes to determine if the current set of parameters were the same as somepreviously cached set. Certain types such as floating points where -0.0and +0.0 differ in their binary representation but are classed as equal bythe hash equality operator may cause problems as unless the join uses thesame operator it's possible that whichever join operator is being usedwould be able to distinguish the two values. In which case we mayaccidentally return in the incorrect rows out of the cache.To fix this here we add a binary mode to Memoize to allow it to thecurrent set of parameters to previously cached values by comparingbit-by-bit rather than logically using the hash equality operator. Thisbinary mode is always used for LATERAL joins and it's used for normaljoins when any of the join operators are not hashable.Reported-by: Tom LaneAuthor: David RowleyDiscussion:https://postgr.es/m/3004308.1632952496@sss.pgh.pa.usBackpatch-through: 14, where Memoize was added1 parent1922d7c commite502150
File tree
19 files changed
+345
-39
lines changed- contrib/postgres_fdw/expected
- src
- backend
- commands
- executor
- nodes
- optimizer
- path
- plan
- util
- utils/adt
- include
- nodes
- optimizer
- utils
- test/regress
- expected
- sql
19 files changed
+345
-39
lines changedLines changed: 2 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2247 | 2247 |
| |
2248 | 2248 |
| |
2249 | 2249 |
| |
| 2250 | + | |
2250 | 2251 |
| |
2251 | 2252 |
| |
2252 | 2253 |
| |
| |||
2255 | 2256 |
| |
2256 | 2257 |
| |
2257 | 2258 |
| |
2258 |
| - | |
| 2259 | + | |
2259 | 2260 |
| |
2260 | 2261 |
| |
2261 | 2262 |
| |
|
Lines changed: 3 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
3127 | 3127 |
| |
3128 | 3128 |
| |
3129 | 3129 |
| |
| 3130 | + | |
3130 | 3131 |
| |
3131 | 3132 |
| |
3132 | 3133 |
| |
3133 | 3134 |
| |
3134 | 3135 |
| |
| 3136 | + | |
| 3137 | + | |
3135 | 3138 |
| |
3136 | 3139 |
| |
3137 | 3140 |
| |
|
Lines changed: 76 additions & 16 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
71 | 71 |
| |
72 | 72 |
| |
73 | 73 |
| |
| 74 | + | |
74 | 75 |
| |
75 | 76 |
| |
76 | 77 |
| |
| |||
131 | 132 |
| |
132 | 133 |
| |
133 | 134 |
| |
134 |
| - | |
| 135 | + | |
135 | 136 |
| |
136 | 137 |
| |
137 | 138 |
| |
| |||
140 | 141 |
| |
141 | 142 |
| |
142 | 143 |
| |
143 |
| - | |
| 144 | + | |
144 | 145 |
| |
145 | 146 |
| |
146 | 147 |
| |
| |||
160 | 161 |
| |
161 | 162 |
| |
162 | 163 |
| |
163 |
| - | |
164 |
| - | |
165 | 164 |
| |
166 |
| - | |
| 165 | + | |
167 | 166 |
| |
168 |
| - | |
169 |
| - | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
170 | 189 |
| |
171 |
| - | |
| 190 | + | |
172 | 191 |
| |
173 |
| - | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
174 | 198 |
| |
175 |
| - | |
176 |
| - | |
177 |
| - | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
178 | 203 |
| |
179 | 204 |
| |
180 | 205 |
| |
| |||
187 | 212 |
| |
188 | 213 |
| |
189 | 214 |
| |
190 |
| - | |
| 215 | + | |
191 | 216 |
| |
192 | 217 |
| |
193 | 218 |
| |
| |||
199 | 224 |
| |
200 | 225 |
| |
201 | 226 |
| |
202 |
| - | |
203 |
| - | |
204 |
| - | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
205 | 259 |
| |
206 | 260 |
| |
207 | 261 |
| |
| |||
926 | 980 |
| |
927 | 981 |
| |
928 | 982 |
| |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
929 | 989 |
| |
930 | 990 |
| |
931 | 991 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
971 | 971 |
| |
972 | 972 |
| |
973 | 973 |
| |
| 974 | + | |
974 | 975 |
| |
975 | 976 |
| |
976 | 977 |
| |
|
Lines changed: 2 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
866 | 866 |
| |
867 | 867 |
| |
868 | 868 |
| |
| 869 | + | |
869 | 870 |
| |
870 | 871 |
| |
871 | 872 |
| |
| |||
1966 | 1967 |
| |
1967 | 1968 |
| |
1968 | 1969 |
| |
| 1970 | + | |
1969 | 1971 |
| |
1970 | 1972 |
| |
1971 | 1973 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2230 | 2230 |
| |
2231 | 2231 |
| |
2232 | 2232 |
| |
| 2233 | + | |
2233 | 2234 |
| |
2234 | 2235 |
| |
2235 | 2236 |
| |
|
Lines changed: 34 additions & 4 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
371 | 371 |
| |
372 | 372 |
| |
373 | 373 |
| |
374 |
| - | |
375 |
| - | |
| 374 | + | |
| 375 | + | |
376 | 376 |
| |
377 | 377 |
| |
378 | 378 |
| |
379 | 379 |
| |
380 |
| - | |
| 380 | + | |
| 381 | + | |
381 | 382 |
| |
382 | 383 |
| |
383 | 384 |
| |
384 | 385 |
| |
385 | 386 |
| |
386 | 387 |
| |
| 388 | + | |
387 | 389 |
| |
388 | 390 |
| |
389 | 391 |
| |
| |||
431 | 433 |
| |
432 | 434 |
| |
433 | 435 |
| |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
434 | 450 |
| |
435 | 451 |
| |
436 | 452 |
| |
| |||
461 | 477 |
| |
462 | 478 |
| |
463 | 479 |
| |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
464 | 491 |
| |
465 | 492 |
| |
466 | 493 |
| |
| |||
481 | 508 |
| |
482 | 509 |
| |
483 | 510 |
| |
| 511 | + | |
484 | 512 |
| |
485 | 513 |
| |
486 | 514 |
| |
| |||
572 | 600 |
| |
573 | 601 |
| |
574 | 602 |
| |
575 |
| - | |
| 603 | + | |
| 604 | + | |
576 | 605 |
| |
577 | 606 |
| |
578 | 607 |
| |
579 | 608 |
| |
580 | 609 |
| |
581 | 610 |
| |
582 | 611 |
| |
| 612 | + | |
583 | 613 |
| |
584 | 614 |
| |
585 | 615 |
| |
|
Lines changed: 7 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
279 | 279 |
| |
280 | 280 |
| |
281 | 281 |
| |
282 |
| - | |
| 282 | + | |
| 283 | + | |
283 | 284 |
| |
284 | 285 |
| |
285 | 286 |
| |
| |||
1617 | 1618 |
| |
1618 | 1619 |
| |
1619 | 1620 |
| |
1620 |
| - | |
| 1621 | + | |
| 1622 | + | |
1621 | 1623 |
| |
1622 | 1624 |
| |
1623 | 1625 |
| |
| |||
6417 | 6419 |
| |
6418 | 6420 |
| |
6419 | 6421 |
| |
6420 |
| - | |
| 6422 | + | |
| 6423 | + | |
6421 | 6424 |
| |
6422 | 6425 |
| |
6423 | 6426 |
| |
| |||
6432 | 6435 |
| |
6433 | 6436 |
| |
6434 | 6437 |
| |
| 6438 | + | |
6435 | 6439 |
| |
6436 | 6440 |
| |
6437 | 6441 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1583 | 1583 |
| |
1584 | 1584 |
| |
1585 | 1585 |
| |
1586 |
| - | |
| 1586 | + | |
1587 | 1587 |
| |
1588 | 1588 |
| |
1589 | 1589 |
| |
| |||
1603 | 1603 |
| |
1604 | 1604 |
| |
1605 | 1605 |
| |
| 1606 | + | |
1606 | 1607 |
| |
1607 | 1608 |
| |
1608 | 1609 |
| |
| |||
3942 | 3943 |
| |
3943 | 3944 |
| |
3944 | 3945 |
| |
| 3946 | + | |
3945 | 3947 |
| |
3946 | 3948 |
| |
3947 | 3949 |
| |
|
0 commit comments
Comments
(0)