summaryrefslogtreecommitdiff
path: root/src/backend/utils
AgeCommit message (Collapse)Author
2007-04-16Tweak clean_encoding_name() API to avoid need to cast away const.Tom Lane
Kris Jurka
2007-04-16Add a multi-worker capability to autovacuum. This allows multiple workerAlvaro Herrera
processes to be running simultaneously. Also, now autovacuum processes do not count towards the max_connections limit; they are counted separately from regular processes, and are limited by the new GUC variable autovacuum_max_workers. The launcher now has intelligence to launch workers on each database every autovacuum_naptime seconds, limited only on the max amount of worker slots available. Also, the global worker I/O utilization is limited by the vacuum cost-based delay feature. Workers are "balanced" so that the total I/O consumption does not exceed the established limit. This part of the patch was contributed by ITAGAKI Takahiro. Per discussion.
2007-04-16Make plancache store cursor options so it can pass them to planner duringTom Lane
a replan. I had originally thought this was not necessary, but the new SPI facilities create a path whereby queries planned with non-default options can get into the cache, so it is necessary.
2007-04-16Expose more cursor-related functionality in SPI: specifically, allowTom Lane
access to the planner's cursor-related planning options, and provide new FETCH/MOVE routines that allow access to the full power of those commands. Small refactoring of planner(), pg_plan_query(), and pg_plan_queries() APIs to make it convenient to pass the planning options down from SPI. This is the core-code portion of Pavel Stehule's patch for scrollable cursor support in plpgsql; I'll review and apply the plpgsql changes separately.
2007-04-15Make JOHAB client only encoding per discussions in pgsql-hackersTatsuo Ishii
"Server-side support of all encodings" around 2007/3/26. initdb required.
2007-04-15Fix description how to create conversion function.Tatsuo Ishii
2007-04-12RESET SESSION, plus related new DDL commands. Patch from Marko Kreen,Neil Conway
reviewed by Neil Conway. This patch adds the following DDL command variants: RESET SESSION, RESET TEMP, RESET PLANS, CLOSE ALL, and DEALLOCATE ALL. RESET SESSION is intended for use by connection pool software and the like, in order to reset a client session to something close to its initial state. Note that while most of these command variants can be executed inside a transaction block (but are not transaction-aware!), RESET SESSION cannot. While this is inconsistent, it is intended to catch programmer mistakes: RESET SESSION in an open transaction block is probably unintended.
2007-04-06Make 'col IS NULL' clauses be indexable conditions.Tom Lane
Teodor Sigaev, with some kibitzing from Tom Lane.
2007-04-06Support varlena fields with single-byte headers and unaligned storage.Tom Lane
This commit breaks any code that assumes that the mere act of forming a tuple (without writing it to disk) does not "toast" any fields. While all available regression tests pass, I'm not totally sure that we've fixed every nook and cranny, especially in contrib. Greg Stark with some help from Tom Lane
2007-04-05Update XML error message text for missing libxml; update regressionBruce Momjian
output to match.
2007-04-05Improve documentation/warning when --with-libxml is not used in theBruce Momjian
installation.
2007-04-02Check length of enum literals on definition and input to make sure they will ↵Andrew Dunstan
fit in a name field and not cause syscache errors.
2007-04-02Support enum data types. Along the way, use macros for the values ofTom Lane
pg_type.typtype whereever practical. Tom Dunstan, with some kibitzing from Tom Lane.
2007-04-01Mapping schemas and databases to XML and XML Schema.Peter Eisentraut
Refactor and document the remaining mapping code.
2007-03-30Add some instrumentation to the bgwriter, through the stats collector.Magnus Hagander
New view pg_stat_bgwriter, and the functions required to build it.
2007-03-29Teach CLUSTER to skip writing WAL if not needed (ie, not using archiving)Tom Lane
--- Simon. Also, code review and cleanup for the previous COPY-no-WAL patches --- Tom.
2007-03-28Code cleanup for the new regexp UDFs: we can hardcode the OID and someNeil Conway
properties of the "text" type, and then simplify the code accordingly. Patch from Jeremy Drake.
2007-03-27Fix array coercion expressions to ensure that the correct volatility isTom Lane
seen by code inspecting the expression. The best way to do this seems to be to drop the original representation as a function invocation, and instead make a special expression node type that represents applying the element-type coercion function to each array element. In this way the element function is exposed and will be checked for volatility. Per report from Guillaume Smet.
2007-03-27Fix typo in Makefile.Bruce Momjian
Marko Kreen
2007-03-26Remove advertising clause from Berkeley BSD-licensed files, perBruce Momjian
instructions from Berkeley.
2007-03-26Fix pg_wchar_table's maxmblen field of EUC_CN, EUC_TW, MULE_INTERNALTatsuo Ishii
and GB18030. patches from ITAGAKI Takahiro.
2007-03-26Fix plancache's invalidation callback to do the right thing for a SITom Lane
reset event, namely invalidate everything. This oversight probably explains the rare failures that some buildfarm machines have been showing for the plancache regression test.
2007-03-25Clean up the representation of special snapshots by including a "methodTom Lane
pointer" in every Snapshot struct. This allows removal of the case-by-case tests in HeapTupleSatisfiesVisibility, which should make it a bit faster (I didn't try any performance tests though). More importantly, we are no longer violating portable C practices by assuming that small integers are distinct from all pointer values, and HeapTupleSatisfiesDirty no longer has a non-reentrant API involving side-effects on a global variable. There were a couple of places calling HeapTupleSatisfiesXXX routines directly rather than through the HeapTupleSatisfiesVisibility macro. Since these places had to be changed anyway, I chose to make them go through the macro for uniformity. Along the way I renamed HeapTupleSatisfiesSnapshot to HeapTupleSatisfiesMVCC to emphasize that it's only used with MVCC-type snapshots. I was sorely tempted to rename HeapTupleSatisfiesVisibility to HeapTupleSatisfiesSnapshot, but forebore for the moment to avoid confusion and reduce the likelihood that this patch breaks some of the pending patches. Might want to reconsider doing that later.
2007-03-25Add new encoding EUC_JIS_2004 and SHIFT_JIS_2004,Tatsuo Ishii
along with new conversions among EUC_JIS_2004, SHIFT_JIS_2004 and UTF-8. catalog version has been bump up.
2007-03-23Fix plancache so that any required replanning is done with the sameTom Lane
search_path that was active when the plan was first made. To do this, improve namespace.c to support a stack of "override" search path settings (we must have a stack since nested replan events are entirely possible). This facility replaces the "special namespace" hack formerly used by CREATE SCHEMA, and should be able to support per-function search path settings as well.
2007-03-23Allow 4 bytes UTF-8 (UCS-4 range 00010000-001FFFFF)Tatsuo Ishii
This is necessary to support JIS X 0213 <--> UTF-8 conversion.
2007-03-22Commit newest version of xmlpath().Bruce Momjian
Nikolay Samokhvalov
2007-03-22Add xmlpath() to evaluate XPath expressions, with namespaces support.Bruce Momjian
Nikolay Samokhvalov
2007-03-21Fix some problems with selectivity estimation for partial indexes.Tom Lane
First, genericcostestimate() was being way too liberal about including partial-index conditions in its selectivity estimate, resulting in substantial underestimates for situations such as an indexqual "x = 42" used with an index on x "WHERE x >= 40 AND x < 50". While the code is intentionally set up to favor selecting partial indexes when available, this was too much... Second, choose_bitmap_and() was likewise easily fooled by cases of this type, since it would similarly think that the partial index had selectivity independent of the indexqual. Fixed by using predicate_implied_by() rather than simple equality checks to determine redundancy. This is a good deal more expensive but I don't see much alternative. At least the extra cost is only paid when there's actually a partial index under consideration. Per report from Jeff Davis. I'm not going to risk back-patching this, though.
2007-03-20Add three new regexp functions: regexp_matches, regexp_split_to_array,Neil Conway
and regexp_split_to_table. These functions provide access to the capture groups resulting from a POSIX regular expression match, and provide the ability to split a string on a POSIX regular expression, respectively. Patch from Jeremy Drake; code review by Neil Conway, additional comments and suggestions from Tom and Peter E. This patch bumps the catversion, adds some regression tests, and updates the docs.
2007-03-19Changes pg_trigger and extend pg_rewrite in order to allow triggers andJan Wieck
rules to be defined with different, per session controllable, behaviors for replication purposes. This will allow replication systems like Slony-I and, as has been stated on pgsql-hackers, other products to control the firing mechanism of triggers and rewrite rules without modifying the system catalog directly. The firing mechanisms are controlled by a new superuser-only GUC variable, session_replication_role, together with a change to pg_trigger.tgenabled and a new column pg_rewrite.ev_enabled. Both columns are a single char data type now (tgenabled was a bool before). The possible values in these attributes are: 'O' - Trigger/Rule fires when session_replication_role is "origin" (default) or "local". This is the default behavior. 'D' - Trigger/Rule is disabled and fires never 'A' - Trigger/Rule fires always regardless of the setting of session_replication_role 'R' - Trigger/Rule fires when session_replication_role is "replica" The GUC variable can only be changed as long as the system does not have any cached query plans. This will prevent changing the session role and accidentally executing stored procedures or functions that have plans cached that expand to the wrong query set due to differences in the rule firing semantics. The SQL syntax for changing a triggers/rules firing semantics is ALTER TABLE <tabname> <when> TRIGGER|RULE <name>; <when> ::= ENABLE | ENABLE ALWAYS | ENABLE REPLICA | DISABLE psql's \d command as well as pg_dump are extended in a backward compatible fashion. Jan
2007-03-19Fix 8.2 breakage of domains over array types, and add a regression test caseTom Lane
to cover it. Per report from Anton Pikhteryev.
2007-03-18Code cleanup: mark some variables with the "const" modifier, when theyNeil Conway
are initialized with a string literal. Patch from Stefan Huehner.
2007-03-17Ooops, got only one of the two ArrayExpr variants correct in firstTom Lane
cut at exprTypmod support. Also, experimentation shows that we need to label the type of Const nodes that are numeric with a specific typmod.
2007-03-17Fix up the remaining places where the expression node structure would loseTom Lane
available information about the typmod of an expression; namely, Const, ArrayRef, ArrayExpr, and EXPR and ARRAY SubLinks. In the ArrayExpr and SubLink cases it wasn't really the data structure's fault, but exprTypmod() being lazy. This seems like a good idea in view of the expected increase in typmod usage from Teodor's work to allow user-defined types to have typmods. In particular this responds to the concerns we had about eliminating the special-purpose hack that exprTypmod() used to have for BPCHAR Consts. We can now tell whether or not such a Const has been cast to a specific length, and report or display properly if so. initdb forced due to changes in stored rules.
2007-03-16Add new columns for tuple statistics on a database level toMagnus Hagander
pg_stat_database.
2007-03-15Make use of plancache module for SPI plans. In particular, since plpgsqlTom Lane
uses SPI plans, this finally fixes the ancient gotcha that you can't drop and recreate a temp table used by a plpgsql function. Along the way, clean up SPI's API a little bit by declaring SPI plan pointers as "SPIPlanPtr" instead of "void *". This is cosmetic but helps to forestall simple programming mistakes. (I have changed some but not all of the callers to match; there are still some "void *"'s in contrib and the PL's. This is intentional so that we can see if anyone's compiler complains about it.)
2007-03-13Reverted waiting for further fixes:Peter Eisentraut
Make configuration parameters fall back to their default values when they are removed from the configuration file. Joachim Wieland
2007-03-13Properly use pg_strcasecmp() instead of strcasecmp().Magnus Hagander
Un-breaks win32 build.
2007-03-13First phase of plan-invalidation project: create a plan cache managementTom Lane
module and teach PREPARE and protocol-level prepared statements to use it. In service of this, rearrange utility-statement processing so that parse analysis does not assume table schemas can't change before execution for utility statements (necessary because we don't attempt to re-acquire locks for utility statements when reusing a stored plan). This requires some refactoring of the ProcessUtility API, but it ends up cleaner anyway, for instance we can get rid of the QueryContext global. Still to do: fix up SPI and related code to use the plan cache; I'm tempted to try to make SQL functions use it too. Also, there are at least some aspects of system state that we want to ensure remain the same during a replan as in the original processing; search_path certainly ought to behave that way for instance, and perhaps there are others.
2007-03-12Make configuration parameters fall back to their default values when theyPeter Eisentraut
are removed from the configuration file. Joachim Wieland
2007-03-11Fix a race condition that caused pg_database_size() and pg_tablespace_size()Alvaro Herrera
to fail if an object was removed between calls to ReadDir() and stat(). Per discussion in pgsql-hackers. http://archives.postgresql.org/pgsql-hackers/2007-03/msg00671.php Bug report and patch by Michael Fuhr.
2007-03-06Revert temp_tablespaces because of coding problems, per Tom.Bruce Momjian
2007-03-05Remove copied comments from geo_ops.c source file and replace with newBruce Momjian
comments, and cleanup functions. Remove copyright that is no longer relevant.
2007-03-03Fix for COPY-after-truncate feature.Bruce Momjian
Simon Riggs
2007-03-03Add resetStringInfo(), which clears the content of a StringInfo, andNeil Conway
fixup various places in the tree that were clearing a StringInfo by hand. Making this function a part of the API simplifies client code slightly, and avoids needlessly peeking inside the StringInfo interface.
2007-03-03Add GUC log_lock_waits to log long wait times.Bruce Momjian
Simon Riggs
2007-03-02Make log_min_error_statement put LOG level at the same priority asTom Lane
log_min_messages does; and arrange to suppress the duplicative output that would otherwise result from log_statement and log_duration messages. Bruce Momjian and Tom Lane.
2007-03-01Fix date/time formats for XML Schema output.Peter Eisentraut
Pavel Stehule
2007-02-27Replace direct assignments to VARATT_SIZEP(x) with SET_VARSIZE(x, len).Tom Lane
Get rid of VARATT_SIZE and VARATT_DATA, which were simply redundant with VARSIZE and VARDATA, and as a consequence almost no code was using the longer names. Rename the length fields of struct varlena and various derived structures to catch anyplace that was accessing them directly; and clean up various places so caught. In itself this patch doesn't change any behavior at all, but it is necessary infrastructure if we hope to play any games with the representation of varlena headers. Greg Stark and Tom Lane