Re: psql: Add command to use extended query protocol - Mailing list pgsql-hackers

From Jehan-Guillaume de Rorthais
Subject Re: psql: Add command to use extended query protocol
Date
Msg-id 20221102172435.4e8afb2d@karst
Whole thread Raw
In response to Re: psql: Add command to use extended query protocol  ("Daniel Verite" <daniel@manitou-mail.org>)
List pgsql-hackers
On Wed, 02 Nov 2022 16:04:02 +0100
"Daniel Verite" <daniel@manitou-mail.org> wrote:

>     Jehan-Guillaume de Rorthais wrote:
> 
> > As I wrote in my TCE review, would it be possible to use psql vars to set
> > some named parameters for the prepared query? This would looks like:
> > 
> >  \set p1 foo
> >  \set p2 bar
> >  SELECT :'p1', :'p2' \gp  
> 
> As I understand the feature, variables would be passed like this:
> 
> \set var1 'foo bar'
> \set var2 'baz''qux'
> 
> select $1, $2 \gp :var1 :var2
> 
>  ?column? | ?column? 
> ----------+----------
>  foo bar  | baz'qux
> 
> It appears to work fine with the current patch.

Indeed, nice.

> This is consistent with the fact that PQexecParams passes $N
> parameters ouf of the SQL query (versus injecting them in the text of
> the query)

I was not thinking about injecting them in the texte of the query, this
would not be using the extended protocol anymore, or maybe with no parameter,
but there's no point.

What I was thinking about is psql replacing the variables from the query text
with the $N notation before sending it using PQprepare.

> which is also why no quoting is needed.

Indeed, the quotes were not needed in my example.

Thanks,



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: spinlock support on loongarch64
Next
From: Tom Lane
Date:
Subject: Re: Segfault on logical replication to partitioned table with foreign children