Tom Lane [Thu, 12 Jul 2001 04:11:13 +0000 (04:11 +0000)]
Create a new HeapTupleSatisfiesVacuum() routine in tqual.c that embodies the
validity checking rules for VACUUM. Make some other rearrangements of the
VACUUM code to allow more code to be shared between full and lazy VACUUM.
Minor code cleanups and added comments for TransactionId manipulations.
Tom Lane [Wed, 11 Jul 2001 19:03:07 +0000 (19:03 +0000)]
Instead of believing SOMAXCONN from the system header files (which is
a lie on many Unixen), invoke listen() with MIN(MaxBackends*2, 10000).
The clamp value 10000 is configurable in config.h.in, if that proves
to be necessary --- hopefully it won't.
Bruce Momjian [Wed, 11 Jul 2001 18:54:19 +0000 (18:54 +0000)]
I updated the patch to use the SET AUTHORIZATION { INVOKER | DEFINER }
terminology. Also, the function owner is now determined and saved at compile
time (no gotchas here, right?)/
Tom Lane [Wed, 11 Jul 2001 18:38:07 +0000 (18:38 +0000)]
Remove direct calls of index_insert(), instead use ExecInsertIndexTuples().
This makes VACUUM work properly with partial indexes, and avoids memory
leakage with functional indexes. Also, suppress complaint about fewer
index tuples than heap tuples when the index is a partial index.
From Martijn van Oosterhout.
Tom Lane [Tue, 10 Jul 2001 22:09:29 +0000 (22:09 +0000)]
Changes from Vince Vielhaber to allow the optional clauses of CREATE
USER and ALTER USER to appear in any order, not only the fixed order
they used to be required to appear in.
Also, some changes from Tom Lane to create a FULL option for VACUUM;
it doesn't do anything yet, but I needed to change many of the same
files to make that happen, so now seemed like a good time.
Peter Eisentraut [Tue, 10 Jul 2001 16:33:02 +0000 (16:33 +0000)]
Support fake root install, separate build dir, dependency tracking, our
choice of compiler and flags, uninstall, and peculiar Python installation
layouts for PyGreSql. Also install into site-packages now, as officially
recommended. And pgdb.py is also installed now, used to be forgotten.
Tom Lane [Tue, 10 Jul 2001 01:41:47 +0000 (01:41 +0000)]
Remove formatter's assumption that year would never exceed four digits.
Enforce MAXTZLEN for all datestyles, not just some. Remove macro
definitions that were redundant with datetime.h.
Tom Lane [Mon, 9 Jul 2001 23:50:32 +0000 (23:50 +0000)]
Fix rule rewriter so that new ordering of ON INSERT actions applies
in cases of qualified rules as well as unqualified ones. Tweak rules
test to avoid cluttering output with dummy SELECT results. Update
documentation to match code.
* NULLs are sorted differently in 7.2
* table correlation names are supported
* GROUP BY, ORDER BY unrelated is supported since 6.4
* ESCAPE/LIKE only supported since 7.1
* outer joins only since 7.1
* preferred term for procedure is "function"
* preferred term for catalog is "database"
* supports SELECT for UPDATE since 6.5
* supports subqueries
* supports UNION; supports UNION ALL since 7.1
* update some of the max lengths to match reality
* rearrange some functions to match the order in the spec
for easier maintenance
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.