summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2004-05-31Additional mop-up for sync-to-fsync changes: avoid issuing fsyncs forTom Lane
temp tables, and avoid WAL-logging truncations of temp tables. Do issue fsync on truncated files (not sure this is necessary but it seems like a good idea).
2004-05-31Minor code rationalization: FlushRelationBuffers just returns void,Tom Lane
rather than an error code, and does elog(ERROR) not elog(WARNING) when it detects a problem. All callers were simply elog(ERROR)'ing on failure return anyway, and I find it hard to envision a caller that would not, so we may as well simplify the callers and produce the more useful error message directly.
2004-05-31Suppress compile warnings on machines where the INT64CONST() decorationTom Lane
is actually needed. Per Oliver Elphick.
2004-05-31Too few parens for my taste in this macro.Tom Lane
2004-05-31I think I've finally identified the cause of the off-by-one-secondTom Lane
issue in timestamp conversion that we hacked around for so long by ignoring the seconds field from localtime(). It's simple: you have to watch out for platform-specific roundoff error when reducing a possibly-fractional timestamp to integral time_t form. In particular we should subtract off the already-determined fractional fsec field. This should be enough to get an exact answer with int64 timestamps; with float timestamps, throw in a rint() call just to be sure.
2004-05-31Have pg_ctl print pid and error on signal failure, per suggestion from Tom.Bruce Momjian
2004-05-31Per previous discussions, get rid of use of sync(2) in favor ofTom Lane
explicitly fsync'ing every (non-temp) file we have written since the last checkpoint. In the vast majority of cases, the burden of the fsyncs should fall on the bgwriter process not on backends. (To this end, we assume that an fsync issued by the bgwriter will force out blocks written to the same file by other processes using other file descriptors. Anyone have a problem with that?) This makes the world safe for WIN32, which ain't even got sync(2), and really makes the world safe for Unixen as well, because sync(2) never had the semantics we need: it offers no way to wait for the requested I/O to finish. Along the way, fix a bug I recently introduced in xlog recovery: file truncation replay failed to clear bufmgr buffers for the dropped blocks, which could result in 'PANIC: heap_delete_redo: no block' later on in xlog replay.
2004-05-30Use the new List API function names throughout the backend, and disable theNeil Conway
list compatibility API by default. While doing this, I decided to keep the llast() macro around and introduce llast_int() and llast_oid() variants.
2004-05-30Paranoia: ensure MyBackendId is InvalidBackendId in a process that hasTom Lane
never executed SIBackendInit().
2004-05-30Add thread library to libpgport creation.Bruce Momjian
2004-05-30Implement new PostmasterIsAlive() check for WIN32, per Claudio Natoli.Tom Lane
In passing, align a few error messages with the style guide.
2004-05-29Separate out bgwriter code into a logically separate module, ratherTom Lane
than being random pieces of other files. Give bgwriter responsibility for all checkpoint activity (other than a post-recovery checkpoint); so this child process absorbs the functionality of the former transient checkpoint and shutdown subprocesses. While at it, create an actual include file for postmaster.c, which for some reason never had its own file before.
2004-05-29Translation updatePeter Eisentraut
2004-05-29Translation updatesPeter Eisentraut
2004-05-29Translation updatePeter Eisentraut
2004-05-29Fix another place that assumed 'x = lcons(y, z)' would not have anyTom Lane
side-effect on the original list z. I fear we have a few more of these to track down yet :-(.
2004-05-28When checking for thread safety with src/tools/thread/thread_test.c, theBruce Momjian
mktemp function wants an argument that contains 6 X, while the current version only supplies 5 X which will fail on my SuSE 8.1. Andreas Pflug
2004-05-28Fix minor error in comment.Tom Lane
2004-05-28Fix thinko in recent patch to change temp-table permissions behavior:Tom Lane
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.)
2004-05-28Fix some typos I introduced in WIN32-only code late last night.Tom Lane
Thanks to Thomas Hallgren.
2004-05-28Code review for EXEC_BACKEND changes. Reduce the number of #ifdefs byTom Lane
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.
2004-05-28Seems we forgot the installdirs target in this makefile.Tom Lane
2004-05-28Make sure elog behaves sanely if invoked before GUC initializes.Tom Lane
2004-05-27On WIN32, don't choke when setlocale(LC_MESSAGES, "") returns NULL.Tom Lane
Per report from Magnus.
2004-05-27Get rid of the former rather baroque mechanism for propagating the valuesTom Lane
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.)
2004-05-27pgindent files for Tom.Bruce Momjian
2004-05-27Cleanup for Win32 pgkill.Bruce Momjian
2004-05-27Move pgkill out into /port so pg_ctl can use it on Win32.Bruce Momjian
2004-05-27Change pg_ctl to be in C. This was the final shell script and isBruce Momjian
helpful for the Win32 port. Andrew Dunstan, with additions by Bruce.
2004-05-26Reduce the minimum allocable chunk size to 8 bytes (from 16). Now thatTom Lane
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.
2004-05-26A couple other cosmetic cleanups in new List stuff.Tom Lane
2004-05-26Move setlocale() outside of NLS-only defines.Bruce Momjian
2004-05-26Use new forboth() macro to make loop coding a bit clearer.Tom Lane
2004-05-26Renumber to prevent duplicate oids. Update catalog version.Bruce Momjian
2004-05-26*) inet_(client|server)_(addr|port)() and necessary documentation forBruce Momjian
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
2004-05-26Use a cleaner substitute for the inability to apply length() to the tailTom Lane
of a list. Per private discussion with Neil.
2004-05-26Fix problem with doing 7.0.X dumps on character varying[] fields.Bruce Momjian
Christopher Kings-Lynne
2004-05-26Renumber bit/boolean aggregates to remove duplicates.Bruce Momjian
2004-05-26Recent commits added created files that weren't getting deleted byTom Lane
'make clean'.
2004-05-26Add <limits.h>, per Magnus.Tom Lane
2004-05-26The added aggregates are:Bruce Momjian
(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
2004-05-26The patch adresses the TODO list item "Allow external interfaces toBruce Momjian
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
2004-05-26This patch implement the TODO [ALTER DATABASE foo OWNER TO bar].Bruce Momjian
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
2004-05-26Reimplement the linked list data structure used throughout the backend.Neil Conway
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.
2004-05-25Add FRONTEND to ecpglib.Bruce Momjian
2004-05-25Allow relative paths as long as the hardcoded path matches the bin pathBruce Momjian
up to the last bin directory name.
2004-05-25Tweaks per discussion with Magnus: suppress chatter on unpatched MinGWTom Lane
systems, add verbose logging (at DEBUG4) to help identify why a given time zone is not matched.
2004-05-25Fix erroneous error message printout when a configuration file containsTom Lane
an overlength token. Printout was always garbage and could dump core entirely :-(. Per report from Martin Pitt.
2004-05-25Fix set_pglocale to properly pass my_exec_path to get_locale_path instead of ↵Bruce Momjian
argv0.
2004-05-25Add code to identify_system_timezone() to try all zones in the zicTom Lane
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.