diff --git a/contrib/array/array_iterator.sql.in b/contrib/array/array_iterator.sql.in
index 3a5cf079cd1f4758728ed6733b85544835150e5e..cf3331a387bad90786a06c3dc52c4bf4ec52fe78 100644
--- a/contrib/array/array_iterator.sql.in
+++ b/contrib/array/array_iterator.sql.in
@@ -11,41 +11,45 @@ SET autocommit TO 'on';
 CREATE OR REPLACE FUNCTION array_texteq(_text, text)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_texteq(_text, text)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_textregexeq(_text, text)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_textregexeq(_text, text)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
+DROP OPERATOR *=(_text,text);
 CREATE OPERATOR *= (
 	LEFTARG=_text, 
 	RIGHTARG=text, 
 	PROCEDURE=array_texteq
 );
 
+DROP OPERATOR **=(_text,text);
 CREATE OPERATOR **= (
 	LEFTARG=_text,
 	RIGHTARG=text,
 	PROCEDURE=array_all_texteq
 );
 
+DROP OPERATOR *~(_text,text);
 CREATE OPERATOR *~ (
 	LEFTARG=_text,
 	RIGHTARG=text,
 	PROCEDURE=array_textregexeq
 );
 
+DROP OPERATOR **~(_text,text);
 CREATE OPERATOR **~ (
 	LEFTARG=_text,
 	RIGHTARG=text,
@@ -60,41 +64,45 @@ CREATE OPERATOR **~ (
 CREATE OR REPLACE FUNCTION array_varchareq(_varchar, varchar)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_varchareq(_varchar, varchar)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_varcharregexeq(_varchar, varchar)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_varcharregexeq(_varchar, varchar)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
+DROP OPERATOR *=(_varchar,"varchar");
 CREATE OPERATOR *= (
 	LEFTARG=_varchar, 
 	RIGHTARG="varchar", 
 	PROCEDURE=array_varchareq
 );
 
+DROP OPERATOR **=(_varchar,"varchar");
 CREATE OPERATOR **= (
 	LEFTARG=_varchar,
 	RIGHTARG="varchar",
 	PROCEDURE=array_all_varchareq
 );
 
+DROP OPERATOR *~(_varchar,"varchar");
 CREATE OPERATOR *~ (
 	LEFTARG=_varchar,
 	RIGHTARG="varchar",
 	PROCEDURE=array_varcharregexeq
 );
 
+DROP OPERATOR **~(_varchar,"varchar");
 CREATE OPERATOR **~ (
 	LEFTARG=_varchar,
 	RIGHTARG="varchar",
@@ -107,41 +115,45 @@ CREATE OPERATOR **~ (
 CREATE OR REPLACE FUNCTION array_bpchareq(_bpchar, bpchar)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_bpchareq(_bpchar, bpchar)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_bpcharregexeq(_bpchar, bpchar)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_bpcharregexeq(_bpchar, bpchar)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
+DROP OPERATOR *=(_bpchar,bpchar);
 CREATE OPERATOR *= (
 	LEFTARG=_bpchar, 
 	RIGHTARG=bpchar, 
 	PROCEDURE=array_bpchareq
 );
 
+DROP OPERATOR **=(_bpchar,bpchar);
 CREATE OPERATOR **= (
 	LEFTARG=_bpchar,
 	RIGHTARG=bpchar,
 	PROCEDURE=array_all_bpchareq
 );
 
+DROP OPERATOR *~(_bpchar,bpchar);
 CREATE OPERATOR *~ (
 	LEFTARG=_bpchar,
 	RIGHTARG=bpchar,
 	PROCEDURE=array_bpcharregexeq
 );
 
+DROP OPERATOR **~(_bpchar,bpchar);
 CREATE OPERATOR **~ (
 	LEFTARG=_bpchar,
 	RIGHTARG=bpchar,
@@ -154,129 +166,141 @@ CREATE OPERATOR **~ (
 CREATE OR REPLACE FUNCTION array_int4eq(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_int4eq(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_int4ne(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_int4ne(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_int4gt(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_int4gt(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_int4ge(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_int4ge(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_int4lt(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_int4lt(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_int4le(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_int4le(_int4, int4)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
+DROP OPERATOR *=(_int4,int4);
 CREATE OPERATOR *= (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_int4eq
 );
 
+DROP OPERATOR **=(_int4,int4);
 CREATE OPERATOR **= (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_all_int4eq
 );
 
+DROP OPERATOR *<>(_int4,int4);
 CREATE OPERATOR *<> (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_int4ne
 );
 
+DROP OPERATOR **<>(_int4,int4);
 CREATE OPERATOR **<> (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_all_int4ne
 );
 
+DROP OPERATOR *>(_int4,int4);
 CREATE OPERATOR *> (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_int4gt
 );
 
+DROP OPERATOR **>(_int4,int4);
 CREATE OPERATOR **> (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_all_int4gt
 );
 
+DROP OPERATOR *>=(_int4,int4);
 CREATE OPERATOR *>= (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_int4ge
 );
 
+DROP OPERATOR **>=(_int4,int4);
 CREATE OPERATOR **>= (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_all_int4ge
 );
 
+DROP OPERATOR *<(_int4,int4);
 CREATE OPERATOR *< (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_int4lt
 );
 
+DROP OPERATOR **<(_int4,int4);
 CREATE OPERATOR **< (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_all_int4lt
 );
 
+DROP OPERATOR *<=(_int4,int4);
 CREATE OPERATOR *<= (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
 	PROCEDURE=array_int4le
 );
 
+DROP OPERATOR **<=(_int4,int4);
 CREATE OPERATOR **<= (
 	LEFTARG=_int4,
 	RIGHTARG=int4,
@@ -288,19 +312,21 @@ CREATE OPERATOR **<= (
 CREATE OR REPLACE FUNCTION array_oideq(_oid, oid)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_oidne(_oid, oid)
 RETURNS bool
 AS 'MODULE_PATHNAME' 
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
+DROP OPERATOR *=(_oid,oid);
 CREATE OPERATOR *= (
 	LEFTARG=_oid, 
 	RIGHTARG=oid, 
 	PROCEDURE=array_oideq
 );
 
+DROP OPERATOR **<>(_oid,oid);
 CREATE OPERATOR **<> (
 	LEFTARG=_oid,
 	RIGHTARG=oid,
@@ -312,41 +338,45 @@ CREATE OPERATOR **<> (
 CREATE OR REPLACE FUNCTION array_ineteq(_inet, inet)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_ineteq(_inet, inet)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_inetne(_inet, inet)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION array_all_inetne(_inet, inet)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'C' WITH (isStrict);
+LANGUAGE 'C' IMMUTABLE STRICT;
 
+DROP OPERATOR *=(_inet,inet);
 CREATE OPERATOR *= (
 	LEFTARG=_inet,
 	RIGHTARG=inet,
 	PROCEDURE=array_ineteq
 );
 
+DROP OPERATOR **=(_inet,inet);
 CREATE OPERATOR **= (
 	LEFTARG=_inet,
 	RIGHTARG=inet,
 	PROCEDURE=array_all_ineteq
 );
 
+DROP OPERATOR *<>(_inet,inet);
 CREATE OPERATOR *<> (
 	LEFTARG=_inet,
 	RIGHTARG=inet,
 	PROCEDURE=array_inetne
 );
 
+DROP OPERATOR **<>(_inet,inet);
 CREATE OPERATOR **<> (
 	LEFTARG=_inet,
 	RIGHTARG=inet,
diff --git a/contrib/intagg/int_aggregate.sql.in b/contrib/intagg/int_aggregate.sql.in
index 1d5f83e682b14f0c26f55d6cf391898fd4acfafc..8e929a6047960381aa9e6d6c32a463b2d2beb28a 100644
--- a/contrib/intagg/int_aggregate.sql.in
+++ b/contrib/intagg/int_aggregate.sql.in
@@ -8,18 +8,19 @@ SET autocommit TO 'on';
 CREATE OR REPLACE FUNCTION int_agg_state (int4, int4)
 RETURNS int4
 AS 'MODULE_PATHNAME','int_agg_state'
-LANGUAGE 'C';
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 -- Internal function for the aggregate
 -- Is called at the end of the aggregation, and returns an array.
 CREATE OR REPLACE FUNCTION int_agg_final_array (int4)
 RETURNS int4[]
 AS 'MODULE_PATHNAME','int_agg_final_array'
-LANGUAGE 'C';
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 -- The aggration funcion.
 -- uses the above functions to create an array of integers from an aggregation.
-CREATE OR REPLACE AGGREGATE int_array_aggregate (
+DROP AGGREGATE int_array_aggregate(int4);
+CREATE AGGREGATE int_array_aggregate (
 	BASETYPE = int4,
 	SFUNC = int_agg_state,
 	STYPE = int4,
@@ -33,4 +34,4 @@ CREATE OR REPLACE AGGREGATE int_array_aggregate (
 CREATE OR REPLACE FUNCTION int_array_enum(int4[])
 RETURNS setof integer
 AS 'MODULE_PATHNAME','int_enum'
-LANGUAGE 'C';
+LANGUAGE 'C' IMMUTABLE STRICT;