summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2008-07-13Clean up the use of some page-header-access macros: principally, useTom Lane
SizeOfPageHeaderData instead of sizeof(PageHeaderData) in places where that makes the code clearer, and avoid casting between Page and PageHeader where possible. Zdenek Kotala, with some additional cleanup by Heikki Linnakangas. I did not apply the parts of the proposed patch that would have resulted in slightly changing the on-disk format of hash indexes; it seems to me that's not a win as long as there's any chance of having in-place upgrade for 8.4.
2008-07-12More replacements of binary compatible to binary coercible.Peter Eisentraut
2008-07-12Don't make --enable-cassert turn on RANDOMIZE_ALLOCATED_MEMORY automatically;Tom Lane
it's just too dang expensive. Per recent discussion, but I just got my nose rubbed in it again while doing some performance checking.
2008-07-12Const-ify the arguments of str_tolower() and friends to suppress compileTom Lane
warnings. Clean up various unneeded cruft that was left behind after creating those routines. Introduce some convenience functions str_tolower_z etc to eliminate tedious and error-prone double arguments in formatting.c. (Currently there seems no need to export the latter, but maybe reconsider this later.)
2008-07-11Multi-column GIN indexes. Teodor SigaevTom Lane
2008-07-11Allow binary-coercible types for cast function arguments and return types.Peter Eisentraut
Document return type of cast functions. Also change documentation to prefer the term "binary coercible" in its present sense instead of the previous term "binary compatible".
2008-07-11Make sure we only try to free snapshots that have been passed throughAlvaro Herrera
CopySnapshot, per Neil Conway. Also add a comment about the assumption in GetSnapshotData that the argument is statically allocated. Also, fix some more typos in comments in snapmgr.c.
2008-07-11Fix a few typos in comments in snapmgr.c, and sort header inclusionsNeil Conway
alphabetically.
2008-07-10Add unchangeable GUC "variables" segment_size, wal_block_size, andTom Lane
wal_segment_size to make those configuration parameters available to clients, in the same way that block_size was previously exposed. Bernd Helmle, with comments from Abhijit Menon-Sen and some further tweaking by me.
2008-07-10Tighten up SS_finalize_plan's computation of valid_params to exclude Params ofTom Lane
the current query level that aren't in fact output parameters of the current initPlans. (This means, for example, output parameters of regular subplans.) To make this work correctly for output parameters coming from sibling initplans requires rejiggering the API of SS_finalize_plan just a bit: we need the siblings to be visible to it, rather than hidden as SS_make_initplan_from_plan had been doing. This is really part of my response to bug #4290, but I concluded this part probably shouldn't be back-patched, since all that it's doing is to make a debugging cross-check tighter.
2008-07-10Fix mis-calculation of extParam/allParam sets for plan nodes, as seen inTom Lane
bug #4290. The fundamental bug is that masking extParam by outer_params, as finalize_plan had been doing, caused us to lose the information that an initPlan depended on the output of a sibling initPlan. On reflection the best thing to do seemed to be not to try to adjust outer_params for this case but get rid of it entirely. The only thing it was really doing for us was to filter out param IDs associated with SubPlan nodes, and that can be done (with greater accuracy) while processing individual SubPlan nodes in finalize_primnode. This approach was vindicated by the discovery that the masking method was hiding a second bug: SS_finalize_plan failed to remove extParam bits for initPlan output params that were referenced in the main plan tree (it only got rid of those referenced by other initPlans). It's not clear that this caused any real problems, given the limited use of extParam by the executor, but it's certainly not what was intended. I originally thought that there was also a problem with needing to include indirect dependencies on external params in initPlans' param sets, but it turns out that the executor handles this correctly so long as the depended-on initPlan is earlier in the initPlans list than the one using its output. That seems a bit of a fragile assumption, but it is true at the moment, so I just documented it in some code comments rather than making what would be rather invasive changes to remove the assumption. Back-patch to 8.1. Previous versions don't have the case of initPlans referring to other initPlans' outputs, so while the existing logic is still questionable for them, there are not any known bugs to be fixed. So I'll refrain from changing them for now.
2008-07-09Increase PG_SYSLOG_LIMIT (the max line length sent to syslog()) from 128 toTom Lane
1024 to improve performance when sending large elog messages. Also add a comment about why we use that number. Since this represents an externally visible behavior change, and might possibly result in portability issues, it seems best not to back-patch it.
2008-07-08Fix performance bug in write_syslog(): the code to preferentially break theTom Lane
log message at newlines cost O(N^2) for very long messages with few or no newlines. For messages in the megabyte range this became the dominant cost. Per gripe from Achilleas Mantzios. Patch all the way back, since this is a safe change with no portability risks. I am also thinking of increasing PG_SYSLOG_LIMIT, but that should be done separately.
2008-07-08Minor improvements to the Gin internal documentation.Neil Conway
2008-07-08Add comment for deadlock_timeout:Bruce Momjian
/* This is PGC_SIGHUP so all backends have the same value. */
2008-07-07Fix estimate_num_groups() to assume that GROUP BY expressions yielding booleanTom Lane
results always contribute two groups, regardless of the expression contents. This is very substantially more accurate than the regular heuristic for certain boolean tests like "col IS NULL". Per gripe from Sam Mason. Back-patch to all supported releases, since the behavior of estimate_num_groups() hasn't changed all that much since 7.4.
2008-07-07Fix AT TIME ZONE (in all three variants) so that we first try to interpretTom Lane
the timezone argument as a timezone abbreviation, and only try it as a full timezone name if that fails. The zic database has four zones (CET, EET, MET, WET) that are full daylight-savings zones and yet have names that are the same as their abbreviations for standard time, resulting in ambiguity. In the timestamp input functions we resolve the ambiguity by preferring the abbreviation, and AT TIME ZONE should work the same way. (No functionality is lost because the zic database also has other names for these zones, eg Europe/Zurich.) Per gripe from Jaromir Talir. Backpatch to 8.1. Older releases did not have the issue because AT TIME ZONE only accepted abbreviations not zone names. (Thus, this patch also arguably fixes a compatibility botch introduced at 8.1: in ambiguous cases we now behave the same as 8.0 did.)
2008-07-06Prevent integer overflows during units conversion when displaying a GUCTom Lane
variable that has units. Per report from Stefan Kaltenbrunner. Backport to 8.2. I also backported my patch of 2007-06-21 that prevented comparable overflows on the input side, since that now seems to have enough field track record to be back-patched safely. That patch included addition of hints listing the available unit names, which I did not bother to strip out of it --- this will make a little more work for the translators, but they can copy the translation from 8.3, and anyway an untranslated hint is better than no hint.
2008-07-04Fix initialization of GinScanEntryData.partialMatchTeodor Sigaev
2008-07-04Fix a couple of bugs in win32 shmem name generation:Magnus Hagander
* Don't cut off the prefix. With this fix, it's again readable. * Properly store it in the Global namespace as intended.
2008-07-03Add a function pg_get_keywords() to let clients find out the set of keywordsTom Lane
known to the SQL parser. Dave Page
2008-07-03Don't refer to the database name "regression" inside the regression testPeter Eisentraut
scripts, to allow running the test successfully with another database name.
2008-07-03Don't print the name of the database in psql \z.Peter Eisentraut
2008-07-03Clean up weird whitespace. Separate patch to simplifiy the next change.Peter Eisentraut
2008-07-03Fix psql's \d and allied commands to work with all server versions back to 7.4.Tom Lane
Guillaume Lelarge, with some additional fixes by me.
2008-07-03Update source code comment about when to use gettext_noop().Bruce Momjian
2008-07-03Fix transaction-lifespan memory leak in xpath(). Report by Matt Magoffin,Tom Lane
fix by Kris Jurka.
2008-07-01Remove GUC extra_desc strings that are redundant with the enum value lists.Tom Lane
2008-07-01Move volatility, language, etc. modifiers before function body in the pg_dumpHeikki Linnakangas
output for CREATE FUNCTION. This makes it easier to read especially if the function body is long. Original idea and patch by Greg Sabino Mullane, though this is a stripped down version of that.
2008-07-01Extend VacAttrStats to allow typanalyze functions to store statistic valuesHeikki Linnakangas
of different types than the underlying column. The capability isn't yet used for anything, but will be required by upcoming patch to analyze tsvector columns. Jan Urbanski
2008-07-01"debug" level was supposed to be hidden, since it's just an alias for debug2.Magnus Hagander
2008-07-01Split apart message_level_options into one set for server-side settings andMagnus Hagander
one for client-side, restoring the previous behaviour with different sort order for the 'log' level. Also, remove redundant list of available options, since the enum code will output it automatically.
2008-07-01Fix identify_system_timezone() so that it tests the behavior of the systemTom Lane
timezone setting in the current year and for 100 years back, rather than always examining years 1904-2004. The original coding would have problems distinguishing zones whose behavior diverged only after 2004; which is a situation we will surely face sometime, if it's not out there already. In passing, also prevent selection of the dummy "Factory" timezone, even if that's exactly what the system is using. Reporting time as GMT seems better than that.
2008-07-01Teach autovacuum how to determine whether a temp table belongs to a crashedTom Lane
backend. If so, send a LOG message to the postmaster log, and if the table is beyond the vacuum-for-wraparound horizon, forcibly drop it. Per recent discussions. Perhaps we ought to back-patch this, but it probably needs to age a bit in HEAD first.
2008-07-01Issue psql connection warnings on connection start and via \c, perBruce Momjian
observation by David Fetter.
2008-06-30Fix recovery.conf boolean variables to take the same range of stringBruce Momjian
values as postgresql.conf.
2008-06-30Turn PGBE_ACTIVITY_SIZE into a GUC variable, track_activity_query_size.Heikki Linnakangas
As the buffer could now be a lot larger than before, and copying it could thus be a lot more expensive than before, use strcpy instead of memcpy to copy the query string, as was already suggested in comments. Also, only copy the PgBackendStatus struct and string if the slot is in use. Patch by Thomas Lee, with some changes by me.
2008-06-29Remove unnecessary coziness of GIN code with datum copying. Now thatTom Lane
space is tracked via GetMemoryChunkSpace, there's really no advantage to duplicating datumCopy's innards here. This is one bit of my toast indirection patch that should go in anyway.
2008-06-28If pnstrdup is going to be promoted to a generally available function,Tom Lane
it ought to conform to the rest of palloc.h in using Size for sizes.
2008-06-27Consider a clause to be outerjoin_delayed if it references the nullable sideTom Lane
of any lower outer join, even if it also references the non-nullable side and so could not get pushed below the outer join anyway. We need this in case the clause is an OR clause: if it doesn't get marked outerjoin_delayed, create_or_index_quals() could pull an indexable restriction for the nullable side out of it, leading to wrong results as demonstrated by today's bug report from toruvinn. (See added regression test case for an example.) In principle this has been wrong for quite a while. In practice I don't think any branch before 8.3 can really show the failure, because create_or_index_quals() will only pull out indexable conditions, and before 8.3 those were always strict. So though we might have improperly generated null-extended rows in the outer join, they'd get discarded from the result anyway. The gating factor that makes the failure visible is that 8.3 considers "col IS NULL" to be indexable. Hence I'm not going to risk back-patching further than 8.3.
2008-06-27Fix standalone libpq build on win32.Magnus Hagander
Hiroshi Saito
2008-06-27Improve planner's estimation of the size of an append relation: rather thanTom Lane
taking the maximum of any child rel's width, we should weight the widths proportionally to the number of rows expected from each child. In hindsight this is obviously correct because row width is really a proxy for the total physical size of the relation. Per discussion with Scott Carey (bug #4264).
2008-06-26Fix pg_ctl bug where detection of binary location from postmaster.optsBruce Momjian
wasn't working.
2008-06-26Fix bug "select lower('asd') = 'asd'" returns false with multibyte encodingTeodor Sigaev
and non-C locale. Fix is just to use correct source's length for char2wchar call.
2008-06-26Synced parserMichael Meskes
2008-06-26Simplify 'pg_ctl restart' detection of first argument inBruce Momjian
postmaster.opts.
2008-06-26Fix 'pg_ctl restart' to preserve command-line arguments.Bruce Momjian
2008-06-26Use SYSTEMQUOTE as concatentation to strings, rather than %s printfBruce Momjian
patterns, for clarity.
2008-06-26Remove use of postmaster.opts.default by pg_ctl.Bruce Momjian
2008-06-24Reduce the alignment requirement of type "name" from int to char, and arrangeTom Lane
to suppress zero-padding of "name" entries in indexes. The alignment change is unlikely to save any space, but it is really needed anyway to make the world safe for our widespread practice of passing plain old C strings to functions that are declared as taking Name. In the previous coding, the C compiler was entitled to assume that a Name pointer was word-aligned; but we were failing to guarantee that. I think the reason we'd not seen failures is that usually the only thing that gets done with such a pointer is strcmp(), which is hard to optimize in a way that exploits word-alignment. Still, some enterprising compiler guy will probably think of a way eventually, or we might change our code in a way that exposes more-obvious optimization opportunities. The padding change is accomplished in one-liner fashion by declaring the "name" index opclasses to use storage type "cstring" in pg_opclass.h. Normally btree and hash don't allow a nondefault storage type, because they don't have any provisions for converting the input datum to another type. However, because name and cstring are effectively the same thing except for padding, no conversion is needed --- we only need index_form_tuple() to treat the datum as being cstring not name, and this is sufficient. This seems to make for about a one-third reduction in the typical sizes of system catalog indexes that involve "name" columns, of which we have many. These two changes are only weakly related, but the alignment change makes me feel safer that the padding change won't introduce problems, so I'm committing them together.