Thread: libpq PQexecParams & value placeholders
Hi, all. Do we really need a numeric value placeholders like $1 in command string? Construction of such string for complex non-static queries is very annoying. Why do we can't simply use $$ placeholder, which take the next value from an array of values? -- Олег Неманов (Oleg Nemanov)
пт, 14 дек. 2018 г. в 14:33, Oleg <lego12239@yandex.ru>: > > Hi, all. > > Do we really need a numeric value placeholders like $1 in command string? It's a syntax defined at the backend side. (https://www.postgresql.org/docs/current/sql-prepare.html) > Construction of such string for complex non-static queries is very annoying. That's why there are libraries like Pgfe (https://github.com/dmitigr/pgfe) or libpqtypes (http://libpqtypes.esilo.com/) > Why do we can't simply use $$ placeholder, which take the next value from an > array of values? Because $$ means a dollar-quoted opening tag (https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING)
On Fri, Dec 14, 2018 at 02:47:12PM +0300, Dmitry Igrishin wrote: > пт, 14 дек. 2018 г. в 14:33, Oleg <lego12239@yandex.ru>: > > > > Hi, all. > > > > Do we really need a numeric value placeholders like $1 in command string? > It's a syntax defined at the backend side. > (https://www.postgresql.org/docs/current/sql-prepare.html) I know this, but i can't understand why this approach is used. > > Construction of such string for complex non-static queries is very annoying. > That's why there are libraries like Pgfe > (https://github.com/dmitigr/pgfe) or libpqtypes This is C++ :-(. > (http://libpqtypes.esilo.com/) This is great! PQexecf() is what i need. Why this api is not the part of libpq? Thank you for the link! > > Why do we can't simply use $$ placeholder, which take the next value from an > > array of values? > Because $$ means a dollar-quoted opening tag > (https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING) Ok. We can use any other placeholder string for such purpose. But not numeric placeholders - these are not convenient. -- Олег Неманов (Oleg Nemanov)
On Fri, Dec 14, 2018 at 6:09 AM Oleg <lego12239@yandex.ru> wrote: > > On Fri, Dec 14, 2018 at 02:47:12PM +0300, Dmitry Igrishin wrote: > > пт, 14 дек. 2018 г. в 14:33, Oleg <lego12239@yandex.ru>: > > > > > > Hi, all. > > > > > > Do we really need a numeric value placeholders like $1 in command string? > > It's a syntax defined at the backend side. > > (https://www.postgresql.org/docs/current/sql-prepare.html) > > I know this, but i can't understand why this approach is used. > > > > Construction of such string for complex non-static queries is very annoying. > > That's why there are libraries like Pgfe > > (https://github.com/dmitigr/pgfe) or libpqtypes > > This is C++ :-(. > > > (http://libpqtypes.esilo.com/) > > This is great! PQexecf() is what i need. Why this api is not the part of libpq? > Thank you for the link! FYI, I need to move the project to github and I have a few bugfixes that have not been sent up yet. Please let me know if you have any issues. The postgres core team very graciously extended the libpq API in order to make libpqtypes work seamlessly with libpq, so they deserve some credit here. Direct C programming against the database is a somewhat niche developer segment and when incorporating new libraries there you have to carefully manage usefulness vs support down the line. Having said that I still believe it remains to be the best way to write against the libpq API, or C database development generally. There's nothing else like it FWICT. I personally lost some interest in the project when the json train really started to leave the station as it changed the way I developed against the database. merlin