aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Remove a few places that attempted to define INT_MAX, SCHAR_MAX, andNeil Conway2006-03-11
| | | | | | similar constants if they were not previously defined. All these constants must be defined by limits.h according to C89, so we can safely assume they are present.
* Recent changes in memory management in tuplesort.c had a problem: theTom Lane2006-03-10
| | | | | | | | | | | | case where we run low on array slots before we run low on memory is much more probable than I had thought, and so it's important to treat each tape fairly in that case. To fix this, track per-tape slot allocations just like we track per-tape space allocation. Also, in the FINALMERGE code path avoid scanning all the input tapes when we really only need to read from one. This should fix poor behavior with very large work_mem as exhibited by Stefan Kaltenbrunner. I didn't do anything about putting an upper bound on the number of tapes, but maybe we should still consider that.
* Add a CHECK_FOR_INTERRUPTS() in _bt_buildadd(). This fixes problemTom Lane2006-03-10
| | | | | with not responding to query cancel during the last stage of btree index creation.
* Implement 4 new aggregate functions from SQL2003. Specifically: var_pop(),Neil Conway2006-03-10
| | | | | | | | | | | | | var_samp(), stddev_pop(), and stddev_samp(). var_samp() and stddev_samp() are just renamings of the historical Postgres aggregates variance() and stddev() -- the latter names have been kept for backward compatibility. This patch includes updates for the documentation and regression tests. The catversion has been bumped. NB: SQL2003 requires that DISTINCT not be specified for any of these aggregates. Per discussion on -patches, I have NOT implemented this restriction: if the user asks for stddev(DISTINCT x), presumably they know what they are doing.
* Add a CHECK_FOR_INTERRUPTS() to the loop in ExecMakeTableFunctionResult.Tom Lane2006-03-10
| | | | Otherwise you can't cancel queries like select ... from generate_series(1,1000000).
* Tweak trace_sort code to show the merge order (number of active inputTom Lane2006-03-08
| | | | | tapes) for each merge step. This will give us some idea of how effective the merge distribution algorithm is.
* Further examination of ltsReleaseBlock usage shows that it's got aTom Lane2006-03-07
| | | | | | | | | | | | | | | | | performance issue during regular merge passes not only the 'final merge' case. The original design contemplated that there would never be more than about one free block per 'tape', hence no need for an efficient method of keeping the free blocks sorted. But given the later addition of merge preread behavior in tuplesort.c, there is likely to be about work_mem worth of free blocks, which is not so small ... and for that matter the number of tapes isn't necessarily small anymore either. So we'd better get rid of the assumption entirely. Instead, I'm assuming that the usage pattern will involve alternation between merge preread and writing of a new run. This makes it reasonable to just add blocks to the list without sorting during successive ltsReleaseBlock calls, and then do a qsort() when we start getting ltsGetFreeBlock() calls. Experimentation seems to confirm that there aren't many qsort calls relative to the number of ltsReleaseBlock/ltsGetFreeBlock calls.
* Repair old performance bug in tuplesort.c/logtape.c. In the case whereTom Lane2006-03-07
| | | | | | | | we are doing the final merge pass on-the-fly, and not writing the data back onto a 'tape', the number of free blocks in the tape set will become large, leading to a lot of time wasted in ltsReleaseBlock(). There is really no need to track the free blocks anymore in this state, so add a simple shutoff switch. Per report from Stefan Kaltenbrunner.
* Turn off zero_damaged_pages in the right place (ie, in the autovacTom Lane2006-03-07
| | | | | process not in the postmaster) and with the right GucSource (needs to be a nontransactional source since we've not started an xact yet).
* Use SetConfigOption() to turn off "zero_damaged_pages" in autovacuum.Bruce Momjian2006-03-07
|
* Properly set "escape_string_warning" to default to true.Bruce Momjian2006-03-07
|
* Make all our flex and bison files use %option prefix or %name-prefixTom Lane2006-03-07
| | | | | | (respectively) to rename yylex and related symbols. Some were doing it this way already, while others used not-too-reliable sed hacks in the Makefiles. It's all nice and consistent now.
* Remove the stub support we had for UNION JOIN; per discussion, this isTom Lane2006-03-07
| | | | | | not likely ever to be implemented seeing it's been removed from SQL2003. This allows getting rid of the 'filter' version of yylex() that we had in parser.c, which should save at least a few microseconds in parsing.
* Default to ON for 8.2, as announced in the release notes:Bruce Momjian2006-03-06
| | | | escape_string_warning = on
* Attached is the new patch. To summarize:Bruce Momjian2006-03-06
| | | | | | | | | | | | | | | | | | | | | | | | | | - new function justify_interval(interval) - modified function justify_hours(interval) - modified function justify_days(interval) These functions are defined to meet the requirements as discussed in this thread. Specifically: - justify_hours makes certain the sign bit on the hours matches the sign bit on the days. It only checks the sign bit on the days, and not the months, when determining if the hours should be positive or negative. After the call, -24 < hours < 24. - justify_days makes certain the sign bit on the days matches the sign bit on the months. It's behavior does not depend on the hours, nor does it modify the hours. After the call, -30 < days < 30. - justify_interval makes sure the sign bits on all three fields months, days, and hours are all the same. After the call, -24 < hours < 24 AND -30 < days < 30. Mark Dilger
* Enable standard_conforming_strings to be turned on.Bruce Momjian2006-03-06
| | | | Kevin Grittner
* This patch adds native LDAP auth, for those platforms that don't haveBruce Momjian2006-03-06
| | | | | | | PAM (such as Win32, but also unixen without PAM). On Unix, uses OpenLDAP. On win32, uses the builin WinLDAP library. Magnus Hagander
* Prevent autovacuum from zeroing damaged pages.Bruce Momjian2006-03-06
|
* Per recent discussion on -hackers, we should sometimes reorder theNeil Conway2006-03-05
| | | | | | | | | | columns of the grouping clause to avoid redundant sorts. The optimizer is not currently capable of doing this, so this patch implements a simple hack in the analysis phase (transformGroupClause): if any subset of the GROUP BY clause matches a prefix of the ORDER BY list, that prefix is moved to the front of the GROUP BY clause. This shouldn't change the semantics of the query, and allows a redundant sort to be avoided for queries like "GROUP BY a, b ORDER BY b".
* Update copyright for 2006. Update scripts.Bruce Momjian2006-03-05
|
* Support include directives in postgresql.conf.Tom Lane2006-03-04
| | | | Patch by Joachim Wieland, somewhat reworked for clarity and portability.
* Declare the arguments of AllocateFile() as const char *, not char *.Tom Lane2006-03-04
| | | | This is consistent with the standard definition of fopen().
* Incorporate a couple of recent tuplesort.c improvements into tuplestore.c.Tom Lane2006-03-04
| | | | | | In particular, ensure that enlargement of the memtuples[] array doesn't fall foul of MaxAllocSize when work_mem is very large, and don't bother enlarging it if that would force an immediate switch into 'tape' mode anyway.
* Prevent lazy_space_alloc from making requests that exceed MaxAllocSize,Tom Lane2006-03-04
| | | | per report from Stefan Kaltenbrunner.
* Prevent sorting from requesting a SortTuple array that exceeds MaxAllocSize;Tom Lane2006-03-04
| | | | | | | we'll go over to disk-based sort if we reach that limit. This fixes Stefan Kaltenbrunner's observation that sorting can suffer an 'invalid memory alloc request size' failure when sort_mem is set large enough. It's unfortunately not so easy to fix in 8.1 ...
* Tighten up SJIS byte sequence check. Now we reject invalid SJIS byteTatsuo Ishii2006-03-04
| | | | | sequence such as "0x95 0x27". Patches from Akio Ishida. Also update copyright notice.
* Make the COPY command return a command tag that includes the number ofTom Lane2006-03-03
| | | | | rows copied. Backend side of Volkan Yazici's recent patch, with corrections and documentation.
* Dept. of second thoughts: rejigger the TRUNCATE ... CASCADE patch so thatTom Lane2006-03-03
| | | | | | | relations are still checked for permissions etc as soon as they are opened. The original form of the patch could hold exclusive lock for a long time on relations that the user doesn't even have permissions to access, let alone truncate.
* Fix a typo.Neil Conway2006-03-03
|
* Add CASCADE option to TRUNCATE. Joachim WielandTom Lane2006-03-03
|
* Add comment about localized month names for to_date and to_timestamp.Bruce Momjian2006-03-03
|
* Arrange to call AbsorbFsyncRequests every so often while performing aTom Lane2006-03-03
| | | | | | | checkpoint in the bgwriter. This forestalls overflow of the fsync request queue, which is not fatal but causes considerable performance degradation when it occurs (because backends then have to do their own fsyncs). Per patch from Itagaki Takahiro, modified a little bit by me.
* Repair oidvectorrecv and int2vectorrecv, which I broke while changingTom Lane2006-03-02
| | | | them to use array_recv :-(. Per report from Tim Kordas.
* Attached is a patch that replaces a bunch of places where StringInfosNeil Conway2006-03-01
| | | | | | | | | | | | | are unnecessarily allocated on the heap rather than the stack. If the StringInfo doesn't outlive the stack frame in which it is created, there is no need to allocate it on the heap via makeStringInfo() -- stack allocation is faster. While it's not a big deal unless the code is in a critical path, I don't see a reason not to save a few cycles -- using stack allocation is not less readable. I also cleaned up a bit of code along the way: moved variable declarations into a more tightly-enclosing scope where possible, fixed some pointless copying of strings in dblink, etc.
* This patch makes the error message strings throughout the backendNeil Conway2006-03-01
| | | | | | | | more compliant with the error message style guide. In particular, errdetail should begin with a capital letter and end with a period, whereas errmsg should not. I also fixed a few related issues in passing, such as fixing the repeated misspelling of "lexeme" in contrib/tsearch2 (per Tom's suggestion).
* Allow the syntax CREATE TYPE foo, with no parameters, to permit explicitTom Lane2006-02-28
| | | | | | | | | | creation of a shell type. This allows a less hacky way of dealing with the mutual dependency between a datatype and its I/O functions: make a shell type, then make the functions, then define the datatype fully. We should fix pg_dump to handle things this way, but this commit just deals with the backend. Martijn van Oosterhout, with some corrections by Tom Lane.
* Teach nodeSort and nodeMaterial to optimize out unnecessary overheadTom Lane2006-02-28
| | | | | when the passed-down eflags indicate they can. Simon Riggs and Tom Lane
* Extend the ExecInitNode API so that plan nodes receive a set of flagTom Lane2006-02-28
| | | | | | | | | | | | bits indicating which optional capabilities can actually be exercised at runtime. This will allow Sort and Material nodes, and perhaps later other nodes, to avoid unnecessary overhead in common cases. This commit just adds the infrastructure and arranges to pass the correct flag values down to plan nodes; none of the actual optimizations are here yet. I'm committing this separately in case anyone wants to measure the added overhead. (It should be negligible.) Simon Riggs and Tom Lane
* Clean up CREATE FUNCTION syntax usage in contrib and elsewhere, inPeter Eisentraut2006-02-27
| | | | | particular get rid of single quotes around language names and old WITH () construct.
* Add mention that tid perhaps someday should be output as a record.Bruce Momjian2006-02-27
|
* Improve sorting speed by pre-extracting the first sort-key column ofTom Lane2006-02-26
| | | | | | each tuple, as per my proposal of several days ago. Also, clean up sort memory management by keeping all working data in a separate memory context, and refine the handling of low-memory conditions.
* Implement the <> operator for the tid type. Original patch from MarkNeil Conway2006-02-26
| | | | | Kirkwood, minor improvements by Neil Conway. The regression tests have been updated and the catversion has been bumped.
* Fix typo in comment.Neil Conway2006-02-26
|
* The Makefile was invoking perl scripts as ./script.pl. This fails whenPeter Eisentraut2006-02-24
| | | | | | | | the script is not executable as UCS_to_most.pl is in CVS. It also won't pick up any custom setting of the perl version/location to use. This patch calls perl scripts like $(PERL) $(srcdir)/script.pl. Kris Jurka
* Cleanup the usage of ScanDirection: use the symbolic names for theNeil Conway2006-02-21
| | | | | | | | | possible ScanDirection alternatives rather than magic numbers (-1, 0, 1). Also, use the ScanDirection macros in a few places rather than directly checking whether `dir == ForwardScanDirection' and the like. Per patch from James William Pye. His patch also changed ScanDirection to be a "char" rather than an enum, which I haven't applied.
* Update obsolete comment.Tom Lane2006-02-19
|
* Modify logtape.c so that the initial LogicalTapeSetCreate call onlyTom Lane2006-02-19
| | | | | | | | | | | allocates the control data. The per-tape buffers are allocated only on first use. This saves memory in situations where tuplesort.c overestimates the number of tapes needed (ie, there are fewer runs than tapes). Also, this makes legitimate the coding in inittapes() that includes tape buffer space in the maximum-memory calculation: when inittapes runs, we've already expended the whole allowed memory on tuple storage, and so we'd better not allocate all the tape buffers until we've flushed some tuples out of memory.
* Improve tuplesort.c to support variable merge order. The original codingTom Lane2006-02-19
| | | | | | | | | | with fixed merge order (fixed number of "tapes") was based on obsolete assumptions, namely that tape drives are expensive. Since our "tapes" are really just a couple of buffers, we can have a lot of them given adequate workspace. This allows reduction of the number of merge passes with consequent savings of I/O during large sorts. Simon Riggs with some rework by Tom Lane
* Add TABLESPACE and ON COMMIT clauses to CREATE TABLE AS. ON COMMIT isNeil Conway2006-02-19
| | | | | required by the SQL standard, and TABLESPACE is useful functionality. Patch from Kris Jurka, minor editorialization by Neil Conway.
* Add support for Windows codepages 1253, 1254, 1255, and 1257 and cleanPeter Eisentraut2006-02-18
| | | | | | | | | | | | | | | | | | | | | up a bunch of the support utilities. In src/backend/utils/mb/Unicode remove nearly duplicate copies of the UCS_to_XXX perl script and replace with one version to handle all generic files. Update the Makefile so that it knows about all the map files. This produces a slight difference in some of the map files, using a uniform naming convention and not mapping the null character. In src/backend/utils/mb/conversion_procs create a master utf8<->win codepage function like the ISO 8859 versions instead of having a separate handler for each conversion. There is an externally visible change in the name of the win1258 to utf8 conversion. According to the documentation notes, it was named incorrectly and this changes it to a standard name. Running the Unicode mapping perl scripts has shown some additional mapping changes in koi8r and iso8859-7.