On Fri, Aug 28, 2015 at 9:52 PM, Jim Nasby <jim.na...@bluetreble.com> wrote:
> On 8/28/15 3:58 AM, Shulgin, Oleksandr wrote: > >> It occurs to me the most flexible thing that could be done here >> would be providing a libpq function that spits out JSON connection >> parameters and have psql turn that into a variable. It would be easy >> to feed that to a SQL statement and do whatever you want with it at >> that point, including format it to a connection URI. >> >> >> Hm... but that would mean that suddenly psql would need JSON parsing >> capabilities and URI escaping code would have to be moved there too? So >> every client that links to libpq and wants to use this feature going as >> far as reconstructing an URI would need both of the capabilities. >> > > Anything that's doing this presumably has connected to the database, which > on any recent version means you have plenty of ability to process JSON at > the SQL layer. *Cough*... Well, the fact that it's technically not impossible, doesn't mean it's the right way to do it. By the same reasoning we can also ask the server to calculate 1+1 for us in SQL. :-) And that will work even with a 9.0 server, while parsing JSON -- not really. Another point is that you don't need an *alive* connection to be able to extract its URI/conninfo string, while when offloading JSON parsing part to the server you suddenly do. Bottom line for me: while still possible, this can't be portable. Why instead of JSON not spit conninfo format, with proper escaping? >> That could be a separate library call, e.g. PGgetConnectionString() and >> a separate backslash command: \conninfo >> > > Do you mean as a URI? The downside to that it's it's more difficult to > parse than JSON. Another option might be an array. > Hm... actually why not just use the existing call: PQconninfoOption *PQconninfo(PGconn *conn); and move whatever code is needed to form an URI or conninfo string to psql itself? The other issue is there's no way to capture \conninfo inside of psql and > do something with it. If instead this was exposed as a variable, you could > handle it in SQL if you wanted to. > Yeah, I forgot about the variable proposal, that would be a more useful way to expose it for sure. -- Alex