Add expected output previously removed.
authorPallavi Sontakke <[email protected]>
Wed, 3 Feb 2016 05:31:33 +0000 (11:01 +0530)
committerPallavi Sontakke <[email protected]>
Wed, 3 Feb 2016 05:31:33 +0000 (11:01 +0530)
Add back as it is needed on some systems.

src/test/regress/expected/tsearch_2.out [new file with mode: 0644]

diff --git a/src/test/regress/expected/tsearch_2.out b/src/test/regress/expected/tsearch_2.out
new file mode 100644 (file)
index 0000000..e653186
--- /dev/null
@@ -0,0 +1,1134 @@
+--
+-- Sanity checks for text search catalogs
+--
+-- NB: we assume the oidjoins test will have caught any dangling links,
+-- that is OID or REGPROC fields that are not zero and do not match some
+-- row in the linked-to table.  However, if we want to enforce that a link
+-- field can't be 0, we have to check it here.
+-- Find unexpected zero link entries
+SELECT oid, prsname
+FROM pg_ts_parser
+WHERE prsnamespace = 0 OR prsstart = 0 OR prstoken = 0 OR prsend = 0 OR
+      -- prsheadline is optional
+      prslextype = 0;
+ oid | prsname 
+-----+---------
+(0 rows)
+
+SELECT oid, dictname
+FROM pg_ts_dict
+WHERE dictnamespace = 0 OR dictowner = 0 OR dicttemplate = 0;
+ oid | dictname 
+-----+----------
+(0 rows)
+
+SELECT oid, tmplname
+FROM pg_ts_template
+WHERE tmplnamespace = 0 OR tmpllexize = 0;  -- tmplinit is optional
+ oid | tmplname 
+-----+----------
+(0 rows)
+
+SELECT oid, cfgname
+FROM pg_ts_config
+WHERE cfgnamespace = 0 OR cfgowner = 0 OR cfgparser = 0;
+ oid | cfgname 
+-----+---------
+(0 rows)
+
+SELECT mapcfg, maptokentype, mapseqno
+FROM pg_ts_config_map
+WHERE mapcfg = 0 OR mapdict = 0;
+ mapcfg | maptokentype | mapseqno 
+--------+--------------+----------
+(0 rows)
+
+-- Look for pg_ts_config_map entries that aren't one of parser's token types
+SELECT * FROM
+  ( SELECT oid AS cfgid, (ts_token_type(cfgparser)).tokid AS tokid
+    FROM pg_ts_config ) AS tt
+RIGHT JOIN pg_ts_config_map AS m
+    ON (tt.cfgid=m.mapcfg AND tt.tokid=m.maptokentype)
+WHERE
+    tt.cfgid IS NULL OR tt.tokid IS NULL;
+ cfgid | tokid | mapcfg | maptokentype | mapseqno | mapdict 
+-------+-------+--------+--------------+----------+---------
+(0 rows)
+
+-- test basic text search behavior without indexes, then with
+SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh';
+ count 
+-------
+   158
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh';
+ count 
+-------
+    17
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt';
+ count 
+-------
+     6
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt';
+ count 
+-------
+    98
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)';
+ count 
+-------
+    23
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)';
+ count 
+-------
+    39
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*';
+ count 
+-------
+   494
+(1 row)
+
+create index wowidx on test_tsvector using gist (a);
+SET enable_seqscan=OFF;
+SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh';
+ count 
+-------
+   158
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh';
+ count 
+-------
+    17
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt';
+ count 
+-------
+     6
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt';
+ count 
+-------
+    98
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)';
+ count 
+-------
+    23
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)';
+ count 
+-------
+    39
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*';
+ count 
+-------
+   494
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}');
+ count 
+-------
+   158
+(1 row)
+
+RESET enable_seqscan;
+DROP INDEX wowidx;
+CREATE INDEX wowidx ON test_tsvector USING gin (a);
+SET enable_seqscan=OFF;
+SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh';
+ count 
+-------
+   158
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh';
+ count 
+-------
+    17
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt';
+ count 
+-------
+     6
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt';
+ count 
+-------
+    98
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)';
+ count 
+-------
+    23
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)';
+ count 
+-------
+    39
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*';
+ count 
+-------
+   494
+(1 row)
+
+SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}');
+ count 
+-------
+   158
+(1 row)
+
+RESET enable_seqscan;
+INSERT INTO test_tsvector VALUES ('???', 'DFG:1A,2B,6C,10 FGH');
+SELECT * FROM ts_stat('SELECT a FROM test_tsvector') ORDER BY ndoc DESC, nentry DESC, word LIMIT 10;
+ word | ndoc | nentry 
+------+------+--------
+ qq   |  108 |    108
+ qt   |  102 |    102
+ qe   |  100 |    100
+ qh   |   98 |     98
+ qw   |   98 |     98
+ qa   |   97 |     97
+ ql   |   94 |     94
+ qs   |   94 |     94
+ qi   |   92 |     92
+ qr   |   92 |     92
+(10 rows)
+
+SELECT * FROM ts_stat('SELECT a FROM test_tsvector', 'AB') ORDER BY ndoc DESC, nentry DESC, word;
+ word | ndoc | nentry 
+------+------+--------
+ DFG  |    1 |      2
+(1 row)
+
+--dictionaries and to_tsvector
+SELECT ts_lexize('english_stem', 'skies');
+ ts_lexize 
+-----------
+ {sky}
+(1 row)
+
+SELECT ts_lexize('english_stem', 'identity');
+ ts_lexize 
+-----------
+ {ident}
+(1 row)
+
+SELECT * FROM ts_token_type('default') ORDER BY tokid;
+ tokid |      alias      |               description                
+-------+-----------------+------------------------------------------
+     1 | asciiword       | Word, all ASCII
+     2 | word            | Word, all letters
+     3 | numword         | Word, letters and digits
+     4 | email           | Email address
+     5 | url             | URL
+     6 | host            | Host
+     7 | sfloat          | Scientific notation
+     8 | version         | Version number
+     9 | hword_numpart   | Hyphenated word part, letters and digits
+    10 | hword_part      | Hyphenated word part, all letters
+    11 | hword_asciipart | Hyphenated word part, all ASCII
+    12 | blank           | Space symbols
+    13 | tag             | XML tag
+    14 | protocol        | Protocol head
+    15 | numhword        | Hyphenated word, letters and digits
+    16 | asciihword      | Hyphenated word, all ASCII
+    17 | hword           | Hyphenated word, all letters
+    18 | url_path        | URL path
+    19 | file            | File or path name
+    20 | float           | Decimal notation
+    21 | int             | Signed integer
+    22 | uint            | Unsigned integer
+    23 | entity          | XML entity
+(23 rows)
+
+SELECT * FROM ts_parse('default', '345 [email protected] '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 [email protected] qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
+/usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234
+<i <b> wow  < jqw <> qwerty') ORDER BY tokid,token;
+ tokid |                token                 
+-------+--------------------------------------
+     1 | ad
+     1 | asdf
+     1 | dw
+     1 | hjwer
+     1 | i
+     1 | jf
+     1 | jqw
+     1 | qwe
+     1 | qwe
+     1 | qwe
+     1 | qwe
+     1 | qwer
+     1 | qwerty
+     1 | qwqwe
+     1 | readline
+     1 | readline
+     1 | readline
+     1 | sdjk
+     1 | we
+     1 | wefjn
+     1 | wow
+     3 | ewr1
+     3 | ewri2
+     4 | [email protected]
+     5 | 1aew.werc.ewr/?ad=qwe&dw
+     5 | 3aew.werc.ewr/?ad=qwe&dw
+     5 | 5aew.werc.ewr:8100/?
+     5 | 6aew.werc.ewr:8100/?ad=qwe&dw
+     5 | 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32
+     5 | aew.werc.ewr/?ad=qwe&dw
+     6 | 1aew.werc.ewr
+     6 | 2aew.werc.ewr
+     6 | 3aew.werc.ewr
+     6 | 4aew.werc.ewr
+     6 | 5aew.werc.ewr:8100
+     6 | 6aew.werc.ewr:8100
+     6 | 7aew.werc.ewr:8100
+     6 | aew.werc.ewr
+     6 | www.com
+     7 | +4.0e-10
+    11 | qwe
+    11 | wer
+    12 |                                     +
+       | 
+    12 |                                     +
+       | 
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |  
+    12 |   
+    12 |   
+    12 |  ' 
+    12 | &
+    12 | , 
+    12 | -
+    12 | . 
+    12 | . 
+    12 | . 
+    12 | / 
+    12 | <
+    12 | <
+    12 | < 
+    12 | <> 
+    12 | =
+    12 | > 
+    12 | @
+    13 | <a href="qwe<qwe>">
+    13 | <b>
+    13 | <fr>
+    13 | <werrwe>
+    14 | http://
+    14 | http://
+    14 | http://
+    14 | http://
+    14 | http://
+    16 | qwe-wer
+    18 | /?
+    18 | /?ad=qwe&dw
+    18 | /?ad=qwe&dw
+    18 | /?ad=qwe&dw
+    18 | /?ad=qwe&dw
+    18 | /?ad=qwe&dw=%20%32
+    19 | /awdf/dwqe/4325
+    19 | /usr/local/fff
+    19 | /wqe-324/ewr
+    19 | efd.r
+    19 | gist.c
+    19 | gist.h
+    19 | gist.h.c
+    19 | rewt/ewr
+    20 | -4.2
+    20 | -4.2
+    20 | 234.435
+    20 | 4.2
+    20 | 4.2
+    20 | 4.2
+    20 | 5.005
+    22 | 234
+    22 | 345
+    22 | 455
+(133 rows)
+
+SELECT to_tsvector('english', '345 [email protected] '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 [email protected] qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
+/usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234
+<i <b> wow  < jqw <> qwerty');
+                                                                                                                                                                                                                                                                                                                                                                                                                                       to_tsvector                                                                                                                                                                                                                                                                                                                                                                                                                                        
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ '+4.0e-10':28 '-4.2':60,62 '/?':18 '/?ad=qwe&dw':7,10,14,24 '/?ad=qwe&dw=%20%32':27 '/awdf/dwqe/4325':48 '/usr/local/fff':47 '/wqe-324/ewr':51 '1aew.werc.ewr':9 '1aew.werc.ewr/?ad=qwe&dw':8 '234':63 '234.435':32 '2aew.werc.ewr':11 '345':1 '3aew.werc.ewr':13 '3aew.werc.ewr/?ad=qwe&dw':12 '4.2':56,57,58 '455':33 '4aew.werc.ewr':15 '5.005':34 '5aew.werc.ewr:8100':17 '5aew.werc.ewr:8100/?':16 '6aew.werc.ewr:8100':23 '6aew.werc.ewr:8100/?ad=qwe&dw':22 '7aew.werc.ewr:8100':26 '7aew.werc.ewr:8100/?ad=qwe&dw=%20%32':25 'ad':19 'aew.werc.ewr':6 'aew.werc.ewr/?ad=qwe&dw':5 'asdf':39 'dw':21 'efd.r':3 'ewr1':45 'ewri2':46 'gist.c':54 'gist.h':52 'gist.h.c':53 'hjwer':44 'jf':41 'jqw':66 'qwe':2,20,29,30,37 'qwe-wer':36 'qwer':40 'qwerti':67 'qwqwe':31 'readlin':55,59,61 'rewt/ewr':49 'sdjk':42 '[email protected]':35 'wefjn':50 'wer':38 'wow':65 'www.com':4
+(1 row)
+
+SELECT length(to_tsvector('english', '345 [email protected] '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 [email protected] qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
+/usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234
+<i <b> wow  < jqw <> qwerty'));
+ length 
+--------
+     53
+(1 row)
+
+-- ts_debug
+SELECT * from ts_debug('english', '<myns:foo-bar_baz.blurfl>abc&nm1;def&#xa9;ghi&#245;jkl</myns:foo-bar_baz.blurfl>') ORDER BY alias, description, token;
+   alias   |   description   |           token            |  dictionaries  |  dictionary  | lexemes 
+-----------+-----------------+----------------------------+----------------+--------------+---------
+ asciiword | Word, all ASCII | abc                        | {english_stem} | english_stem | {abc}
+ asciiword | Word, all ASCII | def                        | {english_stem} | english_stem | {def}
+ asciiword | Word, all ASCII | ghi                        | {english_stem} | english_stem | {ghi}
+ asciiword | Word, all ASCII | jkl                        | {english_stem} | english_stem | {jkl}
+ entity    | XML entity      | &#245;                     | {}             |              | 
+ entity    | XML entity      | &#xa9;                     | {}             |              | 
+ entity    | XML entity      | &nm1;                      | {}             |              | 
+ tag       | XML tag         | </myns:foo-bar_baz.blurfl> | {}             |              | 
+ tag       | XML tag         | <myns:foo-bar_baz.blurfl>  | {}             |              | 
+(9 rows)
+
+-- check parsing of URLs
+SELECT * from ts_debug('english', 'http://www.harewoodsolutions.co.uk/press.aspx</span>');
+  alias   |  description  |                 token                  | dictionaries | dictionary |                 lexemes                  
+----------+---------------+----------------------------------------+--------------+------------+------------------------------------------
+ protocol | Protocol head | http://                                | {}           |            | 
+ url      | URL           | www.harewoodsolutions.co.uk/press.aspx | {simple}     | simple     | {www.harewoodsolutions.co.uk/press.aspx}
+ host     | Host          | www.harewoodsolutions.co.uk            | {simple}     | simple     | {www.harewoodsolutions.co.uk}
+ url_path | URL path      | /press.aspx                            | {simple}     | simple     | {/press.aspx}
+ tag      | XML tag       | </span>                                | {}           |            | 
+(5 rows)
+
+SELECT * from ts_debug('english', 'http://aew.wer0c.ewr/id?ad=qwe&dw<span>');
+  alias   |  description  |           token            | dictionaries | dictionary |           lexemes            
+----------+---------------+----------------------------+--------------+------------+------------------------------
+ protocol | Protocol head | http://                    | {}           |            | 
+ url      | URL           | aew.wer0c.ewr/id?ad=qwe&dw | {simple}     | simple     | {aew.wer0c.ewr/id?ad=qwe&dw}
+ host     | Host          | aew.wer0c.ewr              | {simple}     | simple     | {aew.wer0c.ewr}
+ url_path | URL path      | /id?ad=qwe&dw              | {simple}     | simple     | {/id?ad=qwe&dw}
+ tag      | XML tag       | <span>                     | {}           |            | 
+(5 rows)
+
+SELECT * from ts_debug('english', 'http://5aew.werc.ewr:8100/?');
+  alias   |  description  |        token         | dictionaries | dictionary |        lexemes         
+----------+---------------+----------------------+--------------+------------+------------------------
+ protocol | Protocol head | http://              | {}           |            | 
+ url      | URL           | 5aew.werc.ewr:8100/? | {simple}     | simple     | {5aew.werc.ewr:8100/?}
+ host     | Host          | 5aew.werc.ewr:8100   | {simple}     | simple     | {5aew.werc.ewr:8100}
+ url_path | URL path      | /?                   | {simple}     | simple     | {/?}
+(4 rows)
+
+SELECT * from ts_debug('english', '5aew.werc.ewr:8100/?xx');
+  alias   | description |         token          | dictionaries | dictionary |         lexemes          
+----------+-------------+------------------------+--------------+------------+--------------------------
+ url      | URL         | 5aew.werc.ewr:8100/?xx | {simple}     | simple     | {5aew.werc.ewr:8100/?xx}
+ host     | Host        | 5aew.werc.ewr:8100     | {simple}     | simple     | {5aew.werc.ewr:8100}
+ url_path | URL path    | /?xx                   | {simple}     | simple     | {/?xx}
+(3 rows)
+
+-- to_tsquery
+SELECT to_tsquery('english', 'qwe & sKies ');
+  to_tsquery   
+---------------
+ 'qwe' & 'sky'
+(1 row)
+
+SELECT to_tsquery('simple', 'qwe & sKies ');
+   to_tsquery    
+-----------------
+ 'qwe' & 'skies'
+(1 row)
+
+SELECT to_tsquery('english', '''the wether'':dc & ''           sKies '':BC ');
+       to_tsquery       
+------------------------
+ 'wether':CD & 'sky':BC
+(1 row)
+
+SELECT to_tsquery('english', 'asd&(and|fghj)');
+   to_tsquery   
+----------------
+ 'asd' & 'fghj'
+(1 row)
+
+SELECT to_tsquery('english', '(asd&and)|fghj');
+   to_tsquery   
+----------------
+ 'asd' | 'fghj'
+(1 row)
+
+SELECT to_tsquery('english', '(asd&!and)|fghj');
+   to_tsquery   
+----------------
+ 'asd' | 'fghj'
+(1 row)
+
+SELECT to_tsquery('english', '(the|and&(i&1))&fghj');
+  to_tsquery  
+--------------
+ '1' & 'fghj'
+(1 row)
+
+SELECT plainto_tsquery('english', 'the and z 1))& fghj');
+  plainto_tsquery   
+--------------------
+ 'z' & '1' & 'fghj'
+(1 row)
+
+SELECT plainto_tsquery('english', 'foo bar') && plainto_tsquery('english', 'asd');
+       ?column?        
+-----------------------
+ 'foo' & 'bar' & 'asd'
+(1 row)
+
+SELECT plainto_tsquery('english', 'foo bar') || plainto_tsquery('english', 'asd fg');
+           ?column?           
+------------------------------
+ 'foo' & 'bar' | 'asd' & 'fg'
+(1 row)
+
+SELECT plainto_tsquery('english', 'foo bar') || !!plainto_tsquery('english', 'asd fg');
+             ?column?              
+-----------------------------------
+ 'foo' & 'bar' | !( 'asd' & 'fg' )
+(1 row)
+
+SELECT plainto_tsquery('english', 'foo bar') && 'asd | fg';
+             ?column?             
+----------------------------------
+ 'foo' & 'bar' & ( 'asd' | 'fg' )
+(1 row)
+
+SELECT ts_rank_cd(to_tsvector('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+'), to_tsquery('english', 'paint&water'));
+ ts_rank_cd 
+------------
+       0.05
+(1 row)
+
+SELECT ts_rank_cd(to_tsvector('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+'), to_tsquery('english', 'breath&motion&water'));
+ ts_rank_cd 
+------------
+ 0.00833333
+(1 row)
+
+SELECT ts_rank_cd(to_tsvector('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+'), to_tsquery('english', 'ocean'));
+ ts_rank_cd 
+------------
+        0.1
+(1 row)
+
+SELECT ts_rank_cd(strip(to_tsvector('both stripped')),
+                  to_tsquery('both & stripped'));
+ ts_rank_cd 
+------------
+          0
+(1 row)
+
+SELECT ts_rank_cd(to_tsvector('unstripped') || strip(to_tsvector('stripped')),
+                  to_tsquery('unstripped & stripped'));
+ ts_rank_cd 
+------------
+          0
+(1 row)
+
+--headline tests
+SELECT ts_headline('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+', to_tsquery('english', 'paint&water'));
+               ts_headline               
+-----------------------------------------
+ <b>painted</b> Ocean.                  +
+ <b>Water</b>, <b>water</b>, every where+
+   And all the boards did shrink;       +
+ <b>Water</b>, <b>water</b>, every
+(1 row)
+
+SELECT ts_headline('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+', to_tsquery('english', 'breath&motion&water'));
+           ts_headline            
+----------------------------------
+ <b>breath</b> nor <b>motion</b>,+
+ As idle as a painted Ship       +
+   Upon a painted Ocean.         +
+ <b>Water</b>, <b>water</b>
+(1 row)
+
+SELECT ts_headline('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+', to_tsquery('english', 'ocean'));
+           ts_headline            
+----------------------------------
+ <b>Ocean</b>.                   +
+ Water, water, every where       +
+   And all the boards did shrink;+
+ Water, water, every where
+(1 row)
+
+SELECT ts_headline('english', '
+<html>
+<!-- some comment -->
+<body>
+Sea view wow <u>foo bar</u> <i>qq</i>
+<a href="http://www.google.com/foo.bar.html" target="_blank">YES &nbsp;</a>
+ff-bg
+<script>
+       document.write(15);
+</script>
+</body>
+</html>',
+to_tsquery('english', 'sea&foo'), 'HighlightAll=true');
+                                 ts_headline                                 
+-----------------------------------------------------------------------------
+                                                                            +
+ <html>                                                                     +
+ <!-- some comment -->                                                      +
+ <body>                                                                     +
+ <b>Sea</b> view wow <u><b>foo</b> bar</u> <i>qq</i>                        +
+ <a href="http://www.google.com/foo.bar.html" target="_blank">YES &nbsp;</a>+
+ ff-bg                                                                      +
+ <script>                                                                   +
+        document.write(15);                                                 +
+ </script>                                                                  +
+ </body>                                                                    +
+ </html>
+(1 row)
+
+--Check if headline fragments work
+SELECT ts_headline('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+', to_tsquery('english', 'ocean'), 'MaxFragments=1');
+            ts_headline             
+------------------------------------
+ after day,                        +
+   We stuck, nor breath nor motion,+
+ As idle as a painted Ship         +
+   Upon a painted <b>Ocean</b>.    +
+ Water, water, every where         +
+   And all the boards did shrink;  +
+ Water, water, every where,        +
+   Nor any drop
+(1 row)
+
+--Check if more than one fragments are displayed
+SELECT ts_headline('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+', to_tsquery('english', 'Coleridge & stuck'), 'MaxFragments=2');
+                 ts_headline                  
+----------------------------------------------
+ after day, day after day,                   +
+   We <b>stuck</b>, nor breath nor motion,   +
+ As idle as a painted Ship                   +
+   Upon a painted Ocean.                     +
+ Water, water, every where                   +
+   And all the boards did shrink;            +
+ Water, water, every where ... drop to drink.+
+ S. T. <b>Coleridge</b>
+(1 row)
+
+--Fragments when there all query words are not in the document
+SELECT ts_headline('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+', to_tsquery('english', 'ocean & seahorse'), 'MaxFragments=1');
+            ts_headline             
+------------------------------------
+                                   +
+ Day after day, day after day,     +
+   We stuck, nor breath nor motion,+
+ As idle as
+(1 row)
+
+--FragmentDelimiter option
+SELECT ts_headline('english', '
+Day after day, day after day,
+  We stuck, nor breath nor motion,
+As idle as a painted Ship
+  Upon a painted Ocean.
+Water, water, every where
+  And all the boards did shrink;
+Water, water, every where,
+  Nor any drop to drink.
+S. T. Coleridge (1772-1834)
+', to_tsquery('english', 'Coleridge & stuck'), 'MaxFragments=2,FragmentDelimiter=***');
+                ts_headline                 
+--------------------------------------------
+ after day, day after day,                 +
+   We <b>stuck</b>, nor breath nor motion, +
+ As idle as a painted Ship                 +
+   Upon a painted Ocean.                   +
+ Water, water, every where                 +
+   And all the boards did shrink;          +
+ Water, water, every where***drop to drink.+
+ S. T. <b>Coleridge</b>
+(1 row)
+
+--Rewrite sub system
+CREATE TABLE test_tsquery (txtkeyword TEXT, txtsample TEXT);
+\set ECHO none
+ALTER TABLE test_tsquery ADD COLUMN keyword tsquery;
+UPDATE test_tsquery SET keyword = to_tsquery('english', txtkeyword);
+ALTER TABLE test_tsquery ADD COLUMN sample tsquery;
+UPDATE test_tsquery SET sample = to_tsquery('english', txtsample::text);
+SELECT COUNT(*) FROM test_tsquery WHERE keyword <  'new & york';
+ count 
+-------
+     1
+(1 row)
+
+SELECT COUNT(*) FROM test_tsquery WHERE keyword <= 'new & york';
+ count 
+-------
+     2
+(1 row)
+
+SELECT COUNT(*) FROM test_tsquery WHERE keyword = 'new & york';
+ count 
+-------
+     1
+(1 row)
+
+SELECT COUNT(*) FROM test_tsquery WHERE keyword >= 'new & york';
+ count 
+-------
+     3
+(1 row)
+
+SELECT COUNT(*) FROM test_tsquery WHERE keyword >  'new & york';
+ count 
+-------
+     2
+(1 row)
+
+CREATE UNIQUE INDEX bt_tsq ON test_tsquery (keyword);
+ERROR:  Unique index of partitioned table must contain the hash/modulo distribution column.
+SET enable_seqscan=OFF;
+SELECT COUNT(*) FROM test_tsquery WHERE keyword <  'new & york';
+ count 
+-------
+     1
+(1 row)
+
+SELECT COUNT(*) FROM test_tsquery WHERE keyword <= 'new & york';
+ count 
+-------
+     2
+(1 row)
+
+SELECT COUNT(*) FROM test_tsquery WHERE keyword = 'new & york';
+ count 
+-------
+     1
+(1 row)
+
+SELECT COUNT(*) FROM test_tsquery WHERE keyword >= 'new & york';
+ count 
+-------
+     3
+(1 row)
+
+SELECT COUNT(*) FROM test_tsquery WHERE keyword >  'new & york';
+ count 
+-------
+     2
+(1 row)
+
+RESET enable_seqscan;
+SELECT ts_rewrite('foo & bar & qq & new & york',  'new & york'::tsquery, 'big & apple | nyc | new & york & city');
+                                    ts_rewrite                                    
+----------------------------------------------------------------------------------
+ 'foo' & 'bar' & 'qq' & ( 'city' & 'new' & 'york' | ( 'nyc' | 'big' & 'apple' ) )
+(1 row)
+
+SELECT ts_rewrite('moscow', 'SELECT keyword, sample FROM test_tsquery'::text );
+     ts_rewrite      
+---------------------
+ 'moskva' | 'moscow'
+(1 row)
+
+SELECT ts_rewrite('moscow & hotel', 'SELECT keyword, sample FROM test_tsquery'::text );
+            ts_rewrite             
+-----------------------------------
+ 'hotel' & ( 'moskva' | 'moscow' )
+(1 row)
+
+SELECT ts_rewrite('bar & new & qq & foo & york', 'SELECT keyword, sample FROM test_tsquery'::text );
+                                     ts_rewrite                                      
+-------------------------------------------------------------------------------------
+ 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
+(1 row)
+
+SELECT ts_rewrite( 'moscow', 'SELECT keyword, sample FROM test_tsquery');
+     ts_rewrite      
+---------------------
+ 'moskva' | 'moscow'
+(1 row)
+
+SELECT ts_rewrite( 'moscow & hotel', 'SELECT keyword, sample FROM test_tsquery');
+            ts_rewrite             
+-----------------------------------
+ 'hotel' & ( 'moskva' | 'moscow' )
+(1 row)
+
+SELECT ts_rewrite( 'bar & new & qq & foo & york', 'SELECT keyword, sample FROM test_tsquery');
+                                     ts_rewrite                                      
+-------------------------------------------------------------------------------------
+ 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
+(1 row)
+
+SELECT keyword FROM test_tsquery WHERE keyword @> 'new';
+    keyword     
+----------------
+ 'new' & 'york'
+(1 row)
+
+SELECT keyword FROM test_tsquery WHERE keyword @> 'moscow';
+ keyword  
+----------
+ 'moscow'
+(1 row)
+
+SELECT keyword FROM test_tsquery WHERE keyword <@ 'new';
+ keyword 
+---------
+(0 rows)
+
+SELECT keyword FROM test_tsquery WHERE keyword <@ 'moscow';
+ keyword  
+----------
+ 'moscow'
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query;
+     ts_rewrite      
+---------------------
+ 'moskva' | 'moscow'
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query;
+            ts_rewrite             
+-----------------------------------
+ 'hotel' & ( 'moskva' | 'moscow' )
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar &  new & qq & foo & york') AS query;
+                                     ts_rewrite                                      
+-------------------------------------------------------------------------------------
+ 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query;
+     ts_rewrite      
+---------------------
+ 'moskva' | 'moscow'
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query;
+            ts_rewrite             
+-----------------------------------
+ 'hotel' & ( 'moskva' | 'moscow' )
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar & new & qq & foo & york') AS query;
+                                     ts_rewrite                                      
+-------------------------------------------------------------------------------------
+ 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
+(1 row)
+
+CREATE INDEX qq ON test_tsquery USING gist (keyword tsquery_ops);
+SET enable_seqscan=OFF;
+SELECT keyword FROM test_tsquery WHERE keyword @> 'new';
+    keyword     
+----------------
+ 'new' & 'york'
+(1 row)
+
+SELECT keyword FROM test_tsquery WHERE keyword @> 'moscow';
+ keyword  
+----------
+ 'moscow'
+(1 row)
+
+SELECT keyword FROM test_tsquery WHERE keyword <@ 'new';
+ keyword 
+---------
+(0 rows)
+
+SELECT keyword FROM test_tsquery WHERE keyword <@ 'moscow';
+ keyword  
+----------
+ 'moscow'
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query;
+     ts_rewrite      
+---------------------
+ 'moskva' | 'moscow'
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query;
+            ts_rewrite             
+-----------------------------------
+ 'hotel' & ( 'moskva' | 'moscow' )
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar & new & qq & foo & york') AS query;
+                                     ts_rewrite                                      
+-------------------------------------------------------------------------------------
+ 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query;
+     ts_rewrite      
+---------------------
+ 'moskva' | 'moscow'
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query;
+            ts_rewrite             
+-----------------------------------
+ 'hotel' & ( 'moskva' | 'moscow' )
+(1 row)
+
+SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar &  new & qq & foo & york') AS query;
+                                     ts_rewrite                                      
+-------------------------------------------------------------------------------------
+ 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
+(1 row)
+
+RESET enable_seqscan;
+--test GUC
+SET default_text_search_config=simple;
+SELECT to_tsvector('SKIES My booKs');
+        to_tsvector         
+----------------------------
+ 'books':3 'my':2 'skies':1
+(1 row)
+
+SELECT plainto_tsquery('SKIES My booKs');
+     plainto_tsquery      
+--------------------------
+ 'skies' & 'my' & 'books'
+(1 row)
+
+SELECT to_tsquery('SKIES & My | booKs');
+        to_tsquery        
+--------------------------
+ 'skies' & 'my' | 'books'
+(1 row)
+
+SET default_text_search_config=english;
+SELECT to_tsvector('SKIES My booKs');
+   to_tsvector    
+------------------
+ 'book':3 'sky':1
+(1 row)
+
+SELECT plainto_tsquery('SKIES My booKs');
+ plainto_tsquery 
+-----------------
+ 'sky' & 'book'
+(1 row)
+
+SELECT to_tsquery('SKIES & My | booKs');
+   to_tsquery   
+----------------
+ 'sky' | 'book'
+(1 row)
+
+--trigger
+CREATE TRIGGER tsvectorupdate
+BEFORE UPDATE OR INSERT ON test_tsvector
+FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(a, 'pg_catalog.english', t);
+ERROR:  Postgres-XL does not support TRIGGER yet
+DETAIL:  The feature is not currently supported
+SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty');
+ count 
+-------
+     0
+(1 row)
+
+INSERT INTO test_tsvector (t) VALUES ('345 qwerty');
+SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty');
+ count 
+-------
+     0
+(1 row)
+
+UPDATE test_tsvector SET t = null WHERE t = '345 qwerty';
+ERROR:  could not plan this distributed update
+DETAIL:  correlated UPDATE or updating distribution column currently not supported in Postgres-XL.
+SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty');
+ count 
+-------
+     0
+(1 row)
+
+INSERT INTO test_tsvector (t) VALUES ('345 qwerty');
+SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty');
+ count 
+-------
+     0
+(1 row)
+
+-- test finding items in GIN's pending list
+create table pendtest (ts tsvector);
+create index pendtest_idx on pendtest using gin(ts);
+insert into pendtest values (to_tsvector('Lore ipsam'));
+insert into pendtest values (to_tsvector('Lore ipsum'));
+select * from pendtest where 'ipsu:*'::tsquery @@ ts;
+         ts         
+--------------------
+ 'ipsum':2 'lore':1
+(1 row)
+
+select * from pendtest where 'ipsa:*'::tsquery @@ ts;
+         ts         
+--------------------
+ 'ipsam':2 'lore':1
+(1 row)
+
+select * from pendtest where 'ips:*'::tsquery @@ ts ORDER BY 1;
+         ts         
+--------------------
+ 'ipsam':2 'lore':1
+ 'ipsum':2 'lore':1
+(2 rows)
+
+select * from pendtest where 'ipt:*'::tsquery @@ ts;
+ ts 
+----
+(0 rows)
+
+select * from pendtest where 'ipi:*'::tsquery @@ ts;
+ ts 
+----
+(0 rows)
+
+drop table pendtest;