Re: [GENERAL] Using Variables in Queries - Mailing list pgsql-general

From Igal @ Lucee.org
Subject Re: [GENERAL] Using Variables in Queries
Date
Msg-id 91b52f16-42d1-1f21-54f6-5b07d99f7e43@lucee.org
Whole thread Raw
In response to Re: [GENERAL] Using Variables in Queries  ("David G. Johnston" <david.g.johnston@gmail.com>)
Responses Re: [GENERAL] Using Variables in Queries  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: [GENERAL] Using Variables in Queries  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general

On 10/19/2017 8:44 AM, David G. Johnston wrote:

  ​PREPARE sqlquery AS​ SELECT * FROM products WHERE col1 LIKE $1 OR col2 LIKE $1;
 EXECUTE sqlquery('red widget');
This works, but requires `DEALLOCATE sqlquery` when you want to update it from what I've seen which is not very friendly.

 Alban's DO blocks are problematic since they are incapable of generating a result set.
Then that's a no-go for me because I definitely want a result set



 As Scott said people needing this functionality in PostgreSQL are content with using psql.
psql is very nice, but in the age of GUI it lacks a lot of stuff.  I am actually using DBeaver which I find to be an excellent  tool that works with any DBMS and can generate export/import scripts from migrating from one DMBS to another, which is what I'm after ATM.

 Adding lots of new custom syntax to pure server-side parsed SQL is a non-trivial undertaking whose need is reduced by the alternatives so described (functions, DO block, PREPARE, psql).
I still think that using server side variable is a much easier and intuitive way of doing this.  All of the alternatives have major flaws.

On 10/19/2017 8:40 AM, Pavel Stehule wrote:
There was lot of discussion about server side variables https://wiki.postgresql.org/wiki/Variable_Design, but nobody write final patch. There is not clean result if we want dynamic variables, static variables or both.
I'm not sure what is the difference between static and dynamic in this context?

p.s. Your query should be terribly slow. When I see it, I am less sure, so server side variables are good idea :)
My real query is for similarity here, so I'm testing different functions with the same value, e.g.

SELECT item_name
    , similarity('red widget', item_name)
    , similarity(item_name, 'red widget')
    , word_similarity('red widget', item_name)
    , word_similarity(item_name, 'red widget')
    , item_name <->> 'red widget'
    , item_name <<-> 'red widget'
    , 'red widget' <<-> item_name 
FROM  products
WHERE similarity('red widget', item_name) > 0.25
ORDER BY 'red widget' <<-> item_name

So each time I want to change the phrase it's a slower process than what I'm used to (think multiple-cursor in modern text editors, or a server-side variable)


Igal Sapir
Lucee Core Developer
Lucee.org



pgsql-general by date:

Previous
From: "Daniel Verite"
Date:
Subject: Re: [GENERAL] pgpass file type restrictions
Next
From: Pavel Stehule
Date:
Subject: Re: [GENERAL] Using Variables in Queries