aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Fix minor error in comment.Tom Lane2004-05-28
|
* Fix thinko in recent patch to change temp-table permissions behavior:Tom Lane2004-05-28
| | | | | | | | | | | this is an aclmask function and does not have the same return convention as aclcheck functions. Also adjust the behavior so that users without CREATE TEMP permission still have USAGE permission on their session's temp schema. This allows privileged code to create a temp table and make it accessible to code that's not got the same privilege. (Since the default permissions on a table are no-access, an explicit grant on the table will still be needed; but I see no reason that the temp schema itself should prohibit such access.)
* Fix some typos I introduced in WIN32-only code late last night.Tom Lane2004-05-28
| | | | Thanks to Thomas Hallgren.
* Code review for EXEC_BACKEND changes. Reduce the number of #ifdefs byTom Lane2004-05-28
| | | | | | | | | | | about a third, make it work on non-Windows platforms again. (But perhaps I broke the WIN32 code, since I have no way to test that.) Fold all the paths that fork postmaster child processes to go through the single routine SubPostmasterMain, which takes care of resurrecting the state that would normally be inherited from the postmaster (including GUC variables). Clean up some places where there's no particularly good reason for the EXEC and non-EXEC cases to work differently. Take care of one or two FIXMEs that remained in the code.
* Make sure elog behaves sanely if invoked before GUC initializes.Tom Lane2004-05-28
|
* On WIN32, don't choke when setlocale(LC_MESSAGES, "") returns NULL.Tom Lane2004-05-27
| | | | Per report from Magnus.
* Get rid of the former rather baroque mechanism for propagating the valuesTom Lane2004-05-27
| | | | | | | | | | of ThisStartUpID and RedoRecPtr into new backends. It's a lot easier just to make them all grab the values out of shared memory during startup. This helps to decouple the postmaster from checkpoint execution, which I need since I'm intending to let the bgwriter do it instead, and it also fixes a bug in the Win32 port: ThisStartUpID wasn't getting propagated at all AFAICS. (Doesn't give me a lot of faith in the amount of testing that port has gotten.)
* pgindent files for Tom.Bruce Momjian2004-05-27
|
* Cleanup for Win32 pgkill.Bruce Momjian2004-05-27
|
* Move pgkill out into /port so pg_ctl can use it on Win32.Bruce Momjian2004-05-27
|
* Reduce the minimum allocable chunk size to 8 bytes (from 16). Now thatTom Lane2004-05-26
| | | | | | | ListCells are only 8 bytes instead of 12 (on 4-byte-pointer machines anyway), it's worth maintaining a separate freelist for 8-byte objects. Remembering that alloc chunks carry 8 bytes of overhead, this should reduce the net storage requirement for a long List by about a third.
* A couple other cosmetic cleanups in new List stuff.Tom Lane2004-05-26
|
* Use new forboth() macro to make loop coding a bit clearer.Tom Lane2004-05-26
|
* *) inet_(client|server)_(addr|port)() and necessary documentation forBruce Momjian2004-05-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the four functions. > Also, please justify the temp-related changes. I was not aware that we > had any breakage there. patch-tmp-schema.txt contains the following bits: *) Changes pg_namespace_aclmask() so that the superuser is always able to create objects in the temp namespace. *) Changes pg_namespace_aclmask() so that if this is a temp namespace, objects are only allowed to be created in the temp namespace if the user has TEMP privs on the database. This encompasses all object creation, not just TEMP tables. *) InitTempTableNamespace() checks to see if the current user, not the session user, has access to create a temp namespace. The first two changes are necessary to support the third change. Now it's possible to revoke all temp table privs from non-super users and limiting all creation of temp tables/schemas via a function that's executed with elevated privs (security definer). Before this change, it was not possible to have a setuid function to create a temp table/schema if the session user had no TEMP privs. patch-area-path.txt contains: *) Can now determine the area of a closed path. patch-dfmgr.txt contains: *) Small tweak to add the library path that's being expanded. I was using $lib/foo.so and couldn't easily figure out what the error message, "invalid macro name in dynamic library path" meant without looking through the source code. With the path in there, at least I know where to start looking in my config file. Sean Chittenden
* Use a cleaner substitute for the inability to apply length() to the tailTom Lane2004-05-26
| | | | of a list. Per private discussion with Neil.
* Add <limits.h>, per Magnus.Tom Lane2004-05-26
|
* The added aggregates are:Bruce Momjian2004-05-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | (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
* The patch adresses the TODO list item "Allow external interfaces toBruce Momjian2004-05-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* This patch implement the TODO [ALTER DATABASE foo OWNER TO bar].Bruce Momjian2004-05-26
| | | | | | | | | | 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
* Reimplement the linked list data structure used throughout the backend.Neil Conway2004-05-26
| | | | | | | | | | | | | | | | 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.
* Fix erroneous error message printout when a configuration file containsTom Lane2004-05-25
| | | | | an overlength token. Printout was always garbage and could dump core entirely :-(. Per report from Martin Pitt.
* Make the locale location relocatable.Bruce Momjian2004-05-25
| | | | Adjust get_*_path functions to be limited to MAXPGPATH.
* This patch fixes the find_my_exec code for pgstat backends. Required forBruce Momjian2004-05-24
| | | | | | TZ stuff (and possibly others) to work in the pgstat backends. Magnus Hagander
* Avoid calling select_default_timezone() when backing out an unwanted TZTom Lane2004-05-23
| | | | | 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.
* New two-stage sampling method for ANALYZE, as per discussions a few weeksTom Lane2004-05-23
| | | | | | 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.
* Still another place to make the world safe for zero-column tables:Tom Lane2004-05-23
| | | | | remove the ancient (and always pretty dodgy) assumption in parse_clause.c that a query can't have an empty targetlist.
* Handle impending sinval queue overflow by means of a separate signalTom Lane2004-05-23
| | | | | | | | | | | | | | | | | (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.
* For multi-table ANALYZE, use per-table transactions when possibleTom Lane2004-05-22
| | | | | (ie, when not inside a transaction block), so that we can avoid holding locks longer than necessary. Per trouble report from Philip Warner.
* Reduce pg_listener lock taken by NOTIFY et al from AccessExclusiveLockTom Lane2004-05-22
| | | | | | 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.
* Use wide-character library routines, if available, for upper/lower/initcapTom Lane2004-05-22
| | | | | | | | | | functions. This allows these functions to work correctly with Unicode and other multibyte encodings. Per prior discussion. Also, revert my earlier change to move installation path mashing from Makefile.global to configure. Turns out not to work well because configure script is working with unexpanded variables, and so fails to match in cases where it should match.
* Put path configuration information into a .h file instead of clutteringTom Lane2004-05-21
| | | | | | several different module Makefiles with it. Also, do any adjustment of installation paths during configure, rather than every time Makefile.global is read.
* Put back #include <sys/time.h> in files that seem to need it on Linux.Tom Lane2004-05-21
|
* Integrate src/timezone library for all platforms. There is more we canTom Lane2004-05-21
| | | | | | and should do now that we control our own destiny for timezone handling, but this commit gets the bulk of the picayune diffs in place. Magnus Hagander and Tom Lane.
* Fix speling.Tom Lane2004-05-20
|
* Improve error reporting behavior in parse_hba(): give more completeTom Lane2004-05-19
| | | | | error report for getaddrinfo failures, point at correct token for syntax errors in all cases, don't log redundant messages.
* Rename irix5 port to irix.Bruce Momjian2004-05-19
|
* Only do pkglib_path if needed.Bruce Momjian2004-05-19
|
* Only do find_my_exec if it doesn't come from the postmaster.Bruce Momjian2004-05-19
|
* Add get_pkglib_path to postmaster.cBruce Momjian2004-05-19
|
* Move find_my_exec lower so elog() works, per Tom.Bruce Momjian2004-05-19
|
* Minor correction for previous SQLSTATE patch: I changed dsqrt() to emit theNeil Conway2004-05-19
| | | | | right error code previously, and this patch applies an analogous change to numeric_sqrt().
* setRuleCheckAsUser has to be applied to any subqueries appearing in aTom Lane2004-05-18
| | | | | rule's event_qual, not only to the rule's action. Per example from Arturs Zoldners.
* Move get_pkglib_path up into main.c too.Bruce Momjian2004-05-18
|
* Move find_my_exec() way up into main.c so it is available to theBruce Momjian2004-05-18
| | | | | | | | timezone code and other places. Remove elog() calls from find_my_exec; do fprintf(stderr) instead. We can then remove the exec.c handling in the makefile because it doesn't have to be built to suppress elog calls.
* Clean up some relative path install issues with Claudio's help.Bruce Momjian2004-05-18
|
* Reorganize code to allow path-relative installs.Bruce Momjian2004-05-17
| | | | | | | Create new get_* functions to access compiled-in paths and adjust if relative installs are to be used. Clean up substitute_libpath_macro() code.
* Change ln(), log(), power(), and sqrt() to emit the correct SQLSTATENeil Conway2004-05-16
| | | | error codes for certain error conditions, as specified by SQL2003.
* Implement the width_bucket() function, per SQL2003. This commit only addsNeil Conway2004-05-14
| | | | | | | | | a variant of the function for the 'numeric' datatype; it would be possible to add additional variants for other datatypes, but I haven't done so yet. This commit includes regression tests and minimal documentation; if we want developers to actually use this function in applications, we'll probably need to document what it does more fully.
* Adjust find_my_exec/find_other_exec() so that the return parameter isBruce Momjian2004-05-14
| | | | last, not first. This fits our style better.
* Tighten parsing of boolean options to CREATE TYPE and related functions,Tom Lane2004-05-14
| | | | | so as to deliver more useful error messages for mistakes like 'PASSEDBYVALUE = f'. Per gripe from Gaetano Mendola.