aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Fix aclexplode to not explode on a zero-entry ACL array.Tom Lane2010-01-12
| | | | | | | | (An Assert is no substitute for thinking clearly :-() Minor style kibitzing too. Per report from Robert Treat.
* Add some simple support and documentation for using process-specific oom_adjTom Lane2010-01-11
| | | | | | settings to prevent the postmaster from being OOM-killed on Linux systems. Alex Hunsaker and Tom Lane
* Improve ExecEvalVar's handling of whole-row variables in cases where theTom Lane2010-01-11
| | | | | | | | | | | | | | | | | rowtype contains dropped columns. Sometimes the input tuple will be formed from a select targetlist in which dropped columns are filled with a NULL of an arbitrary type (the planner typically uses INT4, since it can't tell what type the dropped column really was). So we need to relax the rowtype compatibility check to not insist on physical compatibility if the actual column value is NULL. In principle we might need to do this for functions returning composite types, too (see tupledesc_match()). In practice there doesn't seem to be a bug there, probably because the function will be using the same cached rowtype descriptor as the caller. Fixing that code path would require significant rearrangement, so I left it alone for now. Per complaint from Filip Rembialkowski.
* During Hot Standby, fix drop database when sessions idle.Simon Riggs2010-01-10
| | | | | | | | | | Previously we only cancelled sessions that were in-transaction. Simple fix is to just cancel all sessions without waiting. Doing it this way avoids complicating common code paths, which would not be worth the trouble to cover this rare case. Problem report and fix by Andres Freund, edited somewhat by me
* Create typedef pgsocket for storing socket descriptors.Magnus Hagander2010-01-10
| | | | | | | | This silences some warnings on Win64. Not using the proper SOCKET datatype was actually wrong on Win32 as well, but didn't cause any warnings there. Also create define PGINVALID_SOCKET to indicate an invalid/non-existing socket, instead of using a hardcoded -1 value.
* Remove partial, broken support for NULL pointers when fetching attributes.Robert Haas2010-01-10
| | | | | | | | | | | | | | Previously, fastgetattr() and heap_getattr() tested their fourth argument against a null pointer, but any attempt to use them with a literal-NULL fourth argument evaluated to *(void *)0, resulting in a compiler error. Remove these NULL tests to avoid leading future readers of this code to believe that this has a chance of working. Also clean up related legacy code in nocachegetattr(), heap_getsysattr(), and nocache_index_getattr(). The new coding standard is that any code which calls a getattr-type function or macro which takes an isnull argument MUST pass a valid boolean pointer. Per discussion with Bruce Momjian, Tom Lane, Alvaro Herrera.
* Make ExecEvalFieldSelect throw a more intelligible error if it's asked toTom Lane2010-01-09
| | | | | | | | extract a system column, and remove a couple of lines that are useless in light of the fact that we aren't ever going to support this case. There isn't much point in trying to make this work because a tuple Datum does not carry many of the system columns. Per experimentation with a case reported by Dean Rasheed; we'll have to fix his problem somewhere else.
* During Hot Standby, set DatabasePath correctly during relcache init fileSimon Riggs2010-01-09
| | | | | | | | | | | | | | | deletion, so that we attempt to unlink the correct filepath. unlink() errors are ignorable there, so lack of a DatabasePath initialization step did not cause visible problems until a related bug showed up on Solaris. Code refactored from xact_redo_commit() to ProcessCommittedInvalidationMessages() in inval.c. Recovery may replay shared invalidation messages for many databases, so we cannot SetDatabasePath() once as we do in normal backends. Read the databaseid from the shared invalidation messages, then set DatabasePath temporarily before calling RelationCacheInitFileInvalidate(). Problem report by Robert Treat, analysis and fix by me.
* Fix oversight in EvalPlanQualFetch: after failing to lock a tuple becauseTom Lane2010-01-08
| | | | | | | | | | | | | | | | someone else has just updated it, we have to set priorXmax to that tuple's xmax (ie, the XID of the other xact that updated it) before looping back to examine the next tuple. Obviously, the next tuple in the update chain should have that XID as its xmin, not the same xmin as the preceding tuple that we had been trying to lock. The mismatch would cause the EvalPlanQual logic to decide that the tuple chain ended in a deletion, when actually there was a live tuple that should have been found. I inserted this error when recently adding logic to EvalPlanQual to make it lock tuples before returning them (as opposed to the old method in which the lock would occur much later, causing a great deal of work to be wasted if we only then discover someone else updated it). Sigh. Per today's report from Takahiro Itagaki of inconsistent results during pgbench runs.
* Document why we copy reloptions into CacheMemoryContext after-the-fact.Robert Haas2010-01-07
|
* Fix 3-parameter form of bit substring() to throw error for negative length,Tom Lane2010-01-07
| | | | as required by SQL standard.
* Make bit/varbit substring() treat any negative length as meaning "all the restTom Lane2010-01-07
| | | | | | | | | | | of the string". The previous coding treated only -1 that way, and would produce an invalid result value for other negative values. We ought to fix it so that 2-parameter bit substring() is a different C function and the 3-parameter form throws error for negative length, but that takes a pg_proc change which is impractical in the back branches; and in any case somebody might be relying on -1 working this way. So just do this as a back-patchable fix.
* Fix (some of the) breakage introduced into query-cancel processing by HS.Tom Lane2010-01-07
| | | | | | | | | | | | | | It is absolutely not okay to throw an ereport(ERROR) in any random place in the code just because DoingCommandRead is set; interrupting, say, OpenSSL in the midst of its activities is guaranteed to result in heartache. Instead of that, undo the original optimizations that threw away QueryCancelPending anytime we were starting or finishing a command read, and instead discard the cancel request within ProcessInterrupts if we find that there is no HS reason for forcing a cancel and we are DoingCommandRead. In passing, may I once again condemn the practice of changing the code and not fixing the adjacent comment that you just turned into a lie?
* Remove all the special-case code for INT64_IS_BUSTED, per decision thatTom Lane2010-01-07
| | | | | | | | we're not going to support that anymore. I did keep the 64-bit-CRC-with-32-bit-arithmetic code, since it has a performance excuse to live. It's a bit moot since that's all ifdef'd out, of course.
* More tablespace.c comment improvements.Bruce Momjian2010-01-07
|
* Clarify tablespace.c::TablespaceCreateDbspace() comments.Bruce Momjian2010-01-07
|
* Further fixes for per-tablespace options patch.Robert Haas2010-01-07
| | | | | | | Add missing varlena header to TableSpaceOpts structure. And, per Tom Lane, instead of calling tablespace_reloptions in CacheMemoryContext, call it in the caller's memory context and copy the value over afterwards, to reduce the chances of a session-lifetime memory leak.
* Improve a couple of comments relating to large object snapshot management.Robert Haas2010-01-07
|
* PG_MAJORVERSION:Bruce Momjian2010-01-06
| | | | | For simplicity, use PG_MAJORVERSION rather than PG_VERSION for creation of the PG_VERSION file.
* Fix spccache.c to not suppose that a cache entry will live across databaseTom Lane2010-01-06
| | | | access, per testing with CLOBBER_CACHE_ALWAYS. Minor other editorialization.
* Access hash entry before freeing it, not after.Tom Lane2010-01-06
|
* Make error messages for bad --set-version argument more useful.Tom Lane2010-01-06
| | | | Per Stefan.
* Make the makefile pass $MAJORVERSION to genbki.pl, not $VERSION which isTom Lane2010-01-06
| | | | | overridden in the snapshot build script. $MAJORVERSION is what it really wanted anyway, so we can tighten up the parsing of --set-version's argument.
* Silence compiler warning about uninitialized variables. This initializationItagaki Takahiro2010-01-06
| | | | is not necessary needed, but some compilers complain about it.
* Support rewritten-based full vacuum as VACUUM FULL. TraditionalItagaki Takahiro2010-01-06
| | | | | | | | | | | VACUUM FULL was renamed to VACUUM FULL INPLACE. Also added a new option -i, --inplace for vacuumdb to perform FULL INPLACE vacuuming. Since the new VACUUM FULL uses CLUSTER infrastructure, we cannot use it for system tables. VACUUM FULL for system tables always fall back into VACUUM FULL INPLACE silently. Itagaki Takahiro, reviewed by Jeff Davis and Simon Riggs.
* binary upgrade:Bruce Momjian2010-01-06
| | | | | | | Preserve relfilenodes for views and composite types --- even though we don't store data in, them, they do consume relfilenodes. Bump catalog version.
* Preserve relfilenodes:Bruce Momjian2010-01-06
| | | | | Add support to pg_dump --binary-upgrade to preserve all relfilenodes, for use by pg_migrator.
* Remove tabs in SGML.Bruce Momjian2010-01-06
| | | | Move OIDCHARS to proper include file.
* Use OIDCHARS:Bruce Momjian2010-01-06
| | | | | Use OIDCHARS for oid character length, rather than '10', in tablespace code.
* Add support for doing FULL JOIN ON FALSE. While this is really a ratherTom Lane2010-01-05
| | | | | | | | | | peculiar variant of UNION ALL, and so wouldn't likely get written directly as-is, it's possible for it to arise as a result of simplification of less-obviously-silly queries. In particular, now that we can do flattening of subqueries that have constant outputs and are underneath an outer join, it's possible for the case to result from simplification of queries of the type exhibited in bug #5263. Back-patch to 8.4 to avoid a functionality regression for this type of query.
* Support ALTER TABLESPACE name SET/RESET ( tablespace_options ).Robert Haas2010-01-05
| | | | | | | | | This patch only supports seq_page_cost and random_page_cost as parameters, but it provides the infrastructure to scalably support many more. In particular, we may want to add support for effective_io_concurrency, but I'm leaving that as future work for now. Thanks to Tom Lane for design help and Alvaro Herrera for the review.
* Fix genbki.pl and Gen_fmgrtab.pl to use PID-specific temp file names,Tom Lane2010-01-05
| | | | | so that it's safe if a parallel make chooses to run two concurrent copies. Also, work around a memory leak in some versions of Perl.
* Further code review for genbki.pl. Improve comments, fix someTom Lane2010-01-05
| | | | | rather random code choices, don't slavishly duplicate the original pg_attribute.h's failure to put an OID into Schema_pg_index entries.
* Fix a few places where we needed -I. in CPPFLAGS to work properly inTom Lane2010-01-05
| | | | VPATH builds. We had this already in several places, but not all.
* Remove too-smart-for-its-own-good optimization of not overwriting the outputTom Lane2010-01-05
| | | | | files when they haven't changed. This confuses make because the build fails to update the file timestamps, and so it keeps on doing the action over again.
* Verify input in pg_read_file().Itagaki Takahiro2010-01-05
|
* Fix parallel-make timing problem.Tom Lane2010-01-05
|
* Get rid of the need for manual maintenance of the initial contents ofTom Lane2010-01-05
| | | | | | | | | | | | | | | | | | pg_attribute, by having genbki.pl derive the information from the various catalog header files. This greatly simplifies modification of the "bootstrapped" catalogs. This patch finally kills genbki.sh and Gen_fmgrtab.sh; we now rely entirely on Perl scripts for those build steps. To avoid creating a Perl build dependency where there was not one before, the output files generated by these scripts are now treated as distprep targets, ie, they will be built and shipped in tarballs. But you will need a reasonably modern Perl (probably at least 5.6) if you want to build from a CVS pull. The changes to the MSVC build process are untested, and may well break --- we'll soon find out from the buildfarm. John Naylor, based on ideas from Robert Haas and others
* Remove sometimes inaccurate error hint about source of wrongly encoded data.Andrew Dunstan2010-01-04
|
* Write an end-of-backup WAL record at pg_stop_backup(), and wait for it atHeikki Linnakangas2010-01-04
| | | | | | | | | | | | | | | | | | | recovery instead of reading the backup history file. This is more robust, as it stops you from prematurely starting up an inconsisten cluster if the backup history file is lost for some reason, or if the base backup was never finished with pg_stop_backup(). This also paves the way for a simpler streaming replication patch, which doesn't need to care about backup history files anymore. The backup history file is still created and archived as before, but it's not used by the system anymore. It's just for informational purposes now. Bump PG_CONTROL_VERSION as the location of the backup startpoint is now written to a new field in pg_control, and catversion because initdb is required Original patch by Fujii Masao per Simon's idea, with further fixes by me.
* When estimating the selectivity of an inequality "column > constant" orTom Lane2010-01-04
| | | | | | | | | | | | | | | "column < constant", and the comparison value is in the first or last histogram bin or outside the histogram entirely, try to fetch the actual column min or max value using an index scan (if there is an index on the column). If successful, replace the lower or upper histogram bound with that value before carrying on with the estimate. This limits the estimation error caused by moving min/max values when the comparison value is close to the min or max. Per a complaint from Josh Berkus. It is tempting to consider using this mechanism for mergejoinscansel as well, but that would inject index fetches into main-line join estimation not just endpoint cases. I'm refraining from that until we can get a better handle on the costs of doing this type of lookup.
* Silence compiler warning about printf format for HANDLE.Itagaki Takahiro2010-01-04
|
* Dept of second thoughts: my first cut at supporting "x IS NOT NULL" btreeTom Lane2010-01-03
| | | | | | | | | indexscans would do the wrong thing if index_rescan() was called with a NULL instead of a new set of scankeys and the index was DESC order, because sk_strategy would not get flipped a second time. I think that those provisions for a NULL argument are dead code now as far as the core backend goes, but possibly somebody somewhere is still using it. In any case, this refactoring seems clearer, and it's definitely shorter.
* Fix similar_escape() to convert parentheses to non-capturing style.Tom Lane2010-01-02
| | | | | | | | | | | This is needed to avoid unwanted interference with SUBSTRING behavior, as per bug #5257 from Roman Kononov. Also, add some basic intelligence about character classes (bracket expressions) since we now have several behaviors that aren't appropriate inside a character class. As with the previous patch in this area, I'm reluctant to back-patch since it might affect applications that are relying on the prior behavior.
* check_exclusion_constraint didn't actually work correctly for indexTom Lane2010-01-02
| | | | | | | expressions: FormIndexDatum requires the estate's scantuple to already point at the tuple the values are supposedly being extracted from. Adjust test case so that this type of confusion will be exposed. Per report from hubert depesz lubaczewski.
* Update copyright for the year 2010.Bruce Momjian2010-01-02
|
* Support 64-bit shared memory when building on 64-bit Windows.Magnus Hagander2010-01-02
| | | | Tsutomu Yamada
* Fix one more cast for _open_osfhandle().Magnus Hagander2010-01-02
| | | | Tsutomu Yamada
* Add an "argisrow" field to NullTest nodes, following a plan made way back inTom Lane2010-01-01
| | | | | | 8.2beta but never carried out. This avoids repetitive tests of whether the argument is of scalar or composite type. Also, be a bit more paranoid about composite arguments in some places where we previously weren't checking.
* Support "x IS NOT NULL" clauses as indexscan conditions. This turns outTom Lane2010-01-01
| | | | | | | | | | | to be just a minor extension of the previous patch that made "x IS NULL" indexable, because we can treat the IS NOT NULL condition as if it were "x < NULL" or "x > NULL" (depending on the index's NULLS FIRST/LAST option), just like IS NULL is treated like "x = NULL". Aside from any possible usefulness in its own right, this is an important improvement for index-optimized MAX/MIN aggregates: it is now reliably possible to get a column's min or max value cheaply, even when there are a lot of nulls cluttering the interesting end of the index.