• Tom Lane's avatar
    Mark built-in coercion functions as leakproof where possible. · 8a37951e
    Tom Lane authored
    Making these leakproof seems helpful since (for example) if you have a
    function f(int8) that is leakproof, you don't want it to effectively
    become non-leakproof when you apply it to an int4 or int2 column.
    But that's what happens today, since the implicit up-coercion will
    not be leakproof.
    
    Most of the coercion functions that visibly can't throw errors are
    functions that convert numeric datatypes to other, wider ones.
    Notable is that float4_numeric and float8_numeric can be marked
    leakproof; before commit a57d312a they could not have been.
    I also marked the functions that coerce strings to "name" as leakproof;
    that's okay today because they truncate silently, but if we ever
    reconsidered that behavior then they could no longer be leakproof.
    
    I desisted from marking rtrim1() as leakproof; it appears so right now,
    but the code seems a little too complex and perhaps subject to change,
    since it's shared with other SQL functions.
    
    Discussion: https://postgr.es/m/459322.1595607431@sss.pgh.pa.us
    8a37951e
catversion.h 2.53 KB