aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Simplify and rename some GUC variables, per various recent discussions:Tom Lane2007-09-24
| | | | | | | | | | | | | | | | | | | * stats_start_collector goes away; we always start the collector process, unless prevented by a problem with setting up the stats UDP socket. * stats_reset_on_server_start goes away; it seems useless in view of the availability of pg_stat_reset(). * stats_block_level and stats_row_level are merged into a single variable "track_counts", which controls all reports sent to the collector process. * stats_command_string is renamed to track_activities. * log_autovacuum is renamed to log_autovacuum_min_duration to better reflect its meaning. The log_autovacuum change is not a compatibility issue since it didn't exist before 8.3 anyway. The other changes need to be release-noted.
* Remove "convert 'blah' using conversion_name" facility, because if itAndrew Dunstan2007-09-24
| | | | | produces text it is an encoding hole and if not it's incompatible with the spec, whatever the spec means (which we're not sure about anyway).
* Fix bugs in XML binary I/O functions. Heikki and TomTom Lane2007-09-23
|
* Make autovacuum report the start time of its current activity inTom Lane2007-09-23
| | | | pg_stat_activity. Per gripe from Jim Nasby.
* TransactionIdIsInProgress can skip scanning the ProcArray if the target XID isTom Lane2007-09-23
| | | | | | later than latestCompletedXid, per Florian Pflug. Also some minor improvements in the XIDCACHE_DEBUG code --- make sure each call of TransactionIdIsInProgress is counted one way or another.
* Temporarily modify tsearch regression tests to suppress notice that comesTom Lane2007-09-23
| | | | | | out at erratic times, because it is creating a totally unacceptable level of noise in our buildfarm results. This patch can be reverted when and if the code is fixed to not issue notices during cache reload events.
* Fix cost estimates for EXISTS subqueries that are evaluated as initPlansTom Lane2007-09-22
| | | | | | | | | (because they are uncorrelated with the immediate parent query). We were charging the full run cost to the parent node, disregarding the fact that only one row need be fetched for EXISTS. While this would only be a cosmetic issue in most cases, it might possibly affect planning outcomes if the parent query were itself a subquery to some upper query. Per recent discussion with Steve Crawford.
* Fix erroneous Assert() in syslogger process start in EXEC_BACKEND case,Tom Lane2007-09-22
| | | | | per ITAGAKI Takahiro. Also, rewrite syslogger_forkexec() in hopes of eliminating the confusion in the first place.
* Fix bogus calculation of potential output string length in translate().Tom Lane2007-09-22
|
* Although I'd misdiagnosed the reason for the recent failures onTom Lane2007-09-22
| | | | | | buildfarm member grebe, I see no reason to revert the 1-byte-header-friendly changes I made in varlena.c. Instead, tweak the code a little bit to get more advantage out of that.
* Doh --- what's really happening on buildfarm member grebe is that itsTom Lane2007-09-22
| | | | malloc returns NULL for malloc(0). Defend against that case.
* Go back to using a separate method for doing ILIKE for single byteAndrew Dunstan2007-09-22
| | | | | | | character encodings that doesn't involve calling lower(). This should cure the performance regression in this case complained of by Guillaume Smet. It still leaves the horrid performance for multi-byte encodings introduced in 8.2, but there's no obvious solution for that in sight.
* Fix varlena.c routines to allow 1-byte-header text values. This is nowTom Lane2007-09-22
| | | | | | | demonstrably necessary for text_substring() since regexp_split functions may pass it such a value; and we might as well convert the whole file at once. Per buildfarm results (though I wonder why most machines aren't showing a failure).
* Fix regex, LIKE, and some other second-rank text-manipulation functionsTom Lane2007-09-21
| | | | | | to not cause needless copying of text datums that have 1-byte headers. Greg Stark, in response to performance gripe from Guillaume Smet and ITAGAKI Takahiro.
* Improve handling of prune/no-prune decisions by storing a page's oldestTom Lane2007-09-21
| | | | | | unpruned XMAX in its header. At the cost of 4 bytes per page, this keeps us from performing heap_page_prune when there's no chance of pruning anything. Seems to be necessary per Heikki's preliminary performance testing.
* Change tqual.c tests to use !TransactionIdIsCurrentTransactionId, rather thanTom Lane2007-09-21
| | | | | | | | TransactionIdDidAbort, when handling the case that xmin is one of the current transaction's XIDs and the tuple has been deleted. xmax must also be one of the current transaction's XIDs, since no one else can see it yet, and it's cheaper to look at local state than shared state to find out if xmax aborted. Per an idea of Heikki's.
* Make some simple performance improvements in TransactionIdIsInProgress().Tom Lane2007-09-21
| | | | | | | | | For XIDs of our own transaction and subtransactions, it's cheaper to ask TransactionIdIsCurrentTransactionId() than to look in shared memory. Also, the xids[] work array is always the same size within any given process, so malloc it just once instead of doing a palloc/pfree on every call; aside from being faster this lets us get rid of some goto's, since we no longer have any end-of-function pfree to do. Both ideas by Heikki.
* Fix comments that misspelled TransactionIdIsInProgress, per Heikki.Tom Lane2007-09-21
|
* Solaris portability fix that was previously made in contrib/tsearch2Tom Lane2007-09-20
| | | | but got lost from the version committed to main tree. Per Greg Stark.
* Revert ill-fated patch to release exclusive lock early after vacuumTom Lane2007-09-20
| | | | | truncates a table. Introduces race condition, as shown by buildfarm failures.
* Cleanup items from csvlog changes, per ITAGAKI Takahiro.Andrew Dunstan2007-09-20
|
* Fix msvc warnings, patch by Hannes Eder <Hannes@HannesEder.net>Teodor Sigaev2007-09-20
|
* HOT updates. When we update a tuple without changing any of its indexedTom Lane2007-09-20
| | | | | | | | | | | | columns, and the new version can be stored on the same heap page, we no longer generate extra index entries for the new version. Instead, index searches follow the HOT-chain links to ensure they find the correct tuple version. In addition, this patch introduces the ability to "prune" dead tuples on a per-page basis, without having to do a complete VACUUM pass to recover space. VACUUM is still needed to clean up dead index entries, however. Pavan Deolasee, with help from a bunch of other people.
* Prevent corr() from returning the wrong results for negative correlationNeil Conway2007-09-19
| | | | | | | | values. The previous coding essentially assumed that x = sqrt(x*x), which does not hold for x < 0. Thanks to Jie Zhang at Greenplum and Gavin Sherry for reporting this issue.
* Close previously open holes for invalidly encoded data to enter theAndrew Dunstan2007-09-18
| | | | | | | | | | | | | | | | | | | | | database via builtin functions, as recently discussed on -hackers. chr() now returns a character in the database encoding. For UTF8 encoded databases the argument is treated as a Unicode code point. For other multi-byte encodings the argument must designate a strict ascii character, or an error is raised, as is also the case if the argument is 0. ascii() is adjusted so that it remains the inverse of chr(). The two argument form of convert() is gone, and the three argument form now takes a bytea first argument and returns a bytea. To cover this loss three new functions are introduced: . convert_from(bytea, name) returns text - converts the first argument from the named encoding to the database encoding . convert_to(text, name) returns bytea - converts the first argument from the database encoding to the named encoding . length(bytea, name) returns int - gives the length of the first argument in characters in the named encoding
* Avoid possibly-unportable initializer, per buildfarm warningTeodor Sigaev2007-09-18
| | | | per notice by Gregory Stark <stark@enterprisedb.com>
* Remove extra tab in postgresql.confBruce Momjian2007-09-17
|
* Remove Assert(BgWriterShmem != NULL), which is rather pointless sinceTom Lane2007-09-16
| | | | | | | we'd dump core anyway immediately afterward if it were null; and it seems to confuse some versions of icc into generating bad code. Per report from Sergey Koposov. Patched in HEAD only, for the moment, since this is only likely to affect developers.
* Fix overflow in extract(epoch from interval) for intervals exceeding 68 years.Tom Lane2007-09-16
| | | | | Seems to have been introduced in 8.1 by careless SECS_PER_DAY search-and-replace.
* Fix aboriginal mistake in lazy VACUUM's code for truncating awayTom Lane2007-09-16
| | | | | | | | | | | | | no-longer-needed pages at the end of a table. We thought we could throw away pages containing HEAPTUPLE_DEAD tuples; but this is not so, because such tuples very likely have index entries pointing at them, and we wouldn't have removed the index entries. The problem only emerges in a somewhat unlikely race condition: the dead tuples have to have been inserted by a transaction that later aborted, and this has to have happened between VACUUM's initial scan of the page and then rechecking it for empty in count_nondeletable_pages. But that timespan will include an index-cleaning pass, so it's not all that hard to hit. This seems to explain a couple of previously unsolved bug reports.
* Remove GIN interface section, which is now documented in SGML.Bruce Momjian2007-09-14
| | | | Heikki Linnakangas
* Fix GSS API pointer checking.Bruce Momjian2007-09-14
| | | | Kris Jurka
* Fix typo in typecasting.Teodor Sigaev2007-09-13
| | | | patch from ITAGAKI Takahiro <itagaki.takahiro@oss.ntt.co.jp>
* Fix a memory leak in the autovacuum launcher code. Noted by Darcy Buskermolen,Alvaro Herrera2007-09-12
| | | | who reported it privately to me.
* Redefine the lp_flags field of item pointers as having four states, ratherTom Lane2007-09-12
| | | | | | | | | than two independent bits (one of which was never used in heap pages anyway, or at least hadn't been in a very long time). This gives us flexibility to add the HOT notions of redirected and dead item pointers without requiring anything so klugy as magic values of lp_off and lp_len. The state values are chosen so that for the states currently in use (pre-HOT) there is no change in the physical representation.
* Perform post-escaping encoding validity checks on SQL literals and COPY inputAndrew Dunstan2007-09-12
| | | | so that invalidly encoded data cannot enter the database by these means.
* Add a CHECK_FOR_INTERRUPTS call in the site where the vacuum delay pointAlvaro Herrera2007-09-12
| | | | was removed.
* Make sure that open hash table scans are cleaned up when bgwriter tries toTom Lane2007-09-11
| | | | | | | | recover from elog(ERROR). Problem was created by introduction of hash seq search tracking awhile back, and affects all branches that have bgwriter; in HEAD the disease has snuck into autovacuum and walwriter too. (Not sure that the latter two use hash_seq_search at the moment, but surely they might someday.) Per report from Sergey Koposov.
* Include hash table name in all the internal-error elog messages inTom Lane2007-09-11
| | | | | dynahash.c. Sergey Koposov's current open problem shows the possible usefulness of this, and it doesn't add much code.
* Remove QueryOperand->istrue flag, it was used only in cover rankingTeodor Sigaev2007-09-11
| | | | (ts_rank_cd). Use palloc'ed array in ranking instead of flag.
* Fix header's size of structs defines in ispell.Teodor Sigaev2007-09-11
| | | | Backpatch is needed for contrib version.
* Add regression tests for ispell, synonym and thesaurus dictionaries.Teodor Sigaev2007-09-11
| | | | | | | | Rename synonym.syn.sample and thesaurs.ths.sample to synonym_sample.syn and thesaurs_sample.ths accordingly to be able to use they in regression test. Ispell dictionary uses synthetic simple dictionary files.
* Fix ts_debug function to prevent unneeded calls of ts_lexize().Teodor Sigaev2007-09-11
| | | | | It will be mush better to reimplement ts_debug in C (instead of SQL as now), but it's planned for the future.
* Refactor from Heikki Linnakangas <heikki@enterprisedb.com>:Teodor Sigaev2007-09-11
| | | | | | | | | | | | | | * Defined new struct WordEntryPosVector that holds a uint16 length and a variable size array of WordEntries. This replaces the previous convention of a variable size uint16 array, with the first element implying the length. WordEntryPosVector has the same layout in memory, but is more readable in source code. The POSDATAPTR and POSDATALEN macros are still used, though it would now be more readable to access the fields in WordEntryPosVector directly. * Removed needfree field from DocRepresentation. It was always set to false. * Miscellaneous other commenting and refactoring
* Rename recently-added pg_stat_activity column from txn_start to xact_start,Tom Lane2007-09-11
| | | | for consistency with other column names such as in pg_stat_database.
* Arrange for SET LOCAL's effects to persist until the end of the current topTom Lane2007-09-11
| | | | | | | | | | | | | | transaction, unless rolled back or overridden by a SET clause for the same variable attached to a surrounding function call. Per discussion, these seem the best semantics. Note that this is an INCOMPATIBLE CHANGE: in 8.0 through 8.2, SET LOCAL's effects disappeared at subtransaction commit (leading to behavior that made little sense at the SQL level). I took advantage of the opportunity to rewrite and simplify the GUC variable save/restore logic a little bit. The old idea of a "tentative" value is gone; it was a hangover from before we had a stack. Also, we no longer need a stack entry for every nesting level, but only for those in which a variable's value actually changed.
* Make CLUSTER and REINDEX silently skip remote temp tables in theirAlvaro Herrera2007-09-10
| | | | | | database-wide editions. Per report from bitsandbytes88 <at> hotmail.com and subsequent discussion.
* Release the exclusive lock on the table early after truncating it in lazyAlvaro Herrera2007-09-10
| | | | vacuum, instead of waiting till commit.
* Fix recently introduced bugs about parsing ispell/hunspell files.Teodor Sigaev2007-09-10
| | | | | | In most cases it cause because of unneeded lowercasing of flags. Per experiment with regression checks with ispell dictionary.
* Remove the vacuum_delay_point call in count_nondeletable_pages, because we holdAlvaro Herrera2007-09-10
| | | | | | | | | | | | an exclusive lock on the table at this point, which we want to release as soon as possible. This is called in the phase of lazy vacuum where we truncate the empty pages at the end of the table. An alternative solution would be to lower the vacuum delay settings before starting the truncating phase, but this doesn't work very well in autovacuum due to the autobalancing code (which can cause other processes to change our cost delay settings). This case could be considered in the balancing code, but it is simpler this way.