On Tue, Dec 19, 2017 at 2:24 PM, Kevin Burke <kev@xxxxxxxxxxx> wrote:
- Run the file, making changes as necessary.- Copy the function to another file.Or:- Call the function with the test arguments, and view the resulting table. Modify/reload/rerun as appropriate.- Reload the function.- Modify the function return to contain the columns for cte3. (I don't think there is a way to indicate RETURNS * or similar wildcard)The function is not returning the correct results; I think the problem is in cte2 or cte3. What's the easiest way to debug this? I would like to send some test inputs through the program, observe the output from cte3, and modify the values and see if I get the correct new answers. Here are the approaches I know right now:SELECT X as arg5, Y as arg6 FROM cte5;cte5 AS ( ... )cte4 AS ( ... ),cte3 AS ( ... ),I'm writing a function that looks a little like this:cte2 AS ( ... ),
DROP FUNCTION IF EXISTS myfunction;
CREATE OR REPLACE FUNCTION myfunction(arg1 uuid,
_symbol text,
_start timestamp with time zone,
_end timestamp with time zone
) RETURNS TABLE (arg5 date, arg6 float)
AS $$
WITH cte1 AS ( ... ),
$$- Delete the function prologue and epilogue- Replace every use of the input arguments with the hardcoded values I want to test withThis seems pretty cumbersome. Is there an easier way I am missing? Specifically it would be neat if it was easier to visualize the intermediate steps in the query production. If there are professional tools that help with this I would appreciate pointers to those as well.
You would probably want to debug the function in interactive mode to find out where you went wrong.
Both PgAdmin III and PgAdmin 4 can use the debugger from EnterpriseDB
https://www.pgadmin.org/docs/pgadmin3/1.22/debugger.html
https://www.pgadmin.org/docs/pgadmin4/dev/debugger.html
https://www.pgadmin.org/docs/pgadmin3/1.22/debugger.html
https://www.pgadmin.org/docs/pgadmin4/dev/debugger.html
--
Melvin Davidson
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.