BUG #17195: Can't bind $1::int param when I use COPY TO STDOUT statement - libpq, C++

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: stankiewiczal(at)gmail(dot)com
Subject: BUG #17195: Can't bind $1::int param when I use COPY TO STDOUT statement - libpq, C++
Date: 2021-09-19 09:17:08
Message-ID: 17195-895cc4ceea72abbd@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 17195
Logged by: Aleksander Stankiewicz
Email address: stankiewiczal(at)gmail(dot)com
PostgreSQL version: 13.4
Operating system: Windows
Description:

I have test table like below:

--DROP TABLE test_point
CREATE TABLE test_point(
serie_id INT NOT NULL,
version_ts INT NOT NULL,
PRIMARY KEY (serie_id, version_ts)
);

I try to use parametrized query inside COPY TO statement. Te test case
showing the issue is below.
When I execute this short test I receive such message:
0x0000027645b28dc0 "ERROR: bind message supplies 1 parameters, but prepared
statement \"\" requires 0\n"

Test case:
TEST(TSStorage, CopyParamTest)
{
auto sql = "COPY(SELECT version_ts FROM test_point WHERE serie_id =
$1::int) TO STDOUT (FORMAT binary)";
auto connPtr =
PQconnectdb("postgresql://postgres:pswd(at)localhost/test_db");

int seriesIdParam = htonl(5); // or just put 5 directly here - doesn't
matter for the statement compilation here

const char *paramValues[] = {(const char *)&seriesIdParam};
const int paramLengths[] = {sizeof(seriesIdParam)};
const int paramFormats[] = {1}; // 1 means binary

auto result = PQexecParams(connPtr,
sql,
1, //nParams,
nullptr,
paramValues,
paramLengths,
paramFormats,
1); // Output format - binary

// Ensure it's in COPY_OUT state
if (PQresultStatus(result) != PGRES_COPY_OUT)
{
auto errorMsg = PQerrorMessage(connPtr);
int set_breakpoint_here = 0;
}

PQclear(result);
PQfinish(connPtr);
}

How to provide param for binding there?
When I use sql without COPY statement there it recognizes param without any
problems.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2021-09-19 14:20:26 Re: BUG #17061: Impossible to query the fields of the tuple created by SEARCH BREADTH FIRST BY .. SET ..
Previous Message Jaime Casanova 2021-09-18 22:20:17 Re: BUG #17061: Impossible to query the fields of the tuple created by SEARCH BREADTH FIRST BY .. SET ..