*** a/src/backend/utils/adt/network.c --- b/src/backend/utils/adt/network.c *************** *** 520,525 **** network_ne(PG_FUNCTION_ARGS) --- 520,548 ---- PG_RETURN_BOOL(network_cmp_internal(a1, a2) != 0); } + Datum + network_smaller(PG_FUNCTION_ARGS) + { + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); + + if (network_cmp_internal(a1, a2) < 0) + PG_RETURN_INET_P(a1); + else + PG_RETURN_INET_P(a2); + } + + Datum + network_larger(PG_FUNCTION_ARGS) + { + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); + + if (network_cmp_internal(a1, a2) > 0) + PG_RETURN_INET_P(a1); + else + PG_RETURN_INET_P(a2); + } /* * Support function for hash indexes on inet/cidr. */ *** a/src/include/catalog/pg_aggregate.h --- b/src/include/catalog/pg_aggregate.h *************** *** 140,145 **** DATA(insert ( 2050 n 0 array_larger - 1073 2277 0 _null_ )); --- 140,146 ---- DATA(insert ( 2244 n 0 bpchar_larger - 1060 1042 0 _null_ )); DATA(insert ( 2797 n 0 tidlarger - 2800 27 0 _null_ )); DATA(insert ( 3526 n 0 enum_larger - 3519 3500 0 _null_ )); + DATA(insert ( 3206 n 0 network_larger - 1205 869 0 _null_ )); /* min */ DATA(insert ( 2131 n 0 int8smaller - 412 20 0 _null_ )); *************** *** 162,167 **** DATA(insert ( 2051 n 0 array_smaller - 1072 2277 0 _null_ )); --- 163,169 ---- DATA(insert ( 2245 n 0 bpchar_smaller - 1058 1042 0 _null_ )); DATA(insert ( 2798 n 0 tidsmaller - 2799 27 0 _null_ )); DATA(insert ( 3527 n 0 enum_smaller - 3518 3500 0 _null_ )); + DATA(insert ( 3207 n 0 network_smaller - 1203 869 0 _null_ )); /* count */ DATA(insert ( 2147 n 0 int8inc_any - 0 20 0 "0" )); *** a/src/include/catalog/pg_proc.h --- b/src/include/catalog/pg_proc.h *************** *** 2112,2117 **** DATA(insert OID = 922 ( network_le PGNSP PGUID 12 1 0 0 0 f f f t t f i 2 0 1 --- 2112,2119 ---- DATA(insert OID = 923 ( network_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_gt _null_ _null_ _null_ )); DATA(insert OID = 924 ( network_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_ge _null_ _null_ _null_ )); DATA(insert OID = 925 ( network_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_ne _null_ _null_ _null_ )); + DATA(insert OID = 3208 ( network_smaller PGNSP PGUID 12 1 0 0 0 f f f t t f i 2 0 869 "869 869" _null_ _null_ _null_ _null_ network_smaller _null_ _null_ _null_ )); + DATA(insert OID = 3209 ( network_larger PGNSP PGUID 12 1 0 0 0 f f f t t f i 2 0 869 "869 869" _null_ _null_ _null_ _null_ network_larger _null_ _null_ _null_ )); DATA(insert OID = 926 ( network_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 23 "869 869" _null_ _null_ _null_ _null_ network_cmp _null_ _null_ _null_ )); DESCR("less-equal-greater"); DATA(insert OID = 927 ( network_sub PGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_sub _null_ _null_ _null_ )); *************** *** 3114,3119 **** DATA(insert OID = 2244 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i 1 0 1042 " --- 3116,3123 ---- DESCR("maximum value of all bpchar input values"); DATA(insert OID = 2797 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i 1 0 27 "27" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); DESCR("maximum value of all tid input values"); + DATA(insert OID = 3206 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i 1 0 869 "869" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); + DESCR("maximum value of all inet input values"); DATA(insert OID = 2131 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i 1 0 20 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); DESCR("minimum value of all bigint input values"); *************** *** 3153,3158 **** DATA(insert OID = 2245 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i 1 0 1042 " --- 3157,3164 ---- DESCR("minimum value of all bpchar input values"); DATA(insert OID = 2798 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i 1 0 27 "27" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); DESCR("minimum value of all tid input values"); + DATA(insert OID = 3207 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i 1 0 869 "869" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); + DESCR("minimum value of all inet input values"); /* count has two forms: count(any) and count(*) */ DATA(insert OID = 2147 ( count PGNSP PGUID 12 1 0 0 0 t f f f f f i 1 0 20 "2276" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); *** a/src/include/utils/builtins.h --- b/src/include/utils/builtins.h *************** *** 897,902 **** extern Datum network_eq(PG_FUNCTION_ARGS); --- 897,904 ---- extern Datum network_ge(PG_FUNCTION_ARGS); extern Datum network_gt(PG_FUNCTION_ARGS); extern Datum network_ne(PG_FUNCTION_ARGS); + extern Datum network_smaller(PG_FUNCTION_ARGS); + extern Datum network_larger(PG_FUNCTION_ARGS); extern Datum hashinet(PG_FUNCTION_ARGS); extern Datum network_sub(PG_FUNCTION_ARGS); extern Datum network_subeq(PG_FUNCTION_ARGS);