#include <stdio.h>
#include <stdlib.h>
#include "libpq-fe.h"

static void exec(PGconn* conn, const char* param)
{
    const char* values[1] = {param};

    PGresult* res = PQexecParams(
        conn,
        "INSERT INTO test (id) VALUES ($1);",
        sizeof(values) / sizeof(*values),
        NULL, // types
        values,
        NULL, // lengths
        NULL, // formats
        1
    );

    printf("%s", PQresultErrorMessage(res));

    PQclear(res);
}

int main(int argc, char** argv)
{
    const char* conninfo;

    if (argc > 1) {
        conninfo = argv[1];
    } else {
        conninfo = "host=localhost";
    }

    PGconn* conn = PQconnectdb(conninfo);

    if (PQstatus(conn) != CONNECTION_OK)
    {
        fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn));
        exit(1);
    }

    PQexec(conn, "CREATE TEMPORARY TABLE test (id SERIAL PRIMARY KEY);");

    exec(conn, NULL);
    exec(conn, "default");

    PQfinish(conn);

    return 0;
}
