- Notifications
You must be signed in to change notification settings - Fork5.2k
Commit3a7a3ea
committed
Put "excludeOnly" GIN scan keys at the end of the scankey array.
Commit4b754d6 introduced the concept of an excludeOnly scan key,which cannot select matching index entries but can rejectnon-matching tuples, for example a tsquery such as '!term'. There arepoorly-documented assumptions that such scan keys do not appear as thefirst scan key. ginNewScanKey did nothing to ensure that, however,with the result that certain GIN index searches could go into aninfinite loop while apparently-equivalent queries with the clauses ina different order were fine.Fix by teaching ginNewScanKey to place all excludeOnly scan keysafter all not-excludeOnly ones. So far as we know at present,it might be sufficient to avoid the case where the very firstscan key is excludeOnly; but I'm not very convinced that therearen't other dependencies on the ordering.Bug: #19031Reported-by: Tim Wood <washwithcare@gmail.com>Author: Tom Lane <tgl@sss.pgh.pa.us>Discussion:https://postgr.es/m/19031-0638148643d25548@postgresql.orgBackpatch-through: 131 parent44c2e5b commit3a7a3ea
File tree
3 files changed
+97
-0
lines changed- contrib/pg_trgm
- expected
- sql
- src/backend/access/gin
3 files changed
+97
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4693 | 4693 | | |
4694 | 4694 | | |
4695 | 4695 | | |
| 4696 | + | |
| 4697 | + | |
| 4698 | + | |
| 4699 | + | |
| 4700 | + | |
| 4701 | + | |
| 4702 | + | |
| 4703 | + | |
| 4704 | + | |
| 4705 | + | |
| 4706 | + | |
| 4707 | + | |
| 4708 | + | |
| 4709 | + | |
| 4710 | + | |
| 4711 | + | |
| 4712 | + | |
4696 | 4713 | | |
4697 | 4714 | | |
4698 | 4715 | | |
| |||
4731 | 4748 | | |
4732 | 4749 | | |
4733 | 4750 | | |
| 4751 | + | |
| 4752 | + | |
| 4753 | + | |
| 4754 | + | |
| 4755 | + | |
| 4756 | + | |
| 4757 | + | |
| 4758 | + | |
| 4759 | + | |
| 4760 | + | |
| 4761 | + | |
| 4762 | + | |
| 4763 | + | |
| 4764 | + | |
| 4765 | + | |
| 4766 | + | |
| 4767 | + | |
4734 | 4768 | | |
4735 | 4769 | | |
4736 | 4770 | | |
| |||
4746 | 4780 | | |
4747 | 4781 | | |
4748 | 4782 | | |
| 4783 | + | |
| 4784 | + | |
| 4785 | + | |
| 4786 | + | |
| 4787 | + | |
| 4788 | + | |
4749 | 4789 | | |
4750 | 4790 | | |
4751 | 4791 | | |
| |||
4758 | 4798 | | |
4759 | 4799 | | |
4760 | 4800 | | |
| 4801 | + | |
| 4802 | + | |
| 4803 | + | |
| 4804 | + | |
| 4805 | + | |
| 4806 | + | |
4761 | 4807 | | |
4762 | 4808 | | |
4763 | 4809 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
83 | 86 | | |
84 | 87 | | |
85 | 88 | | |
| |||
90 | 93 | | |
91 | 94 | | |
92 | 95 | | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
93 | 99 | | |
94 | 100 | | |
95 | 101 | | |
96 | 102 | | |
97 | 103 | | |
98 | 104 | | |
| 105 | + | |
99 | 106 | | |
100 | 107 | | |
| 108 | + | |
101 | 109 | | |
102 | 110 | | |
103 | 111 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
| 274 | + | |
274 | 275 | | |
275 | 276 | | |
276 | 277 | | |
| |||
393 | 394 | | |
394 | 395 | | |
395 | 396 | | |
| 397 | + | |
396 | 398 | | |
397 | 399 | | |
398 | 400 | | |
| |||
406 | 408 | | |
407 | 409 | | |
408 | 410 | | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
409 | 452 | | |
410 | 453 | | |
411 | 454 | | |
| |||
0 commit comments
Comments
(0)