summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2006-01-29When building a bitmap scan, must copy the bitmapqualorig expression treeTom Lane
to avoid sharing substructure with the lower-level indexquals. This is currently only an issue if there are SubPlans in the indexquals, which is uncommon but not impossible --- see bug #2218 reported by Nicholas Vinen. We use the same kluge for indexqual vs indexqualorig in the index scans themselves ... would be nice to clean this up someday.
2006-01-29Fix Assert that's no longer correct now that RowCompareExpr is indexable.Tom Lane
2006-01-29Fix code that checks to see if an index can be considered to match the query'sTom Lane
requested sort order. It was assuming that build_index_pathkeys always generates a pathkey per index column, which was not true if implied equality deduction had determined that two index columns were effectively equated to each other. Simplest fix seems to be to install an option that causes build_index_pathkeys to support this behavior as well as the original one. Per report from Brian Hirt.
2006-01-28Undo perl's nasty locale setting on Windows. Since we can't do that asAndrew Dunstan
elsewhere by setting the environment appropriately, we make perl do it right after interpreter startup by calling its POSIX::setlocale().
2006-01-28Per a bug report from Theo Schlossnagle, plperl_return_next() leaksNeil Conway
memory in the executor's per-query memory context. It also inefficient: it invokes get_call_result_type() and TupleDescGetAttInMetadata() for every call to return_next, rather than invoking them once (per PL/Perl function call) and memoizing the result. This patch makes the following changes: - refactor the code to include all the "per PL/Perl function call" data inside a single struct, "current_call_data". This means we don't need to save and restore N pointers for every recursive call into PL/Perl, we can just save and restore one. - lookup the return type metadata needed by plperl_return_next() once, and then stash it in "current_call_data", so as to avoid doing the lookup for every call to return_next. - create a temporary memory context in which to evaluate the return type's input functions. This memory context is reset for each call to return_next. The patch appears to fix the memory leak, and substantially reduces the overhead imposed by return_next.
2006-01-27Tweak initdb to reduce verbosity of progress messages, by printing justTom Lane
one 'creating subdirectories' message instead of one per subdirectory. The original decision to print something for each subdirectory was made when there were only one or two of 'em; we have way too many now. Per discussion.
2006-01-26Suppress signed-vs-unsigned-char warning.Tom Lane
2006-01-26Fix display of whole-row Var appearing at the top level of a SELECT list.Tom Lane
While we normally prefer the notation "foo.*" for a whole-row Var, that does not work at SELECT top level, because in that context the parser will assume that what is wanted is to expand the "*" into a list of separate target columns, yielding behavior different from a whole-row Var. We have to emit just "foo" instead in that context. Per report from Sokolov Yura.
2006-01-26Clean up the INET-vs-CIDR situation. Get rid of the internal is_cidr flagTom Lane
and rely exclusively on the SQL type system to tell the difference between the types. Prevent creation of invalid CIDR values via casting from INET or set_masklen() --- both of these operations now silently zero any bits to the right of the netmask. Remove duplicate CIDR comparison operators, letting the type rely on the INET operators instead.
2006-01-25Remove the no-longer-useful HashItem/HashItemData level of structure.Tom Lane
Same motivation as for BTItem.
2006-01-25Remove the no-longer-useful BTItem/BTItemData level of structure, andTom Lane
just refer to btree index entries as plain IndexTuples, which is what they have been for a very long time. This is mostly just an exercise in removing extraneous notation, but it does save a palloc/pfree cycle per index insertion.
2006-01-25Remove unnecessary PQconsumeInput call from PQputCopyData; it's redundantTom Lane
because pqSendSome will absorb input data anytime it'd be forced to block. Avoiding a kernel call per PQputCopyData call helps COPY speed materially. Alon Goldshuv
2006-01-25Allow row comparisons to be used as indexscan qualifications.Tom Lane
This completes the project to upgrade our handling of row comparisons.
2006-01-25Update regression error message for NUMERIC range overflow. Display "1"Bruce Momjian
instead of "10^0".
2006-01-25Update regression error message for NUMERIC range overflow. Display "1"Bruce Momjian
instead of 10^0.
2006-01-25Improve error message when NUMERIC precision is exceeded.Bruce Momjian
2006-01-24Fix unportable usage of socklen_t: should use ACCEPT_TYPE_ARG3 macroTom Lane
provided by configure, instead. Per bug #2205.
2006-01-24- Synced parser and keyword list.Michael Meskes
- Added another test case.
2006-01-23Instead of using a numberOfRequiredKeys count to distinguish requiredTom Lane
and non-required keys in a btree index scan, mark the required scankeys with private flag bits SK_BT_REQFWD and/or SK_BT_REQBKWD. This seems at least marginally clearer to me, and it eliminates a wired-into-the- data-structure assumption that required keys are consecutive. Even though that assumption will remain true for the foreseeable future, having it in there makes the code seem more complex than necessary.
2006-01-23Prototype fix for typo.Bruce Momjian
2006-01-23Use is_cidr in INET/CIDR structure, rather than the generic 'type'.Bruce Momjian
2006-01-22Fix alias-for-target-table-of-UPDATE-or-DELETE patch so that alias canTom Lane
be any ColId other than 'SET', rather than only IDENT as originally. Per discussion.
2006-01-22Allow an optional alias for the target table to be specified for UPDATENeil Conway
and DELETE. If specified, the alias must be used instead of the full table name. Also, the alias currently cannot be used in the SET clause of UPDATE. Patch from Atsushi Ogawa, various editorialization by Neil Conway. Along the way, make the rowtypes regression test pass if add_missing_from is enabled, and add a new (skeletal) regression test for DELETE.
2006-01-21Repair longstanding bug in slru/clog logic: it is possible for two backendsTom Lane
to try to create a log segment file concurrently, but the code erroneously specified O_EXCL to open(), resulting in a needless failure. Before 7.4, it was even a PANIC condition :-(. Correct code is actually simpler than what we had, because we can just say O_CREAT to start with and not need a second open() call. I believe this accounts for several recent reports of hard-to-reproduce "could not create file ...: File exists" errors in both pg_clog and pg_subtrans.
2006-01-21Add GRANT ON SEQUENCE syntax to support sequence-only permissions.Bruce Momjian
Continue to support GRANT ON [TABLE] for sequences for backward compatibility; issue warning for invalid sequence permissions. [Backward compatibility warning message.] Add USAGE permission for sequences that allows only currval() and nextval(), not setval(). Mention object name in grant/revoke warnings because of possible multi-object operations.
2006-01-20Fix thinko in autovacuum's test to skip temp tables: want to skip anyTom Lane
temp table not only our own process' tables. It's not real important since vacuum.c will skip temp tables anyway, but might as well make the code do what it claims to do.
2006-01-19Add some test scaffolding to allow cache-flush stress testing (and I doTom Lane
mean stress ... system is orders of magnitude slower with this enabled).
2006-01-19Remove $(DESTDIR) from the pgxs BE_DLLLIBS= -L path for AIX and Darwin.Bruce Momjian
2006-01-19Remove $(DESTDIR) from the pgxs BE_DLLLIBS= -L path.Bruce Momjian
2006-01-19Avoid crashing if relcache flush occurs while trying to load data into anTom Lane
index's support-function cache (in index_getprocinfo). Since none of that data can change for an index that's in active use, it seems sufficient to treat all open indexes the same way we were treating "nailed" system indexes --- that is, just re-read the pg_class row and leave the rest of the relcache entry strictly alone. The pg_class re-read might not be strictly necessary either, but since the reltablespace and relfilenode can change in normal operation it seems safest to do it. (We don't support changing any of the other info about an index at all, at the moment.) Back-patch as far as 8.0. It might be possible to adapt the patch to 7.4, but it would take more work than I care to expend for such a low-probability problem. 7.3 is out of luck for sure.
2006-01-19Fix pgxs -L library path specification for Win32 and Cygwin, was /bin,Bruce Momjian
now /lib.
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-17Data transferred binary is now put into the variables verbatim.Michael Meskes
Also added a test case for a binary cursor.
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-15When using GCC on AMD64 and PPC, ECPGget_variable() takes a va_list *, notNeil Conway
a va_list. Christof Petig's previous patch made this change, but neglected to update ecpglib/descriptor.c, resulting in a compiler warning (and a likely runtime crash) on AMD64 and PPC.
2006-01-15Add regression tests to verify that domain constraints on parametersNeil Conway
to prepared statements with unknown type are correctly enforced, per recent bug report.
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-14Fix pg_ctl crash on "unregister" when a data directory is not specified.Peter Eisentraut
by Magnus Hagander
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-12Clear up remaining compile warning for plperl on Windows.Andrew Dunstan