New release of plpgsql_check
plpgsql_check 1.2.1 is available. Now there some analyse of dead code and detection of missing RETURN command is included.
create or replace function fx(x int)
returns int as $$
begin
begin
if (x > 0) then
raise exception 'xxx' using errcode = 'XX888';
else
raise exception 'yyy' using errcode = 'YY888';
end if;
return -1; -- dead code;
end;
return -1;
end;
$$ language plpgsql;
select * from plpgsql_check_function_tb('fx(int)');
functionid | lineno | statement | sqlstate | message | detail | hint | level | position | query | context.
------------+--------+-----------+----------+------------------+--------+------+---------------+----------+-------+---------
fx | 9 | RETURN | 00000 | unreachable code | | | warning extra | | |.
fx | 11 | RETURN | 00000 | unreachable code | | | warning extra | | |.
(2 rows)
create or replace function fx(x int)
returns int as $$
begin
begin
if (x > 0) then
raise exception 'xxx' using errcode = 'XX888';
else
raise exception 'yyy' using errcode = 'YY888';
end if;
exception
when sqlstate 'XX888' then
null;
when sqlstate 'YY888' then
null;
end;
end; -- missing return;
$$ language plpgsql;
select * from plpgsql_check_function_tb('fx(int)');
functionid | lineno | statement | sqlstate | message | detail | hint | level | position | query | context.
------------+--------+-----------+----------+------------------------------------------------+--------+------+-------+----------+-------+---------
fx | | | 2F005 | control reached end of function without RETURN | | | error | | |.
(1 row)
Source code: https://github.com/okbob/plpgsql_check/releases


0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home