Обсуждение: Inspect values of prepared statements

Поиск
Список
Период
Сортировка

Inspect values of prepared statements

От
Natalie Wenz
Дата:
Is there any way for an administrator to view the values of a prepared statement that is currently executing?

Thanks!
Natalie

Re: Inspect values of prepared statements

От
"Joshua D. Drake"
Дата:
On 05/02/2016 10:51 AM, Natalie Wenz wrote:
> Is there any way for an administrator to view the values of a prepared statement that is currently executing?

statement logging will do it.

>
> Thanks!
> Natalie
>


--
Command Prompt, Inc.                  http://the.postgres.company/
                         +1-503-667-4564
PostgreSQL Centered full stack support, consulting and development.
Everyone appreciates your honesty, until you are honest with them.


Re: Inspect values of prepared statements

От
Natalie Wenz
Дата:
Is it possible to turn that on without interrupting current traffic?


> On May 2, 2016, at 12:54 PM, Joshua D. Drake <jd@commandprompt.com> wrote:
>
> On 05/02/2016 10:51 AM, Natalie Wenz wrote:
>> Is there any way for an administrator to view the values of a prepared statement that is currently executing?
>
> statement logging will do it.
>
>>
>> Thanks!
>> Natalie
>>
>
>
> --
> Command Prompt, Inc.                  http://the.postgres.company/
>                        +1-503-667-4564
> PostgreSQL Centered full stack support, consulting and development.
> Everyone appreciates your honesty, until you are honest with them.



Re: Inspect values of prepared statements

От
"Joshua D. Drake"
Дата:
On 05/02/2016 11:00 AM, Natalie Wenz wrote:
> Is it possible to turn that on without interrupting current traffic?

Yes with a HUP or reload.

JD


>
>
>> On May 2, 2016, at 12:54 PM, Joshua D. Drake <jd@commandprompt.com> wrote:
>>
>> On 05/02/2016 10:51 AM, Natalie Wenz wrote:
>>> Is there any way for an administrator to view the values of a prepared statement that is currently executing?
>>
>> statement logging will do it.
>>
>>>
>>> Thanks!
>>> Natalie
>>>
>>
>>
>> --
>> Command Prompt, Inc.                  http://the.postgres.company/
>>                         +1-503-667-4564
>> PostgreSQL Centered full stack support, consulting and development.
>> Everyone appreciates your honesty, until you are honest with them.
>
>
>


--
Command Prompt, Inc.                  http://the.postgres.company/
                         +1-503-667-4564
PostgreSQL Centered full stack support, consulting and development.
Everyone appreciates your honesty, until you are honest with them.


Re: Inspect values of prepared statements

От
Natalie Wenz
Дата:
Oh, interesting. I didn't realize you could change that on the fly. That's helpful. 

So, I tried turning statement logging on and that didn't give me any more detail. I think that is because the query I want to inspect is generating an error (which I failed to mention in my original question).

ERROR:  invalid input syntax for type double precision: "A"
STATEMENT:  insert into x (a,b,c,d,e,f) VALUES ($1,$2,$3,$4,$5,$6)

columns c, d, e are all double precision, so I'm not sure which one has the bad data. If I knew what values $1 and $2 were, I could pinpoint the record that is generating the error.

So, my revised question: is there any way to inspect the values from a prepared statement when the query contains an error? Or some combination of logging settings that would give me that detail?

Thanks!

On May 2, 2016, at 1:06 PM, Joshua D. Drake <jd@commandprompt.com> wrote:

On 05/02/2016 11:00 AM, Natalie Wenz wrote:
Is it possible to turn that on without interrupting current traffic?

Yes with a HUP or reload.

JD




On May 2, 2016, at 12:54 PM, Joshua D. Drake <jd@commandprompt.com> wrote:

On 05/02/2016 10:51 AM, Natalie Wenz wrote:
Is there any way for an administrator to view the values of a prepared statement that is currently executing?

statement logging will do it.


Thanks!
Natalie



--
Command Prompt, Inc.                  http://the.postgres.company/
                       +1-503-667-4564
PostgreSQL Centered full stack support, consulting and development.
Everyone appreciates your honesty, until you are honest with them.





-- 
Command Prompt, Inc.                  http://the.postgres.company/
                       +1-503-667-4564
PostgreSQL Centered full stack support, consulting and development.
Everyone appreciates your honesty, until you are honest with them.

Re: Inspect values of prepared statements

От
"Joshua D. Drake"
Дата:
On 05/02/2016 11:41 AM, Natalie Wenz wrote:
> Oh, interesting. I didn't realize you could change that on the fly.
> That's helpful.

>
> So, my revised question: is there any way to inspect the values from a
> prepared statement when the query contains an error? Or some combination
> of logging settings that would give me that detail?
>

What version are you running? Also check log_min_error_statement

Sincerely,

JD

--
Command Prompt, Inc.                  http://the.postgres.company/
                         +1-503-667-4564
PostgreSQL Centered full stack support, consulting and development.
Everyone appreciates your honesty, until you are honest with them.


Re: Inspect values of prepared statements

