pgsql: Mark built-in coercion functions as leakproof where possible.
От | Tom Lane |
---|---|
Тема | pgsql: Mark built-in coercion functions as leakproof where possible. |
Дата | |
Msg-id | [email protected] обсуждение исходный текст |
Список | pgsql-committers |
Mark built-in coercion functions as leakproof where possible. 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 a57d312a7 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/[email protected] Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/8a37951eebffd9bf528cb06d46127fb721d0e452 Modified Files -------------- src/include/catalog/catversion.h | 2 +- src/include/catalog/pg_proc.dat | 103 ++++++++++++++++--------------- src/test/regress/expected/opr_sanity.out | 25 ++++++++ 3 files changed, 78 insertions(+), 52 deletions(-)
В списке pgsql-committers по дате отправления: