aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
* My recent fix for semijoin planning didn't actually work for a semijoin with aTom Lane2008-11-28
| | | | | | RHS that can't be unique-ified --- join_is_legal has to check that before deciding to build a join, else we'll have an unimplementable joinrel. Per report from Greg Stark.
* Support regular expressions in pg_ident.conf.Magnus Hagander2008-11-28
|
* Fix bug in the tsvector stats collection function, which caused a crash ifHeikki Linnakangas2008-11-27
| | | | the sample contains just a one tsvector, containing only one lexeme.
* Fix obsolete comment regarding FSM truncation.Heikki Linnakangas2008-11-27
|
* Don't force creation of the FSM on searches. It will still be createdHeikki Linnakangas2008-11-27
| | | | | as soon as the first page fills up, and is marked as (almost) full, though.
* Drop CLI related features from the list, since we don't track the ODBCPeter Eisentraut2008-11-27
| | | | business in core.
* Mark features related to WITH/SELECT as supported.Peter Eisentraut2008-11-27
|
* Fix #ifdeffed debugging code to work with relation forks.Heikki Linnakangas2008-11-27
|
* Fix minor memory leak introduced in recent SQL-functions hacking: theTom Lane2008-11-27
| | | | | | DestReceiver created during postquel_start needs to be destroyed during postquel_end. In a moment of brain fade I had assumed this would be taken care of by FreeQueryDesc, but it's not (and shouldn't be).
* Rely on relcache invalidation to update the cached size of the FSM.Heikki Linnakangas2008-11-26
|
* Feature F442 "Mixed column references in set functions" is supported.Peter Eisentraut2008-11-26
|
* Add %expect 0 to all parser input files to prevent conflicts slipping by.Peter Eisentraut2008-11-26
|
* Make DISCARD ALL discard advisory locks, too. Marko KreenTom Lane2008-11-26
|
* Use ResourceOwners in the snapshot manager, instead of attempting to track themAlvaro Herrera2008-11-25
| | | | | | | | by hand. As an added bonus, the new code is smaller and more understandable, and the ugly loops are gone. This had been discussed all along but never implemented. It became clear that it really needed to be fixed after a bug report by Pavan Deolasee.
* CLUSTER VERBOSE and corresponding clusterdb --verbose optionPeter Eisentraut2008-11-24
| | | | Jim Cox and Peter Eisentraut
* Teach RequestCheckpoint() to wait and retry a few times if it can't signalTom Lane2008-11-23
| | | | | | | | the bgwriter immediately. This covers the case where the bgwriter is still starting up, as seen in a recent buildfarm failure. In future it might also assist with clean recovery after a bgwriter termination and restart --- right now the postmaster treats early bgwriter exit as a system crash, but that might not always be so.
* Switch the planner over to treating qualifications of a JOIN_SEMI join asTom Lane2008-11-22
| | | | | | | | | | | | | | | | | | | though it is an inner rather than outer join type. This essentially means that we don't bother to separate "pushed down" qual conditions from actual join quals at a semijoin plan node; which is okay because the restrictions of SQL syntax make it impossible to have a pushed-down qual that references the inner side of a semijoin. This allows noticeably better optimization of IN/EXISTS cases than we had before, since the equivalence-class machinery can now use those quals. Also fix a couple of other mistakes that had essentially disabled the ability to unique-ify the inner relation and then join it to just a subset of the left-hand relations. An example case using the regression database is select * from tenk1 a, tenk1 b where (a.unique1,b.unique2) in (select unique1,unique2 from tenk1 c); which is planned reasonably well by 8.3 and earlier but had been forcing a cartesian join of a/b in CVS HEAD.
* Fix a few more format argument warnings.Magnus Hagander2008-11-21
|
* Make the enumvals column of pg_settings be text[] instead of justMagnus Hagander2008-11-21
| | | | a comma separated string.
* Use relation_expr for TABLE command, requested by Tom.Peter Eisentraut2008-11-21
|
* Issue a proper error message when MD5 is attempted whenBruce Momjian2008-11-20
| | | | | | db_user_namespace is enabled. Also document this limitation.
* Fix breakage of bitmap scan plan creation for special index operators suchTom Lane2008-11-20
| | | | | | | | as LIKE. I oversimplified this code when removing support for plan-time determination of index operator lossiness back in April --- I had thought create_bitmap_subplan could stop returning two separate lists of qual conditions, but it still must so that we can treat special operators correctly in create_bitmap_scan_plan. Per report from Rushabh Lathia.
* TABLE commandPeter Eisentraut2008-11-20
|
* Add support for using SSL client certificates to authenticate to theMagnus Hagander2008-11-20
| | | | database (only for SSL connections, obviously).
* Control client certificate requesting with the pg_hba option "clientcert"Magnus Hagander2008-11-20
| | | | instead of just relying on the root certificate file to be present.
* Rethink the way FSM truncation works. Instead of WAL-logging FSMHeikki Linnakangas2008-11-19
| | | | | | | | | | | | | | | truncations in FSM code, call FreeSpaceMapTruncateRel from smgr_redo. To make that cleaner from modularity point of view, move the WAL-logging one level up to RelationTruncate, and move RelationTruncate and all the related WAL-logging to new src/backend/catalog/storage.c file. Introduce new RelationCreateStorage and RelationDropStorage functions that are used instead of calling smgrcreate/smgrscheduleunlink directly. Move the pending rel deletion stuff from smgrcreate/smgrscheduleunlink to the new functions. This leaves smgr.c as a thin wrapper around md.c; all the transactional stuff is now in storage.c. This will make it easier to add new forks with similar truncation logic, like the visibility map.
* Fix compiler warning "res may be used uninitialized in this function".Teodor Sigaev2008-11-19
| | | | | Actually, it can't but some compilers are not smart enough. Per Peter Eisentraut gripe.
* Fix define_custom_variable so that SUSET custom variables behaveTom Lane2008-11-19
| | | | | somewhat reasonably. It's not perfect, but it beats the kluge proposed in the auto-explain patch ...
* Some infrastructure changes for the upcoming auto-explain contrib module:Tom Lane2008-11-19
| | | | | | | | | | | | | | | | | | | | | | * Refactor explain.c slightly to export a convenient-to-use subroutine for printing EXPLAIN results. * Provide hooks for plugins to get control at ExecutorStart and ExecutorEnd as well as ExecutorRun. * Add some minimal support for tracking the total runtime of ExecutorRun. This code won't actually do anything unless a plugin prods it to. * Change the API of the DefineCustomXXXVariable functions to allow nonzero "flags" to be specified for a custom GUC variable. While at it, also make the "bootstrap" default value for custom GUCs be explicitly specified as a parameter to these functions. This is to eliminate confusion over where the default comes from, as has been expressed in the past by some users of the custom-variable facility. * Refactor GUC code a bit to ensure that a custom variable gets initialized to something valid (like its default value) even if the placeholder value was invalid.
* Ident authentication over Unix-domain sockets on Solaris, usingPeter Eisentraut2008-11-18
| | | | | | getpeerucred() function. Author: Garick Hamlin <ghamlin@isc.upenn.edu>
* Replace plain-memory ordered array by binary tree in ts_stat() function.Teodor Sigaev2008-11-17
| | | | Performance is increased from 50% up to 10^3 times depending on data.
* Modify UPDATE/DELETE WHERE CURRENT OF to use the FOR UPDATE infrastructure toTom Lane2008-11-16
| | | | | | | locate the target row, if the cursor was declared with FOR UPDATE or FOR SHARE. This approach is more flexible and reliable than digging through the plan tree; for instance it can cope with join cursors. But we still provide the old code for use with non-FOR-UPDATE cursors. Per gripe from Robert Haas.
* Fix crash of xmlconcat(NULL)Peter Eisentraut2008-11-15
| | | | also backpatched to 8.3
* Make SELECT FOR UPDATE/SHARE work on inheritance trees, by having the planTom Lane2008-11-15
| | | | | | | | | return the tableoid as well as the ctid for any FOR UPDATE targets that have child tables. All child tables are listed in the ExecRowMark list, but the executor just skips the ones that didn't produce the current row. Curiously, this longstanding restriction doesn't seem to have been documented anywhere; so no doc changes.
* In CREATE AGGREGATE, allow the transition datatype to be "internal", but onlyTom Lane2008-11-14
| | | | | | | | | if the user is superuser. This makes available to extension modules the same sort of trick being practiced by array_agg(). The reason for the superuser restriction is that you could crash the system by connecting up an incompatible pair of internal-using functions as an aggregate. It shouldn't interfere with any legitimate use, since you'd have to be superuser to create the internal-using transition and final functions anyway.
* Make CREATE CONVERSION verify that a putative encoding conversion functionTom Lane2008-11-14
| | | | | | returns VOID. This is the last of the easy fixes I recommended in 11870.1218838360@sss.pgh.pa.us --- the others got done awhile ago but I forgot about this one.
* Fix oversight in previous error-reporting patch; mustn't pfree path stringHeikki Linnakangas2008-11-14
| | | | before passing it to elog.
* Actually, instead of whining about how type internal might not safely storeTom Lane2008-11-14
| | | | | a pointer, why don't we just fix that. Every known use of "internal" really means a pointer anyway.
* Replace the usage of heap_addheader to create pg_attribute tuples with regularAlvaro Herrera2008-11-14
| | | | | | | | heap_form_tuple. Since this removes the last remaining caller of heap_addheader, remove it. Extracted from the column privileges patch from Stephen Frost, with further code cleanups by me.
* Implement the basic form of UNNEST, ie unnest(anyarray) returns setofTom Lane2008-11-14
| | | | | | | anyelement. This lacks the WITH ORDINALITY option, as well as the multiple input arrays option added in the most recent SQL specs. But it's still a pretty useful subset of the spec's functionality, and it is enough to allow obsoleting contrib/intagg.
* Minor code clarity improvements in array_agg functions, and add a commentTom Lane2008-11-14
| | | | about how this is playing fast and loose with the type system.
* Prevent synchronous scan during GIN index build, because GIN is optimizedTom Lane2008-11-13
| | | | | | | | | for inserting tuples in increasing TID order. It's not clear whether this fully explains Ivan Sergio Borgonovo's complaint, but simple testing confirms that a scan that doesn't start at block 0 can slow GIN build by a factor of three or four. Backpatch to 8.3. Sync scan didn't exist before that.
* array_agg aggregate function, as per SQL:2008, but without ORDER BY clausePeter Eisentraut2008-11-13
| | | | | | | Rearrange the documentation a bit now that array_agg and xmlagg have similar semantics and issues. best of Robert Haas, Jeff Davis, Peter Eisentraut
* Removed two non-terminals:Michael Meskes2008-11-13
| | | | | - FloatOnly: only used by NumericOnly, instead put the FloatOnly production into NumericOnly - IntegerOnly: only used by NumericOnly and one ALTER TABLE rule, replacement SignedIconst is already used in several other places
* Arrange to cache the results of looking up a btree predicate proof comparisonTom Lane2008-11-13
| | | | | | | | | | | operator. The result depends only on the two input operators and the proof direction (imply or refute), so it's easy to cache. This provides a very large savings in cases such as Sergey Konoplev's long NOT-IN-list example, where predtest spends all its time repeatedly figuring out that the same pair of operators cannot be used to prove anything. (But of course the O(N^2) behavior still catches up with you eventually.) I'm not convinced it buys a whole lot when constraint_exclusion isn't turned on, but it's not a lot of added code so we might as well cache all the time.
* In predtest.c, install a limit on the number of branches we will process inTom Lane2008-11-12
| | | | | | | | | | | | | | | | | AND, OR, or equivalent clauses: if there are too many (more than 100) just exit without proving anything. This ensures that we don't spend O(N^2) time trying (and most likely failing) to prove anything about very long IN lists and similar cases. Also, install a couple of CHECK_FOR_INTERRUPTS calls to ensure that a long proof attempt can be interrupted. Per gripe from Sergey Konoplev. Back-patch the whole patch to 8.2 and just the CHECK_FOR_INTERRUPTS addition to 8.1. (The rest of the patch doesn't apply cleanly, and since 8.1 doesn't show the complained-of behavior anyway, it doesn't seem necessary to work hard on it.)
* Do not use ICONST/SCONST in rules other than Iconst/Sconst.Michael Meskes2008-11-12
|
* array_length() function, and for SQL compatibility also cardinality()Peter Eisentraut2008-11-12
| | | | | | | | | | function as a special case. This version still has the suspicious behavior of returning null for an empty array (rather than zero), but this may need a wholesale revision of empty array behavior, currently under discussion. Jim Nasby, Robert Haas, Peter Eisentraut
* Fix off-by-one error in autovacuum shmem struct sizing. This could lead toHeikki Linnakangas2008-11-12
| | | | | | | autovacuum worker sending SIGUSR1 signal to wrong process, per Zou Yong's report. Backpatch to 8.3.
* Clean up the ancient decision to show only two fractional-seconds digitsTom Lane2008-11-12
| | | | | | | | | | | | | in "postgres_verbose" intervalstyle, and the equally arbitrary decision to show at least two fractional-seconds digits in most other datetime display styles. This results in some minor changes in the expected regression test outputs. Also, coalesce a lot of repetitive code in datetime.c into subroutines, for clarity and ease of maintenance. In particular this roughly halves the number of #ifdef HAVE_INT64_TIMESTAMP segments. Ron Mayer, with some additional kibitzing from Tom Lane