Tom Lane [Fri, 8 Dec 2000 23:57:03 +0000 (23:57 +0000)]
Repair erroneous use of hashvarlena() for MACADDR, which is not a
varlena type. (I did not force initdb, but you won't see the fix
unless you do one.) Also, make sure all index support operators and
functions are careful not to leak memory for toasted inputs; I had
missed some hash and rtree support ops on this point before.
Tom Lane [Fri, 8 Dec 2000 22:21:33 +0000 (22:21 +0000)]
Resurrect -F switch: it controls fsyncs again, though the fsyncs are
mostly just on the WAL logfile nowadays. But if people want to disable
fsync for performance, why should we say no?
Tom Lane [Fri, 8 Dec 2000 20:06:58 +0000 (20:06 +0000)]
Remove error check that disallowed setval() on a sequence with cache
value greater than one. The behavior this sought to disallow doesn't
seem any less confusing than the other behaviors of cached sequences.
Improve wording of some error messages, too.
Update documentation accordingly. Also add an explanation that
aborted transactions do not roll back their nextval() calls; this
seems to be a FAQ, so it ought to be mentioned here...
Tom Lane [Thu, 7 Dec 2000 18:38:59 +0000 (18:38 +0000)]
Make OVERLAPS operators conform to SQL92 spec regarding NULL handling.
As I read it, the spec requires a non-null result in some cases where
one of the inputs is NULL: specifically, if the other endpoint of that
interval is between the endpoints of the other interval, then the result
is known TRUE despite the missing endpoint. The spec could've been a
lot simpler if they did not intend this behavior.
I did not force an initdb for this change, but if you don't do one you'll
still see the old strict-function behavior.
Tom Lane [Thu, 7 Dec 2000 01:12:08 +0000 (01:12 +0000)]
transformForUpdate() mustn't assume rowMarks list is initially empty.
It could be recursing into a sub-query where there was already a FOR
UPDATE clause.
Tom Lane [Wed, 6 Dec 2000 23:55:19 +0000 (23:55 +0000)]
Clean up handling of FOR UPDATE inside views and subselects ... make it
work where we can (given that the executor only handles it at top level)
and generate an error where we can't. Note that while the parser has
been allowing views to say SELECT FOR UPDATE for a few weeks now, that
hasn't actually worked until just now.
Tom Lane [Tue, 5 Dec 2000 23:40:36 +0000 (23:40 +0000)]
I've just seen what happens when the MEMORY_CONTEXT_CHECKING code fires
an error at end of transaction ... and I did *not* like it. Reduce ERROR
to NOTICE so that this situation doesn't cause an infinite loop.
Tom Lane [Tue, 5 Dec 2000 22:03:57 +0000 (22:03 +0000)]
In SELECT FOR UPDATE, silently ignore null CTIDs, rather than generating
an error as we used to. In an OUTER JOIN scenario, retrieving a null
CTID from one of the input relations is entirely expected. We still
want to lock the input rows from the other relations, so just ignore
the null and keep going.
Tom Lane [Tue, 5 Dec 2000 19:57:56 +0000 (19:57 +0000)]
From Stephan Szabo:
I believe this should fix the issue that Philip Warner
noticed about the check for unique constraints meeting the
referenced keys of a foreign key constraint allowing the
specification of a subset of a foreign key instead of
rejecting it. I also added tests for a base case of
this to the foreign key and alter table tests and patches
for expected output.
Tom Lane [Tue, 5 Dec 2000 19:15:10 +0000 (19:15 +0000)]
Repair breakage of rules containing INSERT ... SELECT actions, per bug
report from Joel Burton. Turns out that my simple idea of turning the
SELECT into a subquery does not interact well *at all* with the way the
rule rewriter works. Really what we need to make INSERT ... SELECT work
cleanly is to decouple targetlists from rangetables: an INSERT ... SELECT
wants to have two levels of targetlist but only one rangetable. No time
for that for 7.1, however, so I've inserted some ugly hacks to make the
rewriter know explicitly about the structure of INSERT ... SELECT queries.
Ugh :-(
Tom Lane [Sun, 3 Dec 2000 20:45:40 +0000 (20:45 +0000)]
Ensure that all uses of <ctype.h> functions are applied to unsigned-char
values, whether the local char type is signed or not. This is necessary
for portability. Per discussion on pghackers around 9/16/00.
Repair usage of the OVERLAPS operator.
Allow some operator-like tokens to be used as function names.
Flesh out support for time, timetz, and interval operators
and interactions.
Regression tests pass, but non-reference-platform horology test results
will need to be updated.
Tom Lane [Sat, 2 Dec 2000 18:16:40 +0000 (18:16 +0000)]
Don't cause --enable-cassert to define COPY_PARSE_PLAN_TREES automatically
anymore. That won't teach us anything new for the rest of this release
cycle, so it seems better to keep the --assert environment more like the
non-assert environment for beta.
I'm going to leave CLOBBER_FREED_MEMORY and MEMORY_CONTEXT_CHECKING
turned on by --enable-cassert for now, however.
Tom Lane [Fri, 1 Dec 2000 22:10:31 +0000 (22:10 +0000)]
Make tuple receive/print routines TOAST-aware. Formerly, printtup would
leak memory when printing a toasted attribute, and printtup_internal
didn't work at all...
Tom Lane [Fri, 1 Dec 2000 19:52:04 +0000 (19:52 +0000)]
Make elog() switch to ErrorContext while invoking libpq output routines,
since those routines may do palloc's. We want to be fairly sure we can
send the error message to the client even under low-memory conditions.
That's what we stashed away 8K in ErrorContext for, after all ...
Tom Lane [Fri, 1 Dec 2000 18:14:29 +0000 (18:14 +0000)]
Pursuant to a pghackers discussion back around 11-Jul-00, get rid of aset.c's
not-very-good handling of mid-size allocation requests. Do everything via
either the "small" case (chunk size rounded up to power of 2) or the "large"
case (pass it straight off to malloc()). Increase the number of freelists
a little to set the breakpoint between these behaviors at 8K.
Tom Lane [Fri, 1 Dec 2000 05:17:19 +0000 (05:17 +0000)]
It seems appropriate that the extended MEMORY_CONTEXT_CHECKING code
immediately uncovered three of Karel's own bugs, including a routine
that scribbled on its input (naughty naughty!)
Tom Lane [Fri, 1 Dec 2000 05:16:45 +0000 (05:16 +0000)]
Clean up MEMORY_CONTEXT_CHECKING code, and apply it more thoroughly. Also,
apply Karel Zak's patch to recycle residual space in an exhausted allocation
block. (Bet you thought I'd forgot about that, Karel?)
Tom Lane [Thu, 30 Nov 2000 18:38:47 +0000 (18:38 +0000)]
Remove VARLENA_FIXED_SIZE hack, which is irreversibly broken now that
both MULTIBYTE and TOAST prevent char(n) from being truly fixed-size.
Simplify and speed up fastgetattr() and index_getattr() macros by
eliminating special cases for attnum=1. It's just as fast to handle
the first attribute by presetting its attcacheoff to zero; so do that
instead when loading the tupledesc in relcache.c.
Peter Eisentraut [Thu, 30 Nov 2000 18:32:52 +0000 (18:32 +0000)]
Remove remaining unixsocket-setting interfaces, since the host parameter
does that. Disable URL-style connection parameter specification code,
which doesn't work.
Tom Lane [Thu, 30 Nov 2000 01:39:08 +0000 (01:39 +0000)]
Rearrange bufmgr header files so that buf_internals.h need not be
included by everything that includes bufmgr.h --- it's supposed to be
internals, after all, not part of the API! This fixes the conflict
against FreeBSD headers reported by Rosenman, by making it unnecessary
for s_lock.h to be included by plperl.c.
Tom Lane [Wed, 29 Nov 2000 22:04:04 +0000 (22:04 +0000)]
Just noticed that with -S switch, MyProcPid is permanently wrong in
postmaster, because it isn't updated after forking away from the terminal.
Apparently it's not used anyplace in the postmaster ... but seems best
to make it show the correct PID ...
Tom Lane [Wed, 29 Nov 2000 20:59:54 +0000 (20:59 +0000)]
Get rid of not-very-portable fcntl(F_SETLK) mechanism for locking the Unix
socket file, in favor of having an ordinary lockfile beside the socket file.
Clean up a few robustness problems in the lockfile code. If postmaster is
going to reject a connection request based on database state, it will now
tell you so before authentication exchange not after. (Of course, a failure
after is still possible if conditions change meanwhile, but this makes life
easier for a yet-to-be-written pg_ping utility.)
Tom Lane [Tue, 28 Nov 2000 23:42:31 +0000 (23:42 +0000)]
aclitemout() shouldn't coredump when it finds an ACL item
for a now-vanished group. Instead, display the numeric group ID, same
as it does for vanished users.
Tom Lane [Tue, 28 Nov 2000 23:27:57 +0000 (23:27 +0000)]
Significant cleanups in SysV IPC handling (shared mem and semaphores).
IPC key assignment will now work correctly even when multiple postmasters
are using same logical port number (which is possible given -k switch).
There is only one shared-mem segment per postmaster now, not 3.
Rip out broken code for non-TAS case in bufmgr and xlog, substitute a
complete S_LOCK emulation using semaphores in spin.c. TAS and non-TAS
logic is now exactly the same.
When deadlock is detected, "Deadlock detected" is now the elog(ERROR)
message, rather than a NOTICE that comes out before an unhelpful ERROR.