Tom Lane [Tue, 7 Jan 2003 20:56:07 +0000 (20:56 +0000)]
Apply the proper version of Christopher Kings-Lynne's describe patch
(ie, the one with describe-schema support). Minor code review.
Adjust display of casts to use standard type names.
Tom Lane [Tue, 7 Jan 2003 01:19:12 +0000 (01:19 +0000)]
Tweak mdnblocks() to avoid doing lseek() on segments that it has
previously determined not to be the last segment of a relation.
This reduces the expected cost to one seek, rather than one seek per
segment. We can get away with this because truncation of a relation
will cause a relcache flush and so the md.c file descriptor will be
closed; when it is re-opened we will re-determine the last segment.
Bruce Momjian [Mon, 6 Jan 2003 03:18:27 +0000 (03:18 +0000)]
Enable IPv6 connections to the server, and add pg_hba.conf IPv6 entries
if the OS supports it. Code will still compile on non-IPv6-aware
machines (feature added by Bruce).
Tom Lane [Mon, 6 Jan 2003 01:20:40 +0000 (01:20 +0000)]
Add note explaining that a mergejoinable equality operator is now
required if a datatype is to be accepted by GROUP BY, DISTINCT, or
ORDER BY. This is documentation for code changes made pursuant to
pgsql-hackers discussion around 29-Nov-02.
Tom Lane [Sun, 5 Jan 2003 00:56:40 +0000 (00:56 +0000)]
Fix inherited UPDATE for cases where child column numbering doesn't
match parent table. This used to work, but was broken in 7.3 by
rearrangement of code that handles targetlist sorting. Add a regression
test to catch future breakage.
Tom Lane [Sat, 4 Jan 2003 00:46:08 +0000 (00:46 +0000)]
Partial code review for ALTER DOMAIN patch. Incorporates Rod Taylor's
patches of 9-Dec (permissions fix) and 13-Dec (performance) as well as
a partial fix for locking issues: concurrent DROP COLUMN should not
create trouble anymore. But concurrent DROP TABLE is still a risk, and
there is no protection at all against creating a column of a domain while
we are altering the domain.
Tom Lane [Thu, 2 Jan 2003 19:29:22 +0000 (19:29 +0000)]
Enforces NOT NULL constraints to be applied against new PRIMARY KEY
columns in DefineIndex. So, ALTER TABLE ... PRIMARY KEY will now
automatically add the NOT NULL constraint. It appeared the alter_table
regression test wanted this to occur, as after the change the regression
test better matched in inline 'fails'/'succeeds' comments.
Tom Lane [Wed, 1 Jan 2003 21:57:05 +0000 (21:57 +0000)]
fastpath code neglected to check whether user has privileges to call the
target function. Also, move SetQuerySnapshot() call to avoid assert
failure when a fastpath call is attempted in an aborted transaction.
Tom Lane [Wed, 1 Jan 2003 20:35:39 +0000 (20:35 +0000)]
Awhile back I wrote that freebsd.h was probably broken in the places where
it diverged from netbsd.h and openbsd.h. This has now been confirmed.
Accordingly, make all three exactly alike.
Tom Lane [Mon, 30 Dec 2002 22:10:54 +0000 (22:10 +0000)]
Adjust Tcl-related code to compile cleanly with Tcl 8.4 (add const modifiers as
needed). Some desultory const-ification of SPI interface to support this.
Bruce Momjian [Mon, 30 Dec 2002 21:07:26 +0000 (21:07 +0000)]
Attached is a patch to provide makefiles, etc. to allow the compilation
of the libpq interface static and dynamic libraries with the freely
downloadable Borland C++ compiler version 5.5 and/or C++ Builder.
Tom Lane [Mon, 30 Dec 2002 15:21:23 +0000 (15:21 +0000)]
Better solution to integer overflow problem in hash batch-number
computation: reduce the bucket number mod nbatch. This changes the
association between original bucket numbers and batches, but that
doesn't matter. Minor other cleanups in hashjoin code to help
centralize decisions.
Tom Lane [Sun, 29 Dec 2002 22:28:50 +0000 (22:28 +0000)]
Adjust hash table sizing algorithm to avoid integer overflow in
ExecHashJoinGetBatch(). Fixes core dump on large hash joins, as in
example from Rae Stiening.
Bruce Momjian [Tue, 24 Dec 2002 22:06:53 +0000 (22:06 +0000)]
Add developer organizations:
< * Bruce is Bruce Momjian <pgman@candle.pha.pa.us>
< * Christopher is Christopher Kings-Lynne <chriskl@familyhealth.com.au>
< * D'Arcy is D'Arcy J.M. Cain <darcy@druid.net>
> * Bruce is Bruce Momjian <pgman@candle.pha.pa.us> of Software Research Assoc.
> * Christopher is Christopher Kings-Lynne <chriskl@familyhealth.com.au> of
> Family Health Network
> * D'Arcy is D'Arcy J.M. Cain <darcy@druid.net> of The Cain Gang Ltd.
460,461c461,462
< * Fernando Nasser <fnasser@redhat.com>
< * Gavin Sherry <swm@linuxworld.com.au>
> * Fernando Nasser <fnasser@redhat.com> of Red Hat
> * Gavin Sherry <swm@linuxworld.com.au> of Alcove Systems Engineering
464,466c465,467
< * Jan is Jan Wieck <wieck@sapserv.debis.de>
< * Liam is Liam Stewart <liams@redhat.com>
< * Marc is Marc Fournier <scrappy@hub.org>
> * Jan is Jan Wieck <JanWieck@Yahoo.com> of PeerDirect Corp.
> * Liam is Liam Stewart <liams@redhat.com> of Red Hat
> * Marc is Marc Fournier <scrappy@hub.org> of PostgreSQL, Inc.
468,469c469
< * Marko is Marko Kreen <marko@l-t.ee>
< * Michael is Michael Meskes <meskes@postgresql.org>
> * Michael is Michael Meskes <meskes@postgresql.org> of Credativ 472c472
< * Peter M is Peter T Mount <peter@retep.org.uk>
> * Peter M is Peter T Mount <peter@retep.org.uk> of Retep Software 474c474
< * Philip is Philip Warner <pjw@rhyme.com.au>
> * Philip is Philip Warner <pjw@rhyme.com.au> of Albatross Consulting Pty. Ltd. 477d476
< * Ryan is Ryan Bradetich <rbrad@hpb50023.boi.hp.com>
479,483c478,481
< * Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp>
< * Thomas is Thomas Lockhart <lockhart@fourpalms.org>
< * Tom is Tom Lane <tgl@sss.pgh.pa.us>
< * TomH is Tom I Helbekkmo <tih@Hamartun.Priv.no>
< * Vadim is Vadim B. Mikheev <vadim4o@email.com>
> * Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp> of Software Research Assoc.
> * Thomas is Thomas Lockhart <lockhart@fourpalms.org> of Jet Propulsion Labratory
> * Tom is Tom Lane <tgl@sss.pgh.pa.us> of Red Hat
> * Vadim is Vadim B. Mikheev <vadim4o@email.com> of Sector Data
Tom Lane [Sat, 21 Dec 2002 22:45:09 +0000 (22:45 +0000)]
pg_dump should consider information_schema to be a system schema.
Also, tweak -C option (emit CREATE DATABASE command) to emit encoding
name rather than encoding number, for consistency with pg_dumpall
and better cross-version portability.
Tom Lane [Sat, 21 Dec 2002 01:07:07 +0000 (01:07 +0000)]
Fix possible buffer overrun in \d command: substr(..., 128) produces
a result of at most 128 chars, but that could be more than 128 bytes.
Also ensure we don't try to pfree uninitialized pointers during error
cleanup.
A TLS/SSL connection established with these methods will understand the SSLv2,
SSLv3, and TLSv1 protocol. A client will send out SSLv2 client hello messages
and will indicate that it also understands SSLv3 and TLSv1. A server will
understand SSLv2, SSLv3, and TLSv1 client hello messages. This is the best
choice when compatibility is a concern."
This will maintain backwards compatibility for those us that don't use
TLS connections ...
Tom Lane [Wed, 18 Dec 2002 00:14:24 +0000 (00:14 +0000)]
Prevent core dump when ExecMarkPos is called before any tuples have been
retrieved. This cannot happen in ordinary execution, but it can happen
under EvalPlanQual().
Tom Lane [Tue, 17 Dec 2002 01:18:35 +0000 (01:18 +0000)]
To suppress memory leakage in long-lived Lists, lremove() should pfree
the cons cell it's deleting from the list. Do this, and fix a few callers
that were bogusly assuming it wouldn't free the cons cell.
Tom Lane [Mon, 16 Dec 2002 21:30:30 +0000 (21:30 +0000)]
Fix GEQO to work again in CVS tip, by being more careful about memory
allocation in best_inner_indexscan(). While at it, simplify GEQO's
interface to the main planner --- make_join_rel() offers exactly the
API it really wants, whereas calling make_rels_by_clause_joins() and
make_rels_by_clauseless_joins() required jumping through hoops.
Rewrite gimme_tree for clarity (sometimes iteration is much better than
recursion), and approximately halve GEQO's runtime by recognizing that
tours of the forms (a,b,c,d,...) and (b,a,c,d,...) are equivalent
because of symmetry in make_join_rel().
Tom Lane [Mon, 16 Dec 2002 18:39:22 +0000 (18:39 +0000)]
Fix ALTER TABLE ADD COLUMN to disallow the same column types that are
disallowed by CREATE TABLE (eg, pseudo-types); also disallow these types
from being introduced by the range-function syntax. While at it, allow
CREATE TABLE to create zero-column tables, per recent pghackers discussion.
I am back-patching this into 7.3 since failure to disallow pseudo-types
is arguably a security hole.
Tom Lane [Mon, 16 Dec 2002 16:22:46 +0000 (16:22 +0000)]
Code review for palloc0 patch --- avoid dangerous and unnecessary
practice of evaluating MemSet's arguments multiple times, except for
the special case of newNode(), where we can assume the argument is
a constant sizeof() operator.
Also, add GetMemoryChunkContext() to mcxt.c's API, in preparation for
fixing recent GEQO breakage.
Tom Lane [Sun, 15 Dec 2002 21:01:34 +0000 (21:01 +0000)]
Tweak default memory context allocation policy so that a context is not
given any malloc block until something is first allocated in it; but
thereafter, MemoryContextReset won't release that first malloc block.
This preserves the quick-reset property of the original policy, without
forcing 8K to be allocated to every context whether any of it is ever
used or not. Also, remove some more no-longer-needed explicit freeing
during ExecEndPlan.
Tom Lane [Sun, 15 Dec 2002 16:17:59 +0000 (16:17 +0000)]
Revise executor APIs so that all per-query state structure is built in
a per-query memory context created by CreateExecutorState --- and destroyed
by FreeExecutorState. This provides a final solution to the longstanding
problem of memory leaked by various ExecEndNode calls.
Bruce Momjian [Sat, 14 Dec 2002 18:49:37 +0000 (18:49 +0000)]
The actual segfault was caused by a double pfree(), but ISTM that
failing to find pg_hba.conf should be a fatal error anyway, so I
increased the priority of the elog() from LOG to FATAL and refactored
the code a little bit.
Bruce Momjian [Sat, 14 Dec 2002 18:39:14 +0000 (18:39 +0000)]
Ok, I think I've gotten this figured out now. I saw this comment in
pqcomm.c, switched the ERROR logs to COMMERROR logs and it all works.
I've attached a patch to be-secure.c that fixes all my problems.
Tom Lane [Sat, 14 Dec 2002 00:17:59 +0000 (00:17 +0000)]
Clean up plantree representation of SubPlan-s --- SubLink does not appear
in the planned representation of a subplan at all any more, only SubPlan.
This means subselect.c doesn't scribble on its input anymore, which seems
like a good thing; and there are no longer three different possible
interpretations of a SubLink. Simplify node naming and improve comments
in primnodes.h. No change to stored rules, though.
Tom Lane [Fri, 13 Dec 2002 20:35:57 +0000 (20:35 +0000)]
Admit defeat on the prospect of keeping straight exactly which platforms
produce which output in the geometry test, even with the problem narrowed
down to only whether they print minus zero or not. Instead, use
pg_regress' locale-variant mechanism to automatically consider the test
to pass if it matches either supplied comparison file. geometry_1.out
replaces the former geometry-positive-zeros.out.
Tom Lane [Fri, 13 Dec 2002 19:46:01 +0000 (19:46 +0000)]
Phase 3 of read-only-plans project: ExecInitExpr now builds expression
execution state trees, and ExecEvalExpr takes an expression state tree
not an expression plan tree. The plan tree is now read-only as far as
the executor is concerned. Next step is to begin actually exploiting
this property.
Tom Lane [Fri, 13 Dec 2002 17:29:25 +0000 (17:29 +0000)]
Adjust costsize calculations to avoid introducing unnecessary roundoff
error. This seems to explain the differing choice of plan that's been
causing geometry regress test to fail for the last few days.
Bruce Momjian [Fri, 13 Dec 2002 05:36:24 +0000 (05:36 +0000)]
Here's the patch I mentioned on HACKERS to fix up ALTER command tab
completion. Note that it's based on 7.3 tarball, not CVS HEAD, or 7.3rel
branch. Damn, looking at CVS, this will patch into 7.3rel (just tested,
it does) probably collide with Rod Taylor's patch adding ALTER TRIGGER
stuff. O.K, second patch attached against HEAD - not tested, hand
merged.
Bruce Momjian [Thu, 12 Dec 2002 22:49:27 +0000 (22:49 +0000)]
> There is an ugly little problem with the DB wrapper class.
>
> In pg.py the attributes of DB are defined as being the same as
> the attributes of the corresponding pgobject "db", using the following
...
> The problem is that the attributes of db (which are read only)
> are not static (they are actually function calls to PostgreSQL),
> especially "status" and "error", but those attributes are copied
> and this is done only once when initializing the DB object.
>
> So, in effect, only the attribute "db.error" of a DB instance
> will be updated, but not the attribute "error". Same with "status".
> Don't copy the (read only) attributes of the pgobject to the
> DB object, but only the methods, and all of them, like this:
>
> --------------- change in pg.py ------------------
> # Create convience methods, in a way that is still overridable.
> for e in self.db.__methods__:
> setattr(self, e, getattr(self.db, e))
> ----------------------------------------------------
>
> Furthermore, make an addition to the documentation of the
> DB wrapper class (i.e. in pygresql-pg-db.html):
> After the sentence "All pgobject methods are included in this class also."
> add the following sentence "The pgobject read-only attributes can be
> accessed py adding the prefix 'db.' to them."