Commit graph

14191 commits

Author SHA1 Message Date
Neil Conway
5bcb851c92 Fix a potential backend crash during authentication when parsing a
malformed ident map file.  This was introduced by the linked list
rewrite in 8.0 -- mea maxima culpa.

Per Coverity static analysis performed by EnterpriseDB.
2005-06-21 01:23:25 +00:00
Tom Lane
7d32f099d7 exec_eval_datum leaks memory when dealing with ROW or REC values.
It never leaked memory before PG 8.0, so none of the callers are
expecting this.  Cleanest fix seems to be to make it allocate the needed
memory in estate->eval_econtext, where it will be cleaned up by
the next exec_eval_cleanup.  Per report from Bill Rugolsky.
2005-06-20 22:51:49 +00:00
Tom Lane
c541ca6403 plpgsql's exec_assign_value() freed the old value of a variable before
copying/converting the new value, which meant that it failed badly on
"var := var" if var is of pass-by-reference type.  Fix this and a similar
hazard in exec_move_row(); not sure that the latter can manifest before
8.0, but patch it all the way back anyway.  Per report from Dave Chapeskie.
2005-06-20 20:44:50 +00:00
Tom Lane
558ff41f27 When using C-string lookup keys in a dynahash.c hash table, use strncpy()
not memcpy() to copy the offered key into the hash table during HASH_ENTER.
This avoids possible core dump if the passed key is located very near the
end of memory.  Per report from Stefan Kaltenbrunner.
2005-06-18 20:51:44 +00:00
Peter Eisentraut
7a91540202 Translation updates 2005-06-17 11:42:02 +00:00
Tom Lane
d9de1bb47a The random selection in function linear() could deliver a value equal to max
if geqo_rand() returns exactly 1.0, resulting in failure due to indexing
off the end of the pool array.  Also, since this is using inexact float math,
it seems wise to guard against roundoff error producing values slightly
outside the expected range.  Per report from bug@zedware.org.
2005-06-14 14:21:23 +00:00
Tatsuo Ishii
8bedb71888 Fix bug in MIC -> EUC_JP conversion. Per Atsushi Ogawa. 2005-06-11 02:46:16 +00:00
Tom Lane
6bbd271a1e Use just NULL not NULL::TEXT --- the latter coding is unnecessary and
not schema-safe.  Per report from Jochem van Dieten.
2005-06-07 14:05:01 +00:00
Tom Lane
2f5b2558d3 Code for SET/SHOW TIME ZONE with a fixed-interval timezone was not
prepared for HAVE_INT64_TIMESTAMP.  Per report from Guillaume Beaudoin.
2005-06-05 01:48:45 +00:00
Tom Lane
543bb05a8b Push enable/disable of notify and catchup interrupts all the way down
to just around the bare recv() call that gets a command from the client.
The former placement in PostgresMain was unsafe because the intermediate
processing layers (especially SSL) use facilities such as malloc that are
not necessarily re-entrant.  Per report from counterstorm.com.
2005-06-02 21:03:46 +00:00
Michael Meskes
53b4a1ce4b Added patch by Gavin Scott <gavin@planetacetech.com> for Intel 64bit hardware.
[One half already was committed with the last commit.]
2005-06-02 12:49:26 +00:00
Michael Meskes
d014a21624 Fixed memory leak in ecpglib by adding some missing free() commands. 2005-06-02 12:37:25 +00:00
Bruce Momjian
7b21f26ea7 Fix log_statement to properly recognize SELECT INTO and CREATE TABLE AS
and DDL statements.

Backpatch fix to 8.0.X.

Per report from Murthy Kambhampaty
2005-06-01 23:27:12 +00:00
Tom Lane
64f40008ec patternsel() was improperly stripping RelabelType from the derived
expressions it constructed, causing scalarineqsel to become confused
if the underlying variable was of a domain type.  Per report from
Kevin Grittner.
2005-06-01 17:05:25 +00:00
Tom Lane
3b3600148d Add test to WAL replay to verify that xl_prev points back to the previous
WAL record; this is necessary to be sure we recognize stale WAL records
when a WAL page was only partially written during a system crash.
2005-05-31 19:10:39 +00:00
Tom Lane
1c69be95f9 expandRTE and get_rte_attribute_type mistakenly always imputed typmod -1
to columns of an RTE that was a function returning RECORD with a column
definition list.  Apparently no one has tried to use non-default typmod
with a function returning RECORD before.
2005-05-29 17:10:35 +00:00
Neil Conway
92525dd6c9 Adjust datetime parsing to be more robust. We now pass the length of the
working buffer into ParseDateTime() and reject too-long input there,
rather than checking the length of the input string before calling
ParseDateTime(). The old method was bogus because ParseDateTime() can use
a variable amount of working space, depending on the content of the
input string (e.g. how many fields need to be NUL terminated). This fixes
a minor stack overrun -- I don't _think_ it's exploitable, although I
won't claim to be an expert.

