-
Notifications
You must be signed in to change notification settings - Fork 347
Description
I'm trying to use pglite with a libpq-based application. I'm using pg-gateway as a proxy.
Following sample C code snippet (which calls PQprepare and PQexecPrepared) seems not work with pglite.
int main(int argc, char** argv) {
char conninfo[200];
const char *port = argv[1];
sprintf(conninfo, "host=localhost port=%s dbname=postgres user=psi password=abc", port);
PGconn *conn;
PGresult *res;
const char *paramValues[1];
paramValues[0] = argv[2];
conn = PQconnectdb(conninfo);
const char *stmtName = "my_statement";
const char *sql = "select $1";
res = PQprepare(conn, stmtName, sql, 1, NULL);
PQclear(res);
res = PQexecPrepared(conn, stmtName, 1, paramValues, NULL, NULL, 0);
if (PQresultStatus(res) != PGRES_TUPLES_OK) {
fprintf(stderr, "Execution of statement failed: %s", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
printf("%s\n", PQgetvalue(res, 0, 0));
PQclear(res);
PQfinish(conn);
return 0;
}When I run this using a normal Postgres database I get the expected result:
willem@FH3T244:~/test$ ./pg 5432 hello
hello
willem@FH3T244:~/test$
When I use pglite, I get this:
willem@FH3T244:~/test$ ./pg 5433 hello
DEBUG: parse my_statement: select $1
DEBUG: bind <unnamed> to my_statement
Execution of statement failed:
Code snippet from the server, mostly borrowed from https://github.com/supabase-community/pg-gateway?tab=readme-ov-file#pglite:
async onMessage(data, { isAuthenticated }) {
if (!isAuthenticated) {
return false;
}
try {
const d = await db.execProtocolRaw(data);
socket.write(d);
} catch (err) {
console.log(err)
connection.sendError(err);
connection.sendReadyForQuery();
}
...Seems to happen on both Linux and Windows. When I don't use prepared statements (e.g. by using PQexec), it seems to work as expected.
BracketJohn and nythrox
Metadata
Metadata
Assignees
Labels
No labels