Skip to content

Commit

Permalink
oracle compatible NANVL function
Browse files Browse the repository at this point in the history
  • Loading branch information
vinpokale committed Feb 16, 2015
1 parent 8c52382 commit 3d55627
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 0 deletions.
48 changes: 48 additions & 0 deletions expected/orafce.out
Original file line number Diff line number Diff line change
Expand Up @@ -2531,6 +2531,54 @@ SELECT nanvl(12345::numeric, 1), nanvl('NaN'::numeric, 1);
12345 | 1
(1 row)

SELECT nanvl(12345, '1'::varchar), nanvl('NaN', 1::varchar);
nanvl | nanvl
-------+-------
12345 | 1
(1 row)

SELECT nanvl(12345::float4, '1'::varchar), nanvl('NaN'::float4, '1'::varchar);
nanvl | nanvl
-------+-------
12345 | 1
(1 row)

SELECT nanvl(12345::float8, '1'::varchar), nanvl('NaN'::float8, '1'::varchar);
nanvl | nanvl
-------+-------
12345 | 1
(1 row)

SELECT nanvl(12345::numeric, '1'::varchar), nanvl('NaN'::numeric, '1'::varchar);
nanvl | nanvl
-------+-------
12345 | 1
(1 row)

SELECT nanvl(12345, '1'::char), nanvl('NaN', 1::char);
nanvl | nanvl
-------+-------
12345 | 1
(1 row)

SELECT nanvl(12345::float4, '1'::char), nanvl('NaN'::float4, '1'::char);
nanvl | nanvl
-------+-------
12345 | 1
(1 row)

SELECT nanvl(12345::float8, '1'::char), nanvl('NaN'::float8, '1'::char);
nanvl | nanvl
-------+-------
12345 | 1
(1 row)

SELECT nanvl(12345::numeric, '1'::char), nanvl('NaN'::numeric, '1'::char);
nanvl | nanvl
-------+-------
12345 | 1
(1 row)

select dbms_assert.enquote_literal('some text '' some text');
enquote_literal
--------------------------
Expand Down
15 changes: 15 additions & 0 deletions orafce--3.0.13.sql
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,21 @@ RETURNS numeric AS
$$ SELECT CASE WHEN $1 = 'NaN' THEN $2 ELSE $1 END; $$
LANGUAGE sql IMMUTABLE STRICT;

CREATE FUNCTION nanvl(float4, varchar)
RETURNS float4 AS
$$ SELECT CASE WHEN $1 = 'NaN' THEN $2::float4 ELSE $1 END; $$
LANGUAGE sql IMMUTABLE STRICT;

CREATE FUNCTION nanvl(float8, varchar)
RETURNS float8 AS
$$ SELECT CASE WHEN $1 = 'NaN' THEN $2::float8 ELSE $1 END; $$
LANGUAGE sql IMMUTABLE STRICT;

CREATE FUNCTION nanvl(numeric, varchar)
RETURNS numeric AS
$$ SELECT CASE WHEN $1 = 'NaN' THEN $2::numeric ELSE $1 END; $$
LANGUAGE sql IMMUTABLE STRICT;

CREATE FUNCTION dump("any")
RETURNS varchar
AS 'MODULE_PATHNAME', 'orafce_dump'
Expand Down
15 changes: 15 additions & 0 deletions orafce-common.sql
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,21 @@ RETURNS numeric AS
$$ SELECT CASE WHEN $1 = 'NaN' THEN $2 ELSE $1 END; $$
LANGUAGE sql IMMUTABLE STRICT;

CREATE FUNCTION nanvl(float4, varchar)
RETURNS float4 AS
$$ SELECT CASE WHEN $1 = 'NaN' THEN $2::float4 ELSE $1 END; $$
LANGUAGE sql IMMUTABLE STRICT;

CREATE FUNCTION nanvl(float8, varchar)
RETURNS float8 AS
$$ SELECT CASE WHEN $1 = 'NaN' THEN $2::float8 ELSE $1 END; $$
LANGUAGE sql IMMUTABLE STRICT;

CREATE FUNCTION nanvl(numeric, varchar)
RETURNS numeric AS
$$ SELECT CASE WHEN $1 = 'NaN' THEN $2::numeric ELSE $1 END; $$
LANGUAGE sql IMMUTABLE STRICT;

CREATE FUNCTION dump("any")
RETURNS varchar
AS 'MODULE_PATHNAME', 'orafce_dump'
Expand Down
8 changes: 8 additions & 0 deletions sql/orafce.sql
Original file line number Diff line number Diff line change
Expand Up @@ -522,6 +522,14 @@ SELECT nanvl(12345, 1), nanvl('NaN', 1);
SELECT nanvl(12345::float4, 1), nanvl('NaN'::float4, 1);
SELECT nanvl(12345::float8, 1), nanvl('NaN'::float8, 1);
SELECT nanvl(12345::numeric, 1), nanvl('NaN'::numeric, 1);
SELECT nanvl(12345, '1'::varchar), nanvl('NaN', 1::varchar);
SELECT nanvl(12345::float4, '1'::varchar), nanvl('NaN'::float4, '1'::varchar);
SELECT nanvl(12345::float8, '1'::varchar), nanvl('NaN'::float8, '1'::varchar);
SELECT nanvl(12345::numeric, '1'::varchar), nanvl('NaN'::numeric, '1'::varchar);
SELECT nanvl(12345, '1'::char), nanvl('NaN', 1::char);
SELECT nanvl(12345::float4, '1'::char), nanvl('NaN'::float4, '1'::char);
SELECT nanvl(12345::float8, '1'::char), nanvl('NaN'::float8, '1'::char);
SELECT nanvl(12345::numeric, '1'::char), nanvl('NaN'::numeric, '1'::char);

select dbms_assert.enquote_literal('some text '' some text');
select dbms_assert.enquote_name('''"AAA');
Expand Down
3 changes: 3 additions & 0 deletions uninstall_orafce.sql
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ DROP FUNCTION tanh(float8);
DROP FUNCTION nanvl(float4, float4);
DROP FUNCTION nanvl(float8, float8);
DROP FUNCTION nanvl(numeric, numeric);
DROP FUNCTION nanvl(float4, varchar);
DROP FUNCTION nanvl(float8, varchar);
DROP FUNCTION nanvl(numeric, varchar);
DROP FUNCTION to_multi_byte(text);

DROP FUNCTION decode(anyelement, anyelement, text);
Expand Down

0 comments on commit 3d55627

Please sign in to comment.