Re: I want to send comments to the backend!

Поиск
Список
Период
Сортировка
От Gerhard Häring
Тема Re: I want to send comments to the backend!
Дата
Msg-id 3E79E5B0.4020703@ghaering.de
обсуждение исходный текст
Ответ на Re: I want to send comments to the backend!  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: I want to send comments to the backend!  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-interfaces
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
>
>>Gerhard Häring wrote:
>>
>>>Why can't I send comments like
>>>-- a comment
>>>to the backend using libpq? Are these only handled in psql? Please allow to
>>>send comments to the backend, as I really need them.
>
>
>>The backend should handle them fine.  Can you give us pgsql version and
>>an example.
>
> I think he's complaining that psql strips out the comments before
> sending stuff to the backend.  Unfortunately, most of the world probably
> considers that a feature, not a bug.

Me too. The problem is I use *libpq*. My question was badly asked. I
don't care wether the comments end up on the backend, but I want to be
able to send comments to libpq.

I'd still expect the backend would handle comments, though, should I
chose to implement the network protocol myself, without using libpq.

> I'm quite certain that libpq does not strip comments, so the complaint
> isn't strictly accurate...

Then why does the attached program not work? Sorry for sending it twice,
  my first post is stalled because of an overzealeous TMDA proxy on my side.

-- Gerhard
/*
 * testlibpq.c
 *
 * Test the C version of libpq, the PostgreSQL frontend
 * library.
 */
#include <stdio.h>
#include <libpq-fe.h>

void
exit_nicely(PGconn *conn)
{
    PQfinish(conn);
    exit(1);
}

main()
{
    char       *pghost,
               *pgport,
               *pgoptions,
               *pgtty;
    char       *dbName;
    int         nFields;
    int         i,
                j;

    /* FILE *debug; */

    PGconn     *conn;
    PGresult   *res;

    /*
     * begin, by setting the parameters for a backend connection if the
     * parameters are null, then the system will try to use reasonable
     * defaults by looking up environment variables or, failing that,
     * using hardwired constants
     */
    pghost = NULL;              /* host name of the backend server */
    pgport = NULL;              /* port of the backend server */
    pgoptions = NULL;           /* special options to start up the backend
                                 * server */
    pgtty = NULL;               /* debugging tty for the backend server */
    dbName = "template1";

    /* make a connection to the database */
    conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);

    /*
     * check to see that the backend connection was successfully made
     */
    if (PQstatus(conn) == CONNECTION_BAD)
    {
        fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
        fprintf(stderr, "%s", PQerrorMessage(conn));
        exit_nicely(conn);
    }

    /* debug = fopen("/tmp/trace.out","w"); */
    /* PQtrace(conn, debug);  */

    /* start a transaction block */
    res = PQexec(conn, "-- foobar");
    if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
    {
        fprintf(stderr, "couldn't process comment\n");
        PQclear(res);
        exit_nicely(conn);
    }

    /*
     * should PQclear PGresult whenever it is no longer needed to avoid
     * memory leaks
     */
    PQclear(res);

    /* close the connection to the database and cleanup */
    PQfinish(conn);

    /* fclose(debug); */
    return 0;
}

В списке pgsql-interfaces по дате отправления:

Предыдущее
От: Gerhard Häring
Дата:
Сообщение: Re: I want to send comments to the backend!
Следующее
От: Tom Lane
Дата:
Сообщение: Re: I want to send comments to the backend!