Thread: schema level variables and deferrable unique constraints

schema level variables and deferrable unique constraints

From
Paramveer.Singh@trilogy.com
Date:
<br /><font face="sans-serif" size="2">sorry my last mail went incomplete</font><br /><font color="#800080"
face="sans-serif"size="1">please read through this and ignore my last mail</font><br /><font color="#800080"
face="sans-serif"size="1">paraM</font><br /><font color="#800080" face="sans-serif" size="1"> </font><br /><font
color="#800080"face="sans-serif" size="1">----- Forwarded by Paramveer Singh/Trilogy on 20/09/2004 05:21 PM
-----</font><br/><table width="100%"><tr valign="top"><td></td><td><font face="sans-serif" size="1"><b>Paramveer
Singh</b></font><p><fontface="sans-serif" size="1">20/09/2004 05:56 PM</font><br /></td><td><font face="Arial"
size="1">       </font><br /><font face="sans-serif" size="1">        To:        pgsql-hackers@postgresql.org</font><br
/><fontface="sans-serif" size="1">        cc:        </font><br /><font face="sans-serif" size="1">        Subject:    
  schema level variables and deferrable unique constraints</font></td></tr></table><br /><br /><font face="sans-serif"
size="2">hi!</font><br/><font face="sans-serif" size="2">I apologize for mailing on the hackers list but I posted on
thegeneral list and did not get a good answer.</font><br /><font face="sans-serif" size="2">I have two independent
issues,but am addressing them together.</font><br /><br /><font face="sans-serif" size="2">1.</font><br /><font
face="sans-serif"size="2">Oracle has package level variables which are not mappable to any postgres
equivalent.</font><br/><font face="sans-serif" size="2">could we have something like schema scope variables which could
bedirectly referred from let's say plpgsql functions?</font><br /><font face="sans-serif" size="2">Can someone give me
somepointers on how to go about implementing this?</font><br /><br /><font face="sans-serif" size="2">2.</font><br
/><fontface="sans-serif" size="2">Postgres does not support deferrable unique constraints.</font><br /><font
face="sans-serif"size="2">we would however like to support this especially as some updates give non-standard behavior
becauseof this.</font><br /><font face="sans-serif" size="2">where do I start reading up on what all needs to be done
tosupport this?</font><br /><font face="sans-serif" size="2">I have no idea about the postgres codebase. I only
understandthe implementation of the plpgsql library.</font><br /><font face="sans-serif" size="2">Any pointers on where
tostart would be helpful</font><br /><br /><font face="sans-serif" size="2">thanks</font><br /><font face="sans-serif"
size="2">paraM</font><br/> 

Re: schema level variables and deferrable unique constraints

From
Tom Lane
Date:
Paramveer.Singh@trilogy.com writes:
> Oracle has package level variables which are not mappable to any postgres 
> equivalent.
> could we have something like schema scope variables which could be 
> directly referred from let's say plpgsql functions?
> Can someone give me some pointers on how to go about implementing this?

It seems more appropriate to me to store your values in a table
(variable name and value).  I don't see any strong need for a
system-level facility for this.
        regards, tom lane


Re: schema level variables and deferrable unique constraints

From
Andre
Date:
Tom Lane wrote:
> Paramveer.Singh@trilogy.com writes:
> 
>>Oracle has package level variables which are not mappable to any postgres 
>>equivalent.
>>could we have something like schema scope variables which could be 
>>directly referred from let's say plpgsql functions?
>>Can someone give me some pointers on how to go about implementing this?
> 
> 
> It seems more appropriate to me to store your values in a table
> (variable name and value).  I don't see any strong need for a
> system-level facility for this.
> 
Package variables are not transactional, additionaly they are
session based - each session has it's own variables(values).
You can assign initial(defult) values in package spec.
Using table for them would also imply several columns
for each datatype or several tables for them.

Andre


Re: schema level variables and deferrable unique constraints

From
Joe Conway
Date:
Andre wrote:
> Package variables are not transactional, additionaly they are
> session based - each session has it's own variables(values).
> You can assign initial(defult) values in package spec.
> Using table for them would also imply several columns
> for each datatype or several tables for them.

I did a crude implementation of session variables for my OSCON tutorial 
which can be found here:  http://www.joeconway.com/tut_oscon_2004.pdf
See the slides with myfunc_setvar(), myfunc_getvar(), and myfunc_rmvar().

I have a slightly improved version that I'm using on a production system 
with good results. You can get the tarball here:

http://www.joeconway.com/pgsession.tar.gz

There was another implementation of session variables based on shared 
memory floating around the lists somewhere. You might try searching the 
archives for that also.

HTH,

Joe


Re: schema level variables and deferrable unique constraints

From
Andrew Dunstan
Date:

Joe Conway wrote:

> Andre wrote:
>
>> Package variables are not transactional, additionaly they are
>> session based - each session has it's own variables(values).
>> You can assign initial(defult) values in package spec.
>> Using table for them would also imply several columns
>> for each datatype or several tables for them.
>
>
> I did a crude implementation of session variables for my OSCON 
> tutorial which can be found here:
>   http://www.joeconway.com/tut_oscon_2004.pdf
> See the slides with myfunc_setvar(), myfunc_getvar(), and myfunc_rmvar().
>
> I have a slightly improved version that I'm using on a production 
> system with good results. You can get the tarball here:
>
> http://www.joeconway.com/pgsession.tar.gz
>
> There was another implementation of session variables based on shared 
> memory floating around the lists somewhere. You might try searching 
> the archives for that also.
>
>

In 8.0 plperl has %_SHARED, which is essentially a stash for 
session-persistent data of arbitrary complexity. It's one of the new 
features. Writing get/set functions for them would be entirely trivial. 
Seeding them with inital defaults would involve an explicit function 
call at session startup - we don't have that automated for plperl yet.

cheers

andrew