Re: [HACKERS] proposal: schema variables - Mailing list pgsql-hackers

From Hannu Krosing
Subject Re: [HACKERS] proposal: schema variables
Date
Msg-id CAHDDfCnOQqSy5VzHHe0iiRrAdQYFq2GXzwY8GpLGMUQ5dYxYCw@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] proposal: schema variables  (Chris Travers <chris.travers@adjust.com>)
List pgsql-hackers
but you can always do 

with a (id, value) as (
  values (1, 'foo'), (2, 'bar'), (3, 'baz')
)
select set_config('custom.value',(select value from a where id = 2),true);

if you are worried about the evaluation order

On 29 October 2017 at 09:51, Chris Travers <chris.travers@adjust.com> wrote:


On Sat, Oct 28, 2017 at 4:56 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote:


The creating database objects and necessary infrastructure is the most simple task of this project. I'll be more happy if there are zero intersection because variables and GUC are designed for different purposes. But due SET keyword the intersection there is.

When I thinking about it, I have only one, but important reason, why I prefer design new type of database object -the GUC are stack based with different default granularity - global, database, user, session, function. This can be unwanted behave for variables - it can be source of hard to detected bugs. I afraid so this behave can be too messy for usage as variables.

@1 I have not clean opinion about it - not sure if rights are good enough - probably some user limits can be more practical - but can be hard to choose result when some user limits and GUC will be against

I was mostly thinking that users can probably set things like work_mem and possibly this might be a problem.
 
@2 With variables typed custom GUC are not necessary

I don't know about that.  For example with the geoip2lookup extension it is nice that you could set the preferred language for translation on a per user basis or the mmdb path on a per-db basis.
 
@3 Why you need it? It is possible with set_config function now.

Yeah you could do it safely with set_config and a CTE, but suppose I have:

with a (Id, value) as (values (1::Int, 'foo'), (2, 'bar'), (3, 'baz'))
SELECT set_config('custom_val', value) from a where id = 2;

What is the result out of this?  I would *expect* that this would probably run set_config 3 times and filter the output.
 

Regards

Pavel


 


regards

Pavel





--
Best Regards,
Chris Travers
Database Administrator






--
Best Regards,
Chris Travers
Database Administrator



pgsql-hackers by date:

Previous
From: Connor Wolf
Date:
Subject: [HACKERS] How to implement a SP-GiST index as a extension module?
Next
From: Michael Paquier
Date:
Subject: Re: [HACKERS] Implementing pg_receivewal --no-sync