[prev in list] [next in list] [prev in thread] [next in thread]
List: postgresql-general
Subject: Re: PQexecParams, placeholders and variable lists of params
From: tomas () tuxteam ! de
Date: 2021-11-23 16:21:32
Message-ID: YZ0VDBMCPNhNcdot () tuxteam ! de
[Download RAW message or body]
On Tue, Nov 23, 2021 at 05:14:44PM +0100, Daniel Frey wrote:
> > On 23. Nov 2021, at 16:43, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> >
> > PG's array quoting rules are odd enough that I can sympathize with not
> > wanting to deal with them. (Although, if you only have to build an
> > array and not parse one, taking the always-quote-even-if-not-necessary
> > approach makes it easier.)
> >
> > I don't see many other alternatives though. *Somehow* you have to
> > separate one value from the next. If you don't want to pass 'em as
> > distinct parameters, then you have to obey some kind of composite-value
> > syntax.
>
> Would it be possible to extend PQexecParams() et.al. like this:
>
> You currently have paramValues[], paramLengths[], and paramFormats[] (plus other \
> parameters that I'll ignore here).
> The format may currently be 0 or 1 (TEXT or BINARY). What if we allow 2 for ARRAY? \
> The corresponding length then specifies how many parameters following are part of \
> the array. The value should point to a structure, that contains pointers to the \
> values, lengths, and formats of the elements. This also allows nested arrays.
That sounds attractive; I think for my particular case it'd be
overengineering, though...
> If the client library knows that the server is too old to understand it, it may \
> temporarily assemble a string for those (correctly escaped) values and replace the \
> entries in the original values/lengths/formats arrays temporarily before passing it \
> to the old PQexecParams() implementation.
> If the server is new enough the protocol itself can be extended to send the array \
> more efficiently instead of quoting and copying data around.
> This would also hide the quoting rules for arrays nicely, as it doesn't require \
> additional methods for escaping. (Currently, escaping for arrays is different from \
> other escaping methods, it needs to be done manually and, frankly, it's a PITA).
...but in the general case it sounds useful, yes :)
Cheers
- t
["signature.asc" (application/pgp-signature)]
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic