Thread: How do a user-defined function that returns a table executes a query?
Hi everyone,
I hope this message finds you in good health and spirits. I am reaching out to this incredible community for some guidance and advice. I am currently trying to understand how a user-defined function that returns a table executes a query.
In a normal SQL, we can use the EXPLAIN command to view the execution plan. However, in this case, I am not sure how a user-defined function work.
If anyone has faced a similar situation and found a way to view the execution plan, I would greatly appreciate your insights and suggestions.
Thank you for taking the time to read my message. I look forward to hearing from you.
Best regards,
I hope this message finds you in good health and spirits. I am reaching out to this incredible community for some guidance and advice. I am currently trying to understand how a user-defined function that returns a table executes a query.
In a normal SQL, we can use the EXPLAIN command to view the execution plan. However, in this case, I am not sure how a user-defined function work.
If anyone has faced a similar situation and found a way to view the execution plan, I would greatly appreciate your insights and suggestions.
Thank you for taking the time to read my message. I look forward to hearing from you.
Best regards,
Re: How do a user-defined function that returns a table executes a query?
From
"David G. Johnston"
Date:
On Tue, Feb 7, 2023 at 4:49 PM Katsuya Okizaki <miotsukushi0800@gmail.com> wrote:
In a normal SQL, we can use the EXPLAIN command to view the execution plan. However, in this case, I am not sure how a user-defined function work.
If anyone has faced a similar situation and found a way to view the execution plan, I would greatly appreciate your insights and suggestions.
David J.
On Wed, 2023-02-08 at 08:49 +0900, Katsuya Okizaki wrote: > In a normal SQL, we can use the EXPLAIN command to view the execution plan. > However, in this case, I am not sure how a user-defined function work. > > If anyone has faced a similar situation and found a way to view the execution plan, > I would greatly appreciate your insights and suggestions. I am not sure which of the following you want: 1. Get the execution plan of SQL statements run inside a function: For that, you would use "auto_explain" with "auto_explain.log_nested_statements = on". 2. Get a trace of the execution of the function code itself: For PL/pgSQL, there is "pldebugger" (https://github.com/EnterpriseDB/pldebugger), which can be used together with pgAdmin. I usually sprinkle the code with RAISE NOTICE statements. Yours, Laurenz Albe -- Cybertec | https://www.cybertec-postgresql.com
Re: How do a user-defined function that returns a table executes a query?
From
Katsuya Okizaki
Date:
Dear David,
Thank you for your prompt reply.
This is exactly what I was looking for. Thank you for your help.
Best regards,
Katsuya Okizaki
Thank you for your prompt reply.
This is exactly what I was looking for. Thank you for your help.
Best regards,
Katsuya Okizaki
2023年2月8日(水) 8:51 David G. Johnston <david.g.johnston@gmail.com>:
On Tue, Feb 7, 2023 at 4:49 PM Katsuya Okizaki <miotsukushi0800@gmail.com> wrote:In a normal SQL, we can use the EXPLAIN command to view the execution plan. However, in this case, I am not sure how a user-defined function work.
If anyone has faced a similar situation and found a way to view the execution plan, I would greatly appreciate your insights and suggestions.David J.
Re: How do a user-defined function that returns a table executes a query?
From
Katsuya Okizaki
Date:
Dear Laurenz,
Thank you for your help. As you suspected, I was seeking a way to view the execution plan of a function defined in SQL. Your suggestion was exactly what I needed and has been very helpful.
Additionally, I also appreciated learning about the debugging techniques for PL/pgSQL. Thank you for your valuable advice.
Best regards,
Katsuya OkizakiThank you for your help. As you suspected, I was seeking a way to view the execution plan of a function defined in SQL. Your suggestion was exactly what I needed and has been very helpful.
Additionally, I also appreciated learning about the debugging techniques for PL/pgSQL. Thank you for your valuable advice.
Best regards,
2023年2月8日(水) 19:18 Laurenz Albe <laurenz.albe@cybertec.at>:
On Wed, 2023-02-08 at 08:49 +0900, Katsuya Okizaki wrote:
> In a normal SQL, we can use the EXPLAIN command to view the execution plan.
> However, in this case, I am not sure how a user-defined function work.
>
> If anyone has faced a similar situation and found a way to view the execution plan,
> I would greatly appreciate your insights and suggestions.
I am not sure which of the following you want:
1. Get the execution plan of SQL statements run inside a function:
For that, you would use "auto_explain" with "auto_explain.log_nested_statements = on".
2. Get a trace of the execution of the function code itself:
For PL/pgSQL, there is "pldebugger" (https://github.com/EnterpriseDB/pldebugger),
which can be used together with pgAdmin.
I usually sprinkle the code with RAISE NOTICE statements.
Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com