Tom Lane [Wed, 3 Oct 2007 23:02:16 +0000 (23:02 +0000)]
Second pass at 8.3 release notes: put items in a bit more logical order
where possible, add overview and incompatibilities lists, minor cleanups.
The SGML-ification still leaves much to be desired.
Tom Lane [Wed, 3 Oct 2007 15:59:13 +0000 (15:59 +0000)]
Tweak recently-added tests to suppress scary-looking warnings on 64-bit
machines about casts between pointers and integers of different sizes.
While they're harmless, we shouldn't expect users to have to go through
and figure that out for themselves.
Magnus Hagander [Wed, 3 Oct 2007 13:57:52 +0000 (13:57 +0000)]
Attempt to open certificate file "manually" using fopen before
trying BIO functions.
Helps problem with older versions of OpenSSL that lacks error
stack functions and would show an incorrect error message for
file-not-found-or-not-openable. The problem may still exist for
other errors, but file open error is by far the most common one.
Tom Lane [Wed, 3 Oct 2007 03:32:31 +0000 (03:32 +0000)]
First cut at 8.3 release notes. SGML markup is nonexistent, and
the 'overview' and 'incompatibilities' summary lists remain to be
written. But I think all the raw info is there (indeed maybe too
verbose).
Tom Lane [Tue, 2 Oct 2007 00:25:20 +0000 (00:25 +0000)]
Cope with ERR_set_mark() and ERR_pop_to_mark() not existing in older
OpenSSL libraries --- just don't call them if they're not there. This
might possibly lead to misleading error messages, but we'll just have
to live with that.
Magnus Hagander [Mon, 1 Oct 2007 20:30:06 +0000 (20:30 +0000)]
Use BIO functions to avoid passing FILE * pointers to OpenSSL functions.
This fixes potential crashes on old versions of OpenSSL and the requirement on
"Applink" in new versions when building with MSVC and using different
runtimes.
Tom Lane [Mon, 1 Oct 2007 16:25:56 +0000 (16:25 +0000)]
Avoid assuming that struct varattrib_pointer doesn't get padded by the
compiler --- at least on ARM, it does. I suspect that the varvarlena patch
has been creating larger-than-intended toast pointers all along on ARM,
but it wasn't exposed until the latest tweak added some Asserts that
calculated the expected size in a different way. We could probably have
fixed this by adding __attribute__((packed)) as is done for ItemPointerData,
but struct varattrib_pointer isn't really all that useful anyway, so it
seems cleanest to just get rid of it and have only struct varattrib_1b_e.
Per results from buildfarm member quagga.
Tom Lane [Sun, 30 Sep 2007 19:54:58 +0000 (19:54 +0000)]
Add an extra header byte to TOAST-pointer datums to represent their size
explicitly. This means a TOAST pointer takes 18 bytes instead of 17 --- still
smaller than in 8.2 --- which seems a good tradeoff to ensure we won't have
painted ourselves into a corner if we want to support multiple types of TOAST
pointer later on. Per discussion with Greg Stark.
Tom Lane [Sun, 30 Sep 2007 17:28:56 +0000 (17:28 +0000)]
Adjust recovery PS display as agreed with Simon: 'waiting for XXX'
while the restore_command does its thing, then 'recovering XXX' while
processing the segment file. These operations are heavyweight enough
that an extra PS display set shouldn't bother anyone.
Tom Lane [Sun, 30 Sep 2007 17:13:19 +0000 (17:13 +0000)]
Properly mark mergeable/hashable equality operators (found by opr_sanity
testing). Combine the formerly independent opclasses for the various
ISN types into opfamilies. The latter causes some extra bleating from
opr_sanity, since the module doesn't provide complete sets of cross-type
operators, but it's still a good idea because it will give the planner
more information to work with. The missing cross-type operators no longer
pose a risk of unexpected planner errors in 8.3, so there's no need to
insist on filling them in (and I gather it wouldn't be very sound
semantically to add them all).
Tom Lane [Sat, 29 Sep 2007 23:32:42 +0000 (23:32 +0000)]
Remove bogus commutator marking --- the module doesn't actually supply
any commutator operator for =(chkpass,text), so this was creating a
shell operator that would fail on use. Found by opr_sanity testing.
Tom Lane [Sat, 29 Sep 2007 18:05:20 +0000 (18:05 +0000)]
Disallow CLUSTER using an invalid index (that is, one left over from a failed
CREATE INDEX CONCURRENTLY). Such an index might not have entries for every
heap row and thus clustering with it would result in silent data loss.
The scenario requires a pretty foolish DBA, but still ...
Tom Lane [Sat, 29 Sep 2007 17:18:58 +0000 (17:18 +0000)]
Improve consistency of the error messages generated when you try to use
ALTER TABLE on a composite type or ALTER TYPE on a table's rowtype.
We already rejected these cases, but the error messages were a bit
random and didn't always provide a HINT to use the other command type.
Tom Lane [Sat, 29 Sep 2007 01:36:10 +0000 (01:36 +0000)]
Make archive recovery always start a new timeline, rather than only when a
recovery stop time was used. This avoids a corner-case risk of trying to
overwrite an existing archived copy of the last WAL segment, and seems
simpler and cleaner all around than the original definition. Per example
from Jon Colverson and subsequent analysis by Simon.
Tom Lane [Sat, 29 Sep 2007 00:01:43 +0000 (00:01 +0000)]
Teach chklocale.c about a few names for frontend-only encodings,
since this will allow initdb to reject attempts to initdb in a locale
that uses such an encoding. We'll probably find out more such names
during beta ...
Tom Lane [Fri, 28 Sep 2007 22:25:49 +0000 (22:25 +0000)]
Change initdb and CREATE DATABASE to actively reject attempts to create
databases with encodings that are incompatible with the server's LC_CTYPE
locale, when we can determine that (which we can on most modern platforms,
I believe). C/POSIX locale is compatible with all encodings, of course,
so there is still some usefulness to CREATE DATABASE's ENCODING option,
but this will insulate us against all sorts of recurring complaints
caused by mismatched settings.
I moved initdb's existing LC_CTYPE-to-encoding mapping knowledge into
a new src/port/ file so it could be shared by CREATE DATABASE.
Tom Lane [Thu, 27 Sep 2007 20:39:43 +0000 (20:39 +0000)]
Tweak pgbench.c to remove the hidden assumption that a WIN32 machine
couldn't possibly HAVE_GETOPT. I believe this is the most appropriate
form of the patch submitted 2007-08-07 by Hiroshi Saito, though not
having a Windows build environment I won't know for sure till I see
the buildfarm results.
Tom Lane [Thu, 27 Sep 2007 19:53:44 +0000 (19:53 +0000)]
Define the FRONTEND symbol in postgres_fe.h, which allows us to eliminate
duplicative -DFRONTEND flags from many Makefiles. We still need Makefile
control of the symbol in a few places that compile frontend-or-backend
src/port/ files, but it's a lot cleaner than before.
Tom Lane [Thu, 27 Sep 2007 18:15:36 +0000 (18:15 +0000)]
Add virtual transaction IDs to CSVLOG output, so that messages coming from
the same transaction can be identified even when no regular XID was assigned.
This seems essential after addition of the lazy-XID patch. Also some
minor code cleanup in write_csvlog().
Tom Lane [Thu, 27 Sep 2007 17:42:03 +0000 (17:42 +0000)]
Fix Assert failure in ExpandColumnRefStar --- what I thought was a can't
happen condition can happen given incorrect input. The real problem is that
gram.y should try harder to distinguish * from "*" --- the latter is a legal
column name per spec, and someday we ought to treat it that way. However
fixing that is too invasive for a back-patch, and it's too late for the 8.3
cycle too. So just reduce the Assert to a plain elog for now. Per report
from NikhilS.
Tom Lane [Wed, 26 Sep 2007 23:29:10 +0000 (23:29 +0000)]
Some small tuptoaster improvements from Greg Stark. Avoid unnecessary
decompression of an already-compressed external value when we have to copy
it; save a few cycles when a value is too short for compression; and
annotate various lines that are currently unreachable.
Adjust the new memory limit in the lazy vacuum code to use MaxHeapTuplesPerPage
tuples per page instead of fixed 200, to better cope with systems that use a
different block size.
Tom Lane [Wed, 26 Sep 2007 18:51:51 +0000 (18:51 +0000)]
Create a function variable "join_search_hook" to let plugins override the
join search order portion of the planner; this is specifically intended to
simplify developing a replacement for GEQO planning. Patch by Julius
Stroffek, editorialized on by me. I renamed make_one_rel_by_joins to
standard_join_search and make_rels_by_joins to join_search_one_level to better
reflect their place within this scheme.
Tom Lane [Wed, 26 Sep 2007 01:10:42 +0000 (01:10 +0000)]
In the integer-datetimes case, date2timestamp and date2timestamptz need
to check for overflow because the legal range of type date is actually
wider than timestamp's. Problem found by Neil Conway.
Tom Lane [Wed, 26 Sep 2007 00:32:46 +0000 (00:32 +0000)]
Use SYSV semaphores rather than POSIX on Darwin >= 6.0 (i.e., OS X 10.2
and up), per Chris Marcellino. This avoids consuming O(N^2) file
descriptors to support N backends. Tests suggest it's about a wash for
small installations, but large ones would have a problem.
Tom Lane [Tue, 25 Sep 2007 22:21:55 +0000 (22:21 +0000)]
Change on-disk representation of NUMERIC datatype so that the sign_dscale
word comes before the weight instead of after. This will allow future
binary-compatible extension of the representation to support compact formats,
as discussed on pgsql-hackers around 2007/06/18. The reason to do it now is
that we've already pretty well broken any chance of simple in-place upgrade
from 8.2 to 8.3, but it's possible that 8.3 to 8.4 (or whenever we get around
to squeezing NUMERIC) could otherwise be data-compatible.