Re: Suggesting a libpq addition

Поиск
Список
Период
Сортировка
От Dmitriy Igrishin
Тема Re: Suggesting a libpq addition
Дата
Msg-id AANLkTikkAq_3=TWjSbYEufYaEZp704EqD9mF0pZvTuOY@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Suggesting a libpq addition  (Andrew Chernow <ac@esilo.com>)
Ответы Re: Suggesting a libpq addition  (Andrew Chernow <ac@esilo.com>)
Re: Suggesting a libpq addition  (Bruce Momjian <bruce@momjian.us>)
Список pgsql-hackers
IMO, it would be better to implement some utility functions to
make it easy to construct arrays dynamically for PQexecParams
and PQexecPrepared. This seems to me more universal solution
and it is useful for both -- high level libpq-libraries authors and for
those who like to use libpq directly.

2010/12/6 Andrew Chernow <ac@esilo.com>


That would be a *HUGE* piece of software compared the relatively small
thing I am suggesting...


Sometimes complex and large solutions are required for the simplest of ideas.  I believe this is one of those cases.  You can't solve the "printf style PQexec" properly by merely implementing a sprintf wrapper.


As for escaping (or not escaping) of string arguments, that can be seen
as a bug or a feature.  I do not wan't automatic escaping of string
arguments in all cases, e.g. I might to construct an SQL statement with
dynamic parts "WHERE xy" or "AND a = b".

hypothetical example:

filter = "WHERE name like 'Balmer%'";
if (sort == SORT_DESC)
       sort = " ORDER BY name DESCENDING";

PQvexec(conn, "SELECT name, nr, id FROM address %s%s", filter, sort);

So what I am aiming at right now is a PQvexec() function that basically
has printf() like semantics, but adds an additional token to the format
string (printf uses %s and %b to produce strings.) I am thinking of
adding %S and %B, which produce strings that are escaped.


This suffers from becoming cryptic over time, see Tom Lane's comments back in 2007 on this (http://archives.postgresql.org/pgsql-hackers/2007-12/msg00362.php). libpqtypes uses the human readable %schema.typename (schema is optional) to specify format specifiers.  There is no learning curve or ambiguity, if you want a point than use "%point", or "%my_type"....  libpqtypes allows you to register aliases (PQregisterSubClasses) so that you can map %text to %s to make it feel more like C..


--
Andrew Chernow
eSilo, LLC
every bit counts
http://www.esilo.com/

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers



--
// Dmitriy.


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

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: Re: WIP patch for parallel pg_dump
Следующее
От: Andrew Chernow
Дата:
Сообщение: Re: Suggesting a libpq addition