![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
The below code creates overloaded functions that do not produce this error when called with a NULL argument. jurka=# CREATE FUNCTION g(int) RETURNS int AS 'SELECT 1;' LANGUAGE sql; CREATE FUNCTION jurka=# CREATE FUNCTION g(float) RETURNS int AS 'SELECT 2;' LANGUAGE sql; CREATE FUNCTION |
#3
| |||
| |||
|
|
Kris Jurka <books (AT) ejurka (DOT) com> writes: The below code creates overloaded functions that do not produce this error when called with a NULL argument. jurka=# CREATE FUNCTION g(int) RETURNS int AS 'SELECT 1;' LANGUAGE sql; CREATE FUNCTION jurka=# CREATE FUNCTION g(float) RETURNS int AS 'SELECT 2;' LANGUAGE sql; CREATE FUNCTION float (a/k/a float8) is the preferred type in the numeric hierarchy, so it will win in a tug-of-war against int. There are other cases where it would lose (eg, had you declared g(text)). The objective of the type rules is most certainly not to fail in any ambiguous situation --- if we did, we'd have a completely unusable system. |
![]() |
| Thread Tools | |
| Display Modes | |
| |