Commit Graph

26689 Commits

Author SHA1 Message Date
Tom Lane
2604359251 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.
2008-04-06 16:54:49 +00:00
Tom Lane
d785b39fbf A small visit from the portability and localization police. 2008-04-05 03:40:15 +00:00
Bruce Momjian
470b2dc35d Make dblink_current_query() reference pg_catalog.current_query(), per Tom. 2008-04-05 02:44:42 +00:00
Bruce Momjian
67fe107554 Re-add dblink_current_query() for backward compatibility. 2008-04-05 02:26:14 +00:00
Tom Lane
ceb5db69d4 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.
2008-04-05 01:58:20 +00:00
Bruce Momjian
2a1cf97c22 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
2008-04-05 01:34:06 +00:00
Tom Lane
a0fad9762a 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.
2008-04-04 18:45:36 +00:00
Bruce Momjian
b6f0ad4b0e Have psql command 'help' suggest the use of \?, updated version.
Greg Sabino Mullane
2008-04-04 18:00:25 +00:00
Bruce Momjian
dc565af454 Allow 'help' in psql to show \? help, for novice assistance.
Greg Sabino Mullane
2008-04-04 17:42:43 +00:00
Tom Lane
a051ab0a80 Remove no-longer-used function assign_backslash_quote() 2008-04-04 17:25:23 +00:00
Bruce Momjian
4f22db501e Remove unneed #include now that current_query() has moved to the backend. 2008-04-04 17:02:56 +00:00
Bruce Momjian
f96928fde9 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
2008-04-04 16:57:21 +00:00
Magnus Hagander
cfaf8b6b67 Oops, change should go in scan.l to survive a clean checkout and not just
a make clean...
2008-04-04 12:44:36 +00:00
Magnus Hagander
2288d646a6 Convert backslash_quote guc to use enum. 2008-04-04 11:47:19 +00:00
Magnus Hagander
d672ea6ffa Turn xmlbinary and xmloption GUC variables into enumsTurn xmlbinary and
xmloption GUC variables into enums..
2008-04-04 08:33:15 +00:00
Tom Lane
55f6e5f689 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.
2008-04-03 21:13:07 +00:00
Bruce Momjian
bbe48195ab 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
2008-04-03 18:14:02 +00:00
Tom Lane
b03271590e Remove heap_release_fetch, which is no longer used anywhere; this simplifies
heap_fetch a little.
2008-04-03 17:12:27 +00:00
Bruce Momjian
d3bf8c7097 Add to TODO:
> * Improve how ANALYZE computes in-doubt tuples
>
>   http://archives.postgresql.org/pgsql-hackers/2007-11/msg00771.php
>
2008-04-03 16:37:07 +00:00
Tom Lane
51e1445f10 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
2008-04-03 16:27:25 +00:00
Magnus Hagander
f1e0d5a8ca Oops, add proper #ifdef for systems without support for syslog.
Per buildfarm member mastodon.
2008-04-03 13:25:02 +00:00
Peter Eisentraut
ec0be6073a Remove -C from rsync call, because it omits directories named "core". 2008-04-03 09:52:03 +00:00
Magnus Hagander
409e386be0 Convert syslog_facility guc to enum type. 2008-04-03 09:21:15 +00:00
Bruce Momjian
b011c5ff6a 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
2008-04-03 01:56:04 +00:00
Tom Lane
1591fcbec7 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.
2008-04-02 18:31:50 +00:00
Magnus Hagander
ad6bf716ba Convert three more guc settings to enum type:
default_transaction_isolation, session_replication_role and regex_flavor.
2008-04-02 14:42:56 +00:00
Bruce Momjian
afa2a9ec9c Remove due to survey/discussion:
<
< * Prefix command-line utilities like createuser with 'pg_'
<
<   http://archives.postgresql.org/pgsql-hackers/2007-06/msg00025.php
<
2008-04-02 02:11:47 +00:00
Tom Lane
e2a8804330 Support EXECUTE USING in plpgsql.
Pavel Stehule, with some improvements by myself.
2008-04-01 03:51:09 +00:00
Tom Lane
d5466e38f0 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.
2008-04-01 03:09:30 +00:00
Tom Lane
6b73d7e567 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.
2008-04-01 00:48:33 +00:00
Tom Lane
d344115519 Apply my original fix for Taiki Yamaguchi's bug report about DISTINCT MAX().
Add some regression tests for plausible failures in this area.
2008-03-31 16:59:26 +00:00
Tom Lane
e86237ff31 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...)
2008-03-31 03:34:27 +00:00
Tom Lane
3405f2b925 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.
2008-03-31 02:43:14 +00:00
Tom Lane
c5f11f9d19 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.)
2008-03-31 01:31:43 +00:00
Tom Lane
b65a509746 Show database access privileges in psql's \l command. For \l+, also show
database size, when available to the current user.

Andrew Gilligan
2008-03-30 18:10:20 +00:00
Tom Lane
2be368a5af Display incoming as well as outgoing foreign-key constraints in psql's
\d output for a table.

Kenneth D'Souza, some changes by myself.
2008-03-30 17:50:11 +00:00
Neil Conway
2169e42bef 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.
2008-03-30 04:08:15 +00:00
Tom Lane
2f6e61b8a6 Improve description of \du and \dg, per suggestion from
Harald Armin Massa.
2008-03-29 19:40:12 +00:00
Tom Lane
5787d50acc 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.
2008-03-29 19:19:14 +00:00
Tom Lane
6fc9d4272c Revert my erroneous fix for Taiki Yamaguchi's DISTINCT MAX() bug.
Whatever we do about that, this isn't the path to the solution.
2008-03-29 00:15:28 +00:00
Bruce Momjian
2b350bc585 Done:
> * -Add ability to trigger on TRUNCATE
2008-03-28 15:18:42 +00:00
Heikki Linnakangas
958db06181 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.
2008-03-28 15:00:28 +00:00
Bruce Momjian
da215f05ec Add to TODO:
>
> 	o Add CASE capability to language (already in SQL)
>
> 	  http://archives.postgresql.org/pgsql-hackers/2008-01/msg00696.php
>
>
2008-03-28 03:29:49 +00:00
Bruce Momjian
79262016a3 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
2008-03-28 02:36:04 +00:00
Tom Lane
2e4094dad8 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.
2008-03-28 02:00:11 +00:00
Tom Lane
7692d8d5b7 Support statement-level ON TRUNCATE triggers. Simon Riggs 2008-03-28 00:21:56 +00:00
Bruce Momjian
107b3d0c23 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
2008-03-27 20:37:43 +00:00
Bruce Momjian
de44ecf860 Add URL for:
* Consider allowing control of upper/lower case folding of unquoted
  identifiers

>   http://archives.postgresql.org/pgsql-hackers/2008-03/msg00849.php
2008-03-27 20:31:04 +00:00
Tom Lane
ff72280c9e 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.
2008-03-27 19:06:14 +00:00
Bruce Momjian
39627b1ae6 Remove ipcclean utility command --- didn't work on all Unixes and on
Windows.  Users should use their operating system tools instead.
2008-03-27 17:24:16 +00:00