Search Postgresql Archives

Re: Error on query execution

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



H,

On Tue, Mar 4, 2025 at 8:37 PM Tom Lane <tgl@xxxxxxxxxxxxx> wrote:
>
> Igor Korot <ikorot01@xxxxxxxxx> writes:
> >     binaryIntVal = htonl( (uint32_t) type );
> >     paramValues[0] = (char *) &binaryIntVal;
> >     paramLengths[0] = sizeof( binaryIntVal );
> >     paramFormats[0] = 1;
>
> You're apparently trying to pass this parameter as an int4 ...
>
> >     res = PQexecParams( m_db, "SELECT * FROM abcatfmt WHERE abf_type =
> > $1", 1, nullptr, paramValues, paramLengths, paramFormats, 1 );
>
> ... but given that you didn't specify any data type, I think the
> parser will fall back to assuming that $1 is the same type as
> "abf_type", whatever that is.  Passing data in binary is not at all
> forgiving about getting the data type right.

Changing the line above to read:

    res = PQexecParams( m_db, "SELECT * FROM abcatfmt WHERE abf_type =
$1::smallint", 1, nullptr, paramValues, paramLengths, paramFormats, 1
);


results in:

$1 = L"ERROR:  incorrect binary data format in bind parameter 1\n"

I am now at a complete loss.

How do I fix the code so it will run?

Thank you.

>
>                         regards, tom lane






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux