summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2008-03-14Fix inappropriately-timed memory context switch in autovacuum_do_vac_analyze.Tom Lane
This accidentally failed to fail before 8.3, because the context we were switching back to was long-lived anyway; but it sure looks risky as can be now. Well spotted by Pavan Deolasee.
2008-03-14Fix vacuum so that autovacuum is really not cancelled when doing an emergencyAlvaro Herrera
job (i.e. to prevent Xid wraparound problems.) Bug reported by ITAGAKI Takahiro in 20080314103837.63D3.52131E4D@oss.ntt.co.jp, though I didn't use his patch.
2008-03-13Update to tzdata 2008a distribution (Chilean DST law change).Tom Lane
2008-03-13Fix varstr_cmp's special case for UTF8 encoding on Windows so that stringsTom Lane
that are reported as "equal" by wcscoll() are checked to see if they really are bitwise equal, and are sorted per strcmp() if not. We made this happen a couple of years ago in the regular code path, but it unaccountably got left out of the Windows/UTF8 case (probably brain fade on my part at the time). As in the prior set of changes, affected users may need to reindex indexes on textual columns. Backpatch as far as 8.2, which is the oldest release we are still supporting on Windows.
2008-03-13Fix heap_page_prune's problem with failing to send cache invalidationTom Lane
messages if the calling transaction aborts later on. Collapsing out line pointer redirects is a done deal as soon as we complete the page update, so syscache *must* be notified even if the VACUUM FULL as a whole doesn't complete. To fix, add some functionality to inval.c to allow the pending inval messages to be sent immediately while heap_page_prune is still running. The implementation is a bit chintzy: it will only work in the context of VACUUM FULL. But that's all we need now, and it can always be extended later if needed. Per my trouble report of a week ago.
2008-03-12Fix pg_plan_queries() to restore the previous setting of ActiveSnapshotTom Lane
(probably NULL) before exiting. Up to now it's just left the variable as it set it, which means that after we're done processing the current client message, ActiveSnapshot is probably pointing at garbage (because this function is typically run in MessageContext which will get reset). There doesn't seem to have been any code path in which that mattered before 8.3, but now the plancache module might try to use the stale value if the next client message is a Bind for a prepared statement that is in need of replanning. Per report from Alex Hunsaker.
2008-03-12Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by postponingTom Lane
pg_listener modifications commanded by LISTEN and UNLISTEN until the end of the current transaction. This allows us to hold the ExclusiveLock on pg_listener until after commit, with no greater risk of deadlock than there was before. Aside from fixing the race condition, this gets rid of a truly ugly kludge that was there before, namely having to ignore HeapTupleBeingUpdated failures during NOTIFY. There is a small potential incompatibility, which is that if a transaction issues LISTEN or UNLISTEN and then looks into pg_listener before committing, it won't see any resulting row insertion or deletion, where before it would have. It seems unlikely that anyone would be depending on that, though. This patch also disallows LISTEN and UNLISTEN inside a prepared transaction. That case had some pretty undesirable properties already, such as possibly allowing pg_listener entries to be made for PIDs no longer present, so disallowing it seems like a better idea than trying to maintain the behavior.
2008-03-11Prevent psql \copy from accepting multiple string parameters, e.g.Bruce Momjian
test=> \copy billing_data from ../BillingSamplePricerFile.csv with csv header quote as '"' null as 'abc' null as '123' \copy: parse error at "null" Per report from Stephen Frost
2008-03-11Make TransactionIdIsInProgress check transam.c's single-item XID status cacheTom Lane
before it goes groveling through the ProcArray. In situations where the same recently-committed transaction ID is checked repeatedly by tqual.c, this saves a lot of shared-memory searches. And it's cheap enough that it shouldn't hurt noticeably when it doesn't help. Concept and patch by Simon, some minor tweaking and comment-cleanup by Tom.
2008-03-10Provide a build-time option to store large relations as single files, ratherTom Lane
than dividing them into 1GB segments as has been our longtime practice. This requires working support for large files in the operating system; at least for the time being, it won't be the default. Zdenek Kotala
2008-03-10Bump catversion from guc enum patch, which I forgot. Sorry!Magnus Hagander
2008-03-10Fix unportable coding of new error message, per Kris Jurka.Tom Lane
2008-03-10Implement enum type for guc parameters, and convert a couple of existingMagnus Hagander
variables to it. More need to be converted, but I wanted to get this in before it conflicts with too much... Other than just centralising the text-to-int conversion for parameters, this allows the pg_settings view to contain a list of available options and allows an error hint to show what values are allowed.
2008-03-10Document and enforce that the usable range of setseed() arguments isTom Lane
-1 to 1, not 0 to 1. The actual behavior for values within this range does not change. Kris Jurka
2008-03-10Throw an error for negative LIMIT or OFFSET values, instead of silentlyTom Lane
treating them as zero. Simon Riggs
2008-03-10Increase the default value of log_min_messages to WARNING, so thatTom Lane
NOTICE-grade messages are not logged by default. Per pgsql-hackers discussion back on 21-Nov-2007.
2008-03-10Add a CaseSensitive parameter to synonym dictionaries.Tom Lane
Simon Riggs
2008-03-10Remove no-longer-used XLogCacheByte field of XLogCtl.Tom Lane
Itagaki Takahiro
2008-03-10Reduce memory consumption during VACUUM of large relations, by usingTom Lane
FSMPageData (6 bytes) instead of PageFreeSpaceInfo (8 or 16 bytes) for the temporary array of page-free-space information. Itagaki Takahiro
2008-03-09Remove postmaster.c's check that NBuffers is at least twice MaxBackends.Tom Lane
With the addition of multiple autovacuum workers, our choices were to delete the check, document the interaction with autovacuum_max_workers, or complicate the check to try to hide that interaction. Since this restriction has never been adequate to ensure backends can't run out of pinnable buffers, it doesn't really have enough excuse to live to justify the second or third choices. Per discussion of a complaint from Andreas Kling (see also bug #3888). This commit also removes several documentation references to this restriction, but I'm not sure I got them all.
2008-03-09Change patternsel() so that instead of switching from a pureTom Lane
pattern-examination heuristic method to purely histogram-driven selectivity at histogram size 100, we compute both estimates and use a weighted average. The weight put on the heuristic estimate decreases linearly with histogram size, dropping to zero for 100 or more histogram entries. Likewise in ltreeparentsel(). After a patch by Greg Stark, though I reorganized the logic a bit to give the caller of histogram_selectivity() more control.
2008-03-08Modify prefix_selectivity() so that it will never estimate the selectivityTom Lane
of the generated range condition var >= 'foo' AND var < 'fop' as being less than what eqsel() would estimate for var = 'foo'. This is intuitively reasonable and it gets rid of the need for some entirely ad-hoc coding we formerly used to reject bogus estimates. The basic problem here is that if the prefix is more than a few characters long, the two boundary values are too close together to be distinguishable by comparison to the column histogram, resulting in a selectivity estimate of zero, which is often not very sane. Change motivated by an example from Peter Eisentraut. Arguably this is a bug fix, but I'll refrain from back-patching it for the moment.
2008-03-08Refactor heap_page_prune so that instead of changing item states on-the-fly,Tom Lane
it accumulates the set of changes to be made and then applies them. It had to accumulate the set of changes anyway to prepare a WAL record for the pruning action, so this isn't an enormous change; the only new complexity is to not doubly mark tuples that are visited twice in the scan. The main advantage is that we can substantially reduce the scope of the critical section in which the changes are applied, thus avoiding PANIC in foreseeable cases like running out of memory in inval.c. A nice secondary advantage is that it is now far clearer that WAL replay will actually do the same thing that the original pruning did. This commit doesn't do anything about the open problem that CacheInvalidateHeapTuple doesn't have the right semantics for a CTID change caused by collapsing out a redirect pointer. But whatever we do about that, it'll be a good idea to not do it inside a critical section.
2008-03-08Improve efficiency of attribute scanning in CopyReadAttributesCSV.Andrew Dunstan
The loop is split into two parts, inside quotes, and outside quotes, saving some instructions in both parts. Heikki Linnakangas
2008-03-08Improve pglz_decompress() so that it cannot clobber memory beyond theTom Lane
available output buffer when presented with corrupt input. Some testing suggests that this slows the decompression loop about 1%, which seems an acceptable price to pay for more robustness. (Curiously, the penalty seems to be *less* on not-very-compressible data, which I didn't expect since the overhead per output byte ought to be more in the literal-bytes path.) Patch from Zdenek Kotala. I fixed a corner case and did some renaming of variables to make the routine more readable.
2008-03-07This patch addresses some issues in TOAST compression strategy thatTom Lane
were discussed last year, but we felt it was too late in the 8.3 cycle to change the code immediately. Specifically, the patch: * Reduces the minimum datum size to be considered for compression from 256 to 32 bytes, as suggested by Greg Stark. * Increases the required compression rate for compressed storage from 20% to 25%, again per Greg's suggestion. * Replaces force_input_size (size above which compression is forced) with a maximum size to be considered for compression. It was agreed that allowing large inputs to escape the minimum-compression-rate requirement was not bright, and that indeed we'd rather have a knob that acted in the other direction. I set this value to 1MB for the moment, but it could use some performance studies to tune it. * Adds an early-failure path to the compressor as suggested by Jan: if it's been unable to find even one compressible substring in the first 1KB (parameterizable), assume we're looking at incompressible input and give up. (Possibly this logic can be improved, but I'll commit it as-is for now.) * Improves the toasting heuristics so that when we have very large fields with attstorage 'x' or 'e', we will push those out to toast storage before considering inline compression of shorter fields. This also responds to a suggestion of Greg's, though my original proposal for a solution was a bit off base because it didn't fix the problem for large 'e' fields. There was some discussion in the earlier threads of exposing some of the compression knobs to users, perhaps even on a per-column basis. I have not done anything about that here. It seems to me that if we are changing around the parameters, we'd better get some experience and be sure we are happy with the design before we set things in stone by providing user-visible knobs.
2008-03-07Change hashscan.c to keep its list of active hash index scans inTom Lane
TopMemoryContext, rather than scattered through executor per-query contexts. This poses no danger of memory leak since the ResourceOwner mechanism guarantees release of no-longer-needed items. It is needed because the per-query context might already be released by the time we try to clean up the hash scan list. Report by ykhuang, diagnosis by Heikki. Back-patch to 8.0, where the ResourceOwner-based cleanup was introduced. The given test case does not fail before 8.2, probably because we rearranged transaction abort processing somehow; but this coding is undoubtedly risky so I'll patch 8.0 and 8.1 anyway.
2008-03-07Fix memory arrangement of tsquery after removing stop words. It causesTeodor Sigaev
a unused memory holes in tsquery. Per report by Richard Huxton <dev@archonet.com>. It was working well because in fact tsquery->size is not used for any kind of operation except comparing tsqueries. So, in HEAD it's enough to fix to_tsquery function, but for previous version it's needed to remove optimization in CompareTSQ to prevent requirement of renew all stored tsquery.
2008-03-06Improve "bgwriter_lru_multiplier" GUC description.Bruce Momjian
2008-03-05Clean up double negative, per Tom Lane.Alvaro Herrera
2008-03-05Add support for dlopen on recent NetBSD/MIPS, per Rémi Zara.Alvaro Herrera
2008-03-05In PrepareToInvalidateCacheTuple, don't force initialization of catalogTom Lane
caches that we don't actually need to touch. This saves some trivial number of cycles and avoids certain cases of deadlock when doing concurrent VACUUM FULL on system catalogs. Per report from Gavin Roy. Backpatch to 8.2. In earlier versions, CatalogCacheInitializeCache didn't lock the relation so there's no deadlock risk (though that certainly had plenty of risks of its own).
2008-03-05When text search string is too long, in error message report actual andBruce Momjian
maximum number of bytes allowed.
2008-03-05Include -lgss in libpq link, if available. Bjorn MunchTom Lane
2008-03-04Fix PREPARE TRANSACTION to reject the case where the transaction has dropped aTom Lane
temporary table; we can't support that because there's no way to clean up the source backend's internal state if the eventual COMMIT PREPARED is done by another backend. This was checked correctly in 8.1 but I broke it in 8.2 :-(. Patch by Heikki Linnakangas, original trouble report by John Smith.
2008-03-04Use windows DACL fix for pg_regress as well.Magnus Hagander
Dave Page
2008-03-02Fixed bug that caused arrays of varchar to be output with incomplete name.Michael Meskes
In the process expanded one test case,
2008-03-02Venezuela Time now means UTC-4:30, not UTC-4:00. Adjust our treatmentTom Lane
of "VET" accordingly. Per bug #3997 from Aaron Mizrachi.
2008-03-01Fix another place that was assuming that a local variable declared asTom Lane
"struct varlena" would be at least word-aligned. Per buildfarm results from gypsy_moth. I did a little bit of trawling for other instances of this coding pattern, and didn't find any; but if we turn up any more of them I think we'd better revert the "char [4]" patch and find another way of making tuptoaster.c alignment-safe.
2008-03-01Fix unportable usages of tolower(). On signed-char machines, it is necessaryTom Lane
to explicitly cast the output back to char before comparing it to a char value, else we get the wrong result for high-bit-set characters. Found by Rolf Jentsch. Also, fix several places where <ctype.h> functions were being called without casting the argument to unsigned char; this is likewise unportable, but we keep making that mistake :-(. These found by buildfarm member salamander, which I will desperately miss if it ever goes belly-up.
2008-03-01Disable the undocumented xmlvalidate() function, which was unintentionallyTom Lane
left in the code though it was not meant to be provided. It represents a security hole because unprivileged users could use it to look at (at least the first line of) any file readable by the backend. Fortunately, this is only possible if the backend was built with XML support, so the damage is at least mitigated; and 8.3 probably hasn't propagated into any security-critical uses yet anyway. Per report from Sergey Burladyan.
2008-02-29Don't call AddUserToDacl on CygwinAndrew Dunstan
2008-02-29Remove long-unused and broken TCL_ARRAYS.Alvaro Herrera
2008-02-29Reducing the assumed alignment of struct varlena means that the compilerTom Lane
is also licensed to put a local variable declared that way at an unaligned address. Which will not work if the variable is then manipulated with SET_VARSIZE or other macros that assume alignment. So the previous patch is not an unalloyed good, but on balance I think it's still a win, since we have very few places that do that sort of thing. Fix the one place in tuptoaster.c that does it. Per buildfarm results from gypsy_moth (I'm a bit surprised that only one machine showed a failure).
2008-02-29Fix handling of restricted processes for Windows Vista (mainly),Magnus Hagander
by explicitly adding back the user to the DACL of the new process. This fixes the failure case when executing as the Administrator user, which had no permissions left at all after we dropped the Administrators group. Dave Page with some modifications from me
2008-02-29Write the objfiles.txt rules in a way that is compatible with GNU make 3.78,Peter Eisentraut
and simpler, too.
2008-02-29Fix several memory leaks when rescanning SRFs. Arrange for an SRF'sNeil Conway
"multi_call_ctx" to be a distinct sub-context of the EState's per-query context, and delete the multi_call_ctx as soon as the SRF finishes execution. This avoids leaking SRF memory until the end of the current query, which is particularly egregious when the SRF is scanned multiple times. This change also fixes a leak of the fields of the AttInMetadata struct in shutdown_MultiFuncCall(). Also fix a leak of the SRF result TupleDesc when rescanning a FunctionScan node. The TupleDesc is allocated in the per-query context for every call to ExecMakeTableFunctionResult(), so we should free it after calling that function. Since the SRF might choose to return a non-expendable TupleDesc, we only free the TupleDesc if it is not being reference-counted. Backpatch to 8.3 and 8.2 stable branches.
2008-02-28Support for building contrib/uuid-ossp with MSVC.Magnus Hagander
Original patch from Hiroshi Saito, modified by me.
2008-02-27Change expand_subsys function so that it preserves the relative order ofPeter Eisentraut
the files passed as argument. This is desirable so that the dtrace rule in src/backend/Makefile works.
2008-02-27If RelationBuildDesc() fails to open a critical system index, PANIC withTom Lane
a relevant error message instead of just dumping core. Odd that nobody reported this before Darren Reed.