Tom Lane [Mon, 29 Mar 2004 19:58:04 +0000 (19:58 +0000)]
Use fuzzy comparison of path costs in add_path(), so that paths with the
same path keys and nearly equivalent costs will be considered redundant.
The exact nature of the fuzziness may get adjusted later based on current
discussions, but no one has shot a hole in the basic idea yet ...
Tom Lane [Sat, 27 Mar 2004 00:24:28 +0000 (00:24 +0000)]
Now that we are allowing index opclasses to contain operators that are
only stable and not immutable, pred_test_simple_clause has to guard
against making invalid deductions. Add a test for immutability of
the selected test_op.
Teodor Sigaev [Thu, 25 Mar 2004 16:56:10 +0000 (16:56 +0000)]
1 Minimize memory allocation for void (but not null) value.
2 Add silly ordering for ts_vector to aim grouping, union, except etc. Don't use BTree opclass (tsvector_ops).
Tom Lane [Wed, 24 Mar 2004 23:38:49 +0000 (23:38 +0000)]
Add a more useful error message for the case where someone tries to pass
a whole row or record variable into a SQL function. Eventually this case
should be made to actually work, but for now this is better than what it
did before.
Tom Lane [Wed, 24 Mar 2004 22:40:29 +0000 (22:40 +0000)]
Replace max_expr_depth parameter with a max_stack_depth parameter that
is measured in kilobytes and checked against actual physical execution
stack depth, as per my proposal of 30-Dec. This gives us a fairly
bulletproof defense against crashing due to runaway recursive functions.
Bruce Momjian [Wed, 24 Mar 2004 04:04:51 +0000 (04:04 +0000)]
Here's a patch implementing the "thread method" to workaround the bug
with socket calls in signal handlers (APC) on Win32. See details in mail
to pgsql-hackers-win32 a couple of minutes ago.
Neil Conway [Wed, 24 Mar 2004 03:22:35 +0000 (03:22 +0000)]
Fix some whitespace formatting, and remove an overly-verbose
parameter description: postgresql.conf is not the place for
documentating the functionality of a GUC var.
Bruce Momjian [Wed, 24 Mar 2004 03:10:29 +0000 (03:10 +0000)]
>>Also, what is the default connection mode of psql? It should probably be
>>equivalent to "-h localhost", shouldn't it?
>>
>>
>
>Now that is something I had not thought of. Seems we can assume a Win32
>psql can never use unix domain sockets, so defaulting that to localhost
>is a good solution too.
Bruce Momjian [Tue, 23 Mar 2004 21:39:46 +0000 (21:39 +0000)]
When changing select() calls for delays into pg_usleep(), two comments
in s_lock.c were not updated, and still refers to select. Made my grep
hit the wrong files, so I figured a simple patch was in order.. (other
refs in the same comment block was changed..)
Tom Lane [Tue, 23 Mar 2004 19:35:17 +0000 (19:35 +0000)]
Upgrade ALTER TABLE DROP COLUMN so that it can drop an OID column, and
remove separate implementation of ALTER TABLE SET WITHOUT OIDS in favor
of doing a regular DROP. Also, cause CREATE TABLE to account completely
correctly for the inheritance status of the OID column. This fixes
problems with dropping OID columns that have dependencies, as noted by
Christopher Kings-Lynne, as well as making sure that you can't drop an
OID column that was inherited from a parent.
Neil Conway [Tue, 23 Mar 2004 02:47:35 +0000 (02:47 +0000)]
Improve the locale and character set docs, add some <xref>s pointing
to the character set docs where appropriate, and improve the postmaster
reference page. Character set cross-refs suggested by Gavin Kistner.
Tom Lane [Tue, 23 Mar 2004 01:23:48 +0000 (01:23 +0000)]
Replace the virtual_host and tcpip_socket parameters with a unified
listen_addresses parameter, as per recent discussion. The default behavior
is now to listen on localhost, which eliminates the need for the -i
postmaster switch in many scenarios.
Tom Lane [Mon, 22 Mar 2004 23:55:29 +0000 (23:55 +0000)]
Before deciding we can use a socket for statistics collection, test to
ensure that it actually passes data. This catches cases such as a kernel
packet filter rule that makes the socket useless.
Bruce Momjian [Mon, 22 Mar 2004 03:57:08 +0000 (03:57 +0000)]
In working through a pg_autovacuum problem with Joe Conway (which turned
out to be the same problem reported by Cott Lang which the previous
patch resolved) a new bug was uncovered when running with a debug level
of greater than 1.
This patch resolves this new found bug and fixes some of the other
debugging output to be more consistent.
Tom Lane [Mon, 22 Mar 2004 01:38:18 +0000 (01:38 +0000)]
Add timestamp-versus-timestamptz cross-type comparison functions,
flesh out the index operator classes to include these. In passing,
fix erroneous volatility marking of ACL functions.
Tom Lane [Sun, 21 Mar 2004 22:29:11 +0000 (22:29 +0000)]
Revise syntax-error reporting behavior to give pleasant results for
errors in internally-generated queries, such as those submitted by
plpgsql functions. Per recent discussions with Fabien Coelho.
Tom Lane [Sat, 20 Mar 2004 20:09:45 +0000 (20:09 +0000)]
Rewrite pg_dump's comment-dumping code to pull over all the comments
in one query, rather than making a separate query for each object that
could have a comment. This costs relatively little space (a few tens of
K typically) and saves substantial time in databases with many objects.
I find it reduces the runtime of 'pg_dump -s regression' by about a
third.
Tom Lane [Fri, 19 Mar 2004 18:58:07 +0000 (18:58 +0000)]
Create a validator for plpgsql, so that some minimal syntax checking
is done at creation time for plpgsql functions. Improve createlang and
droplang to support adding/dropping validators for PLs. Initial steps
towards producing a syntax error position from plpgsql syntax errors
(this part is a work in progress, and will change depending on outcome
of current discussions).
Tom Lane [Fri, 19 Mar 2004 02:23:59 +0000 (02:23 +0000)]
Code review for log_line_prefix patch. Cooperate with StringInfo instead
of fighting it, avoid hard-wired (and wrong) assumption about max length
of prefix, cause %l to actually work as documented, don't compute data
we may not need.
Bruce Momjian [Thu, 18 Mar 2004 15:26:27 +0000 (15:26 +0000)]
Add fsync tests:
Compare fsync before and after write's close:
Compare one o_sync write to two:
Compare file sync methods with one 8k write:
Compare file sync methods with 2 8k writes:
Tom Lane [Wed, 17 Mar 2004 22:24:58 +0000 (22:24 +0000)]
During btree index build, sort equal-keyed tuples according to their
TID (heap position). This doesn't do anything to the validity of the
finished index, but by pretending to qsort() that there are no really
equal keys in the sort, we can avoid performance problems with qsort
implementations that have trouble with large numbers of equal keys.
Patch from Manfred Koizar.
Tom Lane [Wed, 17 Mar 2004 20:48:43 +0000 (20:48 +0000)]
Reimplement CASE val WHEN compval1 THEN ... WHEN compval2 THEN ... END
so that the 'val' is computed only once, per recent discussion. The
speedup is not much when 'val' is just a simple variable, but could be
significant for larger expressions. More importantly this avoids issues
with multiple evaluations of a volatile 'val', and it allows the CASE
expression to be reverse-listed in its original form by ruleutils.c.
Tom Lane [Wed, 17 Mar 2004 01:02:24 +0000 (01:02 +0000)]
Replace the switching function ExecEvalExpr() with a macro that jumps
directly to the appropriate per-node execution function, using a function
pointer stored by ExecInitExpr. This speeds things up by eliminating one
level of function call. The function-pointer technique also enables further
small improvements such as only making one-time tests once (and then
changing the function pointer). Overall this seems to gain about 10%
on evaluation of simple expressions, which isn't earthshaking but seems
a worthwhile gain for a relatively small hack. Per recent discussion
on pghackers.
Bruce Momjian [Mon, 15 Mar 2004 16:18:43 +0000 (16:18 +0000)]
* postmaster.c: cleanup pmdaemonize under win32; missed failure message
in CreateOptsFile
* s_lock.c: minor comment fix
* findbe.c: variables not used under win32 moved within #ifndef WIN32
case
Bruce Momjian [Mon, 15 Mar 2004 16:14:26 +0000 (16:14 +0000)]
Windows uses codepages rather than the environment, so we work around
that by querying the environment explicitly first for LC_COLLATE and
LC_CTYPE. We have to do this because initdb passes those values in the
environment. If there is nothing there we fall back on the codepage.