git.postgresql.org Git - postgresql.git/log
Tom Lane [2007年1月30日 18:02:22 +0000 (18:02 +0000)]
Add SPI_push/SPI_pop calls so that datatype input and output functions called
by plpgsql can themselves use SPI --- possibly indirectly, as in the case
of domain_in() invoking plpgsql functions in a domain check constraint.
Per bug #2945 from Sergiy Vyshnevetskiy.
Somewhat arbitrarily, I've chosen to back-patch this as far as 8.0. Given
the lack of prior complaints, it doesn't seem critical for 7.x.
Update documentation for pg_get_serial_sequence() function.
Tom Lane [2007年1月30日 01:33:36 +0000 (01:33 +0000)]
Add support for cross-type hashing in hash index searches and hash joins.
Hashing for aggregation purposes still needs work, so it's not time to
mark any cross-type operators as hashable for general use, but these cases
work if the operators are so marked by hand in the system catalogs.
Tom Lane [2007年1月29日 23:22:59 +0000 (23:22 +0000)]
Add comment noting that hashm_procid in a hash index's metapage isn't
actually used for anything.
Update wording for minor release upgrades, per Alvaro.
Done:
< * Add Globally/Universally Unique Identifier (GUID/UUID)
> * -Add Globally/Universally Unique Identifier (GUID/UUID)
Use sizeof() for snprintf() buffer length.
Update process termination message to display signal number and name
from exec.c and postmaster.c.
Update documentation on XML functions
Tom Lane [2007年1月28日 23:21:26 +0000 (23:21 +0000)]
Improve hash join to discard input tuples immediately if they can't
match because they contain a null join key (and the join operator is
known strict). Improves performance significantly when the inner
relation contains a lot of nulls, as per bug #2930.
Tom Lane [2007年1月28日 21:17:32 +0000 (21:17 +0000)]
Remove unnecessary checkpoint from PL regression tests. This was once
handy to prevent core dump files from disappearing, but it's useless now
because (a) we don't drop core in individual DB subdirectories anymore,
and (b) CREATE DATABASE forces an internal checkpoint anyway.
Rename the uuid_t type to pg_uuid_t, to avoid a conflict with any
definitions of uuid_t that may be provided by the system headers. This
should hopefully fix the Win32 build problems reported by Magnus.
Fix plpython MSVC build in non-debug mode.
Tom Lane [2007年1月28日 19:05:35 +0000 (19:05 +0000)]
Remove some unnecessary conversion work in build_regtype_array().
Tom Lane [2007年1月28日 18:50:40 +0000 (18:50 +0000)]
Repair oversight in creation of "append relations": we should set up
rel->tuples as well as rel->rows, since some estimation functions expect both
to be valid in every baserel. Per report from Dave Dutcher.
Tom Lane [2007年1月28日 17:58:13 +0000 (17:58 +0000)]
Make some small improvements in the accuracy of plpgsql's error location
reports; inspired by the misleading CONTEXT lines shown in recent bug report
from Stefan Kaltenbrunner. Also, allow statement-type names shown in these
messages to be translated.
Fix path problem in MSVC bison wrapper. per Joachim Wieland.
Add a new builtin type, "uuid". This implements a UUID type, similar to
that defined in RFC 4122. This patch includes the basic implementation,
plus regression tests. Documentation and perhaps some additional
functionality will come later. Catversion bumped.
Patch from Gevik Babakhani; review from Peter, Tom, and myself.
Tom Lane [2007年1月28日 16:15:49 +0000 (16:15 +0000)]
Fix up plpgsql's "simple expression" evaluation mechanism so that it behaves
safely in the presence of subtransactions. To ensure that any ExprContext
shutdown callbacks are called at the right times, we have to have a separate
EState for each level of subtransaction. Per "TupleDesc reference leak" bug
report from Stefan Kaltenbrunner.
Although I'm convinced the code is wrong as far back as 8.0, it doesn't seem
that there are any ways for the problem to really manifest before 8.2: AFAICS,
8.0 and 8.1 only use the ExprContextCallback mechanism to handle set-returning
functions, which cannot usefully be executed in a "simple expression" anyway.
Hence, no backpatch before 8.2 --- the risk of unforeseen breakage seems
to outweigh the chance of fixing something.
Tom Lane [2007年1月28日 07:29:32 +0000 (07:29 +0000)]
Drat, can't fit an additional argument into log_error. Is it worth an
sprintf pushup to be sure we can report something useful for out-of-range
exitstatus?
Tom Lane [2007年1月28日 06:32:03 +0000 (06:32 +0000)]
Clean up broken usage of HAVE_DECL_SYS_SIGLIST and inconsistent/poorly
formatted error messages.
Use autoconf build-in sys_siglist macro AC_DECL_SYS_SIGLIST, rather than
create our own.
Tom Lane [2007年1月28日 03:02:31 +0000 (03:02 +0000)]
Add a delay at the start of the stats test, to let any prior stats
activity quiesce. Possibly this will fix the large increase in
non-reproducible stats test failures we've noted since turning on
stats_row_level by default.
Tom Lane [2007年1月28日 02:53:34 +0000 (02:53 +0000)]
Dept of second thoughts: the IQ of estimate_array_length() needs to be
kept on par with that of scalararraysel(), else estimates that should
track might not. Hence teach it about binary-compatible cases, too.
Add signal.h for sys_siglist reference.
Tom Lane [2007年1月28日 01:37:38 +0000 (01:37 +0000)]
Fix scalararraysel() to cope with binary-compatible cases, such as text[]
versus varchar[]. This oversight probably explains Ryan Holmes' recent
complaint --- he was getting a generic selectivity estimate instead of
anything intelligent.
Use sys_siglist[] to print out signal names for signal exits, rather
than just numbers.
Modify SGML makefile to allow 'gmake draft' to build draft html ('draft'
is now a target, no longer a modifier).
Tom Lane [2007年1月27日 20:53:30 +0000 (20:53 +0000)]
Correct an old logic error in btree page splitting: when considering a split
exactly at the point where we need to insert a new item, the calculation used
the wrong size for the "high key" of the new left page. This could lead to
choosing an unworkable split, resulting in "PANIC: failed to add item to the
left sibling" (or "right sibling") failure. Although this bug has been there
a long time, it's very difficult to trigger a failure before 8.2, since there
was generally a lot of free space on both sides of a chosen split. In 8.2,
where the user-selected fill factor determines how much free space the code
tries to leave, an unworkable split is much more likely. Report by Joe
Conway, diagnosis and fix by Heikki Linnakangas.
Fixed expected files, so they are in sync with tests again.
remove unnecessary and now inaccurate cast which I should have removed with other old code.
Reactivate libxml memory management via palloc, now that I think I've
classified the conditions under which this is safe to do (see source
code comment).
Add trailing zero byte in Unicode codepoint conversion.
Add:
> * Enforce typmod for function inputs, function results and parameters for
> spi_prepare'd statements called from PLs
>
> http://archives.postgresql.org/pgsql-hackers/2007-01/msg01403.php
Add:
> * Consider having the background writer update the transaction status
> hint bits before writing out the page
Add:
>
> * Consider increasing NUM_CLOG_BUFFERS
Allow args to spi_prepare to be standard type aliaes as well as those known in pg_type. Fixes bug #2917. Add some regression tests for these cases.
Update installation wording for an upgrade to state that dump/restore
should not be done, per Peter.
Control openjade draft-mode by variable DRAFT, rather than whether the
version tag is 'devel'.
Update wording of installation when upgrading, to more clearly
distinguish major vs minor release upgrades.
Modify draft SGML instructions to use DRAFT=Y because recursion was
causing html to be called twice --- no way to exit the makefile after
the recursion returns.
Tom Lane [2007年1月26日 20:06:52 +0000 (20:06 +0000)]
On Windows, use pgwin32_waitforsinglesocket() instead of select() to wait for
input in the stats collector. Our select() emulation is apparently buggy
for UDP sockets :-(. This should resolve problems with stats collection
(and hence autovacuum) failing under more than minimal load. Diagnosis
and patch by Magnus Hagander.
Patch probably needs to be back-ported to 8.1 and 8.0, but first let's
see if it makes the buildfarm happy...
Squelch some VC++ compiler warnings. Mark float literals with the "f"
suffix, to distinguish them from doubles. Make some function declarations
and definitions use the "const" qualifier for arguments consistently.
Ignore warning 4102 ("unreferenced label"), because such warnings
are always emitted by bison-generated code. Patch from Magnus Hagander.
Update BSD/OS platform for 8.2.
Add URL for shrinking tuple to just its headers:
> http://archives.postgresql.org/pgsql-hackers/2007-01/msg01025.php
Update Win32 exception comment.
Add a setlocal command to the beginning of build.bat. This is required
to deal with buildenv.bat properly, so that PATH (for example) doesn't
expand infintly. Per report from Joachim Wieland, patch from Magnus.
Removed compiler warning due to unneeded unsigned declaration.
Removed regression test that triggers those libc precision bugs on some archs.
Update pg_dumpall -f option description.
Correction: temp_tablespaces was implemented by Albert Cervera Areny,
with cleanup by Jaime Casanova.
Reverse out use of Py_RETURN_TRUE in plpython, only supported in Python >=
2.3.
Various fixes in the logic of XML functions:
- Add new SQL command SET XML OPTION (also available via regular GUC) to
control the DOCUMENT vs. CONTENT option in implicit parsing and
serialization operations.
- Subtle corrections in the handling of the standalone property in
xmlroot().
- Allow xmlroot() to work on content fragments.
- Subtle corrections in the handling of the version property in
xmlconcat().
- Code refactoring for producing XML declarations.
Done:
> o -Add a GUC variable to control the tablespace for temporary objects
Add GUC temp_tablespaces to provide a default location for temporary
objects.
Jaime Casanova
Properly detoast access to bytea field pg_trigger.tgargs. Old code
might cause server crash.
Backpatch to 8.2.X.
Fix for plpython functions; return true/false for boolean,
rather than 1/0. This helps when creating trigger functions that output
SQL.
Guido Goldstein
Add 'output file' option for pg_dumpall, especially useful for Win32,
where output redirection of child processes (pg_dump) doesn't work.
Dave Page
Remove developers list from TODO list now that we have URLs to reference
discussions.
<
<
< ---------------------------------------------------------------------------
<
<
< Developers who have claimed items are:
< --------------------------------------
< * Alvaro is Alvaro Herrera <alvherre@dcc.uchile.cl>
< * Andrew is Andrew Dunstan <andrew@dunslane.net>
< * Bruce is Bruce Momjian <bruce@momjian.us> of EnterpriseDB
< * Christopher is Christopher Kings-Lynne <chriskl@familyhealth.com.au> of
< Family Health Network
< * D'Arcy is D'Arcy J.M. Cain <darcy@druid.net> of The Cain Gang Ltd.
< * David is David Fetter <david@fetter.org>
< * Fabien is Fabien Coelho <coelho@cri.ensmp.fr>
< * Gavin is Gavin Sherry <swm@linuxworld.com.au> of Alcove Systems Engineering
< * Greg is Greg Sabino Mullane <greg@turnstep.com>
< * Jan is Jan Wieck <JanWieck@Yahoo.com> of Afilias, Inc.
< * Joe is Joe Conway <mail@joeconway.com>
< * Karel is Karel Zak <zakkr@zf.jcu.cz>
< * Magnus is Magnus Hagander <mha@sollentuna.net>
< * Marc is Marc Fournier <scrappy@hub.org> of PostgreSQL, Inc.
< * Matthew T. O'Connor <matthew@zeut.net>
< * Michael is Michael Meskes <meskes@postgresql.org> of Credativ
< * Neil is Neil Conway <neilc@samurai.com>
< * Oleg is Oleg Bartunov <oleg@sai.msu.su>
< * Pavel is Pavel Stehule <pavel.stehule@hotmail.com>
< * Peter is Peter Eisentraut <peter_e@gmx.net>
< * Philip is Philip Warner <pjw@rhyme.com.au> of Albatross Consulting Pty. Ltd.
< * Rod is Rod Taylor <pg@rbt.ca>
< * Simon is Simon Riggs <simon@2ndquadrant.com>
< * Stephan is Stephan Szabo <sszabo@megazone23.bigpanda.com>
< * Tatsuo is Tatsuo Ishii <ishii@sraoss.co.jp> of SRA OSS, Inc. Japan
< * Teodor is Teodor Sigaev <teodor@sigaev.ru>
< * Tom is Tom Lane <tgl@sss.pgh.pa.us> of Red Hat
Done:
< o Add -f to pg_dumpall
> o -Add -f to pg_dumpall
Allow pg_dumpall to specify a database name rather than the default
'template1'.
Dave Page
Add --tablespaces-only and --roles-only options to pg_dumpall.
Dave Page
Prevent WAL logging when COPY is done in the same transation that
created it.
Simon Riggs
When using MSVC, disable the building of ecpg if pthreads is not
specified.
Magnus Hagander
Tom Lane [2007年1月24日 17:12:17 +0000 (17:12 +0000)]
Get pg_utf_mblen(), pg_utf2wchar_with_len(), and utf2ucs() all on the same
page about the maximum UTF8 sequence length we support (4 bytes since 8.1,
3 before that). pg_utf2wchar_with_len never got updated to support 4-byte
characters at all, and in any case had a buffer-overrun risk in that it
could produce multiple pg_wchars from what mblen claims to be just one UTF8
character. The only reason we don't have a major security hole is that most
callers allocate worst-case output buffers; the sole exception in released
versions appears to be pre-8.2 iwchareq() (ie, ILIKE), which can be crashed
due to zeroing out its return address --- but AFAICS that can't be exploited
for anything more than a crash, due to inability to control what gets written
there. Per report from James Russell and Michael Fuhr.
Pre-8.1 the risk is much less, but I still think pg_utf2wchar_with_len's
behavior given an incomplete final character risks buffer overrun, so
back-patch that logic change anyway.
This patch also makes sure that UTF8 sequences exceeding the supported
length (whichever it is) are consistently treated as error cases, rather
than being treated like a valid shorter sequence in some places.
Tom Lane [2007年1月24日 01:25:47 +0000 (01:25 +0000)]
Relax an Assert() that has been found to be too strict in some situations
involving unions of types having typmods. Variants of the failure are known
to occur in 8.1 and up; not sure if it's possible in 8.0 and 7.4, but since
the code exists that far back, I'll just patch 'em all. Per report from
Brian Hurt.
Simplify handling of XML error messages: Just use the string provided by
libxml as the detail message.
As per <http://archives.postgresql.org/pgsql-hackers/2006-12/msg01087.php>.
For converting error codes to messages, we only need to cover those codes
that we raise ourselves now.
Tom Lane [2007年1月23日 20:45:28 +0000 (20:45 +0000)]
Update xindex.sgml to discuss operator families.
Tom Lane [2007年1月23日 17:54:50 +0000 (17:54 +0000)]
Update pg_dump to support dumping operator families.
Add comment about exception lists in both winnt.h and ntstatus.h.
This patch is required for vcbuild to work after the changes to
pg_proc.h (it's the same changes that's in gen_fmgrtab.sh in the unix
build).
Patch from Magnus Hagander.
Tom Lane [2007年1月23日 05:07:18 +0000 (05:07 +0000)]
Add CREATE/ALTER/DROP OPERATOR FAMILY commands, also COMMENT ON OPERATOR
FAMILY; and add FAMILY option to CREATE OPERATOR CLASS to allow adding a
class to a pre-existing family. Per previous discussion. Man, what a
tedious lot of cutting and pasting ...
Remove newline from error message because URL is gone.
Back out use of FormatMessage(), does error values, not exception
values. Point to /include/ntstatus.h for an exception list, rather than
a URL.
Print meaningfull error text for abonormal process exit on Win32, rather
than hex codes, using FormatMessage().
Update my email address in FAQ.
Tom Lane [2007年1月22日 20:00:40 +0000 (20:00 +0000)]
Put back planner's ability to cache the results of mergejoinscansel(),
which I had removed in the first cut of the EquivalenceClass rewrite to
simplify that patch a little. But it's still important --- in a four-way
join problem mergejoinscansel() was eating about 40% of the planning time
according to gprof. Also, improve the EquivalenceClass code to re-use
join RestrictInfos rather than generating fresh ones for each join
considered. This saves some memory space but more importantly improves
the effectiveness of caching planning info in RestrictInfos.
Use errhint() for WIN32 SIGTERM message, where possible.
Uppercase hex value.
When system() fails in Win32, report it as an exception, print the
exception value in hex, and give a URL where the value can be looked-up.
Update documenation instructions. on how to delete template1.
Tom Lane [2007年1月22日 02:17:30 +0000 (02:17 +0000)]
Adjust pgbench so it won't spit up on non-select queries returning
tuples, which is entirely possible with custom scripts (consider
RETURNING, EXPLAIN, etc).
Tom Lane [2007年1月22日 01:35:23 +0000 (01:35 +0000)]
Add COST and ROWS options to CREATE/ALTER FUNCTION, plus underlying pg_proc
columns procost and prorows, to allow simple user adjustment of the estimated
cost of a function call, as well as control of the estimated number of rows
returned by a set-returning function. We might eventually wish to extend this
to allow function-specific estimation routines, but there seems to be
consensus that we should try a simple constant estimate first. In particular
this provides a relatively simple way to control the order in which different
WHERE clauses are applied in a plan node, which is a Good Thing in view of the
fact that the recent EquivalenceClass planner rewrite made that much less
predictable than before.
Remove some unused variables
Put back libpq link, but make sure that libpq's in-tree directory is
mentioned before the system directories.
Tom Lane [2007年1月21日 00:57:15 +0000 (00:57 +0000)]
Refactor some lsyscache routines to eliminate duplicate code and save
a couple of syscache lookups in make_pathkey_from_sortinfo().
Add bitmap index URL:
>
> http://archives.postgresql.org/pgsql-hackers/2006-12/msg01107.php
Tom Lane [2007年1月20日 23:13:01 +0000 (23:13 +0000)]
Simplify pg_am representation of ordering-capable access methods:
provide just a boolean 'amcanorder', instead of fields that specify the
sort operator strategy numbers. We have decided to require ordering-capable
AMs to use btree-compatible strategy numbers, so the old fields are
overkill (and indeed misleading about what's allowed).
Add URL for dead space map:
>
> http://archives.postgresql.org/pgsql-hackers/2006-12/msg01188.php
> http://archives.postgresql.org/pgsql-hackers/2007-01/msg00121.php
Update docs for recent change to setseed() return value.
Make setseed() return void, rather than an int4 without any use. Per
pgsql-patches discussion of September 20, 2006. Bump the catversion.
Add documentation of memory and time units to postgresql.conf.
Backpatch to 8.2.X for new initdbs.
Tom Lane [2007年1月20日 21:40:25 +0000 (21:40 +0000)]
Don't use 'int' where you mean 'bool'.
Update documentation about postgresqlconf to mention default units that
match the postgresql.conf file. Also add units to descriptions that
lacked them. Wording improvements. Mention pg_settings.unit as the way
to find the default units for setting.
Backpatch to 8.2.X.
Tom Lane [2007年1月20日 21:30:01 +0000 (21:30 +0000)]
Fix broken markup.
List disabled triggers separately in psql's "\d <table>" output.
Previously, disabled triggers were not displayed any differently than
enabled ones, which was quite misleading. Patch from Brendan Jurd.
Tom Lane [2007年1月20日 20:45:41 +0000 (20:45 +0000)]
Refactor planner's pathkeys data structure to create a separate, explicit
representation of equivalence classes of variables. This is an extensive
rewrite, but it brings a number of benefits:
* planner no longer fails in the presence of "incomplete" operator families
that don't offer operators for every possible combination of datatypes.
* avoid generating and then discarding redundant equality clauses.
* remove bogus assumption that derived equalities always use operators
named "=".
* mergejoins can work with a variety of sort orders (e.g., descending) now,
instead of tying each mergejoinable operator to exactly one sort order.
* better recognition of redundant sort columns.
* can make use of equalities appearing underneath an outer join.
Refactor the index AM API slightly: move currentItemData and
currentMarkData from IndexScanDesc to the opaque structs for the
AMs that need this information (currently gist and hash).
Patch from Heikki Linnakangas, fixes by Neil Conway.
Update build time estimate.
Remove remains of old depend target.
Regression tests for large objects. Patch from Jeremy Drake.
This is the main PostgreSQL git repository.
RSS
Atom