Resolve a number of oddities in the Java build. First, remove the weird
redirections between the build files, which didn't work completely. Now
you just go to the directory of your choice and run make. Clean up the
build files to have a logical order, fix the unnecessary rebuilds, prevent
the deleting targets from removing files they're not responsible for. Ant
1.3 does not have a bug. It deletes directories just fine if you follow
the documentation.
Tom Lane [Fri, 6 Jul 2001 21:04:26 +0000 (21:04 +0000)]
Implement LockBufferForCleanup(), which will allow concurrent VACUUM
to wait until it's safe to remove tuples and compact free space in a
shared buffer page. Miscellaneous small code cleanups in bufmgr, too.
Repair libpq to follow protocol by not sending Terminate messages before
the startup exchange is complete. Also make sure that packets defined as
single bytes aren't sent with a trailing '\0'.
Tom Lane [Thu, 5 Jul 2001 19:33:35 +0000 (19:33 +0000)]
Don't assume that max offset number stays fixed on a page when we're
not holding a pin on the page. Use double instead of long to count
rows in relation, so that code still works for > LONG_MAX rows in rel.
Tom Lane [Wed, 4 Jul 2001 17:36:54 +0000 (17:36 +0000)]
Prohibit a column from appearing twice in a PRIMARY KEY or UNIQUE
constraint. This case (a) is useless, (b) violates SQL92, and
(c) is certain to cause a failure downstream when we try to create
an index with duplicated column names. So give an appropriate error
message instead of letting the index failure occur. Per report from
Colin Strickland. NOTE: currently, CREATE INDEX fooi ON foo(f1,f1)
still fails with 'cannot insert duplicate key' error. Should we
change that too? What about functional indexes?
Bruce Momjian [Wed, 4 Jul 2001 15:08:32 +0000 (15:08 +0000)]
This patch moves the setting of the timezone on the SimpleDateFormat
object inside the initialization section instead of doing it everytime
the setTimestamp method is called. Thanks to Dave Harkness for this
suggestion.
Bruce Momjian [Wed, 4 Jul 2001 15:07:54 +0000 (15:07 +0000)]
Attached is a patch to remove the ConnectionHook functionality and thus
the JDK 1.3 dependency. For a further explanation see my posting to the
JDBC list on Friday, explaining why this is being done.
More message munging and localization for pg_dump, especially the
--verbose messages, which had not been considered so far. Output to the
terminal should okay now; comments written into the dump are still English
only, which may or may not be the desirable thing.
Tom Lane [Tue, 3 Jul 2001 16:52:12 +0000 (16:52 +0000)]
Start the stats collector at a less randomly chosen time. Bad idea
to start it before we have acquired the data directory lock; also a
bad idea to start it before we have set up to catch SIGCHLD signals.
Tom Lane [Mon, 2 Jul 2001 20:50:46 +0000 (20:50 +0000)]
First non-stub implementation of shared free space map. It's not super
useful as yet, since its primary source of information is (full) VACUUM,
which makes a concerted effort to get rid of free space before telling
the map about it ... next stop is concurrent VACUUM ...
Tom Lane [Mon, 2 Jul 2001 19:31:52 +0000 (19:31 +0000)]
Update abstime expected results to match post-30-June-2001 reality.
Probably the right fix is to remove 'current' special value entirely,
but I don't want to see regression test failures until that happens.
Tom Lane [Mon, 2 Jul 2001 18:47:18 +0000 (18:47 +0000)]
Make the found-a-buffer-when-we-were-expecting-to-extend-the-rel path
actually work. It had been throwing an Assert as of my recent changes
to bufmgr.c, but was not really right even before that AFAICT.
Tom Lane [Sun, 1 Jul 2001 00:06:23 +0000 (00:06 +0000)]
Under new theory of operation wherein postmaster forks children
immediately, we will fork a child even if the database state does not
permit connections to be accepted (eg, we are in recovery mode).
The child process will correctly reject the connection and exit as
soon as it's finished collecting the connection request message.
However, this means that reaper() must be prepared to see child
process exit signals even while it's waiting for startup or shutdown
process to finish. As was, a connection request arriving during a
database recovery or shutdown would cause postmaster abort.
The System V resources discussed here apply to NetBSD as well. In fact
I just finished changing the GENERIC files and the options(4) man page
on NetBSD to make this clearer.
Peter Eisentraut [Sat, 30 Jun 2001 17:26:12 +0000 (17:26 +0000)]
NLS for the psql \d family of commands. (E.g., the column headers will
have localized strings.) Also, modernize the system catalog queries where
appropriate, e.g., with outer joins.
Tom Lane [Fri, 29 Jun 2001 21:08:25 +0000 (21:08 +0000)]
Further work on connecting the free space map (which is still just a
stub) into the rest of the system. Adopt a cleaner approach to preventing
deadlock in concurrent heap_updates: allow RelationGetBufferForTuple to
select any page of the rel, and put the onus on it to lock both buffers
in a consistent order. Remove no-longer-needed isExtend hack from
API of ReleaseAndReadBuffer.
Tom Lane [Fri, 29 Jun 2001 20:14:27 +0000 (20:14 +0000)]
Fix VACUUM so that it can use pages as move targets even if they do not
have any newly-dead tuples on them. This is a longstanding deficiency
that prevents VACUUM from compacting a file as much as one would expect.
Change requires fixing repair_frag to not assume that fraged_pages is
a subset of vacuum_pages.
Also make some further cleanups of places that assumed page numbers fit
in int and tuple counts fit in uint32.
Tom Lane [Fri, 29 Jun 2001 16:34:30 +0000 (16:34 +0000)]
Fix longstanding error in VACUUM: sometimes would examine a buffer page
after writing/unpinning it. An actual failure is unlikely, unless the
system is tremendously short of buffers ... but a bug is a bug.
Tom Lane [Wed, 27 Jun 2001 23:31:40 +0000 (23:31 +0000)]
Install infrastructure for shared-memory free space map. Doesn't actually
do anything yet, but it has the necessary connections to initialization
and so forth. Make some gestures towards allowing number of blocks in
a relation to be BlockNumber, ie, unsigned int, rather than signed int.
(I doubt I got all the places that are sloppy about it, yet.) On the
way, replace the hardwired NLOCKS_PER_XACT fudge factor with a GUC
variable.
Tom Lane [Mon, 25 Jun 2001 21:11:45 +0000 (21:11 +0000)]
Optimizer can now estimate selectivity of IS NULL, IS NOT NULL,
IS TRUE, etc, with some degree of verisimilitude. Split out
selectivity support functions from builtins.h into a new header
file selfuncs.h, so as to reduce the number of header files builtins.h
must depend on. Fix a few missing inclusions exposed thereby.
From Joe Conway, with some kibitzing from Tom Lane.
Bruce Momjian [Sat, 23 Jun 2001 22:23:49 +0000 (22:23 +0000)]
> Marko Kreen <marko@l-t.ee> writes:
> > secure_ctx changes too. it will be PGC_BACKEND after '-p'.
>
> Oh, okay, I missed that part. Could we see the total state of the
> patch --- ie, a diff against current CVS, not a bunch of deltas?
> I've gotten confused about what's in and what's out.
Ok, here it is. Cleared the ctx comment too - after -p
it will be PGC_BACKEND in any case.
Bruce Momjian [Sat, 23 Jun 2001 02:56:23 +0000 (02:56 +0000)]
Here the latest version and first working release of Ora2Pg a tool to export
Oracle database to PostgreSQL.
It currently dump the database schema (tables, views, sequences,
indexes, grants), with primary, unique and foreign keys into PostgreSQL
syntax without editing the SQL code generated. You can dump only a
particular schema from the Oracle database.
Functions, procedures and triggers with SQL or PLSQL code generated must
be reviewed to match the PostgreSQL syntax. Some usefull recommandation
on porting Oracle to PostgreSQL can be found at
http://techdocs.postgresql.org/
under the "Converting from other Databases to PostgreSQL" Oracle part. I
just
notice one thing more is that the trunc() function in Oracle is the same for
number
or date so be carefull when porting to PostgreSQL to use trunc() for number
and
date_trunc() for date.
I will add more precision in type NUMBER conversion based on length to match
as closest as possible all rich PostgreSQL numerics type. But it seems not to be
urgent as it seems that Oracle DBAs only create number with length 22 (default)
Space seems not to be their problem...
Jan Wieck [Fri, 22 Jun 2001 19:16:24 +0000 (19:16 +0000)]
Statistical system views (yet without the config stuff, but
it's hard to keep such massive changes in sync with the tree
so I need to get it in and work from there now).
Tom Lane [Fri, 22 Jun 2001 00:04:59 +0000 (00:04 +0000)]
Add support to lock manager for conditionally locking a lock (ie,
return without waiting if we can't get the lock immediately).
Not used yet, but will be needed for concurrent VACUUM.
Peter Eisentraut [Wed, 20 Jun 2001 20:25:11 +0000 (20:25 +0000)]
Shared libraries should not be linked explicitly against -lc on FreeBSD
(see http://mail.gnu.org/pipermail/libtool/2000-July/001824.html). But
apparently it should still be present with -Bsymbolic.
Peter Eisentraut [Wed, 20 Jun 2001 18:07:56 +0000 (18:07 +0000)]
Handle reading of startup packet and authentication exchange after forking
a new postmaster child process. This should eliminate problems with
authentication blocking (e.g., ident, SSL init) and also reduce problems
with the accept queue filling up under heavy load.
The option to send elog output to a different file per backend (postgres -o)
has been disabled for now because the initialization would have to happen
in a different order and it's not clear we want to keep this anyway.
Add NUMERICOID to this script. This script can be run occasionally to
make sure that we are using the right #defines in pgmodule.c but the
OIDs are never actually expected to change.
Bruce Momjian [Wed, 20 Jun 2001 00:26:06 +0000 (00:26 +0000)]
Apparently, on some systems, ExtUtils::Embed and MakeMaker are slightly
broken, and its impossible to make a shared library when compiling with
both CCDLFLAGS and LDDLFAGS, you have to pick one or the other.
Bruce Momjian [Wed, 20 Jun 2001 00:04:44 +0000 (00:04 +0000)]
Attached is a patch to deal with the ones that I missed the first time
around. I tested this patch under Cygwin and Linux.
Note that I only changed dblink's Makefile in the most minimal way
to fix the link problem under Cygwin (i.e., use the link rule from
Makefile.shlib instead). dblink's Makefile should probably be further
patched to be consistent with the other PostgreSQL Makefiles.
Tom Lane [Tue, 19 Jun 2001 22:39:12 +0000 (22:39 +0000)]
Add IS UNKNOWN, IS NOT UNKNOWN boolean tests, fix the existing boolean
tests to return the correct results per SQL9x when given NULL inputs.
Reimplement these tests as well as IS [NOT] NULL to have their own
expression node types, instead of depending on special functions.
From Joe Conway, with a little help from Tom Lane.
Tom Lane [Tue, 19 Jun 2001 19:42:16 +0000 (19:42 +0000)]
Clean up some longstanding problems in shared-cache invalidation.
SI messages now include the relevant database OID, so that operations
in one database do not cause useless cache flushes in backends attached
to other databases. Declare SI messages properly using a union, to
eliminate the former assumption that Oid is the same size as int or Index.
Rewrite the nearly-unreadable code in inval.c, and document it better.
Arrange for catcache flushes at end of command/transaction to happen before
relcache flushes do --- this avoids loading a new tuple into the catcache
while setting up new relcache entry, only to have it be flushed again
immediately.