summaryrefslogtreecommitdiff
path: root/src/backend
AgeCommit message (Collapse)Author
2006-01-19It turns out that TablespaceCreateDbspace fails badly if a relcache flushTom Lane
occurs when it tries to heap_open pg_tablespace. When control returns to smgrcreate, that routine will be holding a dangling pointer to a closed SMgrRelation, resulting in mayhem. This is of course a consequence of the violation of proper module layering inherent in having smgr.c call a tablespace command routine, but the simplest fix seems to be to change the locking mechanism. There's no real need for TablespaceCreateDbspace to touch pg_tablespace at all --- it's only opening it as a way of locking against a parallel DROP TABLESPACE command. A much better answer is to create a special-purpose LWLock to interlock these two operations. This drops TablespaceCreateDbspace quite a few layers down the food chain and makes it something reasonably safe for smgr to call.
2006-01-19Fix a tiny memory leak (one List header) in RelationCacheInvalidate().Tom Lane
This is utterly insignificant in normal operation, but it becomes a problem during cache inval stress testing. The original coding in fact had no leak --- the 8.0 List rewrite created the issue. I wonder whether list_concat should pfree the discarded header?
2006-01-18Modify pgstats code to reduce performance penalties from oversized stats dataTom Lane
files: avoid creating stats hashtable entries for tables that aren't being touched except by vacuum/analyze, ensure that entries for dropped tables are removed promptly, and tweak the data layout to avoid storing useless struct padding. Also improve the performance of pgstat_vacuum_tabstat(), and make sure that autovacuum invokes it exactly once per autovac cycle rather than multiple times or not at all. This should cure recent complaints about 8.1 showing much higher stats I/O volume than was seen in 8.0. It'd still be a good idea to revisit the design with an eye to not re-writing the entire stats dataset every half second ... but that would be too much to backpatch, I fear.
2006-01-18Add a new system view, pg_cursors, that displays the currently availableNeil Conway
cursors. Patch from Joachim Wieland, review and ediorialization by Neil Conway. The view lists cursors defined by DECLARE CURSOR, using SPI, or via the Bind message of the frontend/backend protocol. This means the view does not list the unnamed portal or the portal created to implement EXECUTE. Because we do list SPI portals, there might be more rows in this view than you might expect if you are using SPI implicitly (e.g. via a procedural language). Per recent discussion on -hackers, the query string included in the view for cursors defined by DECLARE CURSOR is based on debug_query_string. That means it is not accurate if multiple queries separated by semicolons are submitted as one query string. However, there doesn't seem a trivial fix for that: debug_query_string is better than nothing. I also changed SPI_cursor_open() to include the source text for the portal it creates: AFAICS there is no reason not to do this. Update the documentation and regression tests, bump the catversion.
2006-01-17Fix fsync code to test whether F_FULLFSYNC is available, instead ofTom Lane
assuming it always is on Darwin. Per report from Neil Brandt.
2006-01-17Improve comments about btree's use of ScanKey data structures: thereTom Lane
are two basically different kinds of scankeys, and we ought to try harder to indicate which is used in each place in the code. I've chosen the names "search scankey" and "insertion scankey", though you could make about as good an argument for "operator scankey" and "comparison function scankey".
2006-01-16Change the parameter_types column of the pg_prepared_statements to beNeil Conway
an array of regtype, rather than an array of OIDs. This is likely to be more useful to user, and the type OID can easily be obtained by casting a regtype value to OID. Per suggestion from Tom. Update the documentation and regression tests, and bump the catversion.
2006-01-15Allow the types of parameters to PREPARE to be inferred. If a parameter'sNeil Conway
data type is unspecified or is declared to be "unknown", the type will be inferred from the context in which the parameter is used. This was already possible for protocol-level prepared statements.
2006-01-14Some minor code cleanup, falling out from the removal of rtree. SK_NEGATETom Lane
isn't being used anywhere anymore, and there seems no point in a generic index_keytest() routine when two out of three remaining access methods aren't using it. Also, add a comment documenting a convention for letting access methods define private flag bits in ScanKey sk_flags. There are no such flags at the moment but I'm thinking about changing btree's handling of "required keys" to use flag bits in the keys rather than a count of required key positions. Also, if some AM did still want SK_NEGATE then it would be reasonable to treat it as a private flag bit.
2006-01-14Add selectivity-calculation code for RowCompareExpr nodes. Simplistic,Tom Lane
but a lot better than nothing at all ...
2006-01-13Remove logic in XactLockTableWait() that attempted to mark a crashedTom Lane
transaction as aborted. Since we only call XactLockTableWait on XIDs that we believe to be currently running, the odds of this code ever actually firing are minimal. It's certainly unnecessary, since a transaction that's not either running or committed will be presumed aborted anyway. What's more, it's not hard to imagine scenarios where this could result in corrupting pg_clog: for instance, if a bogus XID somehow got passed to XactLockTableWait. I think the code probably dates from the ancient era when we didn't have TransactionIdIsInProgress; back then it may have been necessary, but now I think it's a waste of cycles and potentially dangerous. Per discussion with Qingqing Zhou and Karsten Hilbert.
2006-01-13Document that CREATE OPERATOR CLASS amounts to granting public executeTom Lane
permissions on the functions and operators contained in the opclass. Since we already require superuser privilege to create an operator class, there's no expansion-of-privilege hazard here, but if someone were to get the idea of building an opclass containing functions that need security restrictions, we'd better warn them off. Also, change the permission checks from have-execute-privilege to have-ownership, and then comment them all out since they're dead code anyway under the superuser restriction.
2006-01-13Require the issuer of CREATE TYPE to own the functions mentioned in theTom Lane
type definition. Because use of a type's I/O conversion functions isn't access-checked, CREATE TYPE amounts to granting public execute permissions on the functions, and so allowing it to anybody means that someone could theoretically gain access to a function he's not supposed to be able to execute. The parameter-type restrictions already enforced by CREATE TYPE make it fairly unlikely that this oversight is meaningful in practice, but still it seems like a good idea to plug the hole going forward. Also, document the implicit grant just in case anybody gets the idea of building I/O functions that might need security restrictions.
2006-01-12We neglected to apply domain constraints on UNKNOWN parameters toNeil Conway
prepared statements, per report from David Wheeler.
2006-01-12mbutils was previously doing some allocations, including invokingNeil Conway
fmgr_info(), in the TopMemoryContext. I couldn't see that the code actually leaked, but in general I think it's fragile to assume that pfree'ing an FmgrInfo along with its fn_extra field is enough to reclaim all the resources allocated by fmgr_info(). I changed the code to do its allocations in a new child context of TopMemoryContext, MbProcContext. When we want to release the allocations we can just reset the context, which is cleaner.
2006-01-12Repair "Halloween problem" in EvalPlanQual: a tuple that's been inserted byTom Lane
our own command (or more generally, xmin = our xact and cmin >= current command ID) should not be seen as good. Else we may try to update rows we already updated. This error was inserted last August while fixing the even bigger problem that the old coding wouldn't see *any* tuples inserted by our own transaction as good. Per report from Euler Taveira de Oliveira.
2006-01-11Create a standard function pg_sleep() to sleep for a specified amount of time.Tom Lane
Replace the former ad-hoc implementation used in the regression tests. Joachim Wieland
2006-01-11Cosmetic code cleanup: fix a bunch of places that used "return (expr);"Neil Conway
rather than "return expr;" -- the latter style is used in most of the tree. I kept the parentheses when they were necessary or useful because the return expression was complex.
2006-01-11Remove a confusing pair of parentheses.Neil Conway
2006-01-10Improve error messages for missing-FROM-entry cases, as per recent discussion.Tom Lane
2006-01-10Improve patternsel() by applying the operator itself to each valueTom Lane
listed in the column's most-common-values statistics entry. This gives us an exact selectivity result for the portion of the column population represented by the MCV list, which can be a big leg up in accuracy if that's a large fraction of the population. The heuristics involving pattern contents and prefix are applied only to the part of the population not included in the MCV list.
2006-01-09Change allow_system_table_mods to PGC_POSTMASTER, restoring previousPeter Eisentraut
behavior.
2006-01-08Fix the assert_enabled issue properly. This eliminates the former ABITom Lane
difference between USE_ASSERT_CHECKING and not: the assert_enabled variable is always there.
2006-01-08Recent patch broke guc.c for non-USE_ASSERT_CHECKING case. PerTom Lane
Stefan Kaltenbrunner.
2006-01-08Avoid leaking memory while reading toasted entries from pg_rewrite,Tom Lane
and nail a couple more system indexes into cache. This doesn't make any difference in normal system operation, but when forcing constant cache resets it's difficult to get through the rules regression test without these changes.
2006-01-08Add a new system view, pg_prepared_statements, that can be used toNeil Conway
access information about the prepared statements that are available in the current session. Original patch from Joachim Wieland, various improvements by Neil Conway. The "statement" column of the view contains the literal query string sent by the client, without any rewriting or pretty printing. This means that prepared statements created via SQL will be prefixed with "PREPARE ... AS ", whereas those prepared via the FE/BE protocol will not. That is unfortunate, but discussion on -patches did not yield an efficient way to improve this, and there is some merit in returning exactly what the client sent to the backend. Catalog version bumped, regression tests updated.
2006-01-07Add RelationOpenSmgr() calls to ensure rd_smgr is valid when we try toTom Lane
use it. While it normally has been opened earlier during btree index build, testing shows that it's possible for the link to be closed again if an sinval reset occurs while the index is being built.
2006-01-07Add comment explaining why RelationOpenSmgr() call is not needed.Tom Lane
2006-01-07During CatCacheRemoveCList, we must now remove any members that areTom Lane
dead and have become unreferenced. Before 8.1, such members were left for AtEOXact_CatCache() to clean up, but now AtEOXact_CatCache isn't supposed to have anything to do. In an assert-enabled build this bug leads to an assertion failure at transaction end, but in a non-assert build the dead member is effectively just a small memory leak. Per report from Jeremy Drake.
2006-01-06Fix failure to apply domain constraints to a NULL constant that's added toTom Lane
an INSERT target list during rule rewriting. Per report from John Supplee.
2006-01-06Fix Windows-only postmaster code to reject a connection request and continue,Tom Lane
rather than elog(FATAL), when there is no more room in ShmemBackendArray. This is a security issue since too many connection requests arriving close together could cause the postmaster to shut down, resulting in denial of service. Reported by Yoshiyuki Asaba, fixed by Magnus Hagander.
2006-01-06Convert Assert checking for empty page into a regular test and elog.Tom Lane
The consequences of overwriting a non-empty page are bad enough that we should not omit this test in production builds.
2006-01-06Fix ReadBuffer() to correctly handle the case where it's trying to extendTom Lane
the relation but it finds a pre-existing valid buffer. The buffer does not correspond to any page known to the kernel, so we *must* do smgrextend to ensure that the space becomes allocated. The 7.x branches all do this correctly, but the corner case got lost somewhere during 8.0 bufmgr rewrites. (My fault no doubt :-( ... I think I assumed that such a buffer must be not-BM_VALID, which is not so.)
2006-01-05Update x86 Solaris documenation ideas.Bruce Momjian
2006-01-05Add compile flags sample.Bruce Momjian
2006-01-05Make all command-line options of postmaster and postgres the same. SeePeter Eisentraut
http://archives.postgresql.org/pgsql-hackers/2006-01/msg00151.php for the complete plan.
2006-01-05Remove BEOS port.Bruce Momjian
2006-01-05Remove QNX port.Bruce Momjian
2006-01-04Rearrange backend startup sequence so that ShmemIndexLock can becomeTom Lane
an LWLock instead of a spinlock. This hardly matters on Unix machines but should improve startup performance on Windows (or any port using EXEC_BACKEND). Per previous discussion.
2006-01-04Fix another case in which autovacuum would fail while analyzingTom Lane
expressional indexes. Per report from Brian Hirt.
2006-01-03Assume select() might modify struct timeout, so remove previousBruce Momjian
optimization.
2006-01-03Use setitimer() for stats file write, rather than do a gettimeofday()Bruce Momjian
call for every stats packet read to adjust select() timeout. Other stylistic improvements.
2006-01-02Don't assume that LC_MESSAGES is always available on WIN32. Per Magnus.Tom Lane
2006-01-02Reset flex state in a way that works for both flex 2.5.4 and 2.5.31.Tom Lane
2006-01-02Change if (!(x || y)) construct with if (!x && !y), for clarity.Bruce Momjian
2006-01-01Rewrite ProcessConfigFile() to avoid misbehavior at EOF, as per reportTom Lane
from Andrus Moor. The former state-machine-style coding wasn't actually doing much except obscuring the control flow, and it didn't extend readily to fix this case, so I just took it out. Also, add a YY_FLUSH_BUFFER call to ensure the lexer is reset correctly if the previous scan failed partway through the file.
2006-01-01Remove DOS line endings ("\r\n") from several .po files. DOS line endingsNeil Conway
are inconsistent with the rest of the .po files, and apparently cause problems for Sun's cc. Per report on IRC from "bitvector2".
2005-12-31Rename variable to cmd_str.Bruce Momjian
2005-12-31Rename variable 'what' to 'stat_msg'.Bruce Momjian
2005-12-31Prefix client-side prepare with '[protocol]' rather than '[client]'.Bruce Momjian