From: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Gerhard Häring <lists(at)ghaering(dot)de>, pgsql-interfaces(at)postgresql(dot)org |
Subject: | Re: I want to send comments to the backend! |
Date: | 2003-03-20 18:04:03 |
Message-ID: | 200303201804.h2KI43b23863@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces |
Tom Lane wrote:
> Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> writes:
> > Yes, I see that now. res is NULL and PQresultStatus() is returning
> > PGRES_NONFATAL_ERROR. What is strange is that "" and "\n" both return
> > an OK result, so I am trying to figure out why comments are different.
>
> The backend special-cases an input string that contains only whitespace
> (look in postgres.c). The special case doesn't apply here, though.
>
> >> Perhaps PGRES_EMPTY_QUERY would be more appropriate? Not sure where in
> >> the chain would be best to change the behavior, though.
>
> > Yes.
>
> Well, we could change the backend --- but that would be a nontrivial
> change, and to tell you the truth I think the special response for empty
> query is a wart on the protocol anyhow. In the long run I'd rather get
> rid of it.
Yes, I see that now:
if (strspn(parser_input->data, " \t\r\n") == parser_input->len)
> Or we could change PQexec to return a PGRES_EMPTY_QUERY result if it
> gets nothing back from the backend except ReadyForQuery. Question is,
> does that create the possibility of masking error conditions?
>
> Or we could just change PQresultStatus to return PGRES_EMPTY_QUERY for
> a null input. Attractive 'cause it's a one-line change, but I think it
> really does create the possibility of masking errors --- application
> programmer errors, mostly.
Could we change the backend to return NullCommand() if the query string
was empty, rather than checking for whitespace directly? I thought the
whitespace test was there only as a performance hack. In fact, the
comment in postgres.c says that:
* if there is nothing in the input buffer, don't
* bother trying to parse and execute anything; just
* send back a quick NullCommand response.
In pg_exec_query_string(), if nothing is processed, we can do the call
there. or course assuming destination is correct?
--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2003-03-20 18:43:08 | Re: I want to send comments to the backend! |
Previous Message | Tom Lane | 2003-03-20 17:30:54 | Re: I want to send comments to the backend! |