От
Natalie Wenz
Дата:
Thanks, I did check log_min_error_statement; no additional information.  I also tried dialing
log_min_duration_statementto 0, same result. Both things *did* show the values used for other, successful, queries that
wereusing prepared statements. But in the case of the query that was triggering the error, none of those options logged
thevalues used in the prepared statement. Is that expected behavior? 

We're running postgres 9.3.11 on that server.

Thanks again,
Natalie

> On May 2, 2016, at 2:13 PM, Joshua D. Drake <jd@commandprompt.com> wrote:
>
> On 05/02/2016 11:41 AM, Natalie Wenz wrote:
>> Oh, interesting. I didn't realize you could change that on the fly.
>> That's helpful.
>
>>
>> So, my revised question: is there any way to inspect the values from a
>> prepared statement when the query contains an error? Or some combination
>> of logging settings that would give me that detail?
>>
>
> What version are you running? Also check log_min_error_statement
>
> Sincerely,
>
> JD
>
> --
> Command Prompt, Inc.                  http://the.postgres.company/
>                        +1-503-667-4564
> PostgreSQL Centered full stack support, consulting and development.
> Everyone appreciates your honesty, until you are honest with them.



Re: Inspect values of prepared statements

От
"Joshua D. Drake"
Дата:
On 05/02/2016 02:10 PM, Natalie Wenz wrote:
> Thanks, I did check log_min_error_statement; no additional information.  I also tried dialing
log_min_duration_statementto 0, same result. Both things *did* show the values used for other, successful, queries that
wereusing prepared statements. But in the case of the query that was triggering the error, none of those options logged
thevalues used in the prepared statement. Is that expected behavior? 
>
> We're running postgres 9.3.11 on that server.

Can you attach your postgresql.conf?

--
Command Prompt, Inc.                  http://the.postgres.company/
                         +1-503-667-4564
PostgreSQL Centered full stack support, consulting and development.
Everyone appreciates your honesty, until you are honest with them.


Re: Inspect values of prepared statements

От
Tom Lane
Дата:
Natalie Wenz <nataliewenz@ebureau.com> writes:
> So, I tried turning statement logging on and that didn't give me any more detail. I think that is because the query I
wantto inspect is generating an error (which I failed to mention in my original question). 

> ERROR:  invalid input syntax for type double precision: "A"
> STATEMENT:  insert into x (a,b,c,d,e,f) VALUES ($1,$2,$3,$4,$5,$6)

> columns c, d, e are all double precision, so I'm not sure which one has the bad data. If I knew what values $1 and $2
were,I could pinpoint the record that is generating the error. 

Ah.  You're out of luck on that, I'm afraid, because what the
parameter-value logging code does is to print from the converted internal
forms of the parameters.  If you get an error while converting the values
to internal form, which is evidently what happened here, no log for you.

Also, that conversion happens on-the-fly as each Bind message field is
read.  Thus, for example, if the bad input is for parameter $2 then we
simply can't print the remaining parameter values, because we have not
seen them yet.  (This could be fixed, perhaps, but it would involve a
lot of restructuring and probably slow things down.  Also it wouldn't
work for parameters arriving in binary form; which is probably what led
us to make the choice to do parameter logging this way.)

What I think we could do without too much trouble or overhead is to set
up errcontext data so that a failure like that could come with a CONTEXT
line like

ERROR:  invalid input syntax for type double precision: "A"
STATEMENT:  insert into x (a,b,c,d,e,f) VALUES ($1,$2,$3,$4,$5,$6)
CONTEXT: reading parameter $2 for statement "foo"

I'm curious whether that would be enough information to solve your
problem.

            regards, tom lane


Re: Inspect values of prepared statements

От
bricklen
Дата:

On Mon, May 2, 2016 at 2:40 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
What I think we could do without too much trouble or overhead is to set
up errcontext data so that a failure like that could come with a CONTEXT
line like

ERROR:  invalid input syntax for type double precision: "A"
STATEMENT:  insert into x (a,b,c,d,e,f) VALUES ($1,$2,$3,$4,$5,$6)
CONTEXT: reading parameter $2 for statement "foo"

I'm curious whether that would be enough information to solve your
problem.

I ran into this same problem a couple weeks ago, your suggestion above would have supplied enough information to debug the invalid input without having to jump through hoops at the application side.


Re: Inspect values of prepared statements

От
"David G. Johnston"
Дата:
On Mon, May 2, 2016 at 4:17 PM, bricklen <bricklen@gmail.com> wrote:

On Mon, May 2, 2016 at 2:40 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
What I think we could do without too much trouble or overhead is to set
up errcontext data so that a failure like that could come with a CONTEXT
line like

ERROR:  invalid input syntax for type double precision: "A"
STATEMENT:  insert into x (a,b,c,d,e,f) VALUES ($1,$2,$3,$4,$5,$6)
CONTEXT: reading parameter $2 for statement "foo"

I'm curious whether that would be enough information to solve your
problem.

I ran into this same problem a couple weeks ago, your suggestion above would have supplied enough information to debug the invalid input without having to jump through hoops at the application side.


​Agreed.  The times I encounter this I get hung up is figuring out which of 5 identically typed columns might be presenting the problem - typically because of an empty string error so searching is somewhat more tedious​.  If reporting the number is low-hanging fruit it is definitely worth picking off.

David J.