]> granicus.if.org Git - postgresql/log
postgresql
16 years agoTurn the -i/--ignore-version options of pg_dump and pg_dumpall into no-ops:
Tom Lane [Sun, 13 Apr 2008 03:49:22 +0000 (03:49 +0000)]
Turn the -i/--ignore-version options of pg_dump and pg_dumpall into no-ops:
the server version check is now always enforced.  Relax the version check to
allow a server that is of pg_dump's own major version but a later minor
version; this is the only case that -i was at all safe to use in.

pg_restore already enforced only a very weak version check, so this is
really just a documentation change for it.

Per discussion.

16 years agoClean up a few places where Datums were being treated as pointers without
Tom Lane [Sat, 12 Apr 2008 23:21:04 +0000 (23:21 +0000)]
Clean up a few places where Datums were being treated as pointers without
going through DatumGetPointer or some other "official" conversion macro.
Not actually a bug, since Datum the same size as pointer is the only
supported case at the moment, but good cleanup for the future.

Gavin Sherry

16 years agoCreate new routines systable_beginscan_ordered, systable_getnext_ordered,
Tom Lane [Sat, 12 Apr 2008 23:14:21 +0000 (23:14 +0000)]
Create new routines systable_beginscan_ordered, systable_getnext_ordered,
systable_endscan_ordered that have API similar to systable_beginscan etc
(in particular, the passed-in scankeys have heap not index attnums),
but guarantee ordered output, unlike the existing functions.  For the moment
these are just very thin wrappers around index_beginscan/index_getnext/etc.
Someday they might need to get smarter; but for now this is just a code
refactoring exercise to reduce the number of direct callers of index_getnext,
in preparation for changing that function's API.

In passing, remove index_getnext_indexitem, which has been dead code for
quite some time, and will have even less use than that in the presence
of run-time-lossy indexes.

16 years agoA quick try at un-breaking the Cygwin build. Whether it needs the
Tom Lane [Fri, 11 Apr 2008 23:53:00 +0000 (23:53 +0000)]
A quick try at un-breaking the Cygwin build.  Whether it needs the
pgwin32_safestat remains to be determined, but in any case the current
code is not tolerable.

16 years agoAdd some debug support code to try to catch future mistakes in the area of
Tom Lane [Fri, 11 Apr 2008 22:54:23 +0000 (22:54 +0000)]
Add some debug support code to try to catch future mistakes in the area of
input functions that include garbage bytes in their results.  Provide a
compile-time option RANDOMIZE_ALLOCATED_MEMORY to make palloc fill returned
blocks with variable contents.  This option also makes the parser perform
conversions of literal constants twice and compare the results, emitting a
WARNING if they don't match.  (This is the code I used to catch the input
function bugs fixed in the previous commit.)  For the moment, I've set it
to be activated automatically by --enable-cassert.

16 years agoFix several datatype input functions that were allowing unused bytes in their
Tom Lane [Fri, 11 Apr 2008 22:52:05 +0000 (22:52 +0000)]
Fix several datatype input functions that were allowing unused bytes in their
results to contain uninitialized, unpredictable values.  While this was okay
as far as the datatypes themselves were concerned, it's a problem for the
parser because occurrences of the "same" literal might not be recognized as
equal by datumIsEqual (and hence not by equal()).  It seems sufficient to fix
this in the input functions since the only critical use of equal() is in the
parser's comparisons of ORDER BY and DISTINCT expressions.
Per a trouble report from Marc Cousin.

Patch all the way back.  Interestingly, array_in did not have the bug before
8.2, which may explain why the issue went unnoticed for so long.

16 years agoUpdate wording:
Bruce Momjian [Fri, 11 Apr 2008 19:50:40 +0000 (19:50 +0000)]
Update wording:

< * Allow functions to control the transaction state
> * Allow calling of a procedure outside a SELECT that can control the
>   transaction state

16 years agoChanged TODO wording:
Bruce Momjian [Fri, 11 Apr 2008 19:36:07 +0000 (19:36 +0000)]
Changed TODO wording:

< * Support procedures, which return no value
> * Allow functions to control the transaction state

16 years agoAdd TODO:
Bruce Momjian [Fri, 11 Apr 2008 19:16:47 +0000 (19:16 +0000)]
Add TODO:

> * Support procedures, which return no value
>
>   http://archives.postgresql.org/pgsql-hackers/2007-10/msg01375.php

16 years agoUpdate URLs for dead space map.
Bruce Momjian [Fri, 11 Apr 2008 19:14:57 +0000 (19:14 +0000)]
Update URLs for dead space map.

16 years agoFix main README typo.
Bruce Momjian [Fri, 11 Apr 2008 16:09:33 +0000 (16:09 +0000)]
Fix main README typo.

Brendan Jurd

