summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2011-09-23Fix our mapping of Windows timezones for Central America.Tom Lane
We were mapping "Central America Standard Time" to "CST6CDT", which seems entirely wrong, because according to the Olson timezone database noplace in Central America observes daylight savings time on any regular basis --- and certainly not according to the USA DST rules that are implied by "CST6CDT". (Mexico is an exception, but they can be disregarded since they have a separate timezone name in Windows.) So, map this zone name to plain "CST6", which will provide a fixed UTC offset. As written, this patch will also result in mapping "Central America Daylight Time" to CST6. I considered hacking things so that would still map to CST6CDT, but it seems it would confuse win32tzlist.pl to put those two names in separate entries. Since there's little evidence that any such zone name is used in the wild, much less that CST6CDT would be a good match for it, I'm not too worried about what we do with it. Per complaint from Pratik Chirania.
2011-09-23Update win32tzlist.pl for the new location of our Windows timezone map.Tom Lane
I wasn't aware of this script till Magnus mentioned it just now ...
2011-09-23Memory barrier support for PostgreSQL.Robert Haas
This is not actually used anywhere yet, but it gets the basic infrastructure in place. It is fairly likely that there are bugs, and support for some important platforms may be missing, so we'll need to refine this as we go along.
2011-09-23Add --{no-,}replication flags to createuser.Robert Haas
Fujii Masao, reviewed by Cédric Villemain, with some doc changes by me.
2011-09-22Make EXPLAIN ANALYZE report the numbers of rows rejected by filter steps.Tom Lane
This provides information about the numbers of tuples that were visited but not returned by table scans, as well as the numbers of join tuples that were considered and discarded within a join plan node. There is still some discussion going on about the best way to report counts for outer-join situations, but I think most of what's in the patch would not change if we revise that, so I'm going to go ahead and commit it as-is. Documentation changes to follow (they weren't in the submitted patch either). Marko Tiikkaja, reviewed by Marc Cousin, somewhat revised by Tom
2011-09-21Fix another bit of unlogged-table-induced breakage.Robert Haas
Per bug #6205, reported by Abel Abraham Camarillo Ojeda. This isn't a particularly elegant fix, but I'm trying to minimize the chances of causing yet another round of breakage. Adjust regression tests to exercise this case.
2011-09-20Suppress "unused function" warning when not HAVE_LOCALE_T.Tom Lane
Forgot to consider this case ...
2011-09-20Improve reporting of newlocale() failures in CREATE COLLATION.Tom Lane
The standardized errno code for "no such locale" failures is ENOENT, which we were just reporting at face value, viz "No such file or directory". Per gripe from Thom Brown, this might confuse users, so add an errdetail message to clarify what it means. Also, report newlocale() failures as ERRCODE_INVALID_PARAMETER_VALUE rather than using errcode_for_file_access(), since newlocale()'s errno values aren't necessarily tied directly to file access failures.
2011-09-18Fix another Assert issue exposed by CLOBBER_CACHE_ALWAYS.Tom Lane
plpgsql's exec_stmt_execsql was Assert'ing that a CachedPlanSource was is_valid immediately after exec_prepare_plan. The risk factor in this case is that after building the prepared statement, exec_prepare_plan calls exec_simple_check_plan, which might try to generate a generic plan --- and with CLOBBER_CACHE_ALWAYS or other unusual causes of invalidation, that could result in an invalidation. However, that path could only be taken for a SELECT query, for which we need not set mod_stmt. So in this case I think it's best to just remove the Assert; it's okay to look at a slightly-stale querytree for what we need here. Per buildfarm testing.
2011-09-17Fix Assert failure in new plancache code.Tom Lane
The regression tests were failing with CLOBBER_CACHE_ALWAYS enabled, as reported by buildfarm member jaguar. There was an Assert in BuildCachedPlan that asserted that the CachedPlanSource hadn't been invalidated since we called RevalidateCachedQuery, which in theory can't happen because we are holding locks on all the relevant database objects. However, CLOBBER_CACHE_ALWAYS generates a false positive by making an invalidation happen anyway; and on reflection, that could also occur as a result of a badly-timed sinval reset due to queue overflow. We could just remove the Assert and forge ahead with the not-really-stale querytree, but it seems safer to do another RevalidateCachedQuery call just to make real sure everything's OK.
2011-09-16Remove debug logging for pgstat wait timeout.Tom Lane
This reverts commit 79b2ee20c8a041a85dd230c4e787bef22edae57b, which proved to not be very informative; it looks like the "pgstat wait timeout" warnings in the buildfarm are just a symptom of running on heavily loaded machines, and there isn't any weird mechanism causing them to appear. To try to reduce the frequency of buildfarm failures from this effect, increase PGSTAT_MAX_WAIT_TIME from 5 seconds to 10. Also, arrange to not send a fresh inquiry message every single time through the loop, as that seems more likely to cause problems (by swamping the collector) than fix them. We'll now send an inquiry the first time through the delay loop, and every 640 msec thereafter.
2011-09-16Avoid unnecessary page-level SSI lock check in heap_insert().Tom Lane
As observed by Heikki, we need not conflict on heap page locks during an insert; heap page locks are only aggregated tuple locks, they don't imply locking "gaps" as index page locks do. So we can avoid some unnecessary conflicts, and also do the SSI check while not holding exclusive lock on the target buffer. Kevin Grittner, reviewed by Jeff Davis. Back-patch to 9.1.
2011-09-16Ensure generic plan gets used for a plpgsql expression with no parameters.Tom Lane
Now that a NULL ParamListInfo pointer causes significantly different behavior in plancache.c, be sure to pass it that way when the expression is known not to reference any plpgsql variables. Saves a few setup cycles anyway.
2011-09-16gistendscan() forgot to free so->giststate.Tom Lane
This oversight led to a massive memory leak --- upwards of 10KB per tuple --- during creation-time verification of an exclusion constraint based on a GIST index. In most other scenarios it'd just be a leak of 10KB that would be recovered at end of query, so not too significant; though perhaps the leak would be noticeable in a situation where a GIST index was being used in a nestloop inner indexscan. In any case, it's a real leak of long standing, so patch all supported branches. Per report from Harald Fuchs.
2011-09-16Redesign the plancache mechanism for more flexibility and efficiency.Tom Lane
Rewrite plancache.c so that a "cached plan" (which is rather a misnomer at this point) can support generation of custom, parameter-value-dependent plans, and can make an intelligent choice between using custom plans and the traditional generic-plan approach. The specific choice algorithm implemented here can probably be improved in future, but this commit is all about getting the mechanism in place, not the policy. In addition, restructure the API to greatly reduce the amount of extraneous data copying needed. The main compromise needed to make that possible was to split the initial creation of a CachedPlanSource into two steps. It's worth noting in particular that SPI_saveplan is now deprecated in favor of SPI_keepplan, which accomplishes the same end result with zero data copying, and no need to then spend even more cycles throwing away the original SPIPlan. The risk of long-term memory leaks while manipulating SPIPlans has also been greatly reduced. Most of this improvement is based on use of the recently-added MemoryContextSetParent primitive.
2011-09-14Teach the makefile used to build stand-alone libpq on Windows that libpqHeikki Linnakangas
needs win32setlocale.c now. The cygwin and MSVC build scripts were changed earlier, but this was neglected. This should fix bug report #6203 by Steve.
2011-09-13Split walsender.h in public/private headersAlvaro Herrera
This dramatically cuts short the number of headers the public one brings into whatever includes it.
2011-09-13deflist_to_tuplestore dumped core on an option with no value.Tom Lane
Make it return NULL for the option_value, instead. Per report from Frank van Vugt. Back-patch to 8.4 where this code was added.
2011-09-13Propagate with_system_tzdata setting into initdb build.Tom Lane
findtimezone.c needs to know this setting too. Per Peter Eisentraut.
2011-09-12In the final emptying phase of the new GiST buffering build, set theHeikki Linnakangas
queuedForEmptying flag correctly on buffer when adding it to the queue. Also, don't add buffer to the queue if it's there already. These were harmless oversights; failing to set the flag just means that a buffer might get added to the queue twice if more tuples are added to it (although that can't actually happen at this point because all the upper buffers have already been emptied), and having the same buffer twice in the emptying queue is harmless. But better be tidy.
2011-09-11Invent a new memory context primitive, MemoryContextSetParent.Tom Lane
This function will be useful for altering the lifespan of a context after creation (for example, by creating it under a transient context and later reparenting it to belong to a long-lived context). It costs almost no new code, since we can refactor what was there. Per my proposal of yesterday.
2011-09-11Remove many -Wcast-qual warningsPeter Eisentraut
This addresses only those cases that are easy to fix by adding or moving a const qualifier or removing an unnecessary cast. There are many more complicated cases remaining.
2011-09-11Fix additional format warningPeter Eisentraut
Apparently, this only happens on 64-bit platforms.
2011-09-10Remove double-quoting of table names in clusterdb. BACKWARD COMPABILITYBruce Momjian
BREAKAGE. Remove double-quoting of index/table names in reindexdb. BACKWARD COMPABILITY BREAKAGE. Document thate user/database names are preserved with double-quoting by command-line tools like vacuumdb.
2011-09-10Add missing format attributesPeter Eisentraut
Add __attribute__ decorations for printf format checking to the places that were missing them. Fix the resulting warnings. Add -Wmissing-format-attribute to the standard set of warnings for GCC, so these don't happen again. The warning fixes here are relatively harmless. The one serious problem discovered by this was already committed earlier in cf15fb5cabfbc71e07be23cfbc813daee6c5014f.
2011-09-11Add datatype directory to SUBDIRS.Itagaki Takahiro
New header datatype/timestamp.h should be installed for server-side dev.
2011-09-09Try to un-break MSVC build.Tom Lane
I thought we had enough infrastructure to absorb CPPFLAGS changes from the makefiles, but buildfarm says otherwise.
2011-09-09Simplify handling of the timezone GUC by making initdb choose the default.Tom Lane
We were doing some amazingly complicated things in order to avoid running the very expensive identify_system_timezone() procedure during GUC initialization. But there is an obvious fix for that, which is to do it once during initdb and have initdb install the system-specific default into postgresql.conf, as it already does for most other GUC variables that need system-environment-dependent defaults. This means that the timezone (and log_timezone) settings no longer have any magic behavior in the server. Per discussion.
2011-09-09Move Timestamp/Interval typedefs and basic macros into datatype/timestamp.h.Tom Lane
As per my recent proposal, this refactors things so that these typedefs and macros are available in a header that can be included in frontend-ish code. I also changed various headers that were undesirably including utils/timestamp.h to include datatype/timestamp.h instead. Unsurprisingly, this showed that half the system was getting utils/timestamp.h by way of xlog.h. No actual code changes here, just header refactoring.
2011-09-08round() is not portable. Use rint().Tom Lane
2011-09-08Tweak string for uniformityAlvaro Herrera
2011-09-08Add missing format argument to ecpg_log() callPeter Eisentraut
2011-09-08Buffering GiST index build algorithm.Heikki Linnakangas
When building a GiST index that doesn't fit in cache, buffers are attached to some internal nodes in the index. This speeds up the build by avoiding random I/O that would otherwise be needed to traverse all the way down the tree to the find right leaf page for tuple. Alexander Korotkov
2011-09-07Fix corner case bug in numeric to_char().Tom Lane
Trailing-zero stripping applied by the FM specifier could strip zeroes to the left of the decimal point, for a format with no digit positions after the decimal point (such as "FM999."). Reported and diagnosed by Marti Raudsepp, though I didn't use his patch.
2011-09-07Allow bcc32 and win32 batch files to compile libpq.Bruce Momjian
Backpatch to 9.1. By Hiroshi Saito
2011-09-07Fix typo in error message.Tom Lane
Per Euler Taveira de Oliveira.
2011-09-07Fix get_name_for_var_field() to deal with RECORD Params.Tom Lane
With 9.1's use of Params to pass down values from NestLoop join nodes to their inner plans, it is possible for a Param to have type RECORD, in which case the set of fields comprising the value isn't determinable by inspection of the Param alone. However, just as with a Var of type RECORD, we can find out what we need to know if we can locate the expression that the Param represents. We already knew how to do this in get_parameter(), but I'd overlooked the need to be able to cope in get_name_for_var_field(), which led to EXPLAIN failing with "record type has not been registered". To fix, refactor the search code in get_parameter() so it can be used by both functions. Per report from Marti Raudsepp.
2011-09-07Have pgrminclude skip files that use CppAsString2 because CppAsString2Bruce Momjian
will expaned undefined identifiers.
2011-09-07Fix bug introduced by pgrminclude where the tablespace version name wasBruce Momjian
not expanded. Bump catalog version number to force initdb for all tablespaces.
2011-09-07Fix to_date() and to_timestamp() to handle year masks of length < 4 soBruce Momjian
they wrap toward year 2020, rather than the inconsistent behavior we had before.
2011-09-07Partially revoke attempt to improve performance with many savepoints.Simon Riggs
Maintain difference between subtransaction release and commit introduced by earlier patch.
2011-09-07Emit cascaded standby message on shutdown only when appropriate.Simon Riggs
Adds additional test for active walsenders and closes a race condition for when we failover when a new walsender was connecting. Reported and fixed bu Fujii Masao. Review by Heikki Linnakangas
2011-09-06Improve comment about handling of temp tables in shared-inval code.Tom Lane
2011-09-06Correct ancient logic mistake in assertionPeter Eisentraut
Found by gcc -Wlogical-op
2011-09-06Avoid possibly accessing off the end of memory in SJIS2004 conversion.Tom Lane
The code in shift_jis_20042euc_jis_2004() would fetch two bytes even when only one remained in the string. Since conversion functions aren't supposed to assume null-terminated input, this poses a small risk of fetching past the end of memory and incurring SIGSEGV. No such crash has been identified in the field, but we've certainly seen the equivalent happen in other code paths, so patch this one all the way back. Report and patch by Noah Misch.
2011-09-06Avoid possibly accessing off the end of memory in examine_attribute().Tom Lane
Since the last couple of columns of pg_type are often NULL, sizeof(FormData_pg_type) can be an overestimate of the actual size of the tuple data part. Therefore memcpy'ing that much out of the catalog cache, as analyze.c was doing, poses a small risk of copying past the end of memory and incurring SIGSEGV. No such crash has been identified in the field, but we've certainly seen the equivalent happen in other code paths, so patch this one all the way back. Per valgrind testing by Noah Misch, though this is not his proposed patch. I chose to use SearchSysCacheCopy1 rather than inventing special-purpose infrastructure for copying only the minimal part of a pg_type tuple.
2011-09-05Add C comment about why we send cache invalidation messages forBruce Momjian
session-local objects.
2011-09-05Adjust translator comment format to xgettext expectationsAlvaro Herrera
2011-09-05Mark some untranslatable messages with errmsg_internalAlvaro Herrera
2011-09-05Improve "invalid byte sequence for encoding" messagePeter Eisentraut
It used to say ERROR: invalid byte sequence for encoding "UTF8": 0xdb24 Change this to ERROR: invalid byte sequence for encoding "UTF8": 0xdb 0x24 to make it clear that this is a byte sequence and not a code point. Also fix the adjacent "character has no equivalent" message that has the same issue.