Re: proposal: schema PL session variables - Mailing list pgsql-hackers

From Corey Huinker
Subject Re: proposal: schema PL session variables
Date
Msg-id CADkLM=dEgfX8kR8Qm+34ch9+Jj0Voic52PMabsR88meOQPqnLg@mail.gmail.com
Whole thread Raw
In response to Re: proposal: schema PL session variables  ("David G. Johnston" <david.g.johnston@gmail.com>)
Responses Re: proposal: schema PL session variables
List pgsql-hackers
On Tue, Feb 9, 2016 at 2:55 PM, David G. Johnston <david.g.johnston@gmail.com> wrote:
On Tue, Feb 9, 2016 at 11:32 AM, Corey Huinker <corey.huinker@gmail.com> wrote:

Oh, and I suggest we call them SESSION variables rather than SCHEMA variables, to reinforce the idea of how long the values in the variables live. A session variable is in a sense a 1x1 temp table, whose definition persists across sessions but whose value does not.

Of course, if they do persist across sessions, then yeah, SCHEMA makes more sense. But every package variable in Oracle PL/SQL was initialized when the package was first loaded into the session.


​The key distinction for SCHEMA was that all functions in the schema would be able to see them (and only those in the schema).

I am a bit partial, with little deep thought, to the IMPORT mechanic.  Changing them to actual session variables would be doable and you could allow for the IMPORT specification to use search_path or explicit means to locate said variables regardless of which schema​
 
​they exist in.

However, part of the goal is to blend into the broader database community and thus increase porting capabilities.  I'm not sure how well this would help fulfill that goal.


We're not going to get source compatibility without implementing packages, and there's no enthusiasm for that. It's been stated a few times before by some that the only value they see in packages is the package/session variables. Pavel's idea gives us that.

I forgot to mention that if we're FROM-phobic the syntax could also be
IMPORT my_schema.bar AS g_localtext IN OUT text 

Either way, you get the idea: the function defines what external globals it's willing to see, and gives an alias for them, and it's the same regardless of what the function language is.


 

pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Multi-tenancy with RLS
Next
From: Jim Nasby
Date:
Subject: Convert pltcl from strings to objects