16 years agoReplace "amgetmulti" AM functions with "amgetbitmap", in which the whole
Tom Lane [Thu, 10 Apr 2008 22:25:26 +0000 (22:25 +0000)]
Replace "amgetmulti" AM functions with "amgetbitmap", in which the whole
indexscan always occurs in one call, and the results are returned in a
TIDBitmap instead of a limited-size array of TIDs.  This should improve
speed a little by reducing AM entry/exit overhead, and it is necessary
infrastructure if we are ever to support bitmap indexes.

In an only slightly related change, add support for TIDBitmaps to preserve
(somewhat lossily) the knowledge that particular TIDs reported by an index
need to have their quals rechecked when the heap is visited.  This facility
is not really used yet; we'll need to extend the forced-recheck feature to
plain indexscans before it's useful, and that hasn't been coded yet.
The intent is to use it to clean up 8.3's horrid @@@ kluge for text search
with weighted queries.  There might be other uses in future, but that one
alone is sufficient reason.

Heikki Linnakangas, with some adjustments by me.

16 years agoAdd TODO URLs moved from open items queue:
Bruce Momjian [Thu, 10 Apr 2008 18:58:15 +0000 (18:58 +0000)]
Add TODO URLs moved from open items queue:

>   http://archives.postgresql.org/pgsql-hackers/2007-03/msg00265.php
>   http://archives.postgresql.org/pgsql-hackers/2007-03/msg01214.php
>   http://archives.postgresql.org/pgsql-patches/2007-05/msg00013.php
>   http://archives.postgresql.org/pgsql-hackers/2007-07/msg00741.php
>   http://archives.postgresql.org/pgsql-hackers/2007-08/msg00014.php
>   http://archives.postgresql.org/pgsql-hackers/2007-08/msg00487.php
> * Allow index scans to return matching index keys
>
>   http://archives.postgresql.org/pgsql-hackers/2007-03/msg01079.php
>
>   http://archives.postgresql.org/pgsql-patches/2007-10/msg00166.php
>   http://archives.postgresql.org/pgsql-patches/2008-01/msg00049.php

16 years agoCreate wrapper pgwin32_safestat() and redefine stat() to it
Magnus Hagander [Thu, 10 Apr 2008 16:58:51 +0000 (16:58 +0000)]
Create wrapper pgwin32_safestat() and redefine stat() to it
on win32, because the stat() function in the runtime cannot
be trusted to always update the st_size field.

Per report and research by Sergey Zubkovsky.

16 years agoMake parameters in implementation have same const:ness as the ones in
Magnus Hagander [Thu, 10 Apr 2008 15:20:52 +0000 (15:20 +0000)]
Make parameters in implementation have same const:ness as the ones in
the prototype. Silences msvc build warning.

16 years agoRemove mention of DBD::PgSPI, which is unmaintained and generally unnecessary.
Alvaro Herrera [Thu, 10 Apr 2008 15:16:46 +0000 (15:16 +0000)]
Remove mention of DBD::PgSPI, which is unmaintained and generally unnecessary.

16 years agoMention pg_backend_pid() in the system information section in addition
Alvaro Herrera [Thu, 10 Apr 2008 13:34:33 +0000 (13:34 +0000)]
Mention pg_backend_pid() in the system information section in addition
to the monitoring section.

Jim Nasby

16 years agoPGTYPEStimestamp_sub should use the values and not the pointers to substract.
Michael Meskes [Thu, 10 Apr 2008 10:43:35 +0000 (10:43 +0000)]
PGTYPEStimestamp_sub should use the values and not the pointers to substract.

16 years agoDocument that continuous archiving backup can be used for cases where
Bruce Momjian [Wed, 9 Apr 2008 02:52:04 +0000 (02:52 +0000)]
Document that continuous archiving backup can be used for cases where
you can't get a simultaneous snapshot.

16 years agoUpdate text FAQ.
Bruce Momjian [Wed, 9 Apr 2008 01:04:08 +0000 (01:04 +0000)]
Update text FAQ.

16 years agoSmall wording improvements for source code READMEs.
Bruce Momjian [Wed, 9 Apr 2008 01:00:46 +0000 (01:00 +0000)]
Small wording improvements for source code READMEs.

16 years agoRevert README cleanups.
Bruce Momjian [Wed, 9 Apr 2008 00:59:24 +0000 (00:59 +0000)]
Revert README cleanups.

16 years agoRevert sentence removal from nickname in FAQ.
Bruce Momjian [Wed, 9 Apr 2008 00:55:30 +0000 (00:55 +0000)]
Revert sentence removal from nickname in FAQ.

16 years agoRemove mention of the Berkeley origins of the alias "Postgres" ---
Bruce Momjian [Wed, 9 Apr 2008 00:44:07 +0000 (00:44 +0000)]
Remove mention of the Berkeley origins of the alias "Postgres" ---
seems unnecessary to mention in the FAQ, per discussion on IRC.

