Tom Lane [Wed, 16 May 2001 22:35:12 +0000 (22:35 +0000)]
Repair race condition introduced into heap_update() in 7.1 ---
PageGetFreeSpace() was being called while not holding the buffer lock, which
not only could yield a garbage answer, but even if it's the right answer there
might be less space available after we reacquire the buffer lock.
Also repair potential deadlock introduced by my recent performance improvement
in RelationGetBufferForTuple(): it was possible for two heap_updates to try to
lock two buffers in opposite orders. The fix creates a global rule that
buffers of a single heap relation should be locked in decreasing block number
order. Currently, this only applies to heap_update; VACUUM can get away with
ignoring the rule since it holds exclusive lock on the whole relation anyway.
However, if we try to implement a VACUUM that can run in parallel with other
transactions, VACUUM will also have to obey the lock order rule.
Bruce Momjian [Wed, 16 May 2001 17:24:10 +0000 (17:24 +0000)]
The configure.in file erraneous assumes that FreeBSD 1.x and 2.x have
ELF capability.
While this is true to some extent, this assumption makes it impossible
to compile PostgreSQL 7.1 and 7.2devel without the --disable-shared
switch during configuration.
Bruce Momjian [Wed, 16 May 2001 16:42:31 +0000 (16:42 +0000)]
I was trying to get a very nice FREE graphical db tool called DbVisualizer
(http://www.ideit.com/products/dbvis/) to work with Postgresql and I found
out the following bug: if database has views then getTables() gets the null
pointer exception ('order by relname' makes the listing tree in
DbVisualizer a lot useful !!)
This patch should propably be applied to the the jdbc1's
DatabaseMetaData.java, too.
Bruce Momjian [Wed, 16 May 2001 03:29:01 +0000 (03:29 +0000)]
The current implementation of BlobInputStream does
not properly handle 8-bit unsigned data as it blindly
casts the byte to an int, which java most helpfully
promotes to a signed type. This causes problems when
you can only return -1 to indicated EOF.
The following patch fixes the bug and has been tested
locally on image data.
Tom Lane [Tue, 15 May 2001 16:11:58 +0000 (16:11 +0000)]
Remove unnecessary EvalPlanQual support code --- since this plan node
type never scans a relation directly, it can't be an EPQ target.
Explicitly drop subplan's tuple table to ensure we have no buffer pin
leaks.
Bruce Momjian [Tue, 15 May 2001 14:14:49 +0000 (14:14 +0000)]
we found a problem in GiST with massive insert/update operations
with many NULLs ( inserting of NULL into indexed field cause
ERROR: MemoryContextAlloc: invalid request size)
As a workaround 'vacuum analyze' could be used.
This patch resolves the problem, please upply to 7.1.1 sources and
current cvs tree.
Tom Lane [Tue, 15 May 2001 00:33:36 +0000 (00:33 +0000)]
EvalPlanQual was thoroughly broken for concurrent update/delete on inheritance
trees (mostly my fault). Repair. Also fix long-standing bug in ExecReplace:
after recomputing a concurrently updated tuple, we must recheck constraints.
Make EvalPlanQual leak memory with somewhat less enthusiasm than before,
although plugging leaks fully will require more changes than I care to risk
in a dot-release.
Tom Lane [Mon, 14 May 2001 20:25:00 +0000 (20:25 +0000)]
Current implementation of FOR UPDATE has no hope of working correctly
for relations on the nullable side of an OUTER JOIN. For now I think
we'd better refuse such queries.
Bruce Momjian [Sun, 13 May 2001 02:17:09 +0000 (02:17 +0000)]
> I've been experimenting with pgcrypto 0.3 (distributed with
> Postgres 7.1.0), and I think I've found a bug.
>
> I compiled Pgcrypto with OpenSSL, using gcc 2.95.4 and
> OpenSSL 0.9.6a (the latest Debian 'unstable' packages).
> web=> select encode(digest('blah', 'sha1'), 'base64');
> FATAL 1: pg_encode: overflow, encode estimate too small
> pqReadData() -- backend closed the channel unexpectedly.
> This probably means the backend terminated abnormally
> before or while processing the request.
> The connection to the server was lost. Attempting reset: Succeeded.
Tom Lane [Sat, 12 May 2001 23:36:03 +0000 (23:36 +0000)]
proisstrict must be assumed FALSE when dumping from a 7.0 database,
not TRUE. Otherwise we break pl call handler functions. fmgr_oldstyle
will take care of making sure the semantics are the same for C functions.
Clean up some slightly grotty coding in 7.0 pg_class reading, also.
Tom Lane [Sat, 12 May 2001 19:58:28 +0000 (19:58 +0000)]
Modify RelationGetBufferForTuple() so that we only do lseek and lock
when we need to move to a new page; as long as we can insert the new
tuple on the same page as before, we only need LockBuffer and not the
expensive stuff. Also, twiddle bufmgr interfaces to avoid redundant
lseeks in RelationGetBufferForTuple and BufferAlloc. Successive inserts
now require one lseek per page added, rather than one per tuple with
several additional ones at each page boundary as happened before.
Lock contention when multiple backends are inserting in same table
is also greatly reduced.
Peter Eisentraut [Sat, 12 May 2001 17:49:32 +0000 (17:49 +0000)]
PL/Python should build portably now, if you can get over the fact that
there's no shared libpython. Test suite works as well. Also, add some
documentation.
Peter Eisentraut [Sat, 12 May 2001 01:30:30 +0000 (01:30 +0000)]
PL/Python integration: support in create/droplang, add CVS keywords,
remove useless files, beat some sense into Makefile. For me it builds
and sort of runs, so it's a start.
Philip Warner [Sat, 12 May 2001 01:03:59 +0000 (01:03 +0000)]
- Don't dump COMMENTs in data-only dumps
- Fix view dumping SQL for V7.0
- Fix bug when getting view oid with long view names
- Treat SEQUENCE SET TOC entries as data entries rather than schema
entries.
- Make allowance for data entries that did not have a data dumper
routine (eg. SEQUENCE SET)
Tom Lane [Fri, 11 May 2001 05:09:03 +0000 (05:09 +0000)]
Suppress failures in parallel regress tests due to use of same table
name in two different tests. This solution does not meet with universal
approval, so it may get changed later ...
Bruce Momjian [Fri, 11 May 2001 01:46:33 +0000 (01:46 +0000)]
Stamp CVS as 7.2. Update all interface version numbers. This is the
time to do it, not during beta because people are using this stuff in
production sometimes.
Tom Lane [Thu, 10 May 2001 20:38:49 +0000 (20:38 +0000)]
Avoid unnecessary lseek() calls by cleanups in md.c. mdfd_lstbcnt was
not being consulted anywhere, so remove it and remove the _mdnblocks()
calls that were used to set it. Change smgrextend interface to pass in
the target block number (ie, current file length) --- the caller always
knows this already, having already done smgrnblocks(), so it's silly to
do it over again inside mdextend. Net result: extension of a file now
takes one lseek(SEEK_END) and a write(), not three lseeks and a write.
Bruce Momjian [Wed, 9 May 2001 23:00:44 +0000 (23:00 +0000)]
This directory contains a module that implements the "Metaphone" code as
a PostgreSQL user-defined function. The Metaphone system is a method of
matching similar sounding names (or any words) to the same code.
Metaphone was invented by Lawrence Philips as an improvement to the popular
name-hashing routine, Soundex.
This metaphone code is from Michael Kuhn, and is detailed at
http://aspell.sourceforge.net/metaphone/metaphone-kuhn.txt
Bruce Momjian [Wed, 9 May 2001 21:13:35 +0000 (21:13 +0000)]
I have modifed heap.c so that it won't automatically generate duplicate
constraint names.
> > A reasonable interpretation of DROP CONSTRAINT "foo" is to drop *all*
> > constraints named "foo" on the target table.
>
> Then it should probably be a good thing to avoid the automatic
> generation of
> duplicate names? I might take a look at that, actually...
>
Bruce Momjian [Wed, 9 May 2001 21:11:26 +0000 (21:11 +0000)]
that's just me again, here's normal patch for KOI8_U to
jdbc/Connection.java
Andy
P.S. in Connection.java if encoding=="WIN" then dbEncoding is set to
"Cp1252".
What if it's Cyrillic "WIN"? Than it should be "Cp1251". Is there any
way to fix that without making different "WIN" encodings in
PostgreSQL?
Bruce Momjian [Wed, 9 May 2001 21:10:39 +0000 (21:10 +0000)]
This patch should catch cases where the types
in referencing and referenced columns of an fk constraint
aren't comparable using '=' at constraint definition time
rather than insert/update time.
Bruce Momjian [Wed, 9 May 2001 19:28:31 +0000 (19:28 +0000)]
Noticed a small bug in the code. Probably been there for some time. Note
that the original code would consider things like UNIX domain sockets are
regular files.