summaryrefslogtreecommitdiff
path: root/src/backend
AgeCommit message (Collapse)Author
2007-11-05Use LOG instead of DEBUG2 for logging invalid cancel requests. (That is,Neil Conway
cancel requests with an incorrect key, or with a non-existent PID). Per recent discussion on -hackers.
2007-11-04Minor improvements to code for converting legacy CREATE CONSTRAINT TRIGGERTom Lane
commands into proper foreign-key constraints. Believe the constraint name given in the trigger arguments in preference to the trigger name --- to judge from Olivier Prenant's example, pg_dump must at some time have used the autogenerated trigger name there, though AFAICT no current release branch tip does. Improve the emitted NOTICEs to provide more detail (PK table's name and column names). Handle the case where pg_dump forgot to provide the FROM table (a bug that never did get fixed in 7.0.x apparently). This commit doesn't do anything about the question of what to do with incomplete trigger groups.
2007-11-04Prevent continuing disk-space bloat when profiling (with PROFILE_PID_DIRTom Lane
enabled) and autovacuum is on. Since there will be a steady stream of autovac worker processes exiting and dropping gmon.out files, allowing them to make separate subdirectories results in serious bloat; and it seems unlikely that anyone will care about those profiles anyway. Limit the damage by forcing all autovac workers to dump in one subdirectory, PGDATA/gprof/avworker/. Per report from Jšrg Beyer and subsequent discussion.
2007-11-04Teach CREATE CONSTRAINT TRIGGER to convert old-style foreign keyTom Lane
trigger definitions into regular foreign key constraints. This seems necessary given that some people evidently never did get around to running adddepend on their schemas, and without some sort of hack the old definitions will no longer work. Per report from Olivier Prenant and subsequent investigation.
2007-11-02Ensure that EquivalenceClasses generated from ORDER BY keys contain properTom Lane
RelabelType nodes when the sort key is binary-compatible with the sort operator rather than having exactly its input type. We did this correctly for index columns but not sort keys, leading to failure to notice that a varchar index matches an ORDER BY request. This requires a bit more work in make_sort_from_pathkeys, but not anyplace else that I can find. Per bug report and subsequent discussion.
2007-10-29In the previous commit message, I forgot to credit Simon Riggs who providedAlvaro Herrera
the patch, which I modified only slightly before applying.
2007-10-29Mention the index name in 'could not create unique index' errors,Tom Lane
per suggestion from Rene Gollent.
2007-10-29Remove the hack in the grammar that "optimized away" DEFAULT NULL clauses.Tom Lane
Instead put in a test to drop a NULL default at the last moment before storing the catalog entry. This changes the behavior in a couple of ways: * Specifying DEFAULT NULL when creating an inheritance child table will successfully suppress inheritance of any default expression from the parent's column, where formerly it failed to do so. * Specifying DEFAULT NULL for a column of a domain type will correctly override any default belonging to the domain; likewise for a sub-domain. The latter change happens because by the time the clause is checked, it won't be a simple null Const but a CoerceToDomain expression. Personally I think this should be back-patched, but there doesn't seem to be consensus for that on pgsql-hackers, so refraining.
2007-10-29- Add check of already changed page while replay WAL. This touches onlyTeodor Sigaev
ginRedoInsert(), because other ginRedo* functions rewrite whole page or make changes which could be applied several times without consistent's loss - Remove check of identifying of corresponding split record: it's possible that replaying of WAL starts after actual page split, but before removing of that split from incomplete splits list. In this case, that check cause FATAL error. Per stress test which reproduces bug reported by Craig McElroy <craig.mcelroy@contegix.com>
2007-10-29Make variable static, per Tom.Magnus Hagander
2007-10-29Fix coredump during replay WAL after crash. Change entrySplitPage() to preventTeodor Sigaev
usage of any information from system catalog, because it could be called during replay of WAL. Per bug report from Craig McElroy <craig.mcelroy@contegix.com>. Patch doesn't change on-disk storage.
2007-10-29Add compat file for dynamically loading the functions that MinGW is missingMagnus Hagander
the imports for. Add RegisterWaitForSingleObject() to the list of such functions, which should take care of the current buildfarm breakage.
2007-10-27Change text search parsing rules for hyphenated words so that digit stringsTom Lane
containing decimal points aren't considered part of a hyphenated word. Sync the hyphenated-word lookahead states with the subsequent part-by-part reparsing states so that we don't get different answers about how much text is part of the hyphenated word. Per my gripe of a few days ago.
2007-10-27Add some rudimentary tracing code to the default text search parser, to helpTom Lane
in debugging its state-machine rules. Const-ify all the constant tables. Minor other code cleanup, including using "token" rather than "lexeme" to describe the output strings.
2007-10-27Rename default text search parser's "uri" token type to "url_path",Tom Lane
per recommendation from Alvaro. This doesn't force initdb since the numeric token type in the catalogs doesn't change; but note that the expected regression test output changed.
2007-10-27Avoid considering both sort directions as equally useful for merging.Tom Lane
This doubles the planning workload for mergejoins while not actually accomplishing much. The only useful case is where one of the directions matches the query's ORDER BY request; therefore, put a thumb on the scales in that direction, and otherwise arbitrarily consider only the ASC direction. (This is a lot easier now than it would've been before 8.3, since we have more semantic knowledge embedded in PathKeys now.)
2007-10-27Translation updatesPeter Eisentraut
2007-10-26Change win32 child-death tracking code to use a threadpool to wait forMagnus Hagander
childprocess deaths instead of using one thread per child. This drastastically reduces the address space usage and should allow for more backends running. Also change the win32_waitpid functionality to use an IO Completion Port for queueing child death notices instead of using a fixed-size array.
2007-10-26Allow an autovacuum worker to be interrupted automatically when it is foundAlvaro Herrera
to be locking another process (except when it's working to prevent Xid wraparound problems).
2007-10-26Change have_join_order_restriction() so that we do not force a clauseless joinTom Lane
if either of the input relations can legally be joined to any other rels using join clauses. This avoids uselessly (and expensively) considering a lot of really stupid join paths when there is a join restriction with a large footprint, that is, lots of relations inside its LHS or RHS. My patch of 15-Feb-2007 had been causing the code to consider joining *every* combination of rels inside such a group, which is exponentially bad :-(. With this behavior, clauseless bushy joins will be done if necessary, but they'll be put off as long as possible. Per report from Jakub Ouhrabka. Backpatch to 8.2. We might someday want to backpatch to 8.1 as well, but 8.1 does not have the problem for OUTER JOIN nests, only for IN-clauses, so it's not clear anyone's very likely to hit it in practice; and the current patch doesn't apply cleanly to 8.1.
2007-10-25Fix memory management for new variables -- they must actually surviveAlvaro Herrera
transaction end, in case we decide to do a vacuum analyze (which is done in two xacts).
2007-10-25Fix ALTER SEQUENCE so that it does not affect the value of currval() forTom Lane
the sequence. Also, make setval() with is_called = false not affect the currval state, either. Per report from Kris Jurka that an implicit ALTER SEQUENCE OWNED BY unexpectedly caused currval() to become valid. Since this isn't 100% backwards compatible, it will go into HEAD only; I'll put a more limited patch into 8.2.
2007-10-25Extract catalog info for error reporting before an error actually happens.Alvaro Herrera
Also, remove redundant reset of for-wraparound PGPROC flag. Thanks to Tom Lane for noticing both bogosities.
2007-10-25Tweak new error messages to match the actual syntax of DECLARE CURSOR.Tom Lane
(Last night I copied-and-pasted from the WITH HOLD case, but that's wrong because of the bizarrely irregular syntax specified by the standard.)
2007-10-24Disallow scrolling of FOR UPDATE/FOR SHARE cursors, so as to avoid problemsTom Lane
in corner cases such as re-fetching a just-deleted row. We may be able to relax this someday, but let's find out how many people really care before we invest a lot of work in it. Per report from Heikki and subsequent discussion. While in the neighborhood, make the combination of INSENSITIVE and FOR UPDATE throw an error, since they are semantically incompatible. (Up to now we've accepted but just ignored the INSENSITIVE option of DECLARE CURSOR.)
2007-10-24Rearrange vacuum-related bits in PGPROC as a bitmask, to better supportAlvaro Herrera
having several of them. Add two more flags: whether the process is executing an ANALYZE, and whether a vacuum is for Xid wraparound (which is obviously only set by autovacuum). Sneakily move the worker's recently-acquired PostAuthDelay to a more useful place.
2007-10-24Fix an error in make_outerjoininfo introduced by my patch of 30-Aug: the codeTom Lane
neglected to test whether an outer join's join-condition actually refers to the lower outer join it is looking at. (The comment correctly described what was supposed to happen, but the code didn't do it...) This often resulted in adding an unnecessary constraint on the join order of the two outer joins, which was bad enough. However, it also seems to expose a performance problem in an older patch (from 15-Feb): once we've decided that there is a join ordering constraint, we will start trying clauseless joins between every combination of rels within the constraint, which pointlessly eats up lots of time and space if there are numerous rels below the outer join. That probably needs to be revisited :-(. Per gripe from Jakub Ouhrabka.
2007-10-24Minor changes to autovacuum worker: change error handling so that it continuesAlvaro Herrera
with the next table on schedule instead of exiting, in all cases instead of just on query cancel. Add a errcontext() line indicating the activity of the worker to the error message when it is cancelled. Change the WorkerInfo struct to contain a pointer to the worker's PGPROC instead of just the PID. Add forgotten post-auth delays, per Simon Riggs. Also to autovac launcher.
2007-10-24Fix UPDATE/DELETE WHERE CURRENT OF to support repeated update and update-Tom Lane
then-delete on the current cursor row. The basic fix is that nodeTidscan.c has to apply heap_get_latest_tid() to the current-scan-TID obtained from the cursor query; this ensures we get the latest row version to work with. However, since that only works if the query plan is a TID scan, we also have to hack the planner to make sure only that type of plan will be selected. (Formerly, the planner might decide to apply a seqscan if the table is very small. This change is probably a Good Thing anyway, since it's hard to see how a seqscan could really win.) That means the execQual.c code to support CurrentOfExpr as a regular expression type is dead code, so replace it with just an elog(). Also, add regression tests covering these cases. Note that the added tests expose the fact that re-fetching an updated row misbehaves if the cursor used FOR UPDATE. That's an independent bug that should be fixed later. Per report from Dharmendra Goyal.
2007-10-24Keep heap_page_prune from marking the buffer dirty when it didn'tTom Lane
really change anything. Per report from Itagaki Takahiro. Fix by Pavan Deolasee.
2007-10-24Set read_only = TRUE while evaluating input queries for ts_rewrite()Tom Lane
and ts_stat(), per my recent suggestion. Also add a possibly-not-needed- but-can't-hurt check for NULL SPI_tuptable, before we try to dereference same.
2007-10-24Remove the aggregate form of ts_rewrite(), since it doesn't work as desiredTom Lane
if there are zero rows to aggregate over, and the API seems both conceptually and notationally ugly anyway. We should look for something that improves on the tsquery-and-text-SELECT version (which is also pretty ugly but at least it works...), but it seems that will take query infrastructure that doesn't exist today. (Hm, I wonder if there's anything in or near SQL2003 window functions that would help?) Per discussion.
2007-10-23Rename and slightly redefine the default text search parser's "word"Tom Lane
categories, as per discussion. asciiword (formerly lword) is still ASCII-letters-only, and numword (formerly word) is still the most general mixed-alpha-and-digits case. But word (formerly nlword) is now any-group-of-letters-with-at-least-one-non-ASCII, rather than all-non-ASCII as before. This is no worse than before for parsing mixed Russian/English text, which seems to have been the design center for the original coding; and it should simplify matters for parsing most European languages. In particular it will not be necessary for any language to accept strings containing digits as being regular "words". The hyphenated-word categories are adjusted similarly.
2007-10-23Use snprintf instead of wsprintf, and use getenv("APPDATA") instead ofMagnus Hagander
SHGetFolderPath. This removes the direct dependency on shell32.dll and user32.dll, which eats a lot of "desktop heap" for each backend that's started. The desktop heap is a very limited resource, causing backends to no longer start once it's been exhausted. We still have indirect depdendencies on user32.dll through third party libraries, but those can't easily be removed. Dave Page
2007-10-23Fix two-argument form of ts_rewrite() so it actually works for cases whereTom Lane
a later rewrite rule should change a subtree modified by an earlier one. Per my gripe of a few days ago.
2007-10-23Fix several bugs in tsvectorin, including crash due to uninitialized field andTom Lane
miscomputation of required palloc size. The crash could only occur if the input contained lexemes both with and without positions, which is probably not common in practice. The miscomputation would definitely result in wasted space. Also fix some inconsistent coding around alignment of strings and positions in a tsvector value; these errors could also lead to crashes given mixed with/without position data and a machine that's picky about alignment. And be more careful about checking for overflow of string offsets. Patch is only against HEAD --- I have not looked to see if same bugs are in back-branch contrib/tsearch2 code.
2007-10-22Adjust ts_debug's output as per my proposal of yesterday: show theTom Lane
active dictionary and its output lexemes as separate columns, instead of smashing them into one text column, and lowercase the column names. Also, define the output rowtype using OUT parameters instead of a composite type, to be consistent with the other built-in functions.
2007-10-22Remove an Assert that's been obsoleted by recent changes in the parsetreeTom Lane
representation of DECLARE CURSOR. Report and fix by Heikki.
2007-10-22Add a useless return statement to suppress a warning seen with someTom Lane
versions of gcc (I'm seeing it with Apple's gcc 4.0.1). I think the reason we did not see this before was that the assert() macros in the regex code were all no-ops till recently.
2007-10-21Fix shared tsvector/tsquery input code so that we don't say "syntax error inTom Lane
tsvector" when we are really parsing a tsquery. Report the bogus input, too. Make styles of some related error messages more consistent.
2007-10-20Adjust error message to agree with documentation. The tsearch documentationTom Lane
uniformly calls these things weights, not classes.
2007-10-19Found another small glitch in tsearch API: the two versions of ts_lexize()Tom Lane
are really redundant, since we invented a regdictionary alias type. We can have just one function, declared as taking regdictionary, and it will handle both behaviors. Noted while working on documentation.
2007-10-16Tweak toast-related logic in heapam.c so that the toaster is only invokedTom Lane
when relkind = RELKIND_RELATION. This syncs these tests with the Asserts in tuptoaster.c, and ensures that we won't ever try to, for example, compress a sequence's tuple. Problem found by Greg Stark while stress-testing with much-smaller-than-normal page sizes.
2007-10-16Re-allow UTF8 encodings on win32. Since UTF8 is converted toMagnus Hagander
UTF16 before being used, all (valid) locales will work for this.
2007-10-15Fix pg_wchar_table[] to match revised ordering of the encoding ID enum.Tom Lane
Add some comments so hopefully the next poor sod doesn't fall into the same trap. (Wrong comments are worse than none at all...)
2007-10-15Include NOLOGIN roles in the 'flat' password file. In the originalTom Lane
coding this was seen as useless, but the problem with not including them is that the error message will often be something about authentication failure, rather than the more helpful one about 'role is not permitted to log in'. Per discussion.
2007-10-13Migrate the former contrib/txid module into core. This will make it easierTom Lane
for Slony and Skytools to depend on it. Per discussion.
2007-10-13Guard against possible double free during error escape from XMLTom Lane
functions. Patch for the reported issue from Kris Jurka, some other potential trouble spots plugged by Tom.
2007-10-13Fix the inadvertent libpq ABI breakage discovered by Martin Pitt: theTom Lane
renumbering of encoding IDs done between 8.2 and 8.3 turns out to break 8.2 initdb and psql if they are run with an 8.3beta1 libpq.so. For the moment we can rearrange the order of enum pg_enc to keep the same number for everything except PG_JOHAB, which isn't a problem since there are no direct references to it in the 8.2 programs anyway. (This does force initdb unfortunately.) Going forward, we want to fix things so that encoding IDs can be changed without an ABI break, and this commit includes the changes needed to allow libpq's encoding IDs to be treated as fully independent of the backend's. The main issue is that libpq clients should not include pg_wchar.h or otherwise assume they know the specific values of libpq's encoding IDs, since they might encounter version skew between pg_wchar.h and the libpq.so they are using. To fix, have libpq officially export functions needed for encoding name<=>ID conversion and validity checking; it was doing this anyway unofficially. It's still the case that we can't renumber backend encoding IDs until the next bump in libpq's major version number, since doing so will break the 8.2-era client programs. However the code is now prepared to avoid this type of problem in future. Note that initdb is no longer a libpq client: we just pull in the two source files we need directly. The patch also fixes a few places that were being sloppy about checking for an unrecognized encoding name.
2007-10-13Fix ALTER COLUMN TYPE to preserve the tablespace and reloptions of indexesTom Lane
it affects. The original coding neglected tablespace entirely (causing the indexes to move to the database's default tablespace) and for an index belonging to a UNIQUE or PRIMARY KEY constraint, it would actually try to assign the parent table's reloptions to the index :-(. Per bug #3672 and subsequent investigation. 8.0 and 8.1 did not have reloptions, but the tablespace bug is present.