mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Update /contrib for "autocommit TO 'on'".
Create objects in public schema. Make spacing/capitalization consistent. Remove transaction block use for object creation. Remove unneeded function GRANTs.
This commit is contained in:
@ -9,539 +9,539 @@ psql:tsearch.sql:40: WARNING: ProcedureCreate: type query_txt is not yet define
|
||||
psql:tsearch.sql:45: WARNING: Argument type "query_txt" is only a shell
|
||||
psql:tsearch.sql:57: WARNING: ProcedureCreate: type mquery_txt is not yet defined
|
||||
psql:tsearch.sql:63: WARNING: Argument type "mquery_txt" is only a shell
|
||||
psql:tsearch.sql:133: WARNING: ProcedureCreate: type gtxtidx is not yet defined
|
||||
psql:tsearch.sql:138: WARNING: Argument type "gtxtidx" is only a shell
|
||||
psql:tsearch.sql:158: WARNING: ProcedureCreate: type gtxtidx is not yet defined
|
||||
psql:tsearch.sql:163: WARNING: Argument type "gtxtidx" is only a shell
|
||||
--txtidx
|
||||
select '1'::txtidx;
|
||||
SELECT '1'::txtidx;
|
||||
txtidx
|
||||
--------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select '1 '::txtidx;
|
||||
SELECT '1 '::txtidx;
|
||||
txtidx
|
||||
--------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select ' 1'::txtidx;
|
||||
SELECT ' 1'::txtidx;
|
||||
txtidx
|
||||
--------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select ' 1 '::txtidx;
|
||||
SELECT ' 1 '::txtidx;
|
||||
txtidx
|
||||
--------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select '1 2'::txtidx;
|
||||
SELECT '1 2'::txtidx;
|
||||
txtidx
|
||||
---------
|
||||
'1' '2'
|
||||
(1 row)
|
||||
|
||||
select '\'1 2\''::txtidx;
|
||||
SELECT '\'1 2\''::txtidx;
|
||||
txtidx
|
||||
--------
|
||||
'1 2'
|
||||
(1 row)
|
||||
|
||||
select '\'1 \\\'2\''::txtidx;
|
||||
SELECT '\'1 \\\'2\''::txtidx;
|
||||
txtidx
|
||||
---------
|
||||
'1 \'2'
|
||||
(1 row)
|
||||
|
||||
select '\'1 \\\'2\'3'::txtidx;
|
||||
SELECT '\'1 \\\'2\'3'::txtidx;
|
||||
txtidx
|
||||
-------------
|
||||
'3' '1 \'2'
|
||||
(1 row)
|
||||
|
||||
select '\'1 \\\'2\' 3'::txtidx;
|
||||
SELECT '\'1 \\\'2\' 3'::txtidx;
|
||||
txtidx
|
||||
-------------
|
||||
'3' '1 \'2'
|
||||
(1 row)
|
||||
|
||||
select '\'1 \\\'2\' \' 3\' 4 '::txtidx;
|
||||
SELECT '\'1 \\\'2\' \' 3\' 4 '::txtidx;
|
||||
txtidx
|
||||
------------------
|
||||
'4' ' 3' '1 \'2'
|
||||
(1 row)
|
||||
|
||||
--query_txt
|
||||
select '1'::query_txt;
|
||||
SELECT '1'::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select '1 '::query_txt;
|
||||
SELECT '1 '::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select ' 1'::query_txt;
|
||||
SELECT ' 1'::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select ' 1 '::query_txt;
|
||||
SELECT ' 1 '::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select '\'1 2\''::query_txt;
|
||||
SELECT '\'1 2\''::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1 2'
|
||||
(1 row)
|
||||
|
||||
select '\'1 \\\'2\''::query_txt;
|
||||
SELECT '\'1 \\\'2\''::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1 \'2'
|
||||
(1 row)
|
||||
|
||||
select '!1'::query_txt;
|
||||
SELECT '!1'::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
!'1'
|
||||
(1 row)
|
||||
|
||||
select '1|2'::query_txt;
|
||||
SELECT '1|2'::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1' | '2'
|
||||
(1 row)
|
||||
|
||||
select '1|!2'::query_txt;
|
||||
SELECT '1|!2'::query_txt;
|
||||
query_txt
|
||||
------------
|
||||
'1' | !'2'
|
||||
(1 row)
|
||||
|
||||
select '!1|2'::query_txt;
|
||||
SELECT '!1|2'::query_txt;
|
||||
query_txt
|
||||
------------
|
||||
!'1' | '2'
|
||||
(1 row)
|
||||
|
||||
select '!1|!2'::query_txt;
|
||||
SELECT '!1|!2'::query_txt;
|
||||
query_txt
|
||||
-------------
|
||||
!'1' | !'2'
|
||||
(1 row)
|
||||
|
||||
select '!(!1|!2)'::query_txt;
|
||||
SELECT '!(!1|!2)'::query_txt;
|
||||
query_txt
|
||||
------------------
|
||||
!( !'1' | !'2' )
|
||||
(1 row)
|
||||
|
||||
select '!(!1|2)'::query_txt;
|
||||
SELECT '!(!1|2)'::query_txt;
|
||||
query_txt
|
||||
-----------------
|
||||
!( !'1' | '2' )
|
||||
(1 row)
|
||||
|
||||
select '!(1|!2)'::query_txt;
|
||||
SELECT '!(1|!2)'::query_txt;
|
||||
query_txt
|
||||
-----------------
|
||||
!( '1' | !'2' )
|
||||
(1 row)
|
||||
|
||||
select '!(1|2)'::query_txt;
|
||||
SELECT '!(1|2)'::query_txt;
|
||||
query_txt
|
||||
----------------
|
||||
!( '1' | '2' )
|
||||
(1 row)
|
||||
|
||||
select '1&2'::query_txt;
|
||||
SELECT '1&2'::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '!1&2'::query_txt;
|
||||
SELECT '!1&2'::query_txt;
|
||||
query_txt
|
||||
------------
|
||||
!'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '1&!2'::query_txt;
|
||||
SELECT '1&!2'::query_txt;
|
||||
query_txt
|
||||
------------
|
||||
'1' & !'2'
|
||||
(1 row)
|
||||
|
||||
select '!1&!2'::query_txt;
|
||||
SELECT '!1&!2'::query_txt;
|
||||
query_txt
|
||||
-------------
|
||||
!'1' & !'2'
|
||||
(1 row)
|
||||
|
||||
select '(1&2)'::query_txt;
|
||||
SELECT '(1&2)'::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '1&(2)'::query_txt;
|
||||
SELECT '1&(2)'::query_txt;
|
||||
query_txt
|
||||
-----------
|
||||
'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '!(1)&2'::query_txt;
|
||||
SELECT '!(1)&2'::query_txt;
|
||||
query_txt
|
||||
------------
|
||||
!'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '!(1&2)'::query_txt;
|
||||
SELECT '!(1&2)'::query_txt;
|
||||
query_txt
|
||||
----------------
|
||||
!( '1' & '2' )
|
||||
(1 row)
|
||||
|
||||
select '1|2&3'::query_txt;
|
||||
SELECT '1|2&3'::query_txt;
|
||||
query_txt
|
||||
-----------------
|
||||
'1' | '2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '1|(2&3)'::query_txt;
|
||||
SELECT '1|(2&3)'::query_txt;
|
||||
query_txt
|
||||
-----------------
|
||||
'1' | '2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '(1|2)&3'::query_txt;
|
||||
SELECT '(1|2)&3'::query_txt;
|
||||
query_txt
|
||||
---------------------
|
||||
( '1' | '2' ) & '3'
|
||||
(1 row)
|
||||
|
||||
select '1|2&!3'::query_txt;
|
||||
SELECT '1|2&!3'::query_txt;
|
||||
query_txt
|
||||
------------------
|
||||
'1' | '2' & !'3'
|
||||
(1 row)
|
||||
|
||||
select '1|!2&3'::query_txt;
|
||||
SELECT '1|!2&3'::query_txt;
|
||||
query_txt
|
||||
------------------
|
||||
'1' | !'2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '!1|2&3'::query_txt;
|
||||
SELECT '!1|2&3'::query_txt;
|
||||
query_txt
|
||||
------------------
|
||||
!'1' | '2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '!1|(2&3)'::query_txt;
|
||||
SELECT '!1|(2&3)'::query_txt;
|
||||
query_txt
|
||||
------------------
|
||||
!'1' | '2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '!(1|2)&3'::query_txt;
|
||||
SELECT '!(1|2)&3'::query_txt;
|
||||
query_txt
|
||||
----------------------
|
||||
!( '1' | '2' ) & '3'
|
||||
(1 row)
|
||||
|
||||
select '(!1|2)&3'::query_txt;
|
||||
SELECT '(!1|2)&3'::query_txt;
|
||||
query_txt
|
||||
----------------------
|
||||
( !'1' | '2' ) & '3'
|
||||
(1 row)
|
||||
|
||||
select '1|(2|(4|(5|6)))'::query_txt;
|
||||
SELECT '1|(2|(4|(5|6)))'::query_txt;
|
||||
query_txt
|
||||
-----------------------------------------
|
||||
'1' | ( '2' | ( '4' | ( '5' | '6' ) ) )
|
||||
(1 row)
|
||||
|
||||
select '1|2|4|5|6'::query_txt;
|
||||
SELECT '1|2|4|5|6'::query_txt;
|
||||
query_txt
|
||||
-----------------------------------------
|
||||
( ( ( '1' | '2' ) | '4' ) | '5' ) | '6'
|
||||
(1 row)
|
||||
|
||||
select '1&(2&(4&(5&6)))'::query_txt;
|
||||
SELECT '1&(2&(4&(5&6)))'::query_txt;
|
||||
query_txt
|
||||
-----------------------------
|
||||
'1' & '2' & '4' & '5' & '6'
|
||||
(1 row)
|
||||
|
||||
select '1&2&4&5&6'::query_txt;
|
||||
SELECT '1&2&4&5&6'::query_txt;
|
||||
query_txt
|
||||
-----------------------------
|
||||
'1' & '2' & '4' & '5' & '6'
|
||||
(1 row)
|
||||
|
||||
select '1&(2&(4&(5|6)))'::query_txt;
|
||||
SELECT '1&(2&(4&(5|6)))'::query_txt;
|
||||
query_txt
|
||||
---------------------------------
|
||||
'1' & '2' & '4' & ( '5' | '6' )
|
||||
(1 row)
|
||||
|
||||
select '1&(2&(4&(5|!6)))'::query_txt;
|
||||
SELECT '1&(2&(4&(5|!6)))'::query_txt;
|
||||
query_txt
|
||||
----------------------------------
|
||||
'1' & '2' & '4' & ( '5' | !'6' )
|
||||
(1 row)
|
||||
|
||||
select '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::query_txt;
|
||||
SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::query_txt;
|
||||
query_txt
|
||||
------------------------------------------
|
||||
'1' & '2' & ' 4' & ( '|5' | '6 \' !|&' )
|
||||
(1 row)
|
||||
|
||||
select '1'::mquery_txt;
|
||||
SELECT '1'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select '1 '::mquery_txt;
|
||||
SELECT '1 '::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select ' 1'::mquery_txt;
|
||||
SELECT ' 1'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select ' 1 '::mquery_txt;
|
||||
SELECT ' 1 '::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1'
|
||||
(1 row)
|
||||
|
||||
select '\'1 2\''::mquery_txt;
|
||||
SELECT '\'1 2\''::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '\'1 \\\'2\''::mquery_txt;
|
||||
SELECT '\'1 \\\'2\''::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '!1'::mquery_txt;
|
||||
SELECT '!1'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
!'1'
|
||||
(1 row)
|
||||
|
||||
select '1|2'::mquery_txt;
|
||||
SELECT '1|2'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1' | '2'
|
||||
(1 row)
|
||||
|
||||
select '1|!2'::mquery_txt;
|
||||
SELECT '1|!2'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1' | !'2'
|
||||
(1 row)
|
||||
|
||||
select '!1|2'::mquery_txt;
|
||||
SELECT '!1|2'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
!'1' | '2'
|
||||
(1 row)
|
||||
|
||||
select '!1|!2'::mquery_txt;
|
||||
SELECT '!1|!2'::mquery_txt;
|
||||
mquery_txt
|
||||
-------------
|
||||
!'1' | !'2'
|
||||
(1 row)
|
||||
|
||||
select '!(!1|!2)'::mquery_txt;
|
||||
SELECT '!(!1|!2)'::mquery_txt;
|
||||
mquery_txt
|
||||
------------------
|
||||
!( !'1' | !'2' )
|
||||
(1 row)
|
||||
|
||||
select '!(!1|2)'::mquery_txt;
|
||||
SELECT '!(!1|2)'::mquery_txt;
|
||||
mquery_txt
|
||||
-----------------
|
||||
!( !'1' | '2' )
|
||||
(1 row)
|
||||
|
||||
select '!(1|!2)'::mquery_txt;
|
||||
SELECT '!(1|!2)'::mquery_txt;
|
||||
mquery_txt
|
||||
-----------------
|
||||
!( '1' | !'2' )
|
||||
(1 row)
|
||||
|
||||
select '!(1|2)'::mquery_txt;
|
||||
SELECT '!(1|2)'::mquery_txt;
|
||||
mquery_txt
|
||||
----------------
|
||||
!( '1' | '2' )
|
||||
(1 row)
|
||||
|
||||
select '1&2'::mquery_txt;
|
||||
SELECT '1&2'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '!1&2'::mquery_txt;
|
||||
SELECT '!1&2'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
!'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '1&!2'::mquery_txt;
|
||||
SELECT '1&!2'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1' & !'2'
|
||||
(1 row)
|
||||
|
||||
select '!1&!2'::mquery_txt;
|
||||
SELECT '!1&!2'::mquery_txt;
|
||||
mquery_txt
|
||||
-------------
|
||||
!'1' & !'2'
|
||||
(1 row)
|
||||
|
||||
select '(1&2)'::mquery_txt;
|
||||
SELECT '(1&2)'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '1&(2)'::mquery_txt;
|
||||
SELECT '1&(2)'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '!(1)&2'::mquery_txt;
|
||||
SELECT '!(1)&2'::mquery_txt;
|
||||
mquery_txt
|
||||
------------
|
||||
!'1' & '2'
|
||||
(1 row)
|
||||
|
||||
select '!(1&2)'::mquery_txt;
|
||||
SELECT '!(1&2)'::mquery_txt;
|
||||
mquery_txt
|
||||
----------------
|
||||
!( '1' & '2' )
|
||||
(1 row)
|
||||
|
||||
select '1|2&3'::mquery_txt;
|
||||
SELECT '1|2&3'::mquery_txt;
|
||||
mquery_txt
|
||||
-----------------
|
||||
'1' | '2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '1|(2&3)'::mquery_txt;
|
||||
SELECT '1|(2&3)'::mquery_txt;
|
||||
mquery_txt
|
||||
-----------------
|
||||
'1' | '2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '(1|2)&3'::mquery_txt;
|
||||
SELECT '(1|2)&3'::mquery_txt;
|
||||
mquery_txt
|
||||
---------------------
|
||||
( '1' | '2' ) & '3'
|
||||
(1 row)
|
||||
|
||||
select '1|2&!3'::mquery_txt;
|
||||
SELECT '1|2&!3'::mquery_txt;
|
||||
mquery_txt
|
||||
------------------
|
||||
'1' | '2' & !'3'
|
||||
(1 row)
|
||||
|
||||
select '1|!2&3'::mquery_txt;
|
||||
SELECT '1|!2&3'::mquery_txt;
|
||||
mquery_txt
|
||||
------------------
|
||||
'1' | !'2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '!1|2&3'::mquery_txt;
|
||||
SELECT '!1|2&3'::mquery_txt;
|
||||
mquery_txt
|
||||
------------------
|
||||
!'1' | '2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '!1|(2&3)'::mquery_txt;
|
||||
SELECT '!1|(2&3)'::mquery_txt;
|
||||
mquery_txt
|
||||
------------------
|
||||
!'1' | '2' & '3'
|
||||
(1 row)
|
||||
|
||||
select '!(1|2)&3'::mquery_txt;
|
||||
SELECT '!(1|2)&3'::mquery_txt;
|
||||
mquery_txt
|
||||
----------------------
|
||||
!( '1' | '2' ) & '3'
|
||||
(1 row)
|
||||
|
||||
select '(!1|2)&3'::mquery_txt;
|
||||
SELECT '(!1|2)&3'::mquery_txt;
|
||||
mquery_txt
|
||||
----------------------
|
||||
( !'1' | '2' ) & '3'
|
||||
(1 row)
|
||||
|
||||
select '1|(2|(4|(5|6)))'::mquery_txt;
|
||||
SELECT '1|(2|(4|(5|6)))'::mquery_txt;
|
||||
mquery_txt
|
||||
-----------------------------------------
|
||||
'1' | ( '2' | ( '4' | ( '5' | '6' ) ) )
|
||||
(1 row)
|
||||
|
||||
select '1|2|4|5|6'::mquery_txt;
|
||||
SELECT '1|2|4|5|6'::mquery_txt;
|
||||
mquery_txt
|
||||
-----------------------------------------
|
||||
( ( ( '1' | '2' ) | '4' ) | '5' ) | '6'
|
||||
(1 row)
|
||||
|
||||
select '1&(2&(4&(5&6)))'::mquery_txt;
|
||||
SELECT '1&(2&(4&(5&6)))'::mquery_txt;
|
||||
mquery_txt
|
||||
-----------------------------
|
||||
'1' & '2' & '4' & '5' & '6'
|
||||
(1 row)
|
||||
|
||||
select '1&2&4&5&6'::mquery_txt;
|
||||
SELECT '1&2&4&5&6'::mquery_txt;
|
||||
mquery_txt
|
||||
-----------------------------
|
||||
'1' & '2' & '4' & '5' & '6'
|
||||
(1 row)
|
||||
|
||||
select '1&(2&(4&(5|6)))'::mquery_txt;
|
||||
SELECT '1&(2&(4&(5|6)))'::mquery_txt;
|
||||
mquery_txt
|
||||
---------------------------------
|
||||
'1' & '2' & '4' & ( '5' | '6' )
|
||||
(1 row)
|
||||
|
||||
select '1&(2&(4&(5|!6)))'::mquery_txt;
|
||||
SELECT '1&(2&(4&(5|!6)))'::mquery_txt;
|
||||
mquery_txt
|
||||
----------------------------------
|
||||
'1' & '2' & '4' & ( '5' | !'6' )
|
||||
(1 row)
|
||||
|
||||
select '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::mquery_txt;
|
||||
SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::mquery_txt;
|
||||
mquery_txt
|
||||
---------------------------------
|
||||
'1' & '2' & '4' & ( '5' | '6' )
|
||||
(1 row)
|
||||
|
||||
select 'querty-fgries | http://www.google.com/index.html | www.rambler.ru/index.shtml'::mquery_txt;
|
||||
SELECT 'querty-fgries | http://www.google.com/index.html | www.rambler.ru/index.shtml'::mquery_txt;
|
||||
mquery_txt
|
||||
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
( 'querty-fgri' & 'querti' & 'fgri' | 'www.google.com/index.html' & 'www.google.com' & '/index.html' ) | 'www.rambler.ru/index.shtml' & 'www.rambler.ru' & '/index.shtml'
|
||||
@ -694,7 +694,7 @@ SELECT count(*) FROM test_txtidx WHERE a ## '(eq|yt)&(wR|qh)';
|
||||
11
|
||||
(1 row)
|
||||
|
||||
select txt2txtidx('345 qwe@efd.r \' 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 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
|
||||
SELECT txt2txtidx('345 qwe@efd.r \' 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 teodor@stack.net 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');
|
||||
txt2txtidx
|
||||
@ -702,13 +702,13 @@ select txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&
|
||||
'ad' 'dw' 'jf' '234' '345' '4.2' '455' 'jqw' 'qwe' 'wer' 'wow' 'asdf' 'ewr1' 'qwer' 'sdjk' '5.005' 'ewri2' 'qwqwe' 'wefjn' 'gist.c' 'gist.h' 'qwerti' '234.435' ':8100/?' 'qwe-wer' 'readlin' 'www.com' '+4.0e-10' 'gist.h.c' 'rewt/ewr' 'qwe@efd.r' 'readline-4' '/?ad=qwe&dw' '/wqe-324/ewr' 'aew.werc.ewr' '1aew.werc.ewr' '2aew.werc.ewr' '3aew.werc.ewr' '4aew.werc.ewr' '5aew.werc.ewr' '6aew.werc.ewr' '7aew.werc.ewr' '/usr/local/fff' '/awdf/dwqe/4325' ':8100/?ad=qwe&dw' 'teodor@stack.net' '5aew.werc.ewr:8100/?' ':8100/?ad=qwe&dw=%20%32' 'aew.werc.ewr/?ad=qwe&dw' '1aew.werc.ewr/?ad=qwe&dw' '3aew.werc.ewr/?ad=qwe&dw' '6aew.werc.ewr:8100/?ad=qwe&dw' '7aew.werc.ewr:8100/?ad=qwe&dw=%20%32'
|
||||
(1 row)
|
||||
|
||||
select txtidxsize(txt2txtidx('345 qw'));
|
||||
SELECT txtidxsize(txt2txtidx('345 qw'));
|
||||
txtidxsize
|
||||
------------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
select txtidxsize(txt2txtidx('345 qwe@efd.r \' 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 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
|
||||
SELECT txtidxsize(txt2txtidx('345 qwe@efd.r \' 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 teodor@stack.net 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'));
|
||||
txtidxsize
|
||||
@ -716,30 +716,31 @@ select txtidxsize(txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.e
|
||||
53
|
||||
(1 row)
|
||||
|
||||
insert into test_txtidx (a) values ('345 qwerty');
|
||||
create trigger txtidxupdate before update or insert on test_txtidx
|
||||
for each row execute procedure tsearch(a, t);
|
||||
insert into test_txtidx (t) values ('345 qwerty');
|
||||
select count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
|
||||
INSERT INTO test_txtidx (a) VALUES ('345 qwerty');
|
||||
CREATE TRIGGER txtidxupdate
|
||||
BEFORE UPDATE OR INSERT ON test_txtidx
|
||||
FOR EACH ROW EXECUTE PROCEDURE tsearch(a, t);
|
||||
INSERT INTO test_txtidx (t) VALUES ('345 qwerty');
|
||||
SELECT count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
select count(*) FROM test_txtidx WHERE a ## '345&qwerty';
|
||||
SELECT count(*) FROM test_txtidx WHERE a ## '345&qwerty';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
update test_txtidx set t = null where t = '345 qwerty';
|
||||
select count(*) FROM test_txtidx WHERE a ## '345&qwerty';
|
||||
UPDATE test_txtidx SET t = null WHERE t = '345 qwerty';
|
||||
SELECT count(*) FROM test_txtidx WHERE a ## '345&qwerty';
|
||||
count
|
||||
-------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
select count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
|
||||
SELECT count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
|
||||
count
|
||||
-------
|
||||
1
|
||||
|
@ -3,101 +3,102 @@
|
||||
-- does not depend on contents of seg.sql.
|
||||
--
|
||||
\set ECHO none
|
||||
SET autocommit TO 'on';
|
||||
\i tsearch.sql
|
||||
\set ECHO all
|
||||
|
||||
--txtidx
|
||||
select '1'::txtidx;
|
||||
select '1 '::txtidx;
|
||||
select ' 1'::txtidx;
|
||||
select ' 1 '::txtidx;
|
||||
select '1 2'::txtidx;
|
||||
select '\'1 2\''::txtidx;
|
||||
select '\'1 \\\'2\''::txtidx;
|
||||
select '\'1 \\\'2\'3'::txtidx;
|
||||
select '\'1 \\\'2\' 3'::txtidx;
|
||||
select '\'1 \\\'2\' \' 3\' 4 '::txtidx;
|
||||
SELECT '1'::txtidx;
|
||||
SELECT '1 '::txtidx;
|
||||
SELECT ' 1'::txtidx;
|
||||
SELECT ' 1 '::txtidx;
|
||||
SELECT '1 2'::txtidx;
|
||||
SELECT '\'1 2\''::txtidx;
|
||||
SELECT '\'1 \\\'2\''::txtidx;
|
||||
SELECT '\'1 \\\'2\'3'::txtidx;
|
||||
SELECT '\'1 \\\'2\' 3'::txtidx;
|
||||
SELECT '\'1 \\\'2\' \' 3\' 4 '::txtidx;
|
||||
|
||||
--query_txt
|
||||
select '1'::query_txt;
|
||||
select '1 '::query_txt;
|
||||
select ' 1'::query_txt;
|
||||
select ' 1 '::query_txt;
|
||||
select '\'1 2\''::query_txt;
|
||||
select '\'1 \\\'2\''::query_txt;
|
||||
select '!1'::query_txt;
|
||||
select '1|2'::query_txt;
|
||||
select '1|!2'::query_txt;
|
||||
select '!1|2'::query_txt;
|
||||
select '!1|!2'::query_txt;
|
||||
select '!(!1|!2)'::query_txt;
|
||||
select '!(!1|2)'::query_txt;
|
||||
select '!(1|!2)'::query_txt;
|
||||
select '!(1|2)'::query_txt;
|
||||
select '1&2'::query_txt;
|
||||
select '!1&2'::query_txt;
|
||||
select '1&!2'::query_txt;
|
||||
select '!1&!2'::query_txt;
|
||||
select '(1&2)'::query_txt;
|
||||
select '1&(2)'::query_txt;
|
||||
select '!(1)&2'::query_txt;
|
||||
select '!(1&2)'::query_txt;
|
||||
select '1|2&3'::query_txt;
|
||||
select '1|(2&3)'::query_txt;
|
||||
select '(1|2)&3'::query_txt;
|
||||
select '1|2&!3'::query_txt;
|
||||
select '1|!2&3'::query_txt;
|
||||
select '!1|2&3'::query_txt;
|
||||
select '!1|(2&3)'::query_txt;
|
||||
select '!(1|2)&3'::query_txt;
|
||||
select '(!1|2)&3'::query_txt;
|
||||
select '1|(2|(4|(5|6)))'::query_txt;
|
||||
select '1|2|4|5|6'::query_txt;
|
||||
select '1&(2&(4&(5&6)))'::query_txt;
|
||||
select '1&2&4&5&6'::query_txt;
|
||||
select '1&(2&(4&(5|6)))'::query_txt;
|
||||
select '1&(2&(4&(5|!6)))'::query_txt;
|
||||
select '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::query_txt;
|
||||
select '1'::mquery_txt;
|
||||
select '1 '::mquery_txt;
|
||||
select ' 1'::mquery_txt;
|
||||
select ' 1 '::mquery_txt;
|
||||
select '\'1 2\''::mquery_txt;
|
||||
select '\'1 \\\'2\''::mquery_txt;
|
||||
select '!1'::mquery_txt;
|
||||
select '1|2'::mquery_txt;
|
||||
select '1|!2'::mquery_txt;
|
||||
select '!1|2'::mquery_txt;
|
||||
select '!1|!2'::mquery_txt;
|
||||
select '!(!1|!2)'::mquery_txt;
|
||||
select '!(!1|2)'::mquery_txt;
|
||||
select '!(1|!2)'::mquery_txt;
|
||||
select '!(1|2)'::mquery_txt;
|
||||
select '1&2'::mquery_txt;
|
||||
select '!1&2'::mquery_txt;
|
||||
select '1&!2'::mquery_txt;
|
||||
select '!1&!2'::mquery_txt;
|
||||
select '(1&2)'::mquery_txt;
|
||||
select '1&(2)'::mquery_txt;
|
||||
select '!(1)&2'::mquery_txt;
|
||||
select '!(1&2)'::mquery_txt;
|
||||
select '1|2&3'::mquery_txt;
|
||||
select '1|(2&3)'::mquery_txt;
|
||||
select '(1|2)&3'::mquery_txt;
|
||||
select '1|2&!3'::mquery_txt;
|
||||
select '1|!2&3'::mquery_txt;
|
||||
select '!1|2&3'::mquery_txt;
|
||||
select '!1|(2&3)'::mquery_txt;
|
||||
select '!(1|2)&3'::mquery_txt;
|
||||
select '(!1|2)&3'::mquery_txt;
|
||||
select '1|(2|(4|(5|6)))'::mquery_txt;
|
||||
select '1|2|4|5|6'::mquery_txt;
|
||||
select '1&(2&(4&(5&6)))'::mquery_txt;
|
||||
select '1&2&4&5&6'::mquery_txt;
|
||||
select '1&(2&(4&(5|6)))'::mquery_txt;
|
||||
select '1&(2&(4&(5|!6)))'::mquery_txt;
|
||||
select '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::mquery_txt;
|
||||
select 'querty-fgries | http://www.google.com/index.html | www.rambler.ru/index.shtml'::mquery_txt;
|
||||
SELECT '1'::query_txt;
|
||||
SELECT '1 '::query_txt;
|
||||
SELECT ' 1'::query_txt;
|
||||
SELECT ' 1 '::query_txt;
|
||||
SELECT '\'1 2\''::query_txt;
|
||||
SELECT '\'1 \\\'2\''::query_txt;
|
||||
SELECT '!1'::query_txt;
|
||||
SELECT '1|2'::query_txt;
|
||||
SELECT '1|!2'::query_txt;
|
||||
SELECT '!1|2'::query_txt;
|
||||
SELECT '!1|!2'::query_txt;
|
||||
SELECT '!(!1|!2)'::query_txt;
|
||||
SELECT '!(!1|2)'::query_txt;
|
||||
SELECT '!(1|!2)'::query_txt;
|
||||
SELECT '!(1|2)'::query_txt;
|
||||
SELECT '1&2'::query_txt;
|
||||
SELECT '!1&2'::query_txt;
|
||||
SELECT '1&!2'::query_txt;
|
||||
SELECT '!1&!2'::query_txt;
|
||||
SELECT '(1&2)'::query_txt;
|
||||
SELECT '1&(2)'::query_txt;
|
||||
SELECT '!(1)&2'::query_txt;
|
||||
SELECT '!(1&2)'::query_txt;
|
||||
SELECT '1|2&3'::query_txt;
|
||||
SELECT '1|(2&3)'::query_txt;
|
||||
SELECT '(1|2)&3'::query_txt;
|
||||
SELECT '1|2&!3'::query_txt;
|
||||
SELECT '1|!2&3'::query_txt;
|
||||
SELECT '!1|2&3'::query_txt;
|
||||
SELECT '!1|(2&3)'::query_txt;
|
||||
SELECT '!(1|2)&3'::query_txt;
|
||||
SELECT '(!1|2)&3'::query_txt;
|
||||
SELECT '1|(2|(4|(5|6)))'::query_txt;
|
||||
SELECT '1|2|4|5|6'::query_txt;
|
||||
SELECT '1&(2&(4&(5&6)))'::query_txt;
|
||||
SELECT '1&2&4&5&6'::query_txt;
|
||||
SELECT '1&(2&(4&(5|6)))'::query_txt;
|
||||
SELECT '1&(2&(4&(5|!6)))'::query_txt;
|
||||
SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::query_txt;
|
||||
SELECT '1'::mquery_txt;
|
||||
SELECT '1 '::mquery_txt;
|
||||
SELECT ' 1'::mquery_txt;
|
||||
SELECT ' 1 '::mquery_txt;
|
||||
SELECT '\'1 2\''::mquery_txt;
|
||||
SELECT '\'1 \\\'2\''::mquery_txt;
|
||||
SELECT '!1'::mquery_txt;
|
||||
SELECT '1|2'::mquery_txt;
|
||||
SELECT '1|!2'::mquery_txt;
|
||||
SELECT '!1|2'::mquery_txt;
|
||||
SELECT '!1|!2'::mquery_txt;
|
||||
SELECT '!(!1|!2)'::mquery_txt;
|
||||
SELECT '!(!1|2)'::mquery_txt;
|
||||
SELECT '!(1|!2)'::mquery_txt;
|
||||
SELECT '!(1|2)'::mquery_txt;
|
||||
SELECT '1&2'::mquery_txt;
|
||||
SELECT '!1&2'::mquery_txt;
|
||||
SELECT '1&!2'::mquery_txt;
|
||||
SELECT '!1&!2'::mquery_txt;
|
||||
SELECT '(1&2)'::mquery_txt;
|
||||
SELECT '1&(2)'::mquery_txt;
|
||||
SELECT '!(1)&2'::mquery_txt;
|
||||
SELECT '!(1&2)'::mquery_txt;
|
||||
SELECT '1|2&3'::mquery_txt;
|
||||
SELECT '1|(2&3)'::mquery_txt;
|
||||
SELECT '(1|2)&3'::mquery_txt;
|
||||
SELECT '1|2&!3'::mquery_txt;
|
||||
SELECT '1|!2&3'::mquery_txt;
|
||||
SELECT '!1|2&3'::mquery_txt;
|
||||
SELECT '!1|(2&3)'::mquery_txt;
|
||||
SELECT '!(1|2)&3'::mquery_txt;
|
||||
SELECT '(!1|2)&3'::mquery_txt;
|
||||
SELECT '1|(2|(4|(5|6)))'::mquery_txt;
|
||||
SELECT '1|2|4|5|6'::mquery_txt;
|
||||
SELECT '1&(2&(4&(5&6)))'::mquery_txt;
|
||||
SELECT '1&2&4&5&6'::mquery_txt;
|
||||
SELECT '1&(2&(4&(5|6)))'::mquery_txt;
|
||||
SELECT '1&(2&(4&(5|!6)))'::mquery_txt;
|
||||
SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::mquery_txt;
|
||||
SELECT 'querty-fgries | http://www.google.com/index.html | www.rambler.ru/index.shtml'::mquery_txt;
|
||||
|
||||
CREATE TABLE test_txtidx( t text, a txtidx );
|
||||
|
||||
@ -133,30 +134,31 @@ SELECT count(*) FROM test_txtidx WHERE a ## 'eq|yt';
|
||||
SELECT count(*) FROM test_txtidx WHERE a ## '(eq&yt)|(wR&qh)';
|
||||
SELECT count(*) FROM test_txtidx WHERE a ## '(eq|yt)&(wR|qh)';
|
||||
|
||||
select txt2txtidx('345 qwe@efd.r \' 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 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
|
||||
SELECT txt2txtidx('345 qwe@efd.r \' 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 teodor@stack.net 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');
|
||||
|
||||
select txtidxsize(txt2txtidx('345 qw'));
|
||||
SELECT txtidxsize(txt2txtidx('345 qw'));
|
||||
|
||||
select txtidxsize(txt2txtidx('345 qwe@efd.r \' 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 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
|
||||
SELECT txtidxsize(txt2txtidx('345 qwe@efd.r \' 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 teodor@stack.net 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'));
|
||||
|
||||
insert into test_txtidx (a) values ('345 qwerty');
|
||||
INSERT INTO test_txtidx (a) VALUES ('345 qwerty');
|
||||
|
||||
create trigger txtidxupdate before update or insert on test_txtidx
|
||||
for each row execute procedure tsearch(a, t);
|
||||
CREATE TRIGGER txtidxupdate
|
||||
BEFORE UPDATE OR INSERT ON test_txtidx
|
||||
FOR EACH ROW EXECUTE PROCEDURE tsearch(a, t);
|
||||
|
||||
insert into test_txtidx (t) values ('345 qwerty');
|
||||
INSERT INTO test_txtidx (t) VALUES ('345 qwerty');
|
||||
|
||||
select count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
|
||||
SELECT count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
|
||||
|
||||
select count(*) FROM test_txtidx WHERE a ## '345&qwerty';
|
||||
SELECT count(*) FROM test_txtidx WHERE a ## '345&qwerty';
|
||||
|
||||
update test_txtidx set t = null where t = '345 qwerty';
|
||||
UPDATE test_txtidx SET t = null WHERE t = '345 qwerty';
|
||||
|
||||
select count(*) FROM test_txtidx WHERE a ## '345&qwerty';
|
||||
SELECT count(*) FROM test_txtidx WHERE a ## '345&qwerty';
|
||||
|
||||
select count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
|
||||
SELECT count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
|
||||
|
||||
|
@ -1,173 +1,213 @@
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
-- Adjust this setting to control where the objects get created.
|
||||
SET search_path = public;
|
||||
|
||||
SET autocommit TO 'on';
|
||||
|
||||
-- TXTIDX type
|
||||
|
||||
CREATE FUNCTION txtidx_in(cstring)
|
||||
RETURNS txtidx
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE FUNCTION txtidx_out(txtidx)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE TYPE txtidx (
|
||||
internallength = -1,
|
||||
input = txtidx_in,
|
||||
output = txtidx_out,
|
||||
storage = extended
|
||||
INTERNALLENGTH = -1,
|
||||
INPUT = txtidx_in,
|
||||
OUTPUT = txtidx_out,
|
||||
STORAGE = extended
|
||||
);
|
||||
|
||||
CREATE FUNCTION txt2txtidx(text)
|
||||
RETURNS txtidx
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE FUNCTION txtidxsize(txtidx)
|
||||
RETURNS int4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
--QUERYTYPES
|
||||
--without morphology
|
||||
CREATE FUNCTION qtxt_in(cstring)
|
||||
RETURNS query_txt
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE FUNCTION qtxt_out(query_txt)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE TYPE query_txt (
|
||||
internallength = -1,
|
||||
input = qtxt_in,
|
||||
output = qtxt_out
|
||||
INTERNALLENGTH = -1,
|
||||
INPUT = qtxt_in,
|
||||
OUTPUT = qtxt_out
|
||||
);
|
||||
|
||||
--with morphology
|
||||
CREATE FUNCTION mqtxt_in(cstring)
|
||||
RETURNS mquery_txt
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
--same C output function as for query_txt
|
||||
CREATE FUNCTION mqtxt_out(mquery_txt)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME', 'qtxt_out'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE TYPE mquery_txt (
|
||||
internallength = -1,
|
||||
input = mqtxt_in,
|
||||
output = mqtxt_out
|
||||
INTERNALLENGTH = -1,
|
||||
INPUT = mqtxt_in,
|
||||
OUTPUT = mqtxt_out
|
||||
);
|
||||
|
||||
--only for debug
|
||||
CREATE FUNCTION querytree(query_txt)
|
||||
RETURNS text
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE FUNCTION querytree(mquery_txt)
|
||||
RETURNS text
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
--operations
|
||||
CREATE FUNCTION execqtxt(txtidx, query_txt) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
CREATE FUNCTION execqtxt(txtidx, query_txt)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
COMMENT ON FUNCTION execqtxt(txtidx, query_txt) IS 'boolean operation with text index';
|
||||
|
||||
CREATE FUNCTION execqtxt(txtidx, mquery_txt) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
CREATE FUNCTION execqtxt(txtidx, mquery_txt)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
COMMENT ON FUNCTION execqtxt(txtidx, mquery_txt) IS 'boolean operation with text index';
|
||||
|
||||
CREATE FUNCTION rexecqtxt(query_txt, txtidx) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
CREATE FUNCTION rexecqtxt(query_txt, txtidx)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
COMMENT ON FUNCTION rexecqtxt(query_txt, txtidx) IS 'boolean operation with text index';
|
||||
|
||||
CREATE FUNCTION rexecqtxt(mquery_txt, txtidx) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
CREATE FUNCTION rexecqtxt(mquery_txt, txtidx)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
COMMENT ON FUNCTION rexecqtxt(mquery_txt, txtidx) IS 'boolean operation with text index';
|
||||
|
||||
CREATE OPERATOR @@ (
|
||||
LEFTARG = txtidx, RIGHTARG = query_txt, PROCEDURE = execqtxt,
|
||||
COMMUTATOR = '~@', RESTRICT = contsel, JOIN = contjoinsel
|
||||
LEFTARG = txtidx,
|
||||
RIGHTARG = query_txt,
|
||||
PROCEDURE = execqtxt,
|
||||
COMMUTATOR = '~@',
|
||||
RESTRICT = contsel,
|
||||
JOIN = contjoinsel
|
||||
);
|
||||
|
||||
CREATE OPERATOR ~@ (
|
||||
LEFTARG = query_txt, RIGHTARG = txtidx, PROCEDURE = rexecqtxt,
|
||||
COMMUTATOR = '@@', RESTRICT = contsel, JOIN = contjoinsel
|
||||
LEFTARG = query_txt,
|
||||
RIGHTARG = txtidx,
|
||||
PROCEDURE = rexecqtxt,
|
||||
COMMUTATOR = '@@',
|
||||
RESTRICT = contsel,
|
||||
JOIN = contjoinsel
|
||||
);
|
||||
|
||||
CREATE OPERATOR ## (
|
||||
LEFTARG = txtidx, RIGHTARG = mquery_txt, PROCEDURE = execqtxt,
|
||||
COMMUTATOR = '~#', RESTRICT = contsel, JOIN = contjoinsel
|
||||
LEFTARG = txtidx,
|
||||
RIGHTARG = mquery_txt,
|
||||
PROCEDURE = execqtxt,
|
||||
COMMUTATOR = '~#',
|
||||
RESTRICT = contsel,
|
||||
JOIN = contjoinsel
|
||||
);
|
||||
|
||||
CREATE OPERATOR ~# (
|
||||
LEFTARG = mquery_txt, RIGHTARG = txtidx, PROCEDURE = rexecqtxt,
|
||||
COMMUTATOR = '##', RESTRICT = contsel, JOIN = contjoinsel
|
||||
LEFTARG = mquery_txt,
|
||||
RIGHTARG = txtidx,
|
||||
PROCEDURE = rexecqtxt,
|
||||
COMMUTATOR = '##',
|
||||
RESTRICT = contsel,
|
||||
JOIN = contjoinsel
|
||||
);
|
||||
|
||||
--Trigger
|
||||
create function tsearch() returns trigger as
|
||||
'MODULE_PATHNAME'
|
||||
language 'C';
|
||||
CREATE FUNCTION tsearch()
|
||||
RETURNS trigger
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
||||
--GiST
|
||||
--GiST key type
|
||||
CREATE FUNCTION gtxtidx_in(cstring)
|
||||
RETURNS gtxtidx
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE FUNCTION gtxtidx_out(gtxtidx)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE TYPE gtxtidx (
|
||||
internallength = -1,
|
||||
input = gtxtidx_in,
|
||||
output = gtxtidx_out
|
||||
INTERNALLENGTH = -1,
|
||||
INPUT = gtxtidx_in,
|
||||
OUTPUT = gtxtidx_out
|
||||
);
|
||||
|
||||
-- support functions
|
||||
CREATE FUNCTION gtxtidx_consistent(gtxtidx,internal,int4) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
CREATE FUNCTION gtxtidx_consistent(gtxtidx,internal,int4)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
||||
CREATE FUNCTION gtxtidx_compress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
CREATE FUNCTION gtxtidx_compress(internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
||||
CREATE FUNCTION gtxtidx_decompress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
CREATE FUNCTION gtxtidx_decompress(internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
||||
CREATE FUNCTION gtxtidx_penalty(internal,internal,internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
CREATE FUNCTION gtxtidx_penalty(internal,internal,internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C' with (isstrict);
|
||||
|
||||
CREATE FUNCTION gtxtidx_picksplit(internal, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
CREATE FUNCTION gtxtidx_picksplit(internal, internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
||||
CREATE FUNCTION gtxtidx_union(bytea, internal) RETURNS _int4
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
CREATE FUNCTION gtxtidx_union(bytea, internal)
|
||||
RETURNS _int4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
||||
CREATE FUNCTION gtxtidx_same(gtxtidx, gtxtidx, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
CREATE FUNCTION gtxtidx_same(gtxtidx, gtxtidx, internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
||||
-- create the operator class
|
||||
CREATE OPERATOR CLASS gist_txtidx_ops
|
||||
DEFAULT FOR TYPE txtidx USING gist AS
|
||||
DEFAULT FOR TYPE txtidx USING gist
|
||||
AS
|
||||
OPERATOR 1 @@ (txtidx, query_txt) RECHECK ,
|
||||
OPERATOR 2 ## (txtidx, mquery_txt) RECHECK ,
|
||||
FUNCTION 1 gtxtidx_consistent (gtxtidx, internal, int4),
|
||||
@ -178,6 +218,3 @@ CREATE OPERATOR CLASS gist_txtidx_ops
|
||||
FUNCTION 6 gtxtidx_picksplit (internal, internal),
|
||||
FUNCTION 7 gtxtidx_same (gtxtidx, gtxtidx, internal),
|
||||
STORAGE gtxtidx;
|
||||
|
||||
|
||||
END TRANSACTION;
|
||||
|
Reference in New Issue
Block a user