summaryrefslogtreecommitdiff
path: root/src/backend/utils
AgeCommit message (Collapse)Author
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
2007-02-23Now that plans have flat rangetable lists, it's a lot easier to get EXPLAIN toTom Lane
drill down into subplan targetlists to print the referent expression for an OUTER or INNER var in an upper plan node. Hence, make it do that always, and banish the old hack of showing "?columnN?" when things got too complicated. Along the way, fix an EXPLAIN bug I introduced by suppressing subqueries from execution-time range tables: get_name_for_var_field() assumed it could look at rte->subquery to find out the real type of a RECORD var. That doesn't work anymore, but instead we can look at the input plan of the SubqueryScan plan node.
2007-02-23Move BLCKSZ < 1024 check to guc.c.Bruce Momjian
2007-02-22Change Agg and Group nodes so that Vars contained in their targetlistsTom Lane
and quals have varno OUTER, rather than zero, to indicate a reference to an output of their lefttree subplan. This is consistent with the way that every other upper-level node type does it, and allows some simplifications in setrefs.c and EXPLAIN.
2007-02-22Turn the rangetable used by the executor into a flat list, and avoid storingTom Lane
useless substructure for its RangeTblEntry nodes. (I chose to keep using the same struct node type and just zero out the link fields for unneeded info, rather than making a separate ExecRangeTblEntry type --- it seemed too fragile to have two different rangetable representations.) Along the way, put subplans into a list in the toplevel PlannedStmt node, and have SubPlan nodes refer to them by list index instead of direct pointers. Vadim wanted to do that years ago, but I never understood what he was on about until now. It makes things a *whole* lot more robust, because we can stop worrying about duplicate processing of subplans during expression tree traversals. That's been a constant source of bugs, and it's finally gone. There are some consequent simplifications yet to be made, like not using a separate EState for subplans in the executor, but I'll tackle that later.
2007-02-20Remove the Query structure from the executor's API. This allows us to stopTom Lane
storing mostly-redundant Query trees in prepared statements, portals, etc. To replace Query, a new node type called PlannedStmt is inserted by the planner at the top of a completed plan tree; this carries just the fields of Query that are still needed at runtime. The statement lists kept in portals etc. now consist of intermixed PlannedStmt and bare utility-statement nodes --- no Query. This incidentally allows us to remove some fields from Query and Plan nodes that shouldn't have been there in the first place. Still to do: simplify the execution-time range table; at the moment the range table passed to the executor still contains Query trees for subqueries. initdb forced due to change of stored rules.