mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	This will allow enums to be used in exclusion constraints. The code uses the new CallerFInfoFunctionCall infrastructure in fmgr, and the support for it added to btree_gist in commit 393bb504d7. Reviewed by Tom Lane and Anastasia Lubennikova Discussion: http://postgr.es/m/56EA8A71.8060107@dunslane.net
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
/* contrib/btree_gist/btree_gist--1.4--1.5.sql */
 | 
						|
 | 
						|
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
 | 
						|
\echo Use "ALTER EXTENSION btree_gist UPDATE TO '1.5'" to load this file. \quit
 | 
						|
 | 
						|
--
 | 
						|
--
 | 
						|
--
 | 
						|
-- enum ops
 | 
						|
--
 | 
						|
--
 | 
						|
--
 | 
						|
-- define the GiST support methods
 | 
						|
CREATE FUNCTION gbt_enum_consistent(internal,anyenum,int2,oid,internal)
 | 
						|
RETURNS bool
 | 
						|
AS 'MODULE_PATHNAME'
 | 
						|
LANGUAGE C IMMUTABLE STRICT;
 | 
						|
 | 
						|
CREATE FUNCTION gbt_enum_compress(internal)
 | 
						|
RETURNS internal
 | 
						|
AS 'MODULE_PATHNAME'
 | 
						|
LANGUAGE C IMMUTABLE STRICT;
 | 
						|
 | 
						|
CREATE FUNCTION gbt_enum_fetch(internal)
 | 
						|
RETURNS internal
 | 
						|
AS 'MODULE_PATHNAME'
 | 
						|
LANGUAGE C IMMUTABLE STRICT;
 | 
						|
 | 
						|
CREATE FUNCTION gbt_enum_penalty(internal,internal,internal)
 | 
						|
RETURNS internal
 | 
						|
AS 'MODULE_PATHNAME'
 | 
						|
LANGUAGE C IMMUTABLE STRICT;
 | 
						|
 | 
						|
CREATE FUNCTION gbt_enum_picksplit(internal, internal)
 | 
						|
RETURNS internal
 | 
						|
AS 'MODULE_PATHNAME'
 | 
						|
LANGUAGE C IMMUTABLE STRICT;
 | 
						|
 | 
						|
CREATE FUNCTION gbt_enum_union(internal, internal)
 | 
						|
RETURNS gbtreekey8
 | 
						|
AS 'MODULE_PATHNAME'
 | 
						|
LANGUAGE C IMMUTABLE STRICT;
 | 
						|
 | 
						|
CREATE FUNCTION gbt_enum_same(gbtreekey8, gbtreekey8, internal)
 | 
						|
RETURNS internal
 | 
						|
AS 'MODULE_PATHNAME'
 | 
						|
LANGUAGE C IMMUTABLE STRICT;
 | 
						|
 | 
						|
-- Create the operator class
 | 
						|
CREATE OPERATOR CLASS gist_enum_ops
 | 
						|
DEFAULT FOR TYPE anyenum USING gist
 | 
						|
AS
 | 
						|
	OPERATOR	1	<  ,
 | 
						|
	OPERATOR	2	<= ,
 | 
						|
	OPERATOR	3	=  ,
 | 
						|
	OPERATOR	4	>= ,
 | 
						|
	OPERATOR	5	>  ,
 | 
						|
	FUNCTION	1	gbt_enum_consistent (internal, anyenum, int2, oid, internal),
 | 
						|
	FUNCTION	2	gbt_enum_union (internal, internal),
 | 
						|
	FUNCTION	3	gbt_enum_compress (internal),
 | 
						|
	FUNCTION	4	gbt_decompress (internal),
 | 
						|
	FUNCTION	5	gbt_enum_penalty (internal, internal, internal),
 | 
						|
	FUNCTION	6	gbt_enum_picksplit (internal, internal),
 | 
						|
	FUNCTION	7	gbt_enum_same (gbtreekey8, gbtreekey8, internal),
 | 
						|
	STORAGE		gbtreekey8;
 | 
						|
 | 
						|
ALTER OPERATOR FAMILY gist_enum_ops USING gist ADD
 | 
						|
	OPERATOR	6	<> (anyenum, anyenum) ,
 | 
						|
	FUNCTION	9 (anyenum, anyenum) gbt_enum_fetch (internal) ;
 |