This is an automated email from the ASF dual-hosted git repository.

dehowef pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-age.git


The following commit(s) were added to refs/heads/master by this push:
     new 44524b0  Add operator overload for agtype to int & float
44524b0 is described below

commit 44524b0aec0876d65ec6f8ab957a69f239b02663
Author: Dehowe Feng <[email protected]>
AuthorDate: Fri Apr 9 11:18:11 2021 -0700

    Add operator overload for agtype to int & float
    
    Overloaded comparison and arithmetic operators to handle agtype and int2,
    int4, int8, float4 and float8 operations.
    
    Removed the implicit cast to float8.
    
    Added regression tests for all cases.
---
 age--0.4.0.sql                     | 1879 +++++++++++++++++++++++++++++++++---
 regress/expected/agtype.out        |  562 ++++++++++-
 regress/sql/agtype.sql             |  144 ++-
 src/backend/utils/adt/agtype_ops.c |  123 ++-
 4 files changed, 2485 insertions(+), 223 deletions(-)

diff --git a/age--0.4.0.sql b/age--0.4.0.sql
index b336eb9..895d7d5 100644
--- a/age--0.4.0.sql
+++ b/age--0.4.0.sql
@@ -364,7 +364,7 @@ CREATE OPERATOR + (
   COMMUTATOR = +
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_add(agtype, bigint)
+CREATE FUNCTION ag_catalog.agtype_any_add(agtype, smallint)
 RETURNS agtype
 LANGUAGE c
 STABLE
@@ -373,231 +373,1831 @@ PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
 CREATE OPERATOR + (
-  FUNCTION = ag_catalog.agtype_bigint_add,
+  FUNCTION = ag_catalog.agtype_any_add,
+  LEFTARG = agtype,
+  RIGHTARG =  smallint,
+  COMMUTATOR = +
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_add(smallint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR + (
+  FUNCTION = ag_catalog.agtype_any_add,
+  LEFTARG = smallint,
+  RIGHTARG =  agtype,
+  COMMUTATOR = +
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_add(agtype, integer)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR + (
+  FUNCTION = ag_catalog.agtype_any_add,
+  LEFTARG = agtype,
+  RIGHTARG =  integer,
+  COMMUTATOR = +
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_add(integer, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR + (
+  FUNCTION = ag_catalog.agtype_any_add,
+  LEFTARG = integer,
+  RIGHTARG =  agtype,
+  COMMUTATOR = +
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_add(agtype, bigint)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR + (
+  FUNCTION = ag_catalog.agtype_any_add,
   LEFTARG = agtype,
   RIGHTARG =  bigint,
   COMMUTATOR = +
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_add(bigint, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_add(bigint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR + (
+  FUNCTION = ag_catalog.agtype_any_add,
+  LEFTARG = bigint,
+  RIGHTARG =  agtype,
+  COMMUTATOR = +
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_add(agtype, real)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR + (
+  FUNCTION = ag_catalog.agtype_any_add,
+  LEFTARG = agtype,
+  RIGHTARG =  real,
+  COMMUTATOR = +
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_add(real, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR + (
+  FUNCTION = ag_catalog.agtype_any_add,
+  LEFTARG = real,
+  RIGHTARG =  agtype,
+  COMMUTATOR = +
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_add(agtype, double precision)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR + (
+  FUNCTION = ag_catalog.agtype_any_add,
+  LEFTARG = agtype,
+  RIGHTARG =  double precision,
+  COMMUTATOR = +
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_add(double precision, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR + (
+  FUNCTION = ag_catalog.agtype_any_add,
+  LEFTARG = double precision,
+  RIGHTARG =  agtype,
+  COMMUTATOR = +
+);
+
+CREATE FUNCTION ag_catalog.agtype_sub(agtype, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_sub,
+  LEFTARG = agtype,
+  RIGHTARG = agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(agtype, smallint)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = agtype,
+  RIGHTARG =  smallint
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(smallint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = smallint,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(agtype, integer)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = agtype,
+  RIGHTARG =  integer
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(integer, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = integer,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(agtype, bigint)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = agtype,
+  RIGHTARG =  bigint
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(bigint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = bigint,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(agtype, real)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = agtype,
+  RIGHTARG =  real
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(real, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = real,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(agtype, double precision)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = agtype,
+  RIGHTARG =  double precision
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_sub(double precision, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_any_sub,
+  LEFTARG = double precision,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_neg(agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR - (
+  FUNCTION = ag_catalog.agtype_neg,
+  RIGHTARG = agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_mul(agtype, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_mul,
+  LEFTARG = agtype,
+  RIGHTARG = agtype,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(agtype, smallint)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = agtype,
+  RIGHTARG =  smallint,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(smallint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = smallint,
+  RIGHTARG =  agtype,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(agtype, integer)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = agtype,
+  RIGHTARG =  integer,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(integer, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = integer,
+  RIGHTARG =  agtype,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(agtype, bigint)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = agtype,
+  RIGHTARG =  bigint,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(bigint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = bigint,
+  RIGHTARG =  agtype,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(agtype, real)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = agtype,
+  RIGHTARG =  real,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(real, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = real,
+  RIGHTARG =  agtype,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(agtype, double precision)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = agtype,
+  RIGHTARG =  double precision,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mul(double precision, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR * (
+  FUNCTION = ag_catalog.agtype_any_mul,
+  LEFTARG = double precision,
+  RIGHTARG =  agtype,
+  COMMUTATOR = *
+);
+
+CREATE FUNCTION ag_catalog.agtype_div(agtype, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_div,
+  LEFTARG = agtype,
+  RIGHTARG = agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(agtype, smallint)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = agtype,
+  RIGHTARG =  smallint
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(smallint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = smallint,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(agtype, integer)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = agtype,
+  RIGHTARG =  integer
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(integer, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = integer,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(agtype, bigint)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = agtype,
+  RIGHTARG =  bigint
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(bigint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = bigint,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(agtype, real)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = agtype,
+  RIGHTARG =  real
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(real, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = real,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(agtype, double precision)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = agtype,
+  RIGHTARG =  double precision
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_div(double precision, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR / (
+  FUNCTION = ag_catalog.agtype_any_div,
+  LEFTARG = double precision,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_mod(agtype, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR % (
+  FUNCTION = ag_catalog.agtype_mod,
+  LEFTARG = agtype,
+  RIGHTARG = agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mod(agtype, smallint)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR % (
+  FUNCTION = ag_catalog.agtype_any_mod,
+  LEFTARG = agtype,
+  RIGHTARG =  smallint
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mod(smallint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR % (
+  FUNCTION = ag_catalog.agtype_any_mod,
+  LEFTARG = smallint,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mod(agtype, integer)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR % (
+  FUNCTION = ag_catalog.agtype_any_mod,
+  LEFTARG = agtype,
+  RIGHTARG =  integer
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mod(integer, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR % (
+  FUNCTION = ag_catalog.agtype_any_mod,
+  LEFTARG = integer,
+  RIGHTARG =  agtype
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mod(agtype, bigint)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR % (
+  FUNCTION = ag_catalog.agtype_any_mod,
+  LEFTARG = agtype,
+  RIGHTARG =  bigint
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_mod(bigint, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR % (
+  FUNCTION = ag_catalog.agtype_any_mod,
+  LEFTARG = bigint,
+  RIGHTARG =  agtype
+);
+
+
+CREATE FUNCTION ag_catalog.agtype_pow(agtype, agtype)
+RETURNS agtype
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR ^ (
+  FUNCTION = ag_catalog.agtype_pow,
+  LEFTARG = agtype,
+  RIGHTARG = agtype
+);
+
+--
+-- agtype - comparison operators (=, <>, <, >, <=, >=)
+--
+
+CREATE FUNCTION ag_catalog.agtype_eq(agtype, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_eq,
+  LEFTARG = agtype,
+  RIGHTARG = agtype,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(agtype, smallint)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = agtype,
+  RIGHTARG = smallint,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(smallint, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = smallint,
+  RIGHTARG = agtype,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(agtype, integer)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = agtype,
+  RIGHTARG = integer,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(integer, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = integer,
+  RIGHTARG = agtype,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(agtype, bigint)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = agtype,
+  RIGHTARG = bigint,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(bigint, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = bigint,
+  RIGHTARG = agtype,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(agtype, real)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = agtype,
+  RIGHTARG = real,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(real, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = real,
+  RIGHTARG = agtype,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(agtype, double precision)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = agtype,
+  RIGHTARG = double precision,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_eq(double precision, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR = (
+  FUNCTION = ag_catalog.agtype_any_eq,
+  LEFTARG = double precision,
+  RIGHTARG = agtype,
+  COMMUTATOR = =,
+  NEGATOR = <>,
+  RESTRICT = eqsel,
+  JOIN = eqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_ne(agtype, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_ne,
+  LEFTARG = agtype,
+  RIGHTARG = agtype,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(agtype, smallint)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = agtype,
+  RIGHTARG = smallint,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(smallint, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = smallint,
+  RIGHTARG = agtype,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(agtype, integer)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = agtype,
+  RIGHTARG = integer,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(integer, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = integer,
+  RIGHTARG = agtype,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(agtype, bigint)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = agtype,
+  RIGHTARG = bigint,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(bigint, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = bigint,
+  RIGHTARG = agtype,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(agtype, real)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = agtype,
+  RIGHTARG = real,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(real, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = real,
+  RIGHTARG = agtype,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(agtype, double precision)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = agtype,
+  RIGHTARG = double precision,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_ne(double precision, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <> (
+  FUNCTION = ag_catalog.agtype_any_ne,
+  LEFTARG = double precision,
+  RIGHTARG = agtype,
+  COMMUTATOR = <>,
+  NEGATOR = =,
+  RESTRICT = neqsel,
+  JOIN = neqjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_lt(agtype, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_lt,
+  LEFTARG = agtype,
+  RIGHTARG = agtype,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(agtype, smallint)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = agtype,
+  RIGHTARG = smallint,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(smallint, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = smallint,
+  RIGHTARG = agtype,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(agtype, integer)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = agtype,
+  RIGHTARG = integer,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(integer, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = integer,
+  RIGHTARG = agtype,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(agtype, bigint)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = agtype,
+  RIGHTARG = bigint,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(bigint, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = bigint,
+  RIGHTARG = agtype,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(agtype, real)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = agtype,
+  RIGHTARG = real,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(real, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = real,
+  RIGHTARG = agtype,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(agtype, double precision)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = agtype,
+  RIGHTARG = double precision,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_lt(double precision, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR < (
+  FUNCTION = ag_catalog.agtype_any_lt,
+  LEFTARG = double precision,
+  RIGHTARG = agtype,
+  COMMUTATOR = >,
+  NEGATOR = >=,
+  RESTRICT = scalarltsel,
+  JOIN = scalarltjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_gt(agtype, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_gt,
+  LEFTARG = agtype,
+  RIGHTARG = agtype,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(agtype, smallint)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = agtype,
+  RIGHTARG = smallint,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(smallint, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = smallint,
+  RIGHTARG = agtype,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(agtype, integer)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = agtype,
+  RIGHTARG = integer,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(integer, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = integer,
+  RIGHTARG = agtype,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(agtype, bigint)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = agtype,
+  RIGHTARG = bigint,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(bigint, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = bigint,
+  RIGHTARG = agtype,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(agtype, real)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = agtype,
+  RIGHTARG = real,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(real, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = real,
+  RIGHTARG = agtype,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(agtype, double precision)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = agtype,
+  RIGHTARG = double precision,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_gt(double precision, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR > (
+  FUNCTION = ag_catalog.agtype_any_gt,
+  LEFTARG = double precision,
+  RIGHTARG = agtype,
+  COMMUTATOR = <,
+  NEGATOR = <=,
+  RESTRICT = scalargtsel,
+  JOIN = scalargtjoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_le(agtype, agtype)
+RETURNS boolean
+LANGUAGE c
+STABLE
+RETURNS NULL ON NULL INPUT
+PARALLEL SAFE
+AS 'MODULE_PATHNAME';
+
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_le,
+  LEFTARG = agtype,
+  RIGHTARG = agtype,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
+);
+
+CREATE FUNCTION ag_catalog.agtype_any_le(agtype, smallint)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR + (
-  FUNCTION = ag_catalog.agtype_bigint_add,
-  LEFTARG = bigint,
-  RIGHTARG =  agtype,
-  COMMUTATOR = +
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
+  LEFTARG = agtype,
+  RIGHTARG = smallint,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_sub(agtype, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_le(smallint, agtype)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR - (
-  FUNCTION = ag_catalog.agtype_sub,
-  LEFTARG = agtype,
-  RIGHTARG = agtype
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
+  LEFTARG = smallint,
+  RIGHTARG = agtype,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_sub(agtype, bigint)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_le(agtype, integer)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR - (
-  FUNCTION = ag_catalog.agtype_bigint_sub,
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
   LEFTARG = agtype,
-  RIGHTARG =  bigint
+  RIGHTARG = integer,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_sub(bigint, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_le(integer, agtype)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR - (
-  FUNCTION = ag_catalog.agtype_bigint_sub,
-  LEFTARG = bigint,
-  RIGHTARG =  agtype
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
+  LEFTARG = integer,
+  RIGHTARG = agtype,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_neg(agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_le(agtype, bigint)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR - (
-  FUNCTION = ag_catalog.agtype_neg,
-  RIGHTARG = agtype
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
+  LEFTARG = agtype,
+  RIGHTARG = bigint,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_mul(agtype, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_le(bigint, agtype)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR * (
-  FUNCTION = ag_catalog.agtype_mul,
-  LEFTARG = agtype,
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
+  LEFTARG = bigint,
   RIGHTARG = agtype,
-  COMMUTATOR = *
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_mul(agtype, bigint)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_le(agtype, real)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR * (
-  FUNCTION = ag_catalog.agtype_bigint_mul,
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
   LEFTARG = agtype,
-  RIGHTARG =  bigint,
-  COMMUTATOR = *
+  RIGHTARG = real,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_mul(bigint, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_le(real, agtype)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR * (
-  FUNCTION = ag_catalog.agtype_bigint_mul,
-  LEFTARG = bigint,
-  RIGHTARG =  agtype,
-  COMMUTATOR = *
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
+  LEFTARG = real,
+  RIGHTARG = agtype,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_div(agtype, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_le(agtype, double precision)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR / (
-  FUNCTION = ag_catalog.agtype_div,
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
   LEFTARG = agtype,
-  RIGHTARG = agtype
+  RIGHTARG = double precision,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_div(agtype, bigint)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_le(double precision, agtype)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR / (
-  FUNCTION = ag_catalog.agtype_bigint_div,
-  LEFTARG = agtype,
-  RIGHTARG =  bigint
+CREATE OPERATOR <= (
+  FUNCTION = ag_catalog.agtype_any_le,
+  LEFTARG = double precision,
+  RIGHTARG = agtype,
+  COMMUTATOR = >=,
+  NEGATOR = >,
+  RESTRICT = scalarlesel,
+  JOIN = scalarlejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_div(bigint, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_ge(agtype, agtype)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR / (
-  FUNCTION = ag_catalog.agtype_bigint_div,
-  LEFTARG = bigint,
-  RIGHTARG =  agtype
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_ge,
+  LEFTARG = agtype,
+  RIGHTARG = agtype,
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_mod(agtype, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_ge(agtype, smallint)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR % (
-  FUNCTION = ag_catalog.agtype_mod,
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_any_ge,
   LEFTARG = agtype,
-  RIGHTARG = agtype
+  RIGHTARG = smallint,
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_mod(agtype, bigint)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_ge(smallint, agtype)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR % (
-  FUNCTION = ag_catalog.agtype_bigint_mod,
-  LEFTARG = agtype,
-  RIGHTARG =  bigint
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_any_ge,
+  LEFTARG = smallint,
+  RIGHTARG = agtype,
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_bigint_mod(bigint, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_ge(agtype, integer)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR % (
-  FUNCTION = ag_catalog.agtype_bigint_mod,
-  LEFTARG = bigint,
-  RIGHTARG =  agtype
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_any_ge,
+  LEFTARG = agtype,
+  RIGHTARG = integer,
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
-
-CREATE FUNCTION ag_catalog.agtype_pow(agtype, agtype)
-RETURNS agtype
+CREATE FUNCTION ag_catalog.agtype_any_ge(integer, agtype)
+RETURNS boolean
 LANGUAGE c
 STABLE
 RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR ^ (
-  FUNCTION = ag_catalog.agtype_pow,
-  LEFTARG = agtype,
-  RIGHTARG = agtype
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_any_ge,
+  LEFTARG = integer,
+  RIGHTARG = agtype,
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
---
--- agtype - comparison operators (=, <>, <, >, <=, >=)
---
-
-CREATE FUNCTION ag_catalog.agtype_eq(agtype, agtype)
+CREATE FUNCTION ag_catalog.agtype_any_ge(agtype, bigint)
 RETURNS boolean
 LANGUAGE c
 STABLE
@@ -605,17 +2205,17 @@ RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR = (
-  FUNCTION = ag_catalog.agtype_eq,
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_any_ge,
   LEFTARG = agtype,
-  RIGHTARG = agtype,
-  COMMUTATOR = =,
-  NEGATOR = <>,
-  RESTRICT = eqsel,
-  JOIN = eqjoinsel
+  RIGHTARG = bigint,
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_ne(agtype, agtype)
+CREATE FUNCTION ag_catalog.agtype_any_ge(bigint, agtype)
 RETURNS boolean
 LANGUAGE c
 STABLE
@@ -623,17 +2223,17 @@ RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR <> (
-  FUNCTION = ag_catalog.agtype_ne,
-  LEFTARG = agtype,
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_any_ge,
+  LEFTARG = bigint,
   RIGHTARG = agtype,
-  COMMUTATOR = <>,
-  NEGATOR = =,
-  RESTRICT = neqsel,
-  JOIN = neqjoinsel
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_lt(agtype, agtype)
+CREATE FUNCTION ag_catalog.agtype_any_ge(agtype, real)
 RETURNS boolean
 LANGUAGE c
 STABLE
@@ -641,17 +2241,17 @@ RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR < (
-  FUNCTION = ag_catalog.agtype_lt,
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_any_ge,
   LEFTARG = agtype,
-  RIGHTARG = agtype,
-  COMMUTATOR = >,
-  NEGATOR = >=,
-  RESTRICT = scalarltsel,
-  JOIN = scalarltjoinsel
+  RIGHTARG = real,
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_gt(agtype, agtype)
+CREATE FUNCTION ag_catalog.agtype_any_ge(real, agtype)
 RETURNS boolean
 LANGUAGE c
 STABLE
@@ -659,17 +2259,17 @@ RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR > (
-  FUNCTION = ag_catalog.agtype_gt,
-  LEFTARG = agtype,
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_any_ge,
+  LEFTARG = real,
   RIGHTARG = agtype,
-  COMMUTATOR = <,
-  NEGATOR = <=,
-  RESTRICT = scalargtsel,
-  JOIN = scalargtjoinsel
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_le(agtype, agtype)
+CREATE FUNCTION ag_catalog.agtype_any_ge(agtype, double precision)
 RETURNS boolean
 LANGUAGE c
 STABLE
@@ -677,17 +2277,17 @@ RETURNS NULL ON NULL INPUT
 PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
-CREATE OPERATOR <= (
-  FUNCTION = ag_catalog.agtype_le,
+CREATE OPERATOR >= (
+  FUNCTION = ag_catalog.agtype_any_ge,
   LEFTARG = agtype,
-  RIGHTARG = agtype,
-  COMMUTATOR = >=,
-  NEGATOR = >,
-  RESTRICT = scalarlesel,
-  JOIN = scalarlejoinsel
+  RIGHTARG = double precision,
+  COMMUTATOR = <=,
+  NEGATOR = <,
+  RESTRICT = scalargesel,
+  JOIN = scalargejoinsel
 );
 
-CREATE FUNCTION ag_catalog.agtype_ge(agtype, agtype)
+CREATE FUNCTION ag_catalog.agtype_any_ge(double precision, agtype)
 RETURNS boolean
 LANGUAGE c
 STABLE
@@ -696,8 +2296,8 @@ PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
 CREATE OPERATOR >= (
-  FUNCTION = ag_catalog.agtype_ge,
-  LEFTARG = agtype,
+  FUNCTION = ag_catalog.agtype_any_ge,
+  LEFTARG = double precision,
   RIGHTARG = agtype,
   COMMUTATOR = <=,
   NEGATOR = <,
@@ -921,8 +2521,7 @@ PARALLEL SAFE
 AS 'MODULE_PATHNAME';
 
 CREATE CAST (agtype AS float8)
-WITH FUNCTION ag_catalog.agtype_to_float8(agtype)
-AS IMPLICIT;
+WITH FUNCTION ag_catalog.agtype_to_float8(agtype);
 
 -- int8 -> agtype (explicit)
 CREATE FUNCTION ag_catalog.int8_to_agtype(int8)
diff --git a/regress/expected/agtype.out b/regress/expected/agtype.out
index b3b113d..4701d64 100644
--- a/regress/expected/agtype.out
+++ b/regress/expected/agtype.out
@@ -394,101 +394,101 @@ SELECT agtype_pow('2.0::numeric', '-1.0::numeric');
 (1 row)
 
 --
--- Test overloaded agtype bigint mathematical operator functions
+-- Test overloaded agtype any mathematical operator functions
 -- +, -, *, /, and %
 --
-SELECT agtype_bigint_add('1', -1);
- agtype_bigint_add 
--------------------
+SELECT agtype_any_add('1', -1);
+ agtype_any_add 
+----------------
  0
 (1 row)
 
-SELECT agtype_bigint_add('1.0', -1);
- agtype_bigint_add 
--------------------
+SELECT agtype_any_add('1.0', -1);
+ agtype_any_add 
+----------------
  0.0
 (1 row)
 
-SELECT agtype_bigint_add('1::numeric', 1);
- agtype_bigint_add 
--------------------
+SELECT agtype_any_add('1::numeric', 1);
+ agtype_any_add 
+----------------
  2::numeric
 (1 row)
 
-SELECT agtype_bigint_add('1.0::numeric', 1);
- agtype_bigint_add 
--------------------
+SELECT agtype_any_add('1.0::numeric', 1);
+ agtype_any_add 
+----------------
  2.0::numeric
 (1 row)
 
-SELECT agtype_bigint_sub('1', -1);
- agtype_bigint_sub 
--------------------
+SELECT agtype_any_sub('1', -1);
+ agtype_any_sub 
+----------------
  2
 (1 row)
 
-SELECT agtype_bigint_sub('1.0', -1);
- agtype_bigint_sub 
--------------------
+SELECT agtype_any_sub('1.0', -1);
+ agtype_any_sub 
+----------------
  2.0
 (1 row)
 
-SELECT agtype_bigint_sub('1::numeric', 1);
- agtype_bigint_sub 
--------------------
+SELECT agtype_any_sub('1::numeric', 1);
+ agtype_any_sub 
+----------------
  0::numeric
 (1 row)
 
-SELECT agtype_bigint_sub('1.0::numeric', 1);
- agtype_bigint_sub 
--------------------
+SELECT agtype_any_sub('1.0::numeric', 1);
+ agtype_any_sub 
+----------------
  0.0::numeric
 (1 row)
 
-SELECT agtype_bigint_mul('-2', 3);
- agtype_bigint_mul 
--------------------
+SELECT agtype_any_mul('-2', 3);
+ agtype_any_mul 
+----------------
  -6
 (1 row)
 
-SELECT agtype_bigint_mul('2.0', -3);
- agtype_bigint_mul 
--------------------
+SELECT agtype_any_mul('2.0', -3);
+ agtype_any_mul 
+----------------
  -6.0
 (1 row)
 
-SELECT agtype_bigint_mul('-2::numeric', 3);
- agtype_bigint_mul 
--------------------
+SELECT agtype_any_mul('-2::numeric', 3);
+ agtype_any_mul 
+----------------
  -6::numeric
 (1 row)
 
-SELECT agtype_bigint_mul('-2.0::numeric', 3);
- agtype_bigint_mul 
--------------------
+SELECT agtype_any_mul('-2.0::numeric', 3);
+ agtype_any_mul 
+----------------
  -6.0::numeric
 (1 row)
 
-SELECT agtype_bigint_div('-4', 3);
- agtype_bigint_div 
--------------------
+SELECT agtype_any_div('-4', 3);
+ agtype_any_div 
+----------------
  -1
 (1 row)
 
-SELECT agtype_bigint_div('4.0', -3);
- agtype_bigint_div 
+SELECT agtype_any_div('4.0', -3);
+  agtype_any_div   
 -------------------
  -1.33333333333333
 (1 row)
 
-SELECT agtype_bigint_div('-4::numeric', 3);
-      agtype_bigint_div       
+SELECT agtype_any_div('-4::numeric', 3);
+        agtype_any_div        
 ------------------------------
  -1.3333333333333333::numeric
 (1 row)
 
-SELECT agtype_bigint_div('-4.0::numeric', 3);
-      agtype_bigint_div       
+SELECT agtype_any_div('-4.0::numeric', 3);
+        agtype_any_div        
 ------------------------------
  -1.3333333333333333::numeric
 (1 row)
@@ -514,13 +514,13 @@ SELECT agtype_div('1::numeric', '0.0');
 ERROR:  division by zero
 SELECT agtype_div('1::numeric', '0::numeric');
 ERROR:  division by zero
-SELECT agtype_bigint_div('1', 0);
+SELECT agtype_any_div('1', 0);
 ERROR:  division by zero
-SELECT agtype_bigint_div('1.0', 0);
+SELECT agtype_any_div('1.0', 0);
 ERROR:  division by zero
-SELECT agtype_bigint_div('-1::numeric', 0);
+SELECT agtype_any_div('-1::numeric', 0);
 ERROR:  division by zero
-SELECT agtype_bigint_div('-1.0::numeric', 0);
+SELECT agtype_any_div('-1.0::numeric', 0);
 ERROR:  division by zero
 --
 -- Should get Infinity
@@ -626,7 +626,7 @@ SELECT '3.14::numeric'::agtype + '3.14::numeric'::agtype;
 (1 row)
 
 --
--- Test overloaded bigint operators +, -, *, /, %
+-- Test overloaded agytype any operators +, -, *, /, %
 --
 SELECT '3'::agtype + 3;
  ?column? 
@@ -1269,6 +1269,466 @@ SELECT agtype_in('true') < agtype_in('1::numeric');
 (1 row)
 
 --
+-- Test overloaded agytype any comparison operators =, <>, <, >, <=, >=,
+--
+-- Integer
+SELECT agtype_in('1') = 1;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') <> 2;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') <> -2;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') < 2;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') > -2;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') <= 2;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') >= -2;
+ ?column? 
+----------
+ t
+(1 row)
+
+-- Float
+SELECT agtype_in('1.01') = 1.01;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') <> 1.001;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') <> 1.011;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') < 1.011;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') > 1.001;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') <= 1.011;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') >= 1.001;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') < 'Infinity';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') > '-Infinity';
+ ?column? 
+----------
+ t
+(1 row)
+
+-- NaN, under ordering, is considered to be the biggest numeric value
+-- greater than positive infinity. So, greater than any other number.
+SELECT agtype_in('1.01') < 'NaN';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('NaN') > 'Infinity';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('NaN') > '-Infinity';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('NaN') = 'NaN';
+ ?column? 
+----------
+ t
+(1 row)
+
+-- Mixed Integer and Float
+SELECT agtype_in('1') = 1.0;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') <> 1.001;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') <> 0.999999;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') < 1.001;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') > 0.999999;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') <= 1.001;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') >= 0.999999;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') < 'Infinity';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') > '-Infinity';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') < 'NaN';
+ ?column? 
+----------
+ t
+(1 row)
+
+-- Mixed Float and Integer
+SELECT agtype_in('1.0') = 1;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.001') <> 1;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('0.999999') <> 1;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.001') > 1;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('0.999999') < 1;
+ ?column? 
+----------
+ t
+(1 row)
+
+-- Mixed Integer and Numeric
+SELECT agtype_in('1') = 1::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') <> 2::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') <> -2::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') < 2::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') > -2::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') <= 2::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1') >= -2::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+-- Mixed Float and Numeric
+SELECT agtype_in('1.01') = 1.01::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') <> 1.001::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') <> 1.011::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') < 1.011::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') > 1.001::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') <= 1.011::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1.01') >= 1.001::numeric;
+ ?column? 
+----------
+ t
+(1 row)
+
+-- Strings
+SELECT agtype_in('"a"') = '"a"';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('"a"') <> '"b"';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('"a"') < '"aa"';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('"b"') > '"aa"';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('"a"') <= '"aa"';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('"b"') >= '"aa"';
+ ?column? 
+----------
+ t
+(1 row)
+
+-- Lists
+SELECT agtype_in('[0, 1, null, 2]') = '[0, 1, null, 2]';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('[0, 1, null, 2]') <> '[2, null, 1, 0]';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('[0, 1, null]') < '[0, 1, null, 2]';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('[1, 1, null, 2]') > '[0, 1, null, 2]';
+ ?column? 
+----------
+ t
+(1 row)
+
+-- Objects (Maps)
+SELECT agtype_in('{"bool":true, "null": null}') = '{"null":null, "bool":true}';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('{"bool":true}') < '{"bool":true, "null": null}';
+ ?column? 
+----------
+ t
+(1 row)
+
+-- Comparisons between types
+-- Object < List < String < Boolean < Integer = Float = Numeric < Null
+SELECT agtype_in('1') < 'null';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('NaN') < 'null';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('Infinity') < 'null';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('true') < '1';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('true') < 'NaN';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('true') < 'Infinity';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('"string"') < 'true';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('[1,3,5,7,9,11]') < '"string"';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('{"bool":true, "integer":1}') < '[1,3,5,7,9,11]';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('[1, "string"]') < '[1, 1]';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('{"bool":true, "integer":1}') < '{"bool":true, 
"integer":null}';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('1::numeric') < 'null';
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT agtype_in('true') < '1::numeric';
+ ?column? 
+----------
+ t
+(1 row)
+
+--
 -- Test agtype to boolean cast
 --
 SELECT agtype_to_bool(agtype_in('true'));
diff --git a/regress/sql/agtype.sql b/regress/sql/agtype.sql
index be1edd3..fd9c194 100644
--- a/regress/sql/agtype.sql
+++ b/regress/sql/agtype.sql
@@ -145,29 +145,29 @@ SELECT agtype_pow('2.0', '-1.0::numeric');
 SELECT agtype_pow('2.0::numeric', '-1.0::numeric');
 
 --
--- Test overloaded agtype bigint mathematical operator functions
+-- Test overloaded agtype any mathematical operator functions
 -- +, -, *, /, and %
 --
 
-SELECT agtype_bigint_add('1', -1);
-SELECT agtype_bigint_add('1.0', -1);
-SELECT agtype_bigint_add('1::numeric', 1);
-SELECT agtype_bigint_add('1.0::numeric', 1);
+SELECT agtype_any_add('1', -1);
+SELECT agtype_any_add('1.0', -1);
+SELECT agtype_any_add('1::numeric', 1);
+SELECT agtype_any_add('1.0::numeric', 1);
 
-SELECT agtype_bigint_sub('1', -1);
-SELECT agtype_bigint_sub('1.0', -1);
-SELECT agtype_bigint_sub('1::numeric', 1);
-SELECT agtype_bigint_sub('1.0::numeric', 1);
+SELECT agtype_any_sub('1', -1);
+SELECT agtype_any_sub('1.0', -1);
+SELECT agtype_any_sub('1::numeric', 1);
+SELECT agtype_any_sub('1.0::numeric', 1);
 
-SELECT agtype_bigint_mul('-2', 3);
-SELECT agtype_bigint_mul('2.0', -3);
-SELECT agtype_bigint_mul('-2::numeric', 3);
-SELECT agtype_bigint_mul('-2.0::numeric', 3);
+SELECT agtype_any_mul('-2', 3);
+SELECT agtype_any_mul('2.0', -3);
+SELECT agtype_any_mul('-2::numeric', 3);
+SELECT agtype_any_mul('-2.0::numeric', 3);
 
-SELECT agtype_bigint_div('-4', 3);
-SELECT agtype_bigint_div('4.0', -3);
-SELECT agtype_bigint_div('-4::numeric', 3);
-SELECT agtype_bigint_div('-4.0::numeric', 3);
+SELECT agtype_any_div('-4', 3);
+SELECT agtype_any_div('4.0', -3);
+SELECT agtype_any_div('-4::numeric', 3);
+SELECT agtype_any_div('-4.0::numeric', 3);
 --
 -- Should fail with divide by zero
 --
@@ -181,10 +181,10 @@ SELECT agtype_div('1::numeric', '0');
 SELECT agtype_div('1::numeric', '0.0');
 SELECT agtype_div('1::numeric', '0::numeric');
 
-SELECT agtype_bigint_div('1', 0);
-SELECT agtype_bigint_div('1.0', 0);
-SELECT agtype_bigint_div('-1::numeric', 0);
-SELECT agtype_bigint_div('-1.0::numeric', 0);
+SELECT agtype_any_div('1', 0);
+SELECT agtype_any_div('1.0', 0);
+SELECT agtype_any_div('-1::numeric', 0);
+SELECT agtype_any_div('-1.0::numeric', 0);
 
 --
 -- Should get Infinity
@@ -218,7 +218,7 @@ SELECT '3.14'::agtype + '3.14::numeric'::agtype;
 SELECT '3.14::numeric'::agtype + '3.14::numeric'::agtype;
 
 --
--- Test overloaded bigint operators +, -, *, /, %
+-- Test overloaded agytype any operators +, -, *, /, %
 --
 
 SELECT '3'::agtype + 3;
@@ -357,6 +357,106 @@ SELECT agtype_in('1::numeric') < agtype_in('null');
 SELECT agtype_in('true') < agtype_in('1::numeric');
 
 --
+-- Test overloaded agytype any comparison operators =, <>, <, >, <=, >=,
+--
+-- Integer
+SELECT agtype_in('1') = 1;
+SELECT agtype_in('1') <> 2;
+SELECT agtype_in('1') <> -2;
+SELECT agtype_in('1') < 2;
+SELECT agtype_in('1') > -2;
+SELECT agtype_in('1') <= 2;
+SELECT agtype_in('1') >= -2;
+
+-- Float
+SELECT agtype_in('1.01') = 1.01;
+SELECT agtype_in('1.01') <> 1.001;
+SELECT agtype_in('1.01') <> 1.011;
+SELECT agtype_in('1.01') < 1.011;
+SELECT agtype_in('1.01') > 1.001;
+SELECT agtype_in('1.01') <= 1.011;
+SELECT agtype_in('1.01') >= 1.001;
+SELECT agtype_in('1.01') < 'Infinity';
+SELECT agtype_in('1.01') > '-Infinity';
+-- NaN, under ordering, is considered to be the biggest numeric value
+-- greater than positive infinity. So, greater than any other number.
+SELECT agtype_in('1.01') < 'NaN';
+SELECT agtype_in('NaN') > 'Infinity';
+SELECT agtype_in('NaN') > '-Infinity';
+SELECT agtype_in('NaN') = 'NaN';
+
+-- Mixed Integer and Float
+SELECT agtype_in('1') = 1.0;
+SELECT agtype_in('1') <> 1.001;
+SELECT agtype_in('1') <> 0.999999;
+SELECT agtype_in('1') < 1.001;
+SELECT agtype_in('1') > 0.999999;
+SELECT agtype_in('1') <= 1.001;
+SELECT agtype_in('1') >= 0.999999;
+SELECT agtype_in('1') < 'Infinity';
+SELECT agtype_in('1') > '-Infinity';
+SELECT agtype_in('1') < 'NaN';
+
+-- Mixed Float and Integer
+SELECT agtype_in('1.0') = 1;
+SELECT agtype_in('1.001') <> 1;
+SELECT agtype_in('0.999999') <> 1;
+SELECT agtype_in('1.001') > 1;
+SELECT agtype_in('0.999999') < 1;
+
+-- Mixed Integer and Numeric
+SELECT agtype_in('1') = 1::numeric;
+SELECT agtype_in('1') <> 2::numeric;
+SELECT agtype_in('1') <> -2::numeric;
+SELECT agtype_in('1') < 2::numeric;
+SELECT agtype_in('1') > -2::numeric;
+SELECT agtype_in('1') <= 2::numeric;
+SELECT agtype_in('1') >= -2::numeric;
+
+-- Mixed Float and Numeric
+SELECT agtype_in('1.01') = 1.01::numeric;
+SELECT agtype_in('1.01') <> 1.001::numeric;
+SELECT agtype_in('1.01') <> 1.011::numeric;
+SELECT agtype_in('1.01') < 1.011::numeric;
+SELECT agtype_in('1.01') > 1.001::numeric;
+SELECT agtype_in('1.01') <= 1.011::numeric;
+SELECT agtype_in('1.01') >= 1.001::numeric;
+
+-- Strings
+SELECT agtype_in('"a"') = '"a"';
+SELECT agtype_in('"a"') <> '"b"';
+SELECT agtype_in('"a"') < '"aa"';
+SELECT agtype_in('"b"') > '"aa"';
+SELECT agtype_in('"a"') <= '"aa"';
+SELECT agtype_in('"b"') >= '"aa"';
+
+-- Lists
+SELECT agtype_in('[0, 1, null, 2]') = '[0, 1, null, 2]';
+SELECT agtype_in('[0, 1, null, 2]') <> '[2, null, 1, 0]';
+SELECT agtype_in('[0, 1, null]') < '[0, 1, null, 2]';
+SELECT agtype_in('[1, 1, null, 2]') > '[0, 1, null, 2]';
+
+-- Objects (Maps)
+SELECT agtype_in('{"bool":true, "null": null}') = '{"null":null, "bool":true}';
+SELECT agtype_in('{"bool":true}') < '{"bool":true, "null": null}';
+
+-- Comparisons between types
+-- Object < List < String < Boolean < Integer = Float = Numeric < Null
+SELECT agtype_in('1') < 'null';
+SELECT agtype_in('NaN') < 'null';
+SELECT agtype_in('Infinity') < 'null';
+SELECT agtype_in('true') < '1';
+SELECT agtype_in('true') < 'NaN';
+SELECT agtype_in('true') < 'Infinity';
+SELECT agtype_in('"string"') < 'true';
+SELECT agtype_in('[1,3,5,7,9,11]') < '"string"';
+SELECT agtype_in('{"bool":true, "integer":1}') < '[1,3,5,7,9,11]';
+SELECT agtype_in('[1, "string"]') < '[1, 1]';
+SELECT agtype_in('{"bool":true, "integer":1}') < '{"bool":true, 
"integer":null}';
+SELECT agtype_in('1::numeric') < 'null';
+SELECT agtype_in('true') < '1::numeric';
+
+--
 -- Test agtype to boolean cast
 --
 SELECT agtype_to_bool(agtype_in('true'));
diff --git a/src/backend/utils/adt/agtype_ops.c 
b/src/backend/utils/adt/agtype_ops.c
index 8d3448f..21e8e3b 100644
--- a/src/backend/utils/adt/agtype_ops.c
+++ b/src/backend/utils/adt/agtype_ops.c
@@ -235,10 +235,10 @@ Datum agtype_add(PG_FUNCTION_ARGS)
     AG_RETURN_AGTYPE_P(agtype_value_to_agtype(&agtv_result));
 }
 
-PG_FUNCTION_INFO_V1(agtype_bigint_add);
+PG_FUNCTION_INFO_V1(agtype_any_add);
 
 /* agtype addition between bigint and agtype */
-Datum agtype_bigint_add(PG_FUNCTION_ARGS)
+Datum agtype_any_add(PG_FUNCTION_ARGS)
 {
     agtype *lhs;
     agtype *rhs;
@@ -320,10 +320,10 @@ Datum agtype_sub(PG_FUNCTION_ARGS)
     AG_RETURN_AGTYPE_P(agtype_value_to_agtype(&agtv_result));
 }
 
-PG_FUNCTION_INFO_V1(agtype_bigint_sub);
+PG_FUNCTION_INFO_V1(agtype_any_sub);
 
 /* agtype subtraction between bigint and agtype */
-Datum agtype_bigint_sub(PG_FUNCTION_ARGS)
+Datum agtype_any_sub(PG_FUNCTION_ARGS)
 {
     agtype *lhs;
     agtype *rhs;
@@ -453,10 +453,10 @@ Datum agtype_mul(PG_FUNCTION_ARGS)
     AG_RETURN_AGTYPE_P(agtype_value_to_agtype(&agtv_result));
 }
 
-PG_FUNCTION_INFO_V1(agtype_bigint_mul);
+PG_FUNCTION_INFO_V1(agtype_any_mul);
 
 /* agtype multiplication between bigint and agtype */
-Datum agtype_bigint_mul(PG_FUNCTION_ARGS)
+Datum agtype_any_mul(PG_FUNCTION_ARGS)
 {
     agtype *lhs;
     agtype *rhs;
@@ -566,10 +566,10 @@ Datum agtype_div(PG_FUNCTION_ARGS)
      AG_RETURN_AGTYPE_P(agtype_value_to_agtype(&agtv_result));
 }
 
-PG_FUNCTION_INFO_V1(agtype_bigint_div);
+PG_FUNCTION_INFO_V1(agtype_any_div);
 
 /* agtype division between bigint and agtype */
-Datum agtype_bigint_div(PG_FUNCTION_ARGS)
+Datum agtype_any_div(PG_FUNCTION_ARGS)
 {
     agtype *lhs;
     agtype *rhs;
@@ -651,10 +651,10 @@ Datum agtype_mod(PG_FUNCTION_ARGS)
     AG_RETURN_AGTYPE_P(agtype_value_to_agtype(&agtv_result));
 }
 
-PG_FUNCTION_INFO_V1(agtype_bigint_mod);
+PG_FUNCTION_INFO_V1(agtype_any_mod);
 
 /* agtype modulo between bigint and agtype */
-Datum agtype_bigint_mod(PG_FUNCTION_ARGS)
+Datum agtype_any_mod(PG_FUNCTION_ARGS)
 {
     agtype *lhs;
     agtype *rhs;
@@ -753,6 +753,23 @@ Datum agtype_eq(PG_FUNCTION_ARGS)
     PG_RETURN_BOOL(result);
 }
 
+PG_FUNCTION_INFO_V1(agtype_any_eq);
+
+Datum agtype_any_eq(PG_FUNCTION_ARGS)
+{
+    agtype *lhs;
+    agtype *rhs;
+    Datum result;
+
+    lhs = get_one_agtype_from_variadic_args(fcinfo, 0, 2);
+    rhs = get_one_agtype_from_variadic_args(fcinfo, 1, 1);
+
+    result = DirectFunctionCall2(agtype_eq, AGTYPE_P_GET_DATUM(lhs),
+                                            AGTYPE_P_GET_DATUM(rhs));
+
+    PG_RETURN_BOOL(result);
+}
+
 PG_FUNCTION_INFO_V1(agtype_ne);
 
 Datum agtype_ne(PG_FUNCTION_ARGS)
@@ -770,6 +787,23 @@ Datum agtype_ne(PG_FUNCTION_ARGS)
     PG_RETURN_BOOL(result);
 }
 
+PG_FUNCTION_INFO_V1(agtype_any_ne);
+
+Datum agtype_any_ne(PG_FUNCTION_ARGS)
+{
+    agtype *lhs;
+    agtype *rhs;
+    Datum result;
+
+    lhs = get_one_agtype_from_variadic_args(fcinfo, 0, 2);
+    rhs = get_one_agtype_from_variadic_args(fcinfo, 1, 1);
+
+    result = DirectFunctionCall2(agtype_ne, AGTYPE_P_GET_DATUM(lhs),
+                                            AGTYPE_P_GET_DATUM(rhs));
+
+    PG_RETURN_BOOL(result);
+}
+
 PG_FUNCTION_INFO_V1(agtype_lt);
 
 Datum agtype_lt(PG_FUNCTION_ARGS)
@@ -787,6 +821,23 @@ Datum agtype_lt(PG_FUNCTION_ARGS)
     PG_RETURN_BOOL(result);
 }
 
+PG_FUNCTION_INFO_V1(agtype_any_lt);
+
+Datum agtype_any_lt(PG_FUNCTION_ARGS)
+{
+    agtype *lhs;
+    agtype *rhs;
+    Datum result;
+
+    lhs = get_one_agtype_from_variadic_args(fcinfo, 0, 2);
+    rhs = get_one_agtype_from_variadic_args(fcinfo, 1, 1);
+
+    result = DirectFunctionCall2(agtype_lt, AGTYPE_P_GET_DATUM(lhs),
+                                            AGTYPE_P_GET_DATUM(rhs));
+
+    PG_RETURN_BOOL(result);
+}
+
 PG_FUNCTION_INFO_V1(agtype_gt);
 
 Datum agtype_gt(PG_FUNCTION_ARGS)
@@ -804,6 +855,23 @@ Datum agtype_gt(PG_FUNCTION_ARGS)
     PG_RETURN_BOOL(result);
 }
 
+PG_FUNCTION_INFO_V1(agtype_any_gt);
+
+Datum agtype_any_gt(PG_FUNCTION_ARGS)
+{
+    agtype *lhs;
+    agtype *rhs;
+    Datum result;
+
+    lhs = get_one_agtype_from_variadic_args(fcinfo, 0, 2);
+    rhs = get_one_agtype_from_variadic_args(fcinfo, 1, 1);
+
+    result = DirectFunctionCall2(agtype_gt, AGTYPE_P_GET_DATUM(lhs),
+                                            AGTYPE_P_GET_DATUM(rhs));
+
+    PG_RETURN_BOOL(result);
+}
+
 PG_FUNCTION_INFO_V1(agtype_le);
 
 Datum agtype_le(PG_FUNCTION_ARGS)
@@ -821,6 +889,23 @@ Datum agtype_le(PG_FUNCTION_ARGS)
     PG_RETURN_BOOL(result);
 }
 
+PG_FUNCTION_INFO_V1(agtype_any_le);
+
+Datum agtype_any_le(PG_FUNCTION_ARGS)
+{
+    agtype *lhs;
+    agtype *rhs;
+    Datum result;
+
+    lhs = get_one_agtype_from_variadic_args(fcinfo, 0, 2);
+    rhs = get_one_agtype_from_variadic_args(fcinfo, 1, 1);
+
+    result = DirectFunctionCall2(agtype_le, AGTYPE_P_GET_DATUM(lhs),
+                                            AGTYPE_P_GET_DATUM(rhs));
+
+    PG_RETURN_BOOL(result);
+}
+
 PG_FUNCTION_INFO_V1(agtype_ge);
 
 Datum agtype_ge(PG_FUNCTION_ARGS)
@@ -838,6 +923,24 @@ Datum agtype_ge(PG_FUNCTION_ARGS)
     PG_RETURN_BOOL(result);
 }
 
+PG_FUNCTION_INFO_V1(agtype_any_ge);
+
+Datum agtype_any_ge(PG_FUNCTION_ARGS)
+{
+    agtype *lhs;
+    agtype *rhs;
+    Datum result;
+
+    lhs = get_one_agtype_from_variadic_args(fcinfo, 0, 2);
+    rhs = get_one_agtype_from_variadic_args(fcinfo, 1, 1);
+
+    result = DirectFunctionCall2(agtype_ge, AGTYPE_P_GET_DATUM(lhs),
+                                            AGTYPE_P_GET_DATUM(rhs));
+
+    PG_RETURN_BOOL(result);
+}
+
+
 static agtype *agtype_concat(agtype *agt1, agtype *agt2)
 {
     agtype_parse_state *state = NULL;

Reply via email to