Thread: BUG #2811: Error determining param type in prepared statement of unused variable

BUG #2811: Error determining param type in prepared statement of unused variable

From
"Ross Cohen"
Date:
The following bug has been logged online:

Bug reference:      2811
Logged by:          Ross Cohen
Email address:      rcohen@snurgle.org
PostgreSQL version: 8.2
Operating system:   linux (fedora core 4, released RPMS)
Description:        Error determining param type in prepared statement of
unused variable
Details:

Got this error:
ERROR:  could not determine data type of parameter $1

However, $1 is never used in the query so this shouldn't be a problem. The
following query demonstrates the problem.

PREPARE demo (unknown) AS SELECT 1;
"Ross Cohen" <rcohen@snurgle.org> writes:
> PREPARE demo (unknown) AS SELECT 1;
> ERROR:  could not determine data type of parameter $1

This doesn't seem like a bug to me.  The parser needs to be able to
resolve the types of any unknown parameters, and you've not given it
enough information to do that.

            regards, tom lane
On Wed, Dec 06, 2006 at 05:55:32PM -0500, Tom Lane wrote:
> "Ross Cohen" <rcohen@snurgle.org> writes:
> > PREPARE demo (unknown) AS SELECT 1;
> > ERROR:  could not determine data type of parameter $1
>
> This doesn't seem like a bug to me.  The parser needs to be able to
> resolve the types of any unknown parameters, and you've not given it
> enough information to do that.

It's not a bug, it's a feature request. It doesn't really need to be able
to resolve the type because the parameter will never be used. Yes, I'm being
lazy, it's possible for me to be more careful about what I pass in. On the
other hand, I think others would appreciate the ability to be this lazy,
as well.

Ross
Ross Cohen <rcohen@snurgle.org> writes:
> On Wed, Dec 06, 2006 at 05:55:32PM -0500, Tom Lane wrote:
>> "Ross Cohen" <rcohen@snurgle.org> writes:
>>> PREPARE demo (unknown) AS SELECT 1;
>>> ERROR:  could not determine data type of parameter $1
>>
>> This doesn't seem like a bug to me.  The parser needs to be able to
>> resolve the types of any unknown parameters, and you've not given it
>> enough information to do that.

> It's not a bug, it's a feature request.

One man's feature is another one's bug ;-).  The problem here is that
if we don't reject cases where parameters go unresolved, then we will
sometimes send back UNKNOWN as the "resolved" parameter type in Describe
Statement (the protocol-level message that is), and some client
libraries might spit up on that, because they won't know what to do with
the corresponding parameter value.  I recall a discussion on the jdbc
list a few months ago asking whether this would be OK, but they seemed
to think it wasn't a good idea.

            regards, tom lane