16 years agoFix tsvector_update_trigger() to be domain-friendly: it needs to allow all
Tom Lane [Tue, 8 Apr 2008 18:20:29 +0000 (18:20 +0000)]
Fix tsvector_update_trigger() to be domain-friendly: it needs to allow all
the columns it works with to be domains over the expected type, not just
exactly the expected type.  In passing, fix ts_stat() the same way.
Per report from Markus Wollny.

16 years agoOn cygwin and win32, don't override the shlib name when building a module.
Peter Eisentraut [Tue, 8 Apr 2008 09:50:29 +0000 (09:50 +0000)]
On cygwin and win32, don't override the shlib name when building a module.
Should fix regression test failures on those platforms.

16 years agoMake integer_datetimes the default on msvc as well, to have the same
Magnus Hagander [Tue, 8 Apr 2008 07:50:41 +0000 (07:50 +0000)]
Make integer_datetimes the default on msvc as well, to have the same
default as other platforms.

16 years agoAlways define stlib, since some platforms need it for building modules.
Peter Eisentraut [Mon, 7 Apr 2008 23:08:15 +0000 (23:08 +0000)]
Always define stlib, since some platforms need it for building modules.
Should fix build failures on AIX.

16 years agoImplement a few changes to how shared libraries and dynamically loadable
Peter Eisentraut [Mon, 7 Apr 2008 14:15:58 +0000 (14:15 +0000)]
Implement a few changes to how shared libraries and dynamically loadable
modules are built.  Foremost, it creates a solid distinction between these two
types of targets based on what had already been implemented and duplicated in
ad hoc ways before.  Specifically,

- Dynamically loadable modules no longer get a soname.  The numbers previously
set in the makefiles were dummy numbers anyway, and the presence of a soname
upset a few packaging tools, so it is nicer not to have one.

- The cumbersome detour taken on installation (build a libfoo.so.0.0.0 and
then override the rule to install foo.so instead) is removed.

- Lots of duplicated code simplified.

16 years agoAdd to TODO:
Bruce Momjian [Mon, 7 Apr 2008 02:14:14 +0000 (02:14 +0000)]
Add to TODO:

>
>  o Add ability to obfuscate function bodies
>
>    http://archives.postgresql.org/pgsql-patches/2008-01/msg00125.php

16 years agoAdd documentation clarification for IS [NOT] NULL and row-valued
Bruce Momjian [Mon, 7 Apr 2008 00:51:27 +0000 (00:51 +0000)]
Add documentation clarification for IS [NOT] NULL and row-valued
expressions.

16 years agoMake plpgsql support FOR over a query specified by a cursor declaration,
Tom Lane [Sun, 6 Apr 2008 23:43:29 +0000 (23:43 +0000)]
Make plpgsql support FOR over a query specified by a cursor declaration,
for improved compatibility with Oracle.

Pavel Stehule, with some fixes by me.

16 years agoImprove hash_any() to use word-wide fetches when hashing suitably aligned
Tom Lane [Sun, 6 Apr 2008 16:54:49 +0000 (16:54 +0000)]
Improve hash_any() to use word-wide fetches when hashing suitably aligned
data.  This makes for a significant speedup at the cost that the results
now vary between little-endian and big-endian machines; which forces us
to add explicit ORDER BYs in a couple of regression tests to preserve
machine-independent comparison results.  Also, force initdb by bumping
catversion, since the contents of hash indexes will change (at least on
big-endian machines).

Kenneth Marshall and Tom Lane, based on work from Bob Jenkins.  This commit
does not adopt Bob's new faster mix() algorithm, however, since we still need
to convince ourselves that that doesn't degrade the quality of the hashing.

16 years agoA small visit from the portability and localization police.
Tom Lane [Sat, 5 Apr 2008 03:40:15 +0000 (03:40 +0000)]
A small visit from the portability and localization police.

16 years agoMake dblink_current_query() reference pg_catalog.current_query(), per Tom.
Bruce Momjian [Sat, 5 Apr 2008 02:44:42 +0000 (02:44 +0000)]
Make dblink_current_query() reference pg_catalog.current_query(), per Tom.

16 years agoRe-add dblink_current_query() for backward compatibility.
Bruce Momjian [Sat, 5 Apr 2008 02:26:14 +0000 (02:26 +0000)]
Re-add dblink_current_query() for backward compatibility.

16 years agoDefend against JOINs having more than 32K columns altogether. We cannot
Tom Lane [Sat, 5 Apr 2008 01:58:20 +0000 (01:58 +0000)]
Defend against JOINs having more than 32K columns altogether.  We cannot
currently support this because we must be able to build Vars referencing
join columns, and varattno is only 16 bits wide.  Perhaps this should be
improved in future, but considering that it never came up before, I'm not
sure the problem is worth much effort.  Per bug #4070 from Marcello
Ceschia.

The problem seems largely academic in 8.0 and 7.4, because they have
(different) O(N^2) performance issues with such wide joins, but
back-patch all the way anyway.

