aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* Remove use of postmaster.opts.default by pg_ctl.Bruce Momjian2008-06-26
|
* Reduce the alignment requirement of type "name" from int to char, and arrangeTom Lane2008-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | to suppress zero-padding of "name" entries in indexes. The alignment change is unlikely to save any space, but it is really needed anyway to make the world safe for our widespread practice of passing plain old C strings to functions that are declared as taking Name. In the previous coding, the C compiler was entitled to assume that a Name pointer was word-aligned; but we were failing to guarantee that. I think the reason we'd not seen failures is that usually the only thing that gets done with such a pointer is strcmp(), which is hard to optimize in a way that exploits word-alignment. Still, some enterprising compiler guy will probably think of a way eventually, or we might change our code in a way that exposes more-obvious optimization opportunities. The padding change is accomplished in one-liner fashion by declaring the "name" index opclasses to use storage type "cstring" in pg_opclass.h. Normally btree and hash don't allow a nondefault storage type, because they don't have any provisions for converting the input datum to another type. However, because name and cstring are effectively the same thing except for padding, no conversion is needed --- we only need index_form_tuple() to treat the datum as being cstring not name, and this is sufficient. This seems to make for about a one-third reduction in the typical sizes of system catalog indexes that involve "name" columns, of which we have many. These two changes are only weakly related, but the alignment change makes me feel safer that the padding change won't introduce problems, so I'm committing them together.
* Oops, make the MSVC build put fmgroids.h where it needs to be.Tom Lane2008-06-24
| | | | Per buildfarm results.
* Add libpq comment about how to determine the format used for passingBruce Momjian2008-06-23
| | | | | | binary values. Add comments to libpq C function for parameter passing.
* Merge duplicate upper/lower/initcap() routines in oracle_compat.c andBruce Momjian2008-06-23
| | | | | formatting.c to use common code; remove duplicate functions and support routines that are no longer needed.
* Fix Gen_fmgrtab.sh to not rely on hard-wired knowledge of the column numbersTom Lane2008-06-23
| | | | | | | | | | | | | | in pg_proc. Also make it not emit duplicate extern declarations, and make it a bit more bulletproof in some other small ways. Likewise fix the equally hard-wired, and utterly undocumented, knowledge in the MSVC build scripts. For testing purposes and perhaps other uses in future, pull out that portion of the MSVC scripts into a standalone perl script equivalent to Gen_fmgrtab.sh, and make it generate actually identical output, rather than just more-or-less-the-same output. Motivated by looking at Pavel's variadic function patch. Whether or not that gets accepted, we can be sure that pg_proc's column set will change again in the future; it's time to not have to deal with this gotcha.
* Seems I was too optimistic in supposing that sinval's maxMsgNum could beTom Lane2008-06-20
| | | | | | | | | | | read and written without a lock. The value itself is atomic, sure, but on processors with weak memory ordering it's possible for a reader to see the value change before it sees the associated message written into the buffer array. Fix by introducing a spinlock that's used just to read and write maxMsgNum. (We could do this with less overhead if we recognized a concept of "memory access barrier"; is it worth introducing such a thing? At the moment probably not --- I can't measure any clear slowdown from adding the spinlock, so this solution is probably fine.) Per buildfarm results.
* Rewrite the sinval messaging mechanism to reduce contention and avoidTom Lane2008-06-19
| | | | | | | | | | | | | | | | | | | | | | | | | | unnecessary cache resets. The major changes are: * When the queue overflows, we only issue a cache reset to the specific backend or backends that still haven't read the oldest message, rather than resetting everyone as in the original coding. * When we observe backend(s) falling well behind, we signal SIGUSR1 to only one backend, the one that is furthest behind and doesn't already have a signal outstanding for it. When it finishes catching up, it will in turn signal SIGUSR1 to the next-furthest-back guy, if there is one that is far enough behind to justify a signal. The PMSIGNAL_WAKEN_CHILDREN mechanism is removed. * We don't attempt to clean out dead messages after every message-receipt operation; rather, we do it on the insertion side, and only when the queue fullness passes certain thresholds. * Split SInvalLock into SInvalReadLock and SInvalWriteLock so that readers don't block writers nor vice versa (except during the infrequent queue cleanout operations). * Transfer multiple sinval messages for each acquisition of a read or write lock.
* Fix a few places that were non-multibyte-safe in tsearch configuration fileTom Lane2008-06-19
| | | | parsing. Per bug #4253 from Giorgio Valoti.
* Improve our #include situation by moving pointer types away from theAlvaro Herrera2008-06-19
| | | | | | | corresponding struct definitions. This allows other headers to avoid including certain highly-loaded headers such as rel.h and relscan.h, instead using just relcache.h, heapam.h or genam.h, which are more lightweight and thus cause less unnecessary dependencies.
* Fix compiler warning introduced by recent patch. Tsk tsk.Tom Lane2008-06-18
|
* Improve error reporting for problems in text search configuration filesTom Lane2008-06-18
| | | | | | | | | | | by installing an error context subroutine that will provide the file name and line number for all errors detected while reading a config file. Some of the reader routines were already doing that in an ad-hoc way for errors detected directly in the reader, but it didn't help for problems detected in subroutines, such as encoding violations. Back-patch to 8.3 because 8.3 is where people will be trying to debug configuration files.
* Move wchar2char() and char2wchar() from tsearch into /mb to be easier toBruce Momjian2008-06-18
| | | | | | use for other modules; also move pnstrdup(). Clean up code slightly.
* Remove freeBackends counter from the sinval shared memory area. We used toTom Lane2008-06-17
| | | | | use it to help enforce superuser_reserved_backends, but since 8.1 it's just been dead weight.
* Clean up some problems with redundant cross-type arithmetic operators. AddTom Lane2008-06-17
| | | | | | | | | | | | | int2-and-int8 implementations of the basic arithmetic operators +, -, *, /. This doesn't really add any new functionality, but it avoids "operator is not unique" failures that formerly occurred in these cases because the parser couldn't decide whether to promote the int2 to int4 or int8. We could alternatively have removed the existing cross-type operators, but experimentation shows that the cost of an additional type coercion expression node is noticeable compared to such cheap operators; so let's not give up any performance here. On the other hand, I removed the int2-and-int4 modulo (%) operators since they didn't seem as important from a performance standpoint. Per a complaint last January from ykhuang.
* Add URL for introduction to multibyte programming in C.Bruce Momjian2008-06-17
|
* Move USE_WIDE_UPPER_LOWER define to c.h, and remove TS_USE_WIDE and useBruce Momjian2008-06-17
| | | | USE_WIDE_UPPER_LOWER instead.
* Fix the code that adds regclass constants to a plan's list of relation OIDsTom Lane2008-06-17
| | | | | | | | | that it depends on for replan-forcing purposes. We need to consider plain OID constants too, because eval_const_expressions folds a RelabelType atop a Const to just a Const. This change could result in OID values that aren't really for tables getting added to the dependency list, but the worst-case consequence would be occasional useless replans. Per report from Gabriele Messineo.
* Clean up a number of bogosities around pltcl's handling of the Tcl "result":Tom Lane2008-06-17
| | | | | | | | | | | | | | | | | | | | | | | | | 1. Directly reading interp->result is deprecated in Tcl 8.0 and later; you're supposed to use Tcl_GetStringResult. This code finally broke with Tcl 8.5, because Tcl_GetVar can now have side-effects on interp->result even though it preserves the logical state of the result. (There's arguably a Tcl issue here, because Tcl_GetVar could invalidate the pointer result of a just-preceding Tcl_GetStringResult, but I doubt the Tcl guys will see it as a bug.) 2. We were being sloppy about the encoding of the result: some places would push database-encoding data into the Tcl result, which should not happen, and we were assuming that any error result coming back from Tcl was in the database encoding, which is not a good assumption. 3. There were a lot of calls of Tcl_SetResult that uselessly specified TCL_VOLATILE for constant strings. This is only a minor performance issue, but I fixed it in passing since I had to look at all the calls anyway. #2 is a live bug regardless of which Tcl version you are interested in, so back-patch even to branches that are unlikely to be used with Tcl 8.5. I went back as far as 8.0, which is as far as the patch applied easily; 7.4 was using a different error processing scheme that has got its own problems :-(
* Prevent CVS from mangling scriptAndrew Dunstan2008-06-15
|
* Add script to find .c and .h files that are missing CVS PostgreSQL markersAndrew Dunstan2008-06-15
| | | | | and add them. Avoids third party files or those that would cause regression failures.
* Make DROP INDEX lock the parent table before locking the index. This behaviorTom Lane2008-06-15
| | | | | | is necessary to avoid deadlock against ordinary queries, but we'd broken it with recent changes that made the DROP machinery lock the index before arriving at index_drop. Per intermittent buildfarm failures.
* Fix 64-bit problem in recent patch.Tom Lane2008-06-15
|
* Rearrange ALTER TABLE syntax processing as per my recent proposal: theTom Lane2008-06-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | grammar allows ALTER TABLE/INDEX/SEQUENCE/VIEW interchangeably for all subforms of those commands, and then we sort out what's really legal at execution time. This allows the ALTER SEQUENCE/VIEW reference pages to fully document all the ALTER forms available for sequences and views respectively, and eliminates a longstanding cause of confusion for users. The net effect is that the following forms are allowed that weren't before: ALTER SEQUENCE OWNER TO ALTER VIEW ALTER COLUMN SET/DROP DEFAULT ALTER VIEW OWNER TO ALTER VIEW SET SCHEMA (There's no actual functionality gain here, but formerly you had to say ALTER TABLE instead.) Interestingly, the grammar tables actually get smaller, probably because there are fewer special cases to keep track of. I did not disallow using ALTER TABLE for these operations. Perhaps we should, but there's a backwards-compatibility issue if we do; in fact it would break existing pg_dump scripts. I did however tighten up ALTER SEQUENCE and ALTER VIEW to reject non-sequences and non-views in the new cases as well as a couple of cases where they didn't before. The patch doesn't change pg_dump to use the new syntaxes, either.
* Refactor the handling of the various DropStmt variants so that when multipleTom Lane2008-06-14
| | | | | | | | | | | | | objects are specified, we drop them all in a single performMultipleDeletions call. This makes the RESTRICT/CASCADE checks more relaxed: it's not counted as a cascade if one of the later objects has a dependency on an earlier one. NOTICE messages about such cases go away, too. In passing, fix the permissions check for DROP CONVERSION, which for some reason was never made role-aware, and omitted the namespace-owner exemption too. Alex Hunsaker, with further fiddling by me.
* Improve the various elog messages in tuptoaster.c to report which TOAST tableTom Lane2008-06-13
| | | | | | | | | the problem happened in. These are all supposedly can't-happen cases, but when they do happen it's useful to know where. Back-patch to 8.3, but not further because the patch doesn't apply cleanly further back. Given the lack of response to my proposal of this, there doesn't seem to be enough interest to justify much back-porting effort.
* Refactor XLogOpenRelation() and XLogReadBuffer() in preparation for relationHeikki Linnakangas2008-06-12
| | | | | | | | | | forks. XLogOpenRelation() and the associated light-weight relation cache in xlogutils.c is gone, and XLogReadBuffer() now takes a RelFileNode as argument, instead of Relation. For functions that still need a Relation struct during WAL replay, there's a new function called CreateFakeRelcacheEntry() that returns a fake entry like XLogOpenRelation() used to.
* Improve reporting of dependencies in DROP to work like the scheme that weTom Lane2008-06-11
| | | | | | devised for pg_shdepend, namely the individual dependencies are reported as DETAIL lines rather than coming out as separate NOTICEs. The client-side report is capped at 100 lines, but the server log always gets a full report.
* Fix spelling mistake in postgresql.conf.Bruce Momjian2008-06-11
| | | | Greg Sabino Mullane
* Update "help" output to reflect that \timing now takes an optional on/offHeikki Linnakangas2008-06-11
| | | | argument.
* Add optional on/off argument to \timing.Heikki Linnakangas2008-06-11
| | | | David Fetter.
* Fix bug in the WAL recovery code to finish an incomplete split.Heikki Linnakangas2008-06-11
| | | | | | | CacheInvalidateRelcache() crashes if called in WAL recovery, because the invalidation infrastructure hasn't been initialized yet. Back-patch to 8.2, where the bug was introduced.
* Editorialization for the text emitted by the "help" psql command.Neil Conway2008-06-10
| | | | | | Basically just reuse the same text that psql emitted as part of its startup banner in prior versions, and make some whitespace more consistent with the conventions in other psql command output.
* Create a script to handle stamping release version numbers into files,Tom Lane2008-06-10
| | | | replacing the tedious and error-prone manual process we've been using.
* Comment fix, should say TSQuery instead of TSVector.Heikki Linnakangas2008-06-10
| | | | Per Jan Urbanski.
* Fix unportable (and incorrect anyway) usage of LL constant suffix thatTom Lane2008-06-09
| | | | recently snuck into cash.c. Per report from Edmundo Robles Lopez.
* Fix datetime input functions to correctly detect integer overflow whenTom Lane2008-06-09
| | | | | running on a 64-bit platform ... strtol() will happily return 64-bit output in that case. Per bug #4231 from Geoff Tolley.
* Fix an ALTER TABLE test case so that it actually tests what the comment says itTom Lane2008-06-09
| | | | is testing. Ah, the perils of making keywords optional ...
* Further tweak for comment in CheckDeadLock(), per Tom.Neil Conway2008-06-09
|
* Fix typo in comment.Neil Conway2008-06-09
|
* Fix breakage caused by conflicting patches, as evidenced by the buildfarm.Alvaro Herrera2008-06-08
|
* Rewrite DROP's dependency traversal algorithm into an honest two-passTom Lane2008-06-08
| | | | | | | | | | | | | algorithm, replacing the original intention of a one-pass search, which had been hacked up over time to be partially two-pass in hopes of handling various corner cases better. It still wasn't quite there, especially as regards emitting unwanted NOTICE messages. More importantly, this approach lets us fix a number of open bugs concerning concurrent DROP scenarios, because we can take locks during the first pass and avoid traversing to dependent objects that were just deleted by someone else. There is more that can be done here, but I'll go ahead and commit the base patch before working on the options.
* Move BufferGetPageSize and BufferGetPage from bufpage.h to bufmgr.h. It isAlvaro Herrera2008-06-08
| | | | | | | | | | more logical that way, and also it reduces the amount of unnecessary includes in bufpage.h, which is widely used. Zdenek Kotala. My previous patch to bufpage.h should also have credited him as author, but I forgot (sorry about that).
* ALTER AGGREGATE OWNER seems to have been missed by the last couple ofTom Lane2008-06-08
| | | | | | | patches that dealt with object ownership. It wasn't updating pg_shdepend nor adjusting the aggregate's ACL. In 8.2 and up, fix this permanently by making it use AlterFunctionOwner_oid. In 8.1, the function code wasn't factored that way, so just copy and paste.
* Change xlog.h to xlogdefs.h in bufpage.h, and fix fallout.Alvaro Herrera2008-06-06
|
* Fix pg_get_ruledef() so that negative numeric constants are parenthesized.Tom Lane2008-06-06
| | | | | | | | | | This is needed because :: casting binds more tightly than minus, so for example -1::integer is not the same as (-1)::integer, and there are cases where the difference is important. In particular this caused a failure in SELECT DISTINCT ... ORDER BY ... where expressions that should have matched were seen as different by the parser; but I suspect that there could be other cases where failure to parenthesize leads to subtler semantic differences in reloaded rules. Per report from Alexandr Popov.
* Modify vacuum() to accept a single relation OID instead of a list (which weAlvaro Herrera2008-06-05
| | | | always pass as a single element anyway.) In passing, fix an outdated comment.
* Fix some string building in getObjectDescription.Alvaro Herrera2008-06-05
|
* Added lost sysmbol SQL_SQL to list of allowed variable names.Michael Meskes2008-06-04
|
* Fix initdb to reject a relative path for -X (--xlogdir) argument. ThisTom Lane2008-06-02
| | | | | | | doesn't work, and the real reason why not is it's unclear where the path is relative to (initdb's CWD, or the data directory?). We could make an arbitrary decision, but it seems best to make the user be unambiguous. Per gripe from Devrim.