Search Postgresql Archives

Re: can I define own variables?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tom Lane wrote:
Sam Mason <sam@xxxxxxxxxxxxx> writes:
On Sat, Oct 13, 2007 at 12:18:45AM +0200, Andreas wrote:
can I define connection-global variables within a ODBC connection ?

You could use a temporary table, keyed on the variable name.  Not
particularly nice to use, but it works.  You can create accessor
functions reasonably easily if you want.

Another possibility, if you only need to store and retrieve values
and not do anything especially interesting with them, is to abuse
the "custom GUC variable" facility.  This is meant to provide
placeholder parameter settings for dynamically-loaded extension
modules, but there's nothing stopping you from setting and reading
a variable that in fact will never be used by any extension module.

To do this, you need to set custom_variable_classes in postgresql.conf,
perhaps
	custom_variable_classes = user_vars

and then you can do things like

	SET user_vars.foo = whatever;
	SHOW user_vars.bar;

Of course, this is a hack of the first water, and you should expect
that it might break sometime in the future.  But I don't think we'd
break it without providing some alternative solution.

I've had several occasions when a user-defined variable would have come in handy. What is the scope of user_vars as you've defined them above? Are they unique to a connection? A user_id? Or defined globally? Ideally, they would be connection-unique. One place they would come in really handy is with web-apps using connection pooling. I could stuff the userid of the person who connected to my secure website into a user_var, then the database could access that to track user actions. Right now, that is cumbersome to do, since the current_user is always the same: the userid for the connection pool.

I'm actually surprised that such a common usage scenario has not forced connection-unique user-defined variables into the spec.

--
Guy Rouillier

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org/

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux