Tom Lane [Sun, 1 Oct 2006 22:25:48 +0000 (22:25 +0000)]
Make some marginal performance improvements in reportErrorPosition(),
which turns out to be a dominant part of the runtime in scenarios
involving lots of parse-time warnings (such as Stephen Frost's example
of an INSERT with a lot of backslash-containing strings). There's not
a whole lot we can do about the character-at-a-time scanning, but we
can at least avoid traversing the query twice.
Tom Lane [Sun, 1 Oct 2006 22:08:18 +0000 (22:08 +0000)]
Do a CHECK_FOR_INTERRUPTS after emitting a message of less than ERROR
severity. This is to ensure the user can cancel a query that's spitting
out lots of notice/warning messages, even if they're coming from a loop
that doesn't otherwise contain a CHECK_FOR_INTERRUPTS. Per gripe from
Stephen Frost.
Tom Lane [Sun, 1 Oct 2006 18:37:53 +0000 (18:37 +0000)]
Remove accented characters in comments, to avoid failures when this
file is read with an incompatible client_encoding setting. Per report
from Tim N. van der Leeuw.
Tom Lane [Sun, 1 Oct 2006 17:23:38 +0000 (17:23 +0000)]
Fix overly enthusiastic Assert introduced in 8.1: it's expecting a
CaseTestExpr, but forgot that the optimizer is sometimes able to replace
CaseTestExpr by Const.
Bruce Momjian [Sat, 30 Sep 2006 03:55:32 +0000 (03:55 +0000)]
Add:
> * Allow more complex user/database default GUC settings
> Currently, ALTER USER and ALTER DATABASE support per-user and
> per-database defaults. Consider adding per-user-and-database
> defaults so things like search_path can be defaulted for a
> specific user connecting to a specific database.
>
>
Tom Lane [Fri, 29 Sep 2006 21:22:21 +0000 (21:22 +0000)]
Allow assignment to array elements not contiguous with those already
present; intervening positions are filled with nulls. This behavior
is required by SQL99 but was not implementable before 8.2 due to lack
of support for nulls in arrays. I have only made it work for the
one-dimensional case, which is all that SQL99 requires. It seems quite
complex to get it right in higher dimensions, and since we never allowed
extension at all in higher dimensions, I think that must count as a
future feature addition not a bug fix.
Tom Lane [Thu, 28 Sep 2006 20:51:43 +0000 (20:51 +0000)]
Fix IS NULL and IS NOT NULL tests on row-valued expressions to conform to
the SQL spec, viz IS NULL is true if all the row's fields are null, IS NOT
NULL is true if all the row's fields are not null. The former coding got
this right for a limited number of cases with IS NULL (ie, those where it
could disassemble a ROW constructor at parse time), but was entirely wrong
for IS NOT NULL. Per report from Teodor.
I desisted from changing the behavior for arrays, since on closer inspection
it's not clear that there's any support for that in the SQL spec. This
probably needs more consideration.
Tom Lane [Wed, 27 Sep 2006 18:40:10 +0000 (18:40 +0000)]
Replace strncpy with strlcpy in selected places that seem possibly relevant
to performance. (A wholesale effort to get rid of strncpy should be
undertaken sometime, but not during beta.) This commit also fixes dynahash.c
to correctly truncate overlength string keys for hashtables, so that its
callers don't have to anymore.
Tom Lane [Wed, 27 Sep 2006 16:29:46 +0000 (16:29 +0000)]
Add strlcpy() to the set of functions supported by src/port/ when not
available directly on the platform. Per discussion, this function is
sufficiently widely recognized to be treated as standard.
Bruce Momjian [Tue, 26 Sep 2006 11:18:29 +0000 (11:18 +0000)]
Done:
< o Add command to archive partially filled write-ahead logs? [pitr]
<
< Currently only full WAL files are archived. This means that the
< most recent transactions aren't available for recovery in case
< of a disk failure.
<
Reorder:
< o %Create dump tool for write-ahead logs for use in determining
< transaction id for point-in-time recovery
> o %Create dump tool for write-ahead logs for use in determining
> transaction id for point-in-time recovery
Tom Lane [Mon, 25 Sep 2006 22:01:10 +0000 (22:01 +0000)]
Add a check to prevent overwriting valid data if smgrnblocks() gives a
wrong answer, as has been seen to occur with a buggy Linux kernel. Not
really our bug, but it's a simple test in a seldom-used control path,
so might as well have a defense.
Tom Lane [Sun, 24 Sep 2006 17:10:18 +0000 (17:10 +0000)]
Cause pg_regress to invoke the temporary postmaster as 'postgres' not
'postmaster', so as not to depend on the existence of the postmaster
symlink. Also, implement postmaster-still-alive and postmaster-kill
operations for Windows, per Magnus.
Tom Lane [Fri, 22 Sep 2006 23:20:14 +0000 (23:20 +0000)]
Fix pg_locks view to call advisory locks advisory locks, while preserving
backward compatibility for anyone using the old userlock code that's now
on pgfoundry --- locks from that code still show as 'userlock'.
Tom Lane [Fri, 22 Sep 2006 21:39:58 +0000 (21:39 +0000)]
Fix bugs in plpgsql and ecpg caused by assuming that isspace() would only
return true for exactly the characters treated as whitespace by their flex
scanners. Per report from Victor Snezhko and subsequent investigation.
Also fix a passel of unsafe usages of <ctype.h> functions, that is, ye olde
char-vs-unsigned-char issue. I won't miss <ctype.h> when we are finally
able to stop using it.
Peter Eisentraut [Fri, 22 Sep 2006 18:50:41 +0000 (18:50 +0000)]
Rearrange yes/no prompting code so that the prompts always show the
(possibly (un)translated) letters that are actually expected as input.
Also reject invalid responses instead of silenty taken them as "no".
Peter Eisentraut [Fri, 22 Sep 2006 17:41:21 +0000 (17:41 +0000)]
Add units to the default postgresql.conf. For the most part, this should
match what SHOW displays as default value, to make the user experience
uniform.
Tom Lane [Fri, 22 Sep 2006 16:20:00 +0000 (16:20 +0000)]
Update timezone documentation to reflect current reality: instead of
giving tables of known timezone names, refer the user to the system views.
Joachim Wieland
Tom Lane [Fri, 22 Sep 2006 15:29:04 +0000 (15:29 +0000)]
We're going to have to spell dotless i as plain i, because dotless i is
not in the character set supported by DocBook nor standard HTML. (Sorry
Volkan.) Also replace random character-set references by a pointer to
the actual standard.
Tom Lane [Thu, 21 Sep 2006 20:31:22 +0000 (20:31 +0000)]
Fix free space map to correctly track the total amount of FSM space needed
even when a single relation requires more than max_fsm_pages pages. Also,
make VACUUM emit a warning in this case, since it likely means that VACUUM
FULL or other drastic corrective measure is needed. Per reports from Jeff
Frost and others of unexpected changes in the claimed max_fsm_pages need.
Tom Lane [Wed, 20 Sep 2006 19:50:21 +0000 (19:50 +0000)]
Change patternsel (LIKE/regex selectivity estimation) so that if there
is a large enough histogram, it will use the number of matches in the
histogram to derive a selectivity estimate, rather than the admittedly
pretty bogus heuristics involving examining the pattern contents. I set
'large enough' at 100, but perhaps we should change that later. Also
apply the same technique in contrib/ltree's <@ and @> estimator. Per
discussion with Stefan Kaltenbrunner and Matteo Beccati.
Neil Conway [Wed, 20 Sep 2006 01:20:38 +0000 (01:20 +0000)]
Improvements to the partitioning documentation. Original patch from Greg
Stark, additional fixes and editorialization by Neil Conway. Greg's patch
description:
Some more doc patches for partitioned tables. In particular replace
the caveat that INCLUDING CONSTRAINTS doesn't exist and replace it
with documentation of, well, INCLUDING CONSTRAINTS.
Also, there was an instance of "LIKE WITH DEFAULTS" which is
actually spelled "LIKE INCLUDING DEFAULTS".
Tom Lane [Tue, 19 Sep 2006 22:49:53 +0000 (22:49 +0000)]
Improve usage of effective_cache_size parameter by assuming that all the
tables in the query compete for cache space, not just the one we are
currently costing an indexscan for. This seems more realistic, and it
definitely will help in examples recently exhibited by Stefan
Kaltenbrunner. To get the total size of all the tables involved, we must
tweak the handling of 'append relations' a bit --- formerly we looked up
information about the child tables on-the-fly during set_append_rel_pathlist,
but it needs to be done before we start doing any cost estimation, so
push it into the add_base_rels_to_query scan.
Bruce Momjian [Tue, 19 Sep 2006 19:20:21 +0000 (19:20 +0000)]
Dashed items are now for 8.3:
< #A hyphen, "-", marks changes that will appear in the upcoming 8.2 release.#
> #A hyphen, "-", marks changes that will appear in the upcoming 8.3 release.#
Bruce Momjian [Tue, 19 Sep 2006 19:20:00 +0000 (19:20 +0000)]
Remove completed TODO items:
< * -Make postmater and postgres options distinct so the postmaster -o
< option is no longer needed
< * -Allow pooled connections to list all prepared statements
<
< This would allow an application inheriting a pooled connection to know
< the statements prepared in the current session.
<
< * -Re-enable the GUC full_page_writes in 8.2 when reliability issues have
< been addressed
< o -Add "include file" functionality in postgresql.conf
< o -Allow per-database permissions to be set via GRANT
<
< Allow database connection checks based on GRANT rules in
< addition to the existing access checks in pg_hba.conf.
<
< o -Issue a warning if a change-on-restart-only postgresql.conf value
> o Issue a warning if a change-on-restart-only postgresql.conf value
< o -Automatically force archiving of partially-filled WAL files when
< pg_stop_backup() is called or the server is stopped
< o -Add reporting of the current WAL file and offset, perhaps as
< part of partial log file archiving
< * -Allow server logs to be remotely read and removed using SQL commands
< * -Allow protocol-level BIND parameter values to be logged
< * -Zero umasked bits in conversion from INET cast to CIDR
< * -Prevent INET cast to CIDR from dropping netmask, SELECT '1.1.1.1'::inet::cidr
< * -Allow INET + INT8 to increment the host part of the address or
< throw an error on overflow
< * -Add 'tid != tid ' operator for use in corruption recovery
< o -Allow customization of the known set of TZ names (generalize the
< present australian_timezones hack)
< o -Allow timezone names in SQL strings, '2006-05-24 21:11
< Americas/New_York'::timestamptz
< o -Add support for day-time syntax, INTERVAL '1 2:03:04' DAY TO
< SECOND
< o -Allow NULLs in arrays
< * -Add transaction_timestamp(), statement_timestamp(), clock_timestamp()
< functionality
<
< Current CURRENT_TIMESTAMP returns the start time of the current
< transaction, and gettimeofday() returns the wallclock time. This will
< make time reporting more consistent and will allow reporting of
< the statement start time.
<
< * -Allow to_char() to print localized month names
< * -Add sleep() function, remove from regress.c
< * -Allow user-defined functions retuning a domain value to enforce domain
< constraints
< * -Allow TRUNCATE ... CASCADE/RESTRICT
<
< This is like DELETE CASCADE, but truncates.
<
< * -Add COMMENT ON for all cluster global objects (roles, databases
< and tablespaces)
< * -Make row-wise comparisons work per SQL spec
<
< Right now, '(a, b) < (1, 2)' is processed as 'a < 1 and b < 2', but
< the SQL standard requires it to be processed as a column-by-column
< comparison, so the proper comparison is '(a < 1) OR (a = 1 AND b < 2)'.
<
< * -Enable escape_string_warning and standard_conforming_strings
> * Enable standard_conforming_strings
< o -Add ON COMMIT capability to CREATE TABLE AS ... SELECT
< o -Allow an alias to be provided for the target table in
< UPDATE/DELETE (Neil)
< o -Allow UPDATE tab SET ROW (col, ...) = (val, ...) for updating
< multiple columns
< o -Add ALTER TABLE tab INHERIT / NO INHERIT parent
< o -Have COPY return the number of rows loaded/unloaded?
< o -Allow COPY (SELECT ...) TO 'filename'
<
< o -Allow pooled connections to list all open WITH HOLD cursors
<
< Because WITH HOLD cursors exist outside transactions, this allows
< them to be listed so they can be closed.
<
< o -Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
< o -Allow INSERT/UPDATE ... RETURNING new.col or old.col
< o -Allow PL/python to return composite types and result sets
<
< * -Have initdb set the input DateStyle (MDY or DMY) based on locale
< o -Improve psql's handling of multi-line statements
<
< Currently, while \e saves a single statement as one entry, interactive
< statements are saved one line at a time. Ideally all statements
< would be saved like \e does.
<
< o -Allow multi-line column values to align in the proper columns
<
< If the second output column value is 'a\nb', the 'b' should appear
< in the second display column, rather than the first column as it
< does now.
<
< o -Display IN, INOUT, and OUT parameters in \df
< o -Allow pg_dump to use multiple -t and -n switches, exclusion
< ability, and regular expression object matching
< o -Update pg_dump and psql to use the new COPY libpq API (Christopher)
< o -Add a function to support Parse/DescribeStatement capability
< * -Add fillfactor to control reserved free space during index creation
< * -Add system view to show free space map contents
< * -Allow installing to directories containing spaces
<
< This is possible if proper quoting is added to the makefiles for the
< install targets. Because PostgreSQL supports relocatable installs, it
< is already possible to install into a directory that doesn't contain
< spaces and then copy the install to a directory with spaces.
<
< * -%Clean up compiler warnings (especially with gcc version 4)
< * -Remove BeOS and QNX-specific code
< o -Port contrib/xml2
Neil Conway [Tue, 19 Sep 2006 19:04:51 +0000 (19:04 +0000)]
Document how to use psql's --single-transaction option to rollback restoring
an SQL dump if an error occurs. Along the way, make some improvements and
copy-edits to the surrounding text. Patch from Simon Riggs, additional
fixes by Neil Conway.
Tom Lane [Mon, 18 Sep 2006 22:40:40 +0000 (22:40 +0000)]
Add built-in userlock manipulation functions to replace the former
contrib functionality. Along the way, remove the USER_LOCKS configuration
symbol, since it no longer makes any sense to try to compile that out.
No user documentation yet ... mmoncure has promised to write some.
Thanks to Abhijit Menon-Sen for creating a first draft to work from.