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