16 years agoHave pg_stop_backup() wait for all archive files to be sent, rather than
Bruce Momjian [Sat, 5 Apr 2008 01:34:06 +0000 (01:34 +0000)]
Have pg_stop_backup() wait for all archive files to be sent, rather than
returing right away.  This guarantees that when pg_stop_backup()
returns, you have a valid backup.

Simon Riggs

16 years agoRe-implement division for numeric values using the traditional "schoolbook"
Tom Lane [Fri, 4 Apr 2008 18:45:36 +0000 (18:45 +0000)]
Re-implement division for numeric values using the traditional "schoolbook"
algorithm.  This is a good deal slower than our old roundoff-error-prone
code for long inputs, so we keep the old code for use in the transcendental
functions, where everything is approximate anyway.  Also create a
user-accessible function div(numeric, numeric) to provide access to the
exact result of trunc(x/y) --- since the regular numeric / operator will
round off its result, simply computing that expression in SQL doesn't
reliably give the desired answer.  This fixes bug #3387 and various related
corner cases, and improves the usefulness of PG for high-precision integer
arithmetic.

16 years agoHave psql command 'help' suggest the use of \?, updated version.
Bruce Momjian [Fri, 4 Apr 2008 18:00:25 +0000 (18:00 +0000)]
Have psql command 'help' suggest the use of \?, updated version.

Greg Sabino Mullane

16 years agoAllow 'help' in psql to show \? help, for novice assistance.
Bruce Momjian [Fri, 4 Apr 2008 17:42:43 +0000 (17:42 +0000)]
Allow 'help' in psql to show \? help, for novice assistance.

Greg Sabino Mullane

16 years agoRemove no-longer-used function assign_backslash_quote()
Tom Lane [Fri, 4 Apr 2008 17:25:23 +0000 (17:25 +0000)]
Remove no-longer-used function assign_backslash_quote()

16 years agoRemove unneed #include now that current_query() has moved to the backend.
Bruce Momjian [Fri, 4 Apr 2008 17:02:56 +0000 (17:02 +0000)]
Remove unneed #include now that current_query() has moved to the backend.

16 years agoImplement current_query(), that shows the currently executing query.
Bruce Momjian [Fri, 4 Apr 2008 16:57:21 +0000 (16:57 +0000)]
Implement current_query(), that shows the currently executing query.
At the same time remove dblink/dblink_current_query() as it is no longer
necessary
*BACKWARD COMPATIBILITY ISSUE* for dblink

Tomas Doran

16 years agoOops, change should go in scan.l to survive a clean checkout and not just
Magnus Hagander [Fri, 4 Apr 2008 12:44:36 +0000 (12:44 +0000)]
Oops, change should go in scan.l to survive a clean checkout and not just
a make clean...

16 years agoConvert backslash_quote guc to use enum.
Magnus Hagander [Fri, 4 Apr 2008 11:47:19 +0000 (11:47 +0000)]
Convert backslash_quote guc to use enum.

16 years agoTurn xmlbinary and xmloption GUC variables into enumsTurn xmlbinary and
Magnus Hagander [Fri, 4 Apr 2008 08:33:15 +0000 (08:33 +0000)]
Turn xmlbinary and xmloption GUC variables into enumsTurn xmlbinary and
xmloption GUC variables into enums..

16 years agoAdd a variant of the Levenshtein string-distance function that lets the user
Tom Lane [Thu, 3 Apr 2008 21:13:07 +0000 (21:13 +0000)]
Add a variant of the Levenshtein string-distance function that lets the user
specify the cost values to use, instead of always using 1's.
Volkan Yazici

In passing, remove fuzzystrmatch.h, which contained a bunch of stuff that had
no business being in a .h file; fold it into its only user, fuzzystrmatch.c.

16 years agoAdd Wiki URLs for:
Bruce Momjian [Thu, 3 Apr 2008 18:14:02 +0000 (18:14 +0000)]
Add Wiki URLs for:

< * Allow encoding on a per-column basis optionally using the ICU library

>   http://wiki.postgresql.org/wiki/Todo:Collate
>   http://wiki.postgresql.org/wiki/Todo:ICU

16 years agoRemove heap_release_fetch, which is no longer used anywhere; this simplifies
Tom Lane [Thu, 3 Apr 2008 17:12:27 +0000 (17:12 +0000)]
Remove heap_release_fetch, which is no longer used anywhere; this simplifies
heap_fetch a little.

16 years agoAdd to TODO:
Bruce Momjian [Thu, 3 Apr 2008 16:37:07 +0000 (16:37 +0000)]
Add to TODO:

> * Improve how ANALYZE computes in-doubt tuples
>
>   http://archives.postgresql.org/pgsql-hackers/2007-11/msg00771.php
>

16 years agoTeach ANALYZE to distinguish dead and in-doubt tuples, which it formerly
Tom Lane [Thu, 3 Apr 2008 16:27:25 +0000 (16:27 +0000)]
Teach ANALYZE to distinguish dead and in-doubt tuples, which it formerly
classed all as "dead"; also get it to count DEAD item pointers as dead rows,
instead of ignoring them as before.  Also improve matters so that tuples
previously inserted or deleted by our own transaction are handled nicely:
the stats collector's live-tuple and dead-tuple counts will end up correct
after our transaction ends, regardless of whether we end in commit or abort.

