Thread: Adding new variables into GUC

Adding new variables into GUC

From
Θάνος Παπαπέτρου
Date:
Hi,

I am an MSc student in the department of Informatics and
Telecommunications of the University of Athens and as part of my
thesis I am examining a new path/plan cost model for DB optimizers. I
have successfully changed the optimizer of PostgreSQL in order to
implement this model, but I have stumbled upon a very little detail:
until now I use some hardcoded values in my code which I would like to
make accessible through GUC. After much googling the only relative
pages I have found are about configuring existing PostgreSQL variables
and src/backend/utils/misc/README does not mention anything about
adding new vars. Can anybody please provide some help?

I presume I have to add new entries in ConfigureNames* arrays in src/
backend/utils/misc/guc.c, but I am not sure about the field values of
config_* structs I have to enter. Also is there any "standard"
location where the actual variables should be declared, or I can
freely declare them in any source file (the source file that actually
uses them)? Do I have to declare a config_generic struct too? How do I
specify boot values?

Thanks in advance,

Thanos Papapetrou

Θάνος Παπαπέτρου

You insist that there is something that a machine can't do. If you
will tell me precisely what it is that a machine cannot do, then I can
always make a machine which will do just that.

P.S.: I initially posted this message in pgsql-generic, but after
thinking about it more I believe this is the most appropriate list, so
I re-posted here.

Re: Adding new variables into GUC

From
Tom Lane
Date:
Θάνος Παπαπέτρου <thanos@di.uoa.gr> writes:
> I am an MSc student in the department of Informatics and  
> Telecommunications of the University of Athens and as part of my  
> thesis I am examining a new path/plan cost model for DB optimizers. I  
> have successfully changed the optimizer of PostgreSQL in order to  
> implement this model, but I have stumbled upon a very little detail:  
> until now I use some hardcoded values in my code which I would like to  
> make accessible through GUC. After much googling the only relative  
> pages I have found are about configuring existing PostgreSQL variables  
> and src/backend/utils/misc/README does not mention anything about  
> adding new vars. Can anybody please provide some help?

You basically need the variable, the entry in the appropriate array in
guc.c, and some documentation (at least if you'd like anyone else to
ever use the code).  Try looking at some past patches that added GUCs
similar to yours.
        regards, tom lane


Re: Adding new variables into GUC

From
Josh Berkus
Date:
> You basically need the variable, the entry in the appropriate array in
> guc.c, and some documentation (at least if you'd like anyone else to
> ever use the code).  Try looking at some past patches that added GUCs
> similar to yours.

For completeness, it would also be good to add rows to the pg_settings
system catalog, but that's not necessary for testing.

--                                  -- Josh Berkus                                    PostgreSQL Experts Inc.
                        http://www.pgexperts.com
 


Re: Adding new variables into GUC

From
Robert Haas
Date:
2011/2/10 Josh Berkus <josh@agliodbs.com>:
>
>> You basically need the variable, the entry in the appropriate array in
>> guc.c, and some documentation (at least if you'd like anyone else to
>> ever use the code).  Try looking at some past patches that added GUCs
>> similar to yours.
>
> For completeness, it would also be good to add rows to the pg_settings
> system catalog, but that's not necessary for testing.

pg_settings doesn't need to be separately updated.  It's just a view.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: Adding new variables into GUC

From
Tom Lane
Date:
Josh Berkus <josh@agliodbs.com> writes:
>> You basically need the variable, the entry in the appropriate array in
>> guc.c, and some documentation (at least if you'd like anyone else to
>> ever use the code).  Try looking at some past patches that added GUCs
>> similar to yours.

> For completeness, it would also be good to add rows to the pg_settings
> system catalog, but that's not necessary for testing.

Huh?  pg_settings is a dynamically generated view.
        regards, tom lane