Along the way, fix a bug reported by Mark Dilger: the working buffer
allocated by interval_in() was too short, which resulted in rejecting
some perfectly valid interval input values. I added a regression test for
this fix.
2005-05-26 02:10:03 +00:00
Peter Eisentraut
9a1a986580 Translation updates 2005-05-25 08:37:22 +00:00
Tatsuo Ishii
afc0e843b9 Fix previous patch to exprTypmod. 2005-05-25 02:17:55 +00:00
Tatsuo Ishii
2a99455ca7 Inserting 5 characters into char(10) does not produce 5 padding spaces
if they are two-byte multibyte characters. Same thing can be happen
if octet_length(multibyte_chars) == n where n is char(n).
Long standing bug since 7.3 days. Per report and fix from Yoshiyuki Asaba.
2005-05-24 23:02:54 +00:00
Tom Lane
a94ace0796 Previous fix for "x FULL JOIN y ON true" failed to handle the case
where there was also a WHERE-clause restriction that applied to the
join.  The check on restrictlist == NIL is really unnecessary anyway,
because select_mergejoin_clauses already checked for and complained
about any unmergejoinable join clauses.  So just take it out.
2005-05-24 18:02:55 +00:00
Neil Conway
6d493ed7f5 Fix typo in PL/Perl Safe.pm initialization that prevented the proper
sharing of %_SHARED. From Andrew Dunstan.
2005-05-23 02:02:52 +00:00
Tom Lane
626be474d3 Guard against duplicate IDs in input file in SortTocFromFile().
Per report from Brian Hackett.
2005-05-17 17:30:41 +00:00
Bruce Momjian
fd4d6853b7 Add -N make flag to bcc builds from /src dir. 2005-05-13 18:13:16 +00:00
Neil Conway
9ac4af6847 Fix bug in COPY CSV mode: handle consecutive embedded newlines in COPY
input. Also add a regression test for this bug. From Andrew Dunstan.
2005-05-13 06:35:25 +00:00
Tom Lane
16379e3ae5 Update release checklist to reflect that HISTORY and INSTALL don't
need to be created by hand anymore.
2005-05-08 23:34:23 +00:00
Tom Lane
d6e30b0ba0 Repair very-low-probability race condition between relation extension
and VACUUM: in the interval between adding a new page to the relation
and formatting it, it was possible for VACUUM to come along and decide
it should format the page too.  Though not harmful in itself, this would
cause data loss if a third transaction were able to insert tuples into
the vacuumed page before the original extender got control back.
2005-05-07 21:32:53 +00:00
Tom Lane
aba1f93e45 Adjust time qual checking code so that we always check TransactionIdIsInProgress
before we check commit/abort status.  Formerly this was done in some paths
but not all, with the result that a transaction might be considered
committed for some purposes before it became committed for others.
Per example found by Jan Wieck.
2005-05-07 21:22:36 +00:00
Tom Lane
17eb867e98 Stamp release 8.0.3. 2005-05-05 20:07:36 +00:00
Tom Lane
266a8975da Make standalone backends ignore pg_database.datallowconn, so that there
is a way to recover from disabling connections to all databases at once.
2005-05-05 19:53:37 +00:00
Bruce Momjian
fbacd7838c Add WSACleanup() for Win32 socket cleanup.
Jason Erickson
2005-05-05 16:36:20 +00:00
Tom Lane
b22bbd6f6e Use postmaster_is_alive() check in pg_ctl restart as well as pg_ctl status,
so that restart doesn't fail when old postmaster died unbetimes.
2005-05-04 22:35:22 +00:00
Tom Lane
32083d2a5c Spell DELIMITER correctly, per Seamus Dean. 2005-05-04 14:25:30 +00:00
Tom Lane
4afab9639a Alter the signature for encoding conversion functions to declare the
output area as INTERNAL not CSTRING.  This is to prevent people from
calling the functions by hand.  This is a permanent solution for the
back branches but I hope it is just a stopgap for HEAD.
2005-05-03 19:18:16 +00:00
Tom Lane
298e077bc4 Change tsearch2 to not use the unsafe practice of creating functions
that return INTERNAL without also having INTERNAL arguments.  Since the
functions in question aren't meant to be called by hand anyway, I just
redeclared them to take 'internal' instead of 'text'.  Also add code
to ProcedureCreate() to enforce the restriction, as I should have done
to start with :-(
2005-05-03 16:51:22 +00:00
Dennis Bjorklund
d0069f5a71 Fix a whitespace problem. From Alvaro Herrera. 2005-05-03 06:28:24 +00:00
Tom Lane
50433d6533 Make record_out and record_send extract type information from the passed
record object itself, rather than relying on a second OID argument to be
correct.  This patch just changes the function behavior and not the
catalogs, so it's OK to back-patch to 8.0.  Will remove the now-redundant
second argument in pg_proc in a separate patch in HEAD only.
2005-04-30 20:04:46 +00:00
Neil Conway
757956ec47 GCC 4.0 includes a new warning option, -Wformat-literal, that emits
a warning when a variable is used as a format string for printf()
and similar functions (if the variable is derived from untrusted
data, it could include unexpected formatting sequences). This
emits too many warnings to be enabled by default, but it does
flag a few dubious constructs in the Postgres tree. This patch
fixes up the obvious variants: functions that are passed a variable
format string but no additional arguments.

Most of these are harmless (e.g. the ruleutils stuff), but there
is at least one actual bug here: if you create a trigger named
"%sfoo", pg_dump will read uninitialized memory and fail to dump
the trigger correctly.
2005-04-30 08:19:44 +00:00
Neil Conway
7ce01797bd This patch fixes a bug in the error message emitted by pg_restore on an
incorrect -F argument: write_msg() expects its first parameter to be a
"module name", not the format string.
2005-04-30 08:00:14 +00:00
Bruce Momjian
f22b3b2760 Improve cleanup from win32 client-only build. 2005-04-29 14:07:34 +00:00
Bruce Momjian
5f9d19cc23 Backpatch BCC compile changes to 8.0.X for psql. 2005-04-29 13:42:24 +00:00
Bruce Momjian
95cb42b968 Fix Borland makefile for libpq and improve it for psql.
Reorder MSC makefile to be more consistent and easier to maintain.
2005-04-29 04:21:39 +00:00
Tom Lane
582dcae7e8 Repair two TIME WITH TIME ZONE bugs found by Dennis Vshivkov. Comparison
of timetz values misbehaved in --enable-integer-datetime cases, and
EXTRACT(EPOCH) subtracted the zone instead of adding it in all cases.
Backpatch to all supported releases (except --enable-integer-datetime code
does not exist in 7.2).
2005-04-23 22:53:26 +00:00
Tom Lane
1275ad5056 Make pg_ctl status do a kill() test to verify that the PID found in
postmaster.pid still represents a live postmaster.
2005-04-20 23:10:22 +00:00
Tom Lane
eecc92564d Don't try to run clauseless index scans on index types that don't support
it.  Per report from Marinos Yannikos.
2005-04-20 21:48:12 +00:00
Tom Lane
25bd3019e0 Fix mis-display of negative fractional seconds in interval values for
--enable-integer-datetimes case.  Per report from Oliver Siegmar.
2005-04-20 17:14:58 +00:00
Tom Lane
92645c42c8 pg_dumpall should enforce the server version check for itself, rather
than simply passing it down to pg_dump.  Else, version-related failures
in pg_dumpall itself generate unhelpful error messages.
2005-04-18 23:48:01 +00:00
Tom Lane
1186365c3c record_in and record_recv must be careful to return a separately
pfree'able result, since some callers expect to be able to pfree
the result of a pass-by-reference function.  Per report from Chris Trawick.
2005-04-18 17:11:15 +00:00
Bruce Momjian
96d61bc163 Fix comment typo. 2005-04-15 22:49:45 +00:00
Tom Lane
beb9e2ef34 Revert addition of poorly-thought-out DUMP TIMESTAMP archive entry,
which induced bug #1597 in addition to having several other misbehaviors
(like labeling the dump with a completion time having nothing to do with
reality).  Instead just print out the desired strings where RestoreArchive
was already emitting the 'PostgreSQL database dump' and
'PostgreSQL database dump complete' strings.
2005-04-15 16:40:59 +00:00
Tom Lane
69cb5acf62 Make equalTupleDescs() compare attlen/attbyval/attalign rather than
assuming comparison of atttypid is sufficient.  In a dropped column
atttypid will be 0, and we'd better check the physical-storage data
to make sure the tupdescs are physically compatible.
I do not believe there is a real risk before 8.0, since before that
we only used this routine to compare successive states of the tupdesc
for a particular relation.  But 8.0's typcache.c might be comparing
arbitrary tupdescs so we'd better play it safer.
2005-04-14 22:35:12 +00:00
Tom Lane
59974b0e0a Don't try to constant-fold functions returning RECORD, since the optimizer
isn't presently set up to pass them an expected tuple descriptor.  Bug has
been there since 7.3 but was just recently reported by Thomas Hallgren.
2005-04-14 21:44:22 +00:00
Michael Meskes
c61d1c95ea Added patch by Philip Yarra <philip.yarra@internode.on.net> for a bug in thread support. 2005-04-14 10:09:20 +00:00
Tom Lane
fa57fd1c0a Fix interaction between materializing holdable cursors and firing
deferred triggers: either one can create more work for the other,
so we have to loop till it's all gone.  Per example from andrew@supernews.
Add a regression test to help spot trouble in this area in future.
2005-04-11 19:51:32 +00:00
Tom Lane
add2c3f4d6 PersistHoldablePortal must establish the correct value for ActiveSnapshot
while completing execution of the cursor's query.  Otherwise we get wrong
answers or even crashes from non-volatile functions called by the query.
Per report from andrew@supernews.
2005-04-11 15:59:47 +00:00
Tom Lane
88b229d907 Make constant-folding produce sane output for COALESCE(NULL,NULL),
that is a plain NULL and not a COALESCE with no inputs.  Fixes crash
reported by Michael Williamson.
2005-04-10 20:57:45 +00:00
Tom Lane
c8814f4840 SQL functions returning pass-by-reference types were copying the results
into the wrong memory context, resulting in a query-lifespan memory leak.
Bug is new in 8.0, I believe.  Per report from Rae Stiening.
2005-04-10 18:04:31 +00:00
Tom Lane
7dbded2c9c Stamp 8.0.2. 2005-04-07 19:43:06 +00:00
Tom Lane
b93529f232 In cost_mergejoin, the early-exit effect should not apply to the
outer side of an outer join.  Per andrew@supernews.
2005-04-04 01:43:23 +00:00
Peter Eisentraut
774cdb9159 Translation updates 2005-04-02 18:45:19 +00:00
Peter Eisentraut
5b7ef0daa7 Translation updates 2005-04-02 15:54:57 +00:00
Tom Lane
f0aa94f5d8 Second try at making examine_variable and friends behave sanely in
cases with binary-compatible relabeling.  My first try was implicitly
assuming that all operators scalarineqsel is used for have binary-
compatible datatypes on both sides ... which is very wrong of course.
Per report from Michael Fuhr.
2005-04-01 20:32:09 +00:00
Bruce Momjian
cc20233a81 Fix wrong week returnded by date_trunc('week') for early dates in
January --- would return wrong year for 2005-01-01 and 2006-01-01.

per report from Robert Creager.

Backpatch to 8.0.X.
2005-04-01 14:25:39 +00:00
Tom Lane
ab6853e0b3 Flush any remaining statistics counts out to the collector at process
exit.  Without this, operations triggered during backend exit (such as
temp table deletions) won't be counted ... which given heavy usage of
temp tables can lead to pg_autovacuum falling way behind on the need
to vacuum pg_class and pg_attribute.  Per reports from Steve Crawford
and others.
2005-03-31 23:21:09 +00:00
Peter Eisentraut
5530877add Translation updates 2005-03-31 18:14:25 +00:00
Tom Lane
90ce397ad6 Fix a pair of related issues with estimation of inequalities that involve
binary-compatible relabeling of one or both operands.  examine_variable
should avoid stripping RelabelType from non-variable expressions, so that
they will continue to have the correct type; and convert_to_scalar should
just use that type and ignore the other input type.  This isn't perfect
but it beats failing entirely.  Per example from Michael Fuhr.
2005-03-26 20:55:58 +00:00
Bruce Momjian
d4f727808f Make additional stamps for 8.0.2. 2005-03-26 05:05:23 +00:00
PostgreSQL Daemon
507fc3c554 Tag for 8.0.2beta1 2005-03-26 03:46:33 +00:00
Tom Lane
9b31b4ac29 Add Windows-specific variant comparison file. 2005-03-26 03:38:11 +00:00
Tom Lane
cc31f7e7f4 Add another ORDER BY to rules test to eliminate platform-specific
output ordering.
2005-03-26 02:14:54 +00:00
Tom Lane
209bc96ff6 Prevent to_char(interval) from dumping core on month-related formats
when a zero-month interval is given.  Per discussion with Karel.
Also, some desultory const-labeling of constant tables.  More could be
done along that line.
2005-03-26 00:41:45 +00:00
Tom Lane
869825c4f2 Remove lazy_update_relstats; go back to having VACUUM just record the
actual number of unremoved tuples as pg_class.reltuples.  The idea of
trying to estimate a steady state condition still seems attractive, but
this particular implementation crashed and burned ...
2005-03-25 22:51:42 +00:00
Bruce Momjian
7751c06852 Have libpgport link before libpq so that PG client applications are more
immunte to changes in libpq's usage of pgport between major versions.

Backpatch to 8.0.X.
2005-03-25 18:18:41 +00:00
Tom Lane
42a00ef3b8 Fix two bugs in change_owner_recurse_to_sequences: it was grabbing an
overly strong lock on pg_depend, and it wasn't closing the rel when done.
The latter bug was masked by the ResourceOwner code, which is something
that should be changed.
2005-03-25 18:04:47 +00:00
Tom Lane
f87592fce7 Add missing min/max parameters to DefineCustomIntVariable() and
DefineCustomRealVariable().  Thomas Hallgren
2005-03-25 16:17:39 +00:00
Tom Lane
88f07b183f Fix to_date to behave reasonably when CC and YY fields are both used.
Karel Zak
2005-03-25 16:08:50 +00:00
Tom Lane
8416036f5f Kerberos fixes from Magnus Hagander --- in theory Kerberos 5 auth
should work on Windows now.  Also, rename set_noblock to pg_set_noblock;
since it is included in libpq, the former name polluted application
namespace.
2005-03-25 00:35:20 +00:00
Tom Lane
cb2a2fd8d0 Revert ill-conceived change of libpq linkage --- breaks ecpg. 2005-03-24 23:54:01 +00:00
Tom Lane
e1fc33969a array_map can't use the fn_extra field of the provided fcinfo struct as
its private storage, because that belongs to the function that it is
supposed to call.  Per report from Ezequiel Tolnay.
2005-03-24 21:50:52 +00:00
Bruce Momjian
d5595f986d Force PG client applications to link to non-shared libpgport before
linking to libpq.  This insulates applications from changes in libpq's
usage of libpgport functions.

Backpatched to 8.0.X.
2005-03-24 19:33:40 +00:00
Tom Lane
b741e9d419 Tweak planner to use a minimum size estimate of 10 pages for a
never-yet-vacuumed relation.  This restores the pre-8.0 behavior of
avoiding seqscans during initial data loading, while still allowing
reasonable optimization after a table has been vacuumed.  Several
regression test cases revert to 7.4-like behavior, which is probably
a good sign.  Per gripes from Keith Browne and others.
2005-03-24 19:15:11 +00:00
Tom Lane
dd0702a399 Fix python regression testing script to bail out early if language
creation fails ... no point in running the tests.
2005-03-24 17:23:39 +00:00
Tom Lane
35411a878b Adjust plpython to convert \r\n and \r to \n in Python scripts,
per recent discussion concluding that this is the Right Thing.  Add
regression test check for this behavior.  Michael Fuhr
2005-03-24 17:22:44 +00:00
Bruce Momjian
291cd954fb Change Win32 O_SYNC method to O_DSYNC because that is what the method
currently does.  This is now the default Win32 wal sync method because
we perfer o_datasync to fsync.

Also, change Win32 fsync to a new wal sync method called
fsync_writethrough because that is the behavior of _commit, which is
what is used for fsync on Win32.

Backpatch to 8.0.X.
2005-03-24 04:37:07 +00:00
Tom Lane
3781b72c22 Add missing error checking in readdir() loops. 2005-03-24 02:11:33 +00:00
Tom Lane
5869e883ee WAL must log CREATE and DROP DATABASE operations *without* using any
explicit paths, so that the log can be replayed in a data directory
with a different absolute path than the original had.  To avoid forcing
initdb in the 8.0 branch, continue to accept the old WAL log record
types; they will never again be generated however, and the code can be
dropped after the next forced initdb.  Per report from Oleg Bartunov.
We still need to think about what it really means to WAL-log CREATE
TABLESPACE commands: we more or less have to put the absolute path
into those, but how to replay in a different context??
2005-03-23 00:04:25 +00:00
Tom Lane
1cef5beeea Fix quote_ident to use quote_identifier rather than its own, not quite
up-to-speed logic; in particular this will cause it to quote names that
match keywords.  Remove unnecessary multibyte cruft from quote_literal
(all backend-internal encodings are 8-bit-safe).
2005-03-21 16:29:31 +00:00
Tom Lane
8ae13aac52 Put 'dump complete' message in the right place, so it comes out where
it's supposed to when --file option is used.
2005-03-18 17:33:03 +00:00
Tom Lane
817bc021b7 Need to reset local buffer pin counts, not only shared buffer pins,
before we attempt any file deletions in ShutdownPostgres.  Per Tatsuo.
2005-03-18 16:16:20 +00:00
Michael Meskes
fc80f5fe73 Added patch by Christof Petig <christof@petig-baender.de> to work around gcc bug on powerpc and amd64. 2005-03-18 10:01:14 +00:00
Tom Lane
b03072571e Need to release buffer pins before attempting to drop files during
backend exit.  Per report from Bruce.
2005-03-18 05:24:24 +00:00
Tom Lane
bcfe5088e5 Treat EPERM as a non-error case when checking to see if old postmaster
is still alive.  This improves our odds of not getting fooled by an
unrelated process when checking a stale lock file.  Other checks already
in place, plus one newly added in checkDataDir(), ensure that we cannot
attempt to usurp the place of a postmaster belonging to a different userid,
so there is no need to error out.  Add comments indicating the importance
of these other checks.
2005-03-18 03:49:19 +00:00
Bruce Momjian
7911e3a081 Backpatch to 8.0.X, already in HEAD:
Allow Win32 to support the O_SYNC open flag as an wal_sync_method
method.
2005-03-17 17:28:59 +00:00
Bruce Momjian
89ea098714 Add missing include for new lc_ctype_is_c() function.
Per Neil.
2005-03-16 01:49:20 +00:00
Bruce Momjian
fb2c2d83e0 Prevent locale-aware handling of upper, lower, and initcap when the
locale is C.

Backpatch to 8.0.X because some operating systems were throwing errors
for such operations, rather than ignoring the locale when it was C.
2005-03-16 00:03:02 +00:00
Bruce Momjian
f38cb720d9 Increment all major version numbers in 8.0.X to force recompile of
client aplications so 7.4.X releases can be installed on the same
machine as 8.0.X.
2005-03-13 22:04:45 +00:00
Tom Lane
b3dbaab1e9 Fix ALTER DATABASE RENAME to allow the operation if user is a superuser
who for some reason isn't marked usecreatedb.  Per report from Alexander
Pravking.  Also fix sloppy coding in have_createdb_privilege().
2005-03-12 21:12:05 +00:00
Tom Lane
bdcf632d62 Fix problem with infinite recursion between write_syslogger_file and
elog if the former has trouble writing its file.  Code review for
Magnus' patch to redirect stderr to syslog on Windows (Bruce's version
seems right, but did some minor prettification).

Backpatch both changes to 8.0 branch.
2005-03-12 01:55:15 +00:00
Bruce Momjian
30854a53fe Properly implement "Response files" for bcc. Add URL's to describe the
feature for Win32 and bcc.
2005-03-07 21:11:07 +00:00
Tom Lane
4e8af8d273 Replace ARC cache management algorithm with the similar but slightly
simpler 2Q algorithm, to avoid possible problems with the pending patent
on ARC.  Testing so far suggests that there is little if any performance
loss from doing this.

Note that this patch is going into the 8.0 branch only; a much more
extensive revision is planned for HEAD.
2005-03-03 16:47:43 +00:00