Bruce Momjian [Thu, 27 Jul 2000 19:44:01 +0000 (19:44 +0000)]
Here is a bug and patch to fix it. I have tested this bug and fix on
FreeBSD/Intel and DecUX/Alpha machines. The bug appears in postgresql
6.5.3 and 7.0.2. Can someone please review it and apply it to the
source tree?
Sometimes when the postgres connection dies it is necessary to
attempt to reconnect. Calling the pgconnection::Connect method in a
derived class leaks memory because it does not clear the current
connection (if there is one). These patches ensures that any open
connections are closed before attempting to open a new one.
Tom Lane [Wed, 26 Jul 2000 23:46:22 +0000 (23:46 +0000)]
When dealing with OR-of-ANDs quals, extract multiple subclauses of an AND
to use with a multiple-key index. Formerly we would only extract clauses
that had to do with the first key of the index, which was correct but
didn't exploit the index fully.
Tom Lane [Tue, 25 Jul 2000 23:43:38 +0000 (23:43 +0000)]
ExecRestrPos() really needs to raise ERROR, not a wimpy DEBUG message,
if given a node type it doesn't support. As is, wrong results from a
mergejoin would go undetected.
Tom Lane [Tue, 25 Jul 2000 20:17:02 +0000 (20:17 +0000)]
Fix confusion between sizeof(long) and sizeof(long*), as well as
failure to MAXALIGN the start of shmem allocable space. No reports
of trouble here, just compulsive tidiness.
Tom Lane [Tue, 25 Jul 2000 04:47:59 +0000 (04:47 +0000)]
Clean up and document btree code for ordering keys. Neat stuff,
actually, but who could understand it with no comments? Fix bug
while at it: _bt_orderkeys would try to invoke comparisons on
NULL inputs, given the right sort of redundant quals.
Tom Lane [Mon, 24 Jul 2000 03:11:01 +0000 (03:11 +0000)]
Deduce equality constraints that are implied by transitivity of
mergejoinable qual clauses, and add them to the query quals. For
example, WHERE a = b AND b = c will cause us to add AND a = c.
This is necessary to ensure that it's safe to use these variables
as interchangeable sort keys, which is something 7.0 knows how to do.
Should provide a useful improvement in planning ability, too.
Tom Lane [Sun, 23 Jul 2000 01:36:05 +0000 (01:36 +0000)]
Further cleanup of array behavior. Slice assignments to arrays with
varlena elements work now. Allow assignment to previously-nonexistent
subscript position to extend array, but only for 1-D arrays and only
if adjacent to existing positions (could do more if we had a way to
represent nulls in arrays, but I don't want to tackle that now).
Arrange for assignment of NULL to an array element in UPDATE to be a
no-op, rather than setting the entire array to NULL as it used to.
(Throwing an error would be a reasonable alternative, but it's never
done that...) Update regress test accordingly.
Tom Lane [Sat, 22 Jul 2000 06:19:04 +0000 (06:19 +0000)]
Make update lists like 'UPDATE tab SET foo[1] = bar, foo[3] = baz'
work as expected. THe underlying implementation is essentially
'SET foo = array_set(foo, 1, bar)', so we have to turn the items
into nested invocations of array_set() to make it work correctly.
Side effect: we now complain about 'UPDATE tab SET foo = bar, foo = baz'
which is illegal per SQL92 but we didn't detect it before.
Tom Lane [Sat, 22 Jul 2000 03:34:43 +0000 (03:34 +0000)]
Arrays are toastable. (At least if you initdb, which I didn't force.)
Remove a bunch of crufty code for large-object-based arrays, which is
superseded by TOAST and likely hasn't worked in a long time anyway.
Clean up array code a little, and in particular eliminate its habit
of scribbling on the input array (ie, modifying the input tuple :-().
Tom Lane [Fri, 21 Jul 2000 22:14:09 +0000 (22:14 +0000)]
Further cleanup of btbuild (CREATE INDEX). Avoid storing unneeded
left keys during bottom-up index build, and leave some free space
instead of packing the pages to the brim (so as to avoid vast numbers
of page splits during the first interactive insertions).
Tom Lane [Fri, 21 Jul 2000 19:21:00 +0000 (19:21 +0000)]
Fix sloppiness about alignment requirements in findsplitloc() space
calculation, also make it stop when it has a 'good enough' split instead
of exhaustively trying all split points.
Philip Warner [Fri, 21 Jul 2000 11:43:26 +0000 (11:43 +0000)]
- Support for TAR output
- Support for BLOB output from pg_dump and input via pg_restore
- Support for direct DB connection in pg_restore
- Fixes in support for --insert flag
- pg_dump now outputs in modified OID order
Philip Warner [Fri, 21 Jul 2000 11:40:08 +0000 (11:40 +0000)]
- Support for BLOB output from pg_dump and input via pg_restore
- Support for direct DB connection in pg_restore
- Fixes in support for --insert flag
- pg_dump now outputs in modified OID order
- various other bug fixes
Jan Wieck [Fri, 21 Jul 2000 10:31:31 +0000 (10:31 +0000)]
Temporary fix to make TOAST vacuum-safe. All values are forced to be
in memory (plain or compressed) in the tuple returned from the heap-am.
So no index will ever contain an external reference.
Tom Lane [Fri, 21 Jul 2000 06:42:39 +0000 (06:42 +0000)]
Major overhaul of btree index code. Eliminate special BTP_CHAIN logic for
duplicate keys by letting search go to the left rather than right when an
equal key is seen at an upper tree level. Fix poor choice of page split
point (leading to insertion failures) that was forced by chaining logic.
Don't store leftmost key in non-leaf pages, since it's not necessary.
Don't create root page until something is first stored in the index, so an
unused index is now 8K not 16K. (Doesn't seem to be as easy to get rid of
the metadata page, unfortunately.) Massive cleanup of unreadable code,
fix poor, obsolete, and just plain wrong documentation and comments.
See src/backend/access/nbtree/README for the gory details.
Peter Eisentraut [Wed, 19 Jul 2000 16:30:27 +0000 (16:30 +0000)]
Add distprep target to take some of the job of the release_prep script.
The latter updated accordingly. Also add `dist' and `distcheck' targets
to play with, but caveat packager.
Updated backend/bootstrap and backend/parser makefile to make them
marginally builddir aware and fix the usual set of things.
Add rule to automatically remake config.h dependent on config.h.in and
config.status. (Adopted from Autoconf manual and about every other
package.) On a good day we should now have a complete and accurate set
of dependencies throughout everything.
Jan Wieck [Wed, 19 Jul 2000 11:53:02 +0000 (11:53 +0000)]
Added untrusted PL/TclU (pltclu) language. Executes all procedures
in a non-safe interpreter, so with full OS access! Language is
restricted to be used by DB superusers.
Added "argisnull n" and "return_null" commands to gain full control
over NULL values from new FMGR capabilities.
Tom Lane [Tue, 18 Jul 2000 05:02:19 +0000 (05:02 +0000)]
Add an opr_sanity check for misdefined aggregates that have transition
type different from input type but are expecting ExecAgg to insert the
first non-null input as the starting transition value. This has always
been verboten, but wasn't checked for until now...
Tom Lane [Tue, 18 Jul 2000 04:45:59 +0000 (04:45 +0000)]
Update pltcl regress test's expected output for 7.0 psql output format.
NOTE: this implementation of tcl_avg() fails with 'divide by zero'
for zero input rows. It ought to return NULL, but pltcl does not
currently provide a way to do that, so I'm leaving the problem unsolved
for now.
Peter Eisentraut [Mon, 17 Jul 2000 22:31:59 +0000 (22:31 +0000)]
End users shouldn't have to invoke a separate command to install the
documentation. Therefore it's now installed by default. If there is no
documentation to be found (i.e., you are not using the distribution)
then this step is skipped.
Add --docdir option to configure to control installation directory.
Tom Lane [Mon, 17 Jul 2000 04:35:55 +0000 (04:35 +0000)]
I concur with Andreas: unconditionally including <sys/fcntl.h> is not
portable. Seems to have been added for O_BINARY, which is only needed
for __CYGWIN32__, so include it here only in that case.
Tom Lane [Mon, 17 Jul 2000 03:05:41 +0000 (03:05 +0000)]
Revise aggregate functions per earlier discussions in pghackers.
There's now only one transition value and transition function.
NULL handling in aggregates is a lot cleaner. Also, use Numeric
accumulators instead of integer accumulators for sum/avg on integer
datatypes --- this avoids overflow at the cost of being a little slower.
Implement VARIANCE() and STDDEV() aggregates in the standard backend.
Also, enable new LIKE selectivity estimators by default. Unrelated
change, but as long as I had to force initdb anyway...
Bruce Momjian [Sun, 16 Jul 2000 19:27:29 +0000 (19:27 +0000)]
Hmm. I didn't expect a change since I hadn't added tests for the new
stuff, but fixing the bug that existed in reporting the constraint name
changes the error line. Patch to expected output enclosed.