-
Notifications
You must be signed in to change notification settings - Fork 54
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix shameful bug with maximum item size in entry tree
RUM posting trees received rightbound keys. Accidentally RumMaxItemSize was corrected according to this. However RumMaxItemSize is related only to entry tree which wasn't changed. That cause long standing bug that long lexemes can't fit entry tree. Bug is fixed in this commit. Also regression test were added for longest lexemes with longest positions lists.
- Loading branch information
Alexander Korotkov
committed
Dec 9, 2016
1 parent
5da261a
commit 58fee28
Showing
4 changed files
with
208 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
-- Check we can put and query lexemes of maximum size 2046 bytes | ||
-- with maximum posting list size. | ||
CREATE TABLE limits_test (v tsvector); | ||
INSERT INTO limits_test (SELECT (SELECT (repeat(chr(65 + num % 26), 2046) || ':' || string_agg(i::text, ','))::tsvector FROM generate_series(1,1024) i) FROM generate_series(1,1000) num); | ||
CREATE INDEX limits_test_idx ON limits_test USING rum (v); | ||
SET enable_seqscan = off; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('A', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('B', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('C', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('D', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('E', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('F', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('G', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('H', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('I', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('J', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('K', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('L', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('M', 2046)::tsquery; | ||
count | ||
------- | ||
39 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('N', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('O', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('P', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('Q', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('R', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('S', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('T', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('U', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('V', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('W', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('X', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('Y', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('Z', 2046)::tsquery; | ||
count | ||
------- | ||
38 | ||
(1 row) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
-- Check we can put and query lexemes of maximum size 2046 bytes | ||
-- with maximum posting list size. | ||
CREATE TABLE limits_test (v tsvector); | ||
INSERT INTO limits_test (SELECT (SELECT (repeat(chr(65 + num % 26), 2046) || ':' || string_agg(i::text, ','))::tsvector FROM generate_series(1,1024) i) FROM generate_series(1,1000) num); | ||
CREATE INDEX limits_test_idx ON limits_test USING rum (v); | ||
|
||
SET enable_seqscan = off; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('A', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('B', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('C', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('D', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('E', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('F', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('G', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('H', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('I', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('J', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('K', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('L', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('M', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('N', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('O', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('P', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('Q', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('R', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('S', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('T', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('U', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('V', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('W', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('X', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('Y', 2046)::tsquery; | ||
SELECT COUNT(*) FROM limits_test WHERE v @@ repeat('Z', 2046)::tsquery; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters