fix: regression that makes fts not work on domain types based on tsvector
This commit is contained in:
@@ -294,6 +294,20 @@ spec = do
|
||||
]|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "works when the column type is a tsvector domain" $ do
|
||||
get "tsearch_to_tsvector?select=text_search_domain&text_search_domain=fts(simple).of" `shouldRespondWith`
|
||||
[json| [
|
||||
{"text_search_domain":"'do':7 'fun':5 'impossible':9 'it':1 'kind':3 'of':4 's':2 'the':8 'to':6"}
|
||||
]|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "works when the column type is a recursive tsvector domain" $ do
|
||||
get "tsearch_to_tsvector?select=text_search_rec_domain&text_search_rec_domain=fts(simple).of" `shouldRespondWith`
|
||||
[json| [
|
||||
{"text_search_rec_domain":"'do':7 'fun':5 'impossible':9 'it':1 'kind':3 'of':4 's':2 'the':8 'to':6"}
|
||||
]|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
context "text and json columns" $ do
|
||||
it "finds matches with to_tsquery" $ do
|
||||
get "/tsearch_to_tsvector?select=text_search&text_search=fts.impossible" `shouldRespondWith`
|
||||
|
||||
@@ -998,6 +998,22 @@ spec =
|
||||
|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "should work with filters that use the fts operator when the column type is a tsvector domain" $
|
||||
get "/rpc/get_tsearch_to_tsvector?select=text_search_domain&text_search_domain=fts(simple).impossible" `shouldRespondWith`
|
||||
[json|[
|
||||
{"text_search_domain":"'do':7 'fun':5 'impossible':9 'it':1 'kind':3 'of':4 's':2 'the':8 'to':6"},
|
||||
{"text_search_domain":"'amusant':5 'c':1 'de':6 'est':2 'faire':7 'impossible':9 'l':8 'peu':4 'un':3"}]
|
||||
|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "should work with filters that use the fts operator when the column type is a recursive tsvector domain" $
|
||||
get "/rpc/get_tsearch_to_tsvector?select=text_search_rec_domain&text_search_rec_domain=fts(simple).impossible" `shouldRespondWith`
|
||||
[json|[
|
||||
{"text_search_rec_domain":"'do':7 'fun':5 'impossible':9 'it':1 'kind':3 'of':4 's':2 'the':8 'to':6"},
|
||||
{"text_search_rec_domain":"'amusant':5 'c':1 'de':6 'est':2 'faire':7 'impossible':9 'l':8 'peu':4 'un':3"}]
|
||||
|]
|
||||
{ matchHeaders = [matchContentTypeJson] }
|
||||
|
||||
it "should work with the phraseto_tsquery function" $
|
||||
get "/rpc/get_tsearch?text_search_vector=phfts(english).impossible" `shouldRespondWith`
|
||||
[json|[{"text_search_vector":"'fun':5 'imposs':9 'kind':3"}]|]
|
||||
|
||||
Vendored
+4
-3
@@ -957,15 +957,16 @@ INSERT INTO tsearch_to_tsvector(text_search) VALUES ('C''est un peu amusant de f
|
||||
INSERT INTO tsearch_to_tsvector(text_search) VALUES ('Es ist eine Art Spaß, das Unmögliche zu machen');
|
||||
|
||||
UPDATE tsearch_to_tsvector SET jsonb_search = jsonb_build_object('text_search', text_search);
|
||||
|
||||
UPDATE tsearch_to_tsvector SET text_search_domain = to_tsvector('simple', text_search);
|
||||
UPDATE tsearch_to_tsvector SET text_search_rec_domain = to_tsvector('simple', text_search);
|
||||
|
||||
TRUNCATE TABLE artists CASCADE;
|
||||
INSERT INTO artists
|
||||
VALUES (1, 'duster'), (2, 'black country, new road'), (3, 'bjork');
|
||||
|
||||
TRUNCATE TABLE albums CASCADE;
|
||||
INSERT INTO albums
|
||||
INSERT INTO albums
|
||||
VALUES (1, 'stratosphere', 1),
|
||||
(2, 'ants from up above',2),
|
||||
(2, 'ants from up above',2),
|
||||
(3, 'vespertine',3),
|
||||
(4, 'contemporary movement', 1);
|
||||
|
||||
Vendored
+9
-1
@@ -3757,9 +3757,17 @@ create table "Surr_Gen_Default_Upsert" (
|
||||
extra text
|
||||
);
|
||||
|
||||
create domain tsvector_not_null as tsvector
|
||||
constraint "tsvector is required" check (value is not null);
|
||||
|
||||
create domain tsvector_not_empty as tsvector_not_null
|
||||
constraint "tsvector is required and not empty" check (value <> '');
|
||||
|
||||
create table tsearch_to_tsvector (
|
||||
text_search text,
|
||||
jsonb_search jsonb
|
||||
jsonb_search jsonb,
|
||||
text_search_domain tsvector_not_null default '',
|
||||
text_search_rec_domain tsvector_not_empty default '.'
|
||||
);
|
||||
|
||||
create function test.get_tsearch_to_tsvector() returns setof test.tsearch_to_tsvector AS $$
|
||||
|
||||
Reference in New Issue
Block a user