aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* 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.
* Change void* opaque argument to Datum type, add argument'sTeodor Sigaev2007-09-10
| | | | | | name to PushFunction type definition. Per suggestion by Tome Lane <tgl@sss.pgh.pa.us>
* Fixes from Heikki Linnakangas <heikki@enterprisedb.com>:Teodor Sigaev2007-09-10
| | | | | | | Apparently it's a bug I introduced when I refactored spell.c to use the readline function for reading and recoding the input file. I didn't notice that some calls to STRNCMP used the non-lowercased version of the input line.
* Revert temporary patch that made synchronous_commit default to OFF.Tom Lane2007-09-10
|
* Set the correct context (PGC_SIGHUP) for log_autovacuum, per ITAGAKI Takahiro.Tom Lane2007-09-10
| | | | Fix grammatical errors in its description.
* Code review for GUC revert-values-if-removed-from-postgresql.conf patch;Tom Lane2007-09-10
| | | | | | | | | | | and in passing, fix some bogosities dating from the custom_variable_classes patch. Fix guc-file.l to correctly check changes in custom_variable_classes that are attempted concurrently with additions/removals of custom variables, and don't allow the new setting to be applied in advance of checking it. Clean up messy and undocumented situation for string variables with NULL boot_val. Fix DefineCustomVariable functions to initialize boot_val correctly. Prevent find_option from inserting bogus placeholders for custom variables that are simply inquired about rather than being set.
* Replace the former method of determining snapshot xmax --- to wit, callingTom Lane2007-09-08
| | | | | | | | | | | | | | | ReadNewTransactionId from GetSnapshotData --- with a "latestCompletedXid" variable that is updated during transaction commit or abort. Since latestCompletedXid is written only in places that had to lock ProcArrayLock exclusively anyway, and is read only in places that had to lock ProcArrayLock shared anyway, it adds no new locking requirements to the system despite being cluster-wide. Moreover, removing ReadNewTransactionId from snapshot acquisition eliminates the need to take both XidGenLock and ProcArrayLock at the same time. Since XidGenLock is sometimes held across I/O this can be a significant win. Some preliminary benchmarking suggested that this patch has no effect on average throughput but can significantly improve the worst-case transaction times seen in pgbench. Concept by Florian Pflug, implementation by Tom Lane.