While there's more work that could be done to improve the counting of in-doubt
tuples in both VACUUM and ANALYZE, this commit is enough to alleviate some
known bad behaviors in 8.3; and the other stuff that's been discussed seems
like research projects anyway.

Pavan Deolasee and Tom Lane

16 years agoOops, add proper #ifdef for systems without support for syslog.
Magnus Hagander [Thu, 3 Apr 2008 13:25:02 +0000 (13:25 +0000)]
Oops, add proper #ifdef for systems without support for syslog.

Per buildfarm member mastodon.

16 years agoRemove -C from rsync call, because it omits directories named "core".
Peter Eisentraut [Thu, 3 Apr 2008 09:52:03 +0000 (09:52 +0000)]
Remove -C from rsync call, because it omits directories named "core".

16 years agoConvert syslog_facility guc to enum type.
Magnus Hagander [Thu, 3 Apr 2008 09:21:15 +0000 (09:21 +0000)]
Convert syslog_facility guc to enum type.

16 years agoAdd URLs for:
Bruce Momjian [Thu, 3 Apr 2008 01:56:04 +0000 (01:56 +0000)]
Add URLs for:

* Add SQL:2003 WITH RECURSIVE (hierarchical) queries to SELECT

>   http://archives.postgresql.org/pgsql-patches/2008-01/msg00105.php
>   http://archives.postgresql.org/pgsql-patches/2008-03/msg00327.php

