2017-05-09 23:00 GMT+02:00 Daniel Verite <dan...@manitou-mail.org>:

>         Pavel Stehule wrote:
>
> > 1. using psql variables - we just need to write commands \setfrom
> > \setfrombf - this should be very simple implementation. The value can be
> > used more times. On second hand - the loaded variable can hold lot of
> > memory (and it can be invisible for user).
>
> This could be simplified by using the variable only for the filename,
> and then injecting the contents of the file into the PQexec'd query
> as the interpolation of the variable.
> We already have:
>  :var for verbatim injection
>  :'var' for injection quoted-as-text
>  :"var" for injection quoted-as-identifier
>
> What if we add new forms of dereferencing, for instance
> (not necessarily with this exact syntax):
>  :<var> for injecting the quoted-as-text contents of the file pointed
>   to by var.
>  :{var} same thing but with file contents quoted as binary
>  (PQescapeByteaConn)
>
> then we could write:
>
> \set img '/path/to/image.png'
> insert into image(binary) values(:{img});
>

It is similar to my first or second proposal - rejected by Tom :(


>
> We could also go further  in that direction. More new interpolation
> syntax could express that a variable is to be passed as a
> parameter rather than injected (assuming a parametrized query),
> and whether the value is directly the contents or it's a filename
> pointing to the contents, and whether its format is binary or text,
> and even support an optional oid or typename coupled to
> the variable.
> That would be a lot of new syntax for interpolation but no new
> backslash command and no change to \set itself.
>
>
> Best regards,
> --
> Daniel Vérité
> PostgreSQL-powered mailer: http://www.manitou-mail.org
> Twitter: @DanielVerite
>

Reply via email to