Specific database vars, again...

Started by Glus Xofabout 16 years ago10 messagesgeneral
Jump to latest
#1Glus Xof
gtglus@gmail.com

Hi again,

Maybe, I didn't explain my question enough.

I need to record properties that belongs to an specific database (and
so, they work at database level... not at global scope:

* Could I use the \set statements ? but... the vars defined are not in
a database scope but a global, aren't they ?... furthermore, could
save these vars when try to dump the database ??? )

* Or, must to create an specific one-row table ?.

Glus

#2Ben
bench@silentmedia.com
In reply to: Glus Xof (#1)
Re: [GENERAL] Specific database vars, again...

On Apr 20, 2010, at 10:53 AM, Glus Xof wrote:

Hi again,

Maybe, I didn't explain my question enough.

I need to record properties that belongs to an specific database (and
so, they work at database level... not at global scope:

* Or, must to create an specific one-row table ?.

Depending on how you intend to use these variables, this sounds like a fine idea to me. What are your problems with it?

#3Glus Xof
gtglus@gmail.com
In reply to: Ben (#2)
Re: [GENERAL] Specific database vars, again...

2010/4/20 Ben Chobot <bench@silentmedia.com>:

On Apr 20, 2010, at 10:53 AM, Glus Xof wrote:

Hi again,

Maybe, I didn't explain my question enough.

I need to record properties that belongs to an specific database (and
so, they work at database level... not at global scope:

* Or, must to create an specific one-row table ?.

Depending on how you intend to use these variables, this sounds like a fine idea to me. What are your problems with it?

The idea is storing values that can be remotely accessed by a
C++/libpqxx application. So, I just see that the first alternative
that I proposed (the use of \set variables) is really not good. But
the rest remains...

Now, the only option I have is to create a table, define one column
per variable, for using just one row. This can be accessed by a select
sql command...

You know other alternatives ???

Glus

#4Ben
bench@silentmedia.com
In reply to: Glus Xof (#3)
Re: [GENERAL] Specific database vars, again...

On Apr 20, 2010, at 12:35 PM, Glus Xof wrote:

2010/4/20 Ben Chobot <bench@silentmedia.com>:

On Apr 20, 2010, at 10:53 AM, Glus Xof wrote:

Hi again,

Maybe, I didn't explain my question enough.

I need to record properties that belongs to an specific database (and
so, they work at database level... not at global scope:

* Or, must to create an specific one-row table ?.

Depending on how you intend to use these variables, this sounds like a fine idea to me. What are your problems with it?

The idea is storing values that can be remotely accessed by a
C++/libpqxx application. So, I just see that the first alternative
that I proposed (the use of \set variables) is really not good. But
the rest remains...

Now, the only option I have is to create a table, define one column
per variable, for using just one row. This can be accessed by a select
sql command...

You know other alternatives ???

I could probably think of some, but why? Storing values in tables is a perfectly sensible way to allow clients to access per-database data.

#5Glus Xof
gtglus@gmail.com
In reply to: Ben (#4)
Re: [GENERAL] Specific database vars, again...

2010/4/20 Ben Chobot <bench@silentmedia.com>:

On Apr 20, 2010, at 12:35 PM, Glus Xof wrote:

2010/4/20 Ben Chobot <bench@silentmedia.com>:

On Apr 20, 2010, at 10:53 AM, Glus Xof wrote:

Hi again,

Maybe, I didn't explain my question enough.

I need to record properties that belongs to an specific database (and

so, they work at database level... not at global scope:

* Or, must to create an specific one-row table ?.

Depending on how you intend to use these variables, this sounds like a fine
idea to me. What are your problems with it?

The idea is storing values that can be remotely accessed by a
C++/libpqxx application. So, I just see that the first alternative
that I proposed (the use of \set variables) is really not good. But
the rest remains...

Now, the only option I have is to create a table, define one column
per variable, for using just one row. This can be accessed by a select
sql command...

You know other alternatives ???

I could probably think of some, but why? Storing values in tables is a
perfectly sensible way to allow clients to access per-database data.

Thanks !

Glus

#6Thomas Kellerer
spam_eater@gmx.net
In reply to: Glus Xof (#3)
Re: [GENERAL] Specific database vars, again...

Glus Xof wrote on 20.04.2010 21:35:

The idea is storing values that can be remotely accessed by a
C++/libpqxx application. So, I just see that the first alternative
that I proposed (the use of \set variables) is really not good. But
the rest remains...

Now, the only option I have is to create a table, define one column
per variable, for using just one row. This can be accessed by a select
sql command...

I don't understand why you need a column per variable.

I'd use something like

CREATE TABLE configuration_settings
(
variable_name text primary key not null,
variable_value text
);

INSERT INTO configuration_settings
(variable_name, variable_value)
VALUES
('myfirstvar', 'Some value');

INSERT INTO configuration_settings
(variable_name, variable_value)
VALUES
('mysecondvar', 'Another value');

#7Glus Xof
gtglus@gmail.com
In reply to: Thomas Kellerer (#6)
Re: [GENERAL] Specific database vars, again...

2010/4/20 Thomas Kellerer <spam_eater@gmx.net>:

Glus Xof wrote on 20.04.2010 21:35:

The idea is storing values that can be remotely accessed by a
C++/libpqxx application. So, I just see that the first alternative
that I proposed (the use of \set variables) is really not good. But
the rest remains...

Now, the only option I have is to create a table, define one column
per variable, for using just one row. This can be accessed by a select
sql command...

I don't understand why you need a column per variable.

I'd use something like

CREATE TABLE configuration_settings
(
  variable_name  text primary key not null,
  variable_value text
);

INSERT INTO configuration_settings
(variable_name, variable_value)
VALUES
('myfirstvar', 'Some value');

INSERT INTO configuration_settings
(variable_name, variable_value)
VALUES
('mysecondvar', 'Another value');

I can write it as you suggested.

Thanks a lot !,

Glus

#8Adrian von Bidder
avbidder@fortytwo.ch
In reply to: Glus Xof (#1)
Re: Specific database vars, again...

On Tuesday 20 April 2010 19.53:34 Glus Xof wrote:

Could I use the \set statements

\set is a feature of the "psql" commandline frontend. These values are
never even seen by the database and are not preserved anywhere. Also, if
you develop applications, you'll usually not use the psql frontend but use
PostgreSQL through some other interface (libpq, Perl DBD, JDBC, ...), so
there won't be a "\set" command.

cheers
-- vbi

--
If you continually give you will continually have.

#9Rene Schickbauer
rene.schickbauer@gmail.com
In reply to: Glus Xof (#1)
Re: [NOVICE] Specific database vars, again...

Glus Xof wrote:

Hi again,

Maybe, I didn't explain my question enough.

I need to record properties that belongs to an specific database (and
so, they work at database level... not at global scope:

* Could I use the \set statements ? but... the vars defined are not in
a database scope but a global, aren't they ?... furthermore, could
save these vars when try to dump the database ??? )

* Or, must to create an specific one-row table ?.

The first things to ask is: Do multiple transactions change this data?
What is something goes wrong - do you need rollback to work?

Anyway, a table with one or only a few rows is very likely to be cached
in RAM by postgres anyway if you access it regulary. So performance
shouldn't be an issue.

LG
Rene

#10Glus Xof
gtglus@gmail.com
In reply to: Adrian von Bidder (#8)
Re: Specific database vars, again...

Thanks to all that replied my question !

I'll implement the Thomas Kellerer's.

Glus