16 years agoRevert my bad decision of about a year ago to make PortalDefineQuery
Tom Lane [Wed, 2 Apr 2008 18:31:50 +0000 (18:31 +0000)]
Revert my bad decision of about a year ago to make PortalDefineQuery
responsible for copying the query string into the new Portal.  Such copying
is unnecessary in the common code path through exec_simple_query, and in
this case it can be enormously expensive because the string might contain
a large number of individual commands; we were copying the entire, long
string for each command, resulting in O(N^2) behavior for N commands.
(This is the cause of bug #4079.)  A second problem with it is that
PortalDefineQuery really can't risk error, because if it elog's before
having set up the Portal, we will leak the plancache refcount that the
caller is trying to hand off to the portal.  So go back to the design in
which the caller is responsible for making sure everything is copied into
the portal if necessary.

16 years agoConvert three more guc settings to enum type:
Magnus Hagander [Wed, 2 Apr 2008 14:42:56 +0000 (14:42 +0000)]
Convert three more guc settings to enum type:
default_transaction_isolation, session_replication_role and regex_flavor.

16 years agoRemove due to survey/discussion:
Bruce Momjian [Wed, 2 Apr 2008 02:11:47 +0000 (02:11 +0000)]
Remove due to survey/discussion:

<
< * Prefix command-line utilities like createuser with 'pg_'
<
<   http://archives.postgresql.org/pgsql-hackers/2007-06/msg00025.php
<

16 years agoSupport EXECUTE USING in plpgsql.
Tom Lane [Tue, 1 Apr 2008 03:51:09 +0000 (03:51 +0000)]
Support EXECUTE USING in plpgsql.

Pavel Stehule, with some improvements by myself.

16 years agoAdd SPI-level support for executing SQL commands with one-time-use plans,
Tom Lane [Tue, 1 Apr 2008 03:09:30 +0000 (03:09 +0000)]
Add SPI-level support for executing SQL commands with one-time-use plans,
that is commands that have out-of-line parameters but the plan is prepared
assuming that the parameter values are constants.  This is needed for the
plpgsql EXECUTE USING patch, but will probably have use elsewhere.

This commit includes the SPI functions and documentation, but no callers
nor regression tests.  The upcoming EXECUTE USING patch will provide
regression-test coverage.  I thought committing this separately made
sense since it's logically a distinct feature.

16 years agoFix an oversight I made in a cleanup patch over a year ago:
Tom Lane [Tue, 1 Apr 2008 00:48:33 +0000 (00:48 +0000)]
Fix an oversight I made in a cleanup patch over a year ago:
eval_const_expressions needs to be passed the PlannerInfo ("root") structure,
because in some cases we want it to substitute values for Param nodes.
(So "constant" is not so constant as all that ...)  This mistake partially
disabled optimization of unnamed extended-Query statements in 8.3: in
particular the LIKE-to-indexscan optimization would never be applied if the
LIKE pattern was passed as a parameter, and constraint exclusion depending
on a parameter value didn't work either.

16 years agoApply my original fix for Taiki Yamaguchi's bug report about DISTINCT MAX().
Tom Lane [Mon, 31 Mar 2008 16:59:26 +0000 (16:59 +0000)]
Apply my original fix for Taiki Yamaguchi's bug report about DISTINCT MAX().
Add some regression tests for plausible failures in this area.

16 years agoFix my brain fade in TRUNCATE triggers patch: can't release relcache refcounts
Tom Lane [Mon, 31 Mar 2008 03:34:27 +0000 (03:34 +0000)]
Fix my brain fade in TRUNCATE triggers patch: can't release relcache refcounts
while EState still contains pointers to those relations.  Exposed by the
CLOBBER_CACHE_ALWAYS tests that buildfarm member jaguar is running (I knew
those cycles would pay off...)

16 years agoUse error message wordings for permissions checks on .pgpass and SSL private
Tom Lane [Mon, 31 Mar 2008 02:43:14 +0000 (02:43 +0000)]
Use error message wordings for permissions checks on .pgpass and SSL private
key files that are similar to the one for the postmaster's data directory
permissions check.  (I chose to standardize on that one since it's the most
heavily used and presumably best-wordsmithed by now.)  Also eliminate explicit
tests on file ownership in these places, since the ensuing read attempt must
fail anyway if it's wrong, and there seems no value in issuing the same error
message for distinct problems.  (But I left in the explicit ownership test in
postmaster.c, since it had its own error message anyway.)  Also be more
specific in the documentation's descriptions of these checks.  Per a gripe
from Kevin Hunter.

16 years agoFix a number of places that were making file-type tests infelicitously.
Tom Lane [Mon, 31 Mar 2008 01:31:43 +0000 (01:31 +0000)]
Fix a number of places that were making file-type tests infelicitously.
The places that did, eg,
(statbuf.st_mode & S_IFMT) == S_IFDIR
were correct, but there is no good reason not to use S_ISDIR() instead,
especially when that's what the other 90% of our code does.  The places
that did, eg,
(statbuf.st_mode & S_IFDIR)
were flat out *wrong* and would fail in various platform-specific ways,
eg a symlink could be mistaken for a regular file on most Unixen.

The actual impact of this is probably small, since the problem cases
seem to always involve symlinks or sockets, which are unlikely to be
found in the directories that PG code might be scanning.  But it's
clearly trouble waiting to happen, so patch all the way back anyway.
(There seem to be no occurrences of the mistake in 7.4.)

16 years agoShow database access privileges in psql's \l command. For \l+, also show
Tom Lane [Sun, 30 Mar 2008 18:10:20 +0000 (18:10 +0000)]
Show database access privileges in psql's \l command.  For \l+, also show
database size, when available to the current user.

Andrew Gilligan

16 years agoDisplay incoming as well as outgoing foreign-key constraints in psql's
Tom Lane [Sun, 30 Mar 2008 17:50:11 +0000 (17:50 +0000)]
Display incoming as well as outgoing foreign-key constraints in psql's
\d output for a table.

Kenneth D'Souza, some changes by myself.

16 years agoEnable 64-bit integer datetimes by default, per previous discussion.
Neil Conway [Sun, 30 Mar 2008 04:08:15 +0000 (04:08 +0000)]
Enable 64-bit integer datetimes by default, per previous discussion.
This requires a working 64-bit integer type. If such a type cannot
be found, "--disable-integer-datetimes" can be used to switch
back to the previous floating point-based datetime implementation.

16 years agoImprove description of \du and \dg, per suggestion from
Tom Lane [Sat, 29 Mar 2008 19:40:12 +0000 (19:40 +0000)]
Improve description of \du and \dg, per suggestion from
Harald Armin Massa.

16 years agoImprove psql's tab completion to handle completing attribute names in cases
Tom Lane [Sat, 29 Mar 2008 19:19:14 +0000 (19:19 +0000)]
Improve psql's tab completion to handle completing attribute names in cases
where the relation name was schema-qualified, for example
UPDATE foo.bar SET <tab>
Also support cases where the relation name was quoted unnecessarily,
for example
UPDATE "foo" SET <tab>

Greg Sabino Mullane, slightly simplified by myself.

16 years agoRevert my erroneous fix for Taiki Yamaguchi's DISTINCT MAX() bug.
Tom Lane [Sat, 29 Mar 2008 00:15:28 +0000 (00:15 +0000)]
Revert my erroneous fix for Taiki Yamaguchi's DISTINCT MAX() bug.
Whatever we do about that, this isn't the path to the solution.

16 years agoDone:
Bruce Momjian [Fri, 28 Mar 2008 15:18:42 +0000 (15:18 +0000)]
Done:

> * -Add ability to trigger on TRUNCATE

16 years agoClarify documentation on PITR and warm standby on the fact that the standby
Heikki Linnakangas [Fri, 28 Mar 2008 15:00:28 +0000 (15:00 +0000)]
Clarify documentation on PITR and warm standby on the fact that the standby
restore_command should report failure on non-existent .backup and .history
files. Tidy up some related text along the way.

Patch by Markus Bertheau, with some editing by Simon Riggs and myself.

16 years agoAdd to TODO:
Bruce Momjian [Fri, 28 Mar 2008 03:29:49 +0000 (03:29 +0000)]
Add to TODO:

>
>  o Add CASE capability to language (already in SQL)
>
>    http://archives.postgresql.org/pgsql-hackers/2008-01/msg00696.php
>
>

16 years agoAdd:
Bruce Momjian [Fri, 28 Mar 2008 02:36:04 +0000 (02:36 +0000)]
Add:

> * Allow one transaction to see tuples using the snapshot of another
>   transaction
>
>   This would assist multiple backends in working together.
>   http://archives.postgresql.org/pgsql-hackers/2008-01/msg00400.php

16 years agoDepartment of second thoughts: the rule that ORDER BY and DISTINCT are
Tom Lane [Fri, 28 Mar 2008 02:00:11 +0000 (02:00 +0000)]
Department of second thoughts: the rule that ORDER BY and DISTINCT are
useless for an ungrouped-aggregate query holds regardless of whether
optimize_minmax_aggregates succeeds.  So we might as well apply the
optimization in any case.

I'll leave 8.3 as it was, since this version is a tad more invasive
than my earlier patch.

16 years agoSupport statement-level ON TRUNCATE triggers. Simon Riggs
Tom Lane [Fri, 28 Mar 2008 00:21:56 +0000 (00:21 +0000)]
Support statement-level ON TRUNCATE triggers.  Simon Riggs

16 years agoAdd to TODO:
Bruce Momjian [Thu, 27 Mar 2008 20:37:43 +0000 (20:37 +0000)]
Add to TODO:

>
> * Consider being smarter about memory and external files used during
>   sorts
>
>   http://archives.postgresql.org/pgsql-hackers/2007-11/msg01101.php
>   http://archives.postgresql.org/pgsql-hackers/2007-12/msg00045.php

16 years agoAdd URL for:
Bruce Momjian [Thu, 27 Mar 2008 20:31:04 +0000 (20:31 +0000)]
Add URL for:

* Consider allowing control of upper/lower case folding of unquoted
  identifiers

>   http://archives.postgresql.org/pgsql-hackers/2008-03/msg00849.php

16 years agoWhen we have successfully optimized a MIN or MAX aggregate into an indexscan,
Tom Lane [Thu, 27 Mar 2008 19:06:14 +0000 (19:06 +0000)]
When we have successfully optimized a MIN or MAX aggregate into an indexscan,
the query result must be exactly one row (since we don't do this when there's
any GROUP BY).  Therefore any ORDER BY or DISTINCT attached to the query is
useless and can be dropped.  Aside from saving useless cycles, this protects
us against problems with matching the hacked-up tlist entries to sort clauses,
as seen in a bug report from Taiki Yamaguchi.  We might need to work harder
if we ever try to optimize grouped queries with this approach, but this
solution will do for now.

16 years agoRemove ipcclean utility command --- didn't work on all Unixes and on
Bruce Momjian [Thu, 27 Mar 2008 17:24:16 +0000 (17:24 +0000)]
Remove ipcclean utility command --- didn't work on all Unixes and on
Windows.  Users should use their operating system tools instead.

16 years agoSorry, copied wrong files.
Michael Meskes [Thu, 27 Mar 2008 08:40:02 +0000 (08:40 +0000)]
Sorry, copied wrong files.

16 years ago- Moved from PQsetdbLogin to PQconnectDB.
Michael Meskes [Thu, 27 Mar 2008 07:56:02 +0000 (07:56 +0000)]
- Moved from PQsetdbLogin to PQconnectDB.
- Correctly parse connect options.
- Changed regression tests accordingly.

16 years agoReduce the need for frontend programs to include "postgres.h" by refactoring
Tom Lane [Thu, 27 Mar 2008 03:57:34 +0000 (03:57 +0000)]
Reduce the need for frontend programs to include "postgres.h" by refactoring
inclusions in src/include/catalog/*.h files.  The main idea here is to push
function declarations for src/backend/catalog/*.c files into separate headers,
rather than sticking them into the corresponding catalog definition file as
has been done in the past.  This commit only carries out that idea fully for
pg_proc, pg_type and pg_conversion, but that's enough for the moment ---
if pg_list.h ever becomes unsafe for frontend code to include, we'll need
to work a bit more.

Zdenek Kotala

16 years agoMove the HTSU_Result enum definition into snapshot.h, to avoid including
Alvaro Herrera [Wed, 26 Mar 2008 21:10:39 +0000 (21:10 +0000)]
Move the HTSU_Result enum definition into snapshot.h, to avoid including
tqual.h into heapam.h.  This makes all inclusion of tqual.h explicit.

I also sorted alphabetically the includes on some source files.

16 years agoRename snapmgmt.c/h to snapmgr.c/h, for consistency with other files.
Alvaro Herrera [Wed, 26 Mar 2008 18:48:59 +0000 (18:48 +0000)]
Rename snapmgmt.c/h to snapmgr.c/h, for consistency with other files.
Per complaint from Tom Lane.

16 years agoFix bad spelling and worse grammar in recent doc commits. Propagate
Tom Lane [Wed, 26 Mar 2008 16:34:47 +0000 (16:34 +0000)]
Fix bad spelling and worse grammar in recent doc commits.  Propagate
pg_dump --ignore-version comments into pg_dumpall and pg_restore pages.

16 years agoSeparate snapshot management code from tuple visibility code, create a
Alvaro Herrera [Wed, 26 Mar 2008 16:20:48 +0000 (16:20 +0000)]
Separate snapshot management code from tuple visibility code, create a
snapmgmt.c file for the former.  The header files have also been reorganized
in three parts: the most basic snapshot definitions are now in a new file
snapshot.h, and the also new snapmgmt.h keeps the definitions for snapmgmt.c.
tqual.h has been reduced to the bare minimum.

This patch is just a first step towards managing live snapshots within a
transaction; there is no functionality change.

Per my proposal to pgsql-patches on 20080318191940.GB27458@alvh.no-ip.org and
subsequent discussion.

16 years agoInclude \password in the psql help.
Magnus Hagander [Wed, 26 Mar 2008 15:24:56 +0000 (15:24 +0000)]
Include \password in the psql help.

While at it, change the order of the documented options to be
alphabetically again.

16 years agoImprove documentation for odd array slice behavior.
Bruce Momjian [Wed, 26 Mar 2008 14:43:20 +0000 (14:43 +0000)]
Improve documentation for odd array slice behavior.

16 years agoStrengthen warnings about using pg_dump's -i option.
Bruce Momjian [Wed, 26 Mar 2008 14:32:22 +0000 (14:32 +0000)]
Strengthen warnings about using pg_dump's -i option.

16 years agoUpdate TODO:
Bruce Momjian [Wed, 26 Mar 2008 02:39:46 +0000 (02:39 +0000)]
Update TODO:

<  o Consider invalidating the cache or keeping seperate cached
<    copies when search_path changes
>  o Consider keeping seperate cached copies when search_path changes

16 years agoAdded to TODO:
Bruce Momjian [Wed, 26 Mar 2008 01:49:51 +0000 (01:49 +0000)]
Added to TODO:

>
> * Consider transaction start/end performance improvements
>
>   http://archives.postgresql.org/pgsql-hackers/2007-07/msg00948.php
>   http://archives.postgresql.org/pgsql-hackers/2008-03/msg00361.php

16 years agoFix core dump in contrib/xml2's xpath_table() when the input query returns
Tom Lane [Wed, 26 Mar 2008 01:19:04 +0000 (01:19 +0000)]
Fix core dump in contrib/xml2's xpath_table() when the input query returns
a NULL value.  Per bug #4058.

16 years agoUpdate documentation for recent DTrace changes. Patch from Robert Lor.
Neil Conway [Tue, 25 Mar 2008 22:50:27 +0000 (22:50 +0000)]
Update documentation for recent DTrace changes. Patch from Robert Lor.

16 years agoSimplify and standardize conversions between TEXT datums and ordinary C
Tom Lane [Tue, 25 Mar 2008 22:42:46 +0000 (22:42 +0000)]
Simplify and standardize conversions between TEXT datums and ordinary C
strings.  This patch introduces four support functions cstring_to_text,
cstring_to_text_with_len, text_to_cstring, and text_to_cstring_buffer, and
two macros CStringGetTextDatum and TextDatumGetCString.  A number of
existing macros that provided variants on these themes were removed.

Most of the places that need to make such conversions now require just one
function or macro call, in place of the multiple notational layers that used
to be needed.  There are no longer any direct calls of textout or textin,
and we got most of the places that were using handmade conversions via
memcpy (there may be a few still lurking, though).

This commit doesn't make any serious effort to eliminate transient memory
leaks caused by detoasting toasted text objects before they reach
text_to_cstring.  We changed PG_GETARG_TEXT_P to PG_GETARG_TEXT_PP in a few
places where it was easy, but much more could be done.

Brendan Jurd and Tom Lane

16 years agoDone:
Bruce Momjian [Tue, 25 Mar 2008 20:18:18 +0000 (20:18 +0000)]
Done:

> * -Avoid tuple some tuple copying in sort routines

16 years agoAdd a new tuplestore API function, tuplestore_putvalues(). This is
Neil Conway [Tue, 25 Mar 2008 19:26:54 +0000 (19:26 +0000)]
Add a new tuplestore API function, tuplestore_putvalues(). This is
identical to tuplestore_puttuple(), except it operates on arrays of
Datums + nulls rather than a fully-formed HeapTuple. In several places
that use the tuplestore API, this means we can avoid creating a
HeapTuple altogether, saving a copy.

16 years agoUpdate TODO wording:
Bruce Momjian [Tue, 25 Mar 2008 13:09:39 +0000 (13:09 +0000)]
Update TODO wording:

* Simplify integer cross-data-type operators