]> granicus.if.org Git - postgresql/commitdiff
Support functions for index opclasses should be immutable.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 29 Sep 2007 23:24:39 +0000 (23:24 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 29 Sep 2007 23:24:39 +0000 (23:24 +0000)
Found by running opr_sanity on contrib modules.

contrib/btree_gist/btree_gist.sql.in

index f7e6af0716cdfb8b5b3fc487dff4f1c97b24f71f..25b79e6c6b2e36b06d2d92b73b07a61a25110117 100644 (file)
@@ -4,12 +4,12 @@ SET search_path = public;
 CREATE FUNCTION gbtreekey4_in(cstring)
 RETURNS gbtreekey4
 AS 'MODULE_PATHNAME', 'gbtreekey_in'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbtreekey4_out(gbtreekey4)
 RETURNS cstring
 AS 'MODULE_PATHNAME', 'gbtreekey_out'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE TYPE gbtreekey4 (
 INTERNALLENGTH = 4,
@@ -20,12 +20,12 @@ OUTPUT = gbtreekey4_out
 CREATE FUNCTION gbtreekey8_in(cstring)
 RETURNS gbtreekey8
 AS 'MODULE_PATHNAME', 'gbtreekey_in'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbtreekey8_out(gbtreekey8)
 RETURNS cstring
 AS 'MODULE_PATHNAME', 'gbtreekey_out'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE TYPE gbtreekey8 (
 INTERNALLENGTH = 8,
@@ -36,12 +36,12 @@ OUTPUT = gbtreekey8_out
 CREATE FUNCTION gbtreekey16_in(cstring)
 RETURNS gbtreekey16
 AS 'MODULE_PATHNAME', 'gbtreekey_in'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbtreekey16_out(gbtreekey16)
 RETURNS cstring
 AS 'MODULE_PATHNAME', 'gbtreekey_out'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE TYPE gbtreekey16 (
 INTERNALLENGTH = 16,
@@ -52,12 +52,12 @@ OUTPUT = gbtreekey16_out
 CREATE FUNCTION gbtreekey32_in(cstring)
 RETURNS gbtreekey32
 AS 'MODULE_PATHNAME', 'gbtreekey_in'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbtreekey32_out(gbtreekey32)
 RETURNS cstring
 AS 'MODULE_PATHNAME', 'gbtreekey_out'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE TYPE gbtreekey32 (
 INTERNALLENGTH = 32,
@@ -68,12 +68,12 @@ OUTPUT = gbtreekey32_out
 CREATE FUNCTION gbtreekey_var_in(cstring)
 RETURNS gbtreekey_var
 AS 'MODULE_PATHNAME', 'gbtreekey_in'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbtreekey_var_out(gbtreekey_var)
 RETURNS cstring
 AS 'MODULE_PATHNAME', 'gbtreekey_out'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE TYPE gbtreekey_var (
 INTERNALLENGTH = VARIABLE,
@@ -95,42 +95,42 @@ STORAGE = EXTENDED
 CREATE FUNCTION gbt_oid_consistent(internal,oid,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_oid_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_decompress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_var_decompress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_oid_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_oid_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_oid_union(bytea, internal)
 RETURNS gbtreekey8
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_oid_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_oid_ops
@@ -162,32 +162,32 @@ AS
 CREATE FUNCTION gbt_int2_consistent(internal,int2,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int2_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int2_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_int2_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int2_union(bytea, internal)
 RETURNS gbtreekey4
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int2_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_int2_ops
@@ -218,32 +218,32 @@ AS
 CREATE FUNCTION gbt_int4_consistent(internal,int4,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int4_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int4_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_int4_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int4_union(bytea, internal)
 RETURNS gbtreekey8
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int4_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_int4_ops
@@ -274,32 +274,32 @@ AS
 CREATE FUNCTION gbt_int8_consistent(internal,int8,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int8_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int8_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_int8_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int8_union(bytea, internal)
 RETURNS gbtreekey16
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_int8_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_int8_ops
@@ -331,32 +331,32 @@ AS
 CREATE FUNCTION gbt_float4_consistent(internal,float4,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_float4_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_float4_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_float4_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_float4_union(bytea, internal)
 RETURNS gbtreekey8
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_float4_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_float4_ops
@@ -390,32 +390,32 @@ AS
 CREATE FUNCTION gbt_float8_consistent(internal,float8,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_float8_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_float8_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_float8_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_float8_union(bytea, internal)
 RETURNS gbtreekey16
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_float8_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_float8_ops
@@ -447,42 +447,42 @@ AS
 CREATE FUNCTION gbt_ts_consistent(internal,timestamp,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_tstz_consistent(internal,timestamptz,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
       
 CREATE FUNCTION gbt_ts_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_tstz_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_ts_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
    
 CREATE FUNCTION gbt_ts_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
       
 CREATE FUNCTION gbt_ts_union(bytea, internal)
 RETURNS gbtreekey16
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_ts_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_timestamp_ops
@@ -533,42 +533,42 @@ AS
 CREATE FUNCTION gbt_time_consistent(internal,time,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_timetz_consistent(internal,timetz,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_time_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_timetz_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_time_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
    
 CREATE FUNCTION gbt_time_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
       
 CREATE FUNCTION gbt_time_union(bytea, internal)
 RETURNS gbtreekey16
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_time_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_time_ops
@@ -617,32 +617,32 @@ AS
 CREATE FUNCTION gbt_date_consistent(internal,date,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_date_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_date_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
    
 CREATE FUNCTION gbt_date_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
       
 CREATE FUNCTION gbt_date_union(bytea, internal)
 RETURNS gbtreekey8
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_date_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_date_ops
@@ -674,37 +674,37 @@ AS
 CREATE FUNCTION gbt_intv_consistent(internal,interval,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_intv_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_intv_decompress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_intv_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
    
 CREATE FUNCTION gbt_intv_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
       
 CREATE FUNCTION gbt_intv_union(bytea, internal)
 RETURNS gbtreekey32
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_intv_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_interval_ops
@@ -735,32 +735,32 @@ AS
 CREATE FUNCTION gbt_cash_consistent(internal,money,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_cash_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_cash_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_cash_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_cash_union(bytea, internal)
 RETURNS gbtreekey8
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_cash_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_cash_ops
@@ -791,32 +791,32 @@ AS
 CREATE FUNCTION gbt_macad_consistent(internal,macaddr,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_macad_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_macad_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_macad_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_macad_union(bytea, internal)
 RETURNS gbtreekey16
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_macad_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_macaddr_ops
@@ -849,42 +849,42 @@ AS
 CREATE FUNCTION gbt_text_consistent(internal,text,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bpchar_consistent(internal,bpchar,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_text_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bpchar_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_text_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_text_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_text_union(bytea, internal)
 RETURNS gbtreekey_var
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_text_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_text_ops
@@ -935,32 +935,32 @@ AS
 CREATE FUNCTION gbt_bytea_consistent(internal,bytea,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bytea_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bytea_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_bytea_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bytea_union(bytea, internal)
 RETURNS gbtreekey_var
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bytea_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_bytea_ops
@@ -992,32 +992,32 @@ AS
 CREATE FUNCTION gbt_numeric_consistent(internal,numeric,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_numeric_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_numeric_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_numeric_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_numeric_union(bytea, internal)
 RETURNS gbtreekey_var
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_numeric_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_numeric_ops
@@ -1047,32 +1047,32 @@ AS
 CREATE FUNCTION gbt_bit_consistent(internal,bit,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bit_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bit_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_bit_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bit_union(bytea, internal)
 RETURNS gbtreekey_var
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_bit_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_bit_ops
@@ -1124,32 +1124,32 @@ AS
 CREATE FUNCTION gbt_inet_consistent(internal,inet,int2)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_inet_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_inet_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C RETURNS NULL ON NULL INPUT;
+LANGUAGE C IMMUTABLE STRICT;
 
 CREATE FUNCTION gbt_inet_picksplit(internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_inet_union(bytea, internal)
 RETURNS gbtreekey16
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 CREATE FUNCTION gbt_inet_same(internal, internal, internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
-LANGUAGE C;
+LANGUAGE C IMMUTABLE;
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_inet_ops