- 26 May, 2004 9 commits
-
-
Bruce Momjian authored
Christopher Kings-Lynne
-
Bruce Momjian authored
-
Tom Lane authored
'make clean'.
-
Tom Lane authored
-
Bruce Momjian authored
(1) boolean-and and boolean-or aggregates named bool_and and bool_or. they (SHOULD;-) correspond to standard sql every and some/any aggregates. they do not have the right name as there is a problem with the standard and the parser for some/any. Tom also think that the standard name is misleading because NULL are ignored. Also add 'every' aggregate. (2) bitwise integer aggregates named bit_and and bit_or for int2, int4, int8 and bit types. They are not standard, but I find them useful. I needed them once. The patches adds: - 2 new very short strict functions for boolean aggregates in src/backed/utils/adt/bool.c, src/include/utils/builtins.h and src/include/catalog/pg_proc.h - the new aggregates declared in src/include/catalog/pg_proc.h and src/include/catalog/pg_aggregate.h - some documentation and validation about these new aggregates. Fabien COELHO
-
Bruce Momjian authored
extend the GUC variable set". Plugin modules like the pl<lang> modules needs a way to declare configuration parameters. The postmaster has no knowledge of such modules when it reads the postgresql.conf file. Rather than allowing totally unknown configuration parameters, the concept of a variable "class" is introduced. Variables that belongs to a declared classes will create a placeholder value of string type and will not generate an error. When a module is loaded, it will declare variables for such a class and make those variables "consume" any placeholders that has been defined. Finally, the module will generate warnings for unrecognized placeholders defined for its class. More detail: The design is outlined after the suggestions made by Tom Lane and Joe Conway in this thread: http://archives.postgresql.org/pgsql-hackers/2004-02/msg00229.php A new string variable 'custom_variable_classes' is introduced. This variable is a comma separated string of identifiers. Each identifier denots a 'class' that will allow its members to be added without error. This variable must be defined in postmaster.conf. The lexer (guc_file.l) is changed so that it can accept a qualified name in the form <ID>.<ID> as the name of a variable. I also changed so that the 'custom_variable_classes', if found, is added first of all variables in order to remove the order of declaration issue. The guc_variables table is made more dynamic. It is originally created with 20% slack and can grow dynamically. A capacity is introduced to avoid resizing every time a new variable is added. guc_variables and num_guc_variables becomes static (hidden). The GucInfoMain now uses the new function get_guc_variables() and GetNumConfigOptions instead or using the guc_variables directly. The find_option() function, when passed a missing name, will check if the name is qualified. If the name is qualified and if the qualifier denotes a class included in the 'custom_variable_classes', a placeholder variable will be created. Such a placeholder will not participate in a list operation but will otherwise function as a normal string variable. Define<type>GucVariable() functions will be added, one for each variable type. They are inteded to be used by add-on modules like the pl<lang> mappings. Example: extern void DefineCustomBoolVariable( const char* name, const char* short_desc, const char* long_desc, bool* valueAddr, GucContext context, GucBoolAssignHook assign_hook, GucShowHook show_hook); (I created typedefs for the assign-hook and show-hook functions). A call to these functions will define a new GUC-variable. If a placeholder exists it will be replaced but it's value will be used in place of the default value. The valueAddr is assumed ot point at a default value when the define function is called. The only constraint that is imposed on a Custom variable is that its name is qualified. Finally, a function: void EmittWarningsOnPlacholders(const char* className) was added. This function should be called when a module has completed its variable definitions. At that time, no placeholders should remain for the class that the module uses. If they do, elog(INFO, ...) messages will be issued to inform the user that unrecognized variables are present. Thomas Hallgren
-
Bruce Momjian authored
It was necessary to touch in grammar and create a new node to make home to the new syntax. The command is also supported in E CPG. Doc updates are attached too. Only superusers can change the owner of the database. New owners don't need any aditional privileges. Euler Taveira de Oliveira
-
Neil Conway authored
In the past, we used a 'Lispy' linked list implementation: a "list" was merely a pointer to the head node of the list. The problem with that design is that it makes lappend() and length() linear time. This patch fixes that problem (and others) by maintaining a count of the list length and a pointer to the tail node along with each head node pointer. A "list" is now a pointer to a structure containing some meta-data about the list; the head and tail pointers in that structure refer to ListCell structures that maintain the actual linked list of nodes. The function names of the list API have also been changed to, I hope, be more logically consistent. By default, the old function names are still available; they will be disabled-by-default once the rest of the tree has been updated to use the new API names.
-
Jan Wieck authored
It fixes a typo in a define Thanks -- Steven Singer
-
- 25 May, 2004 9 commits
-
-
Bruce Momjian authored
-
Bruce Momjian authored
up to the last bin directory name.
-
Tom Lane authored
systems, add verbose logging (at DEBUG4) to help identify why a given time zone is not matched.
-
Tom Lane authored
an overlength token. Printout was always garbage and could dump core entirely :-(. Per report from Martin Pitt.
-
Bruce Momjian authored
-
Tom Lane authored
database, not just ones that we cons up POSIX names for. This looks grim but it seems to take less than a second even on a relatively slow machine, and since it only happens once during postmaster startup, that seems acceptable.
-
Bruce Momjian authored
-
Bruce Momjian authored
-
Bruce Momjian authored
Adjust get_*_path functions to be limited to MAXPGPATH.
-
- 24 May, 2004 8 commits
-
-
Bruce Momjian authored
CurrentMemoryContext caused compile problems. Recode to not make a copy of the PATH but copy parts out into MAXPGPATH variables.
-
Bruce Momjian authored
strict.
-
Bruce Momjian authored
Viktor Vislobokov
-
Neil Conway authored
-
Bruce Momjian authored
> * Allow GRANT/REVOKE permissions to be given to all schema objects with one command
-
Bruce Momjian authored
TZ stuff (and possibly others) to work in the pgstat backends. Magnus Hagander
-
Tom Lane authored
of correctly identifying the system's daylight-savings transition rules. This still begs the question of how to look through the zic database to find a matching zone definition, but at least now we'll have some chance of recognizing the match when we find it.
-
Bruce Momjian authored
-
- 23 May, 2004 9 commits
-
-
Tom Lane authored
names. Per report from Alvaro.
-
Tom Lane authored
setting. This is a temporary kluge to keep Alvaro happy; eventually we should fix the TZ library API to make the problem really go away.
-
Tom Lane authored
in postgresql.conf does the right thing. variable.c got this right, but not pgtz.c ...
-
Neil Conway authored
-
Tom Lane authored
ago. This should give significantly better results when the density of live tuples is not uniform throughout a table. Manfred Koizar, with minor kibitzing from Tom Lane.
-
Tom Lane authored
remove the ancient (and always pretty dodgy) assumption in parse_clause.c that a query can't have an empty targetlist.
-
Tom Lane authored
-
Tom Lane authored
-
Tom Lane authored
(SIGUSR1, which we have not been using recently) instead of piggybacking on SIGUSR2-driven NOTIFY processing. This has several good results: the processing needed to drain the sinval queue is a lot less than the processing needed to answer a NOTIFY; there's less contention since we don't have a bunch of backends all trying to acquire exclusive lock on pg_listener; backends that are sitting inside a transaction block can still drain the queue, whereas NOTIFY processing can't run if there's an open transaction block. (This last is a fairly serious issue that I don't think we ever recognized before --- with clients like JDBC that tend to sit with open transaction blocks, the sinval queue draining mechanism never really worked as intended, probably resulting in a lot of useless cache-reset overhead.) This is the last of several proposed changes in response to Philip Warner's recent report of sinval-induced performance problems.
-
- 22 May, 2004 5 commits
-
-
Tom Lane authored
(ie, when not inside a transaction block), so that we can avoid holding locks longer than necessary. Per trouble report from Philip Warner.
-
Tom Lane authored
to ExclusiveLock. This still serializes the operations of this module, but doesn't conflict with concurrent ANALYZE operations. Per trouble report from Philip Warner a few weeks ago.
-
Tom Lane authored
-
Neil Conway authored
-
Neil Conway authored
-