diff options
Diffstat (limited to 'src/backend/utils/adt/network.c')
-rw-r--r-- | src/backend/utils/adt/network.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c index 5573c340973..0e2c138fb40 100644 --- a/src/backend/utils/adt/network.c +++ b/src/backend/utils/adt/network.c @@ -892,9 +892,12 @@ inet_merge(PG_FUNCTION_ARGS) * Convert a value of a network datatype to an approximate scalar value. * This is used for estimating selectivities of inequality operators * involving network types. + * + * On failure (e.g., unsupported typid), set *failure to true; + * otherwise, that variable is not changed. */ double -convert_network_to_scalar(Datum value, Oid typid) +convert_network_to_scalar(Datum value, Oid typid, bool *failure) { switch (typid) { @@ -921,8 +924,6 @@ convert_network_to_scalar(Datum value, Oid typid) res += ip_addr(ip)[i]; } return res; - - break; } case MACADDROID: { @@ -946,11 +947,7 @@ convert_network_to_scalar(Datum value, Oid typid) } } - /* - * Can't get here unless someone tries to use scalarltsel/scalargtsel on - * an operator with one network and one non-network operand. - */ - elog(ERROR, "unsupported type: %u", typid); + *failure = true; return 0; } |