Tom Lane [Sat, 6 Dec 2003 03:00:16 +0000 (03:00 +0000)]
Massive overhaul of pg_dump: make use of dependency information from
pg_depend to determine a safe dump order. Defaults and check constraints
can be emitted either as part of a table or domain definition, or
separately if that's needed to break a dependency loop. Lots of old
half-baked code for controlling dump order removed.
Joe Conway [Wed, 3 Dec 2003 18:52:00 +0000 (18:52 +0000)]
Added new group of read-only GUC variables to allow simple access
to certain compile-time options (FUNC_MAX_ARGS, INDEX_MAX_KEYS,
NAMEDATALEN, BLCKSZ, HAVE_INT64_TIMESTAMP). Also added "category",
"short_desc", and "extra_desc" to the pg_settings view. Per recent
discussion here:
http://archives.postgresql.org/pgsql-patches/2003-11/msg00363.php
Tom Lane [Wed, 3 Dec 2003 17:45:10 +0000 (17:45 +0000)]
Planner failed to be smart about binary-compatible expressions in pathkeys
and hash bucket-size estimation. Issue has been there awhile but is more
critical in 7.4 because it affects varchar columns. Per report from
Greg Stark.
Joe Conway [Tue, 2 Dec 2003 19:26:47 +0000 (19:26 +0000)]
Add a warning to AtEOXact_SPI() to catch cases where the current
transaction has been committed without SPI_finish() being called
first. Per recent discussion here:
http://archives.postgresql.org/pgsql-patches/2003-11/msg00286.php
Bruce Momjian [Mon, 1 Dec 2003 23:19:33 +0000 (23:19 +0000)]
I've run across a pretty serious problem with pg_autovacuum.
pg_autovacuum looses track of any table that's ever been truncated
(possibly other situations too). When i truncate a table it gets a
new relfilenode in pg_class. This is a problem because pg_autovacuum
assumes pg_class.relfilenode will join to pg_stats_all_tables.relid.
pg_stats_all_tables.relid is actallly the oid from pg_class, not the
relfilenode. These two values start out equal so pg_autovacuum works
initially, but it fails later on because of this incorrect assumption.
This patch fixes that problem. Applied to HEAD and 7.4.X.
Bruce Momjian [Mon, 1 Dec 2003 23:13:07 +0000 (23:13 +0000)]
I noticed in the 7.4 release that in contrib/pg_autovacuum, args->logfile is
not initialized if a log file is not specified on the command line. This
causes an immediate segfault on systems that fill allocated memory with some
value other than zero (my FreeBSD machine uses 0xD0).
Several crashes later I discovered that args->user, password, host, and port
are also used without being initialized.
This doesn't appear to be fixed in CVS and I came up empty on a mailing list
search -- hope it hasn't been reported already.
Bruce Momjian [Mon, 1 Dec 2003 23:12:16 +0000 (23:12 +0000)]
The attached patch enables contrib/cube to build cleanly under Cygwin
(again). Please consider this patch for the 7.4.1 branch (if there will
be one) too.
Bruce Momjian [Mon, 1 Dec 2003 22:22:44 +0000 (22:22 +0000)]
Update for patches applied:
< * Change factorial to return a numeric
> * -Change factorial to return a numeric (Gavin) 258c258
< * Allow psql \du to show groups, and add \dg for groups
> * -Allow psql \du to show groups, and add \dg for groups
Tom Lane [Mon, 1 Dec 2003 22:15:38 +0000 (22:15 +0000)]
Avoid assuming that type key_t is 32 bits, since it reportedly isn't
on 64-bit Solaris. Use a non-system-dependent datatype for UsedShmemSegID,
namely unsigned long (which we were already assuming could hold a shmem
key anyway, cf RecordSharedMemoryInLockFile).
Bruce Momjian [Mon, 1 Dec 2003 22:14:40 +0000 (22:14 +0000)]
This patch reduces some unsightly #ifdefs, and fixes two typos in
comments in the psql code. This doesn't make any functional change, so
feel free to save it for 7.5
Bruce Momjian [Mon, 1 Dec 2003 22:11:06 +0000 (22:11 +0000)]
This patch finishes off the work that I did with making view
definitions use pretty printing.
It does:
* Pretty index predicates
* Pretty rule definitions
* Uppercases PRIMARY KEY and UNIQUE to be consistent with CHECK and
FOREIGN KEY
* View rules are improved to match table rules:
Bruce Momjian [Mon, 1 Dec 2003 22:08:02 +0000 (22:08 +0000)]
This patch adds a new GUC var, "default_with_oids", which follows the
proposal for eventually deprecating OIDs on user tables that I posted
earlier to pgsql-hackers. pg_dump now always specifies WITH OIDS or
WITHOUT OIDS when dumping a table. The documentation has been updated.
Bruce Momjian [Mon, 1 Dec 2003 21:59:25 +0000 (21:59 +0000)]
Try to reduce confusion about what is a lock method identifier, a lock
method control structure, or a table of control structures.
. Use type LOCKMASK where an int is not a counter.
. Get rid of INVALID_TABLEID, use INVALID_LOCKMETHOD instead.
. Use INVALID_LOCKMETHOD instead of (LOCKMETHOD) NULL, because
LOCKMETHOD is not a pointer.
. Define and use macro LockMethodIsValid.
. Rename LOCKMETHOD to LOCKMETHODID.
. Remove global variable LongTermTableId in lmgr.c, because it is
never used.
. Make LockTableId static in lmgr.c, because it is used nowhere else.
Why not remove it and use DEFAULT_LOCKMETHOD?
. Rename the lock method control structure from LOCKMETHODTABLE to
LockMethodData. Introduce a pointer type named LockMethod.
. Remove elog(FATAL) after InitLockTable() call in
CreateSharedMemoryAndSemaphores(), because if something goes wrong,
there is elog(FATAL) in LockMethodTableInit(), and if this doesn't
help, an elog(ERROR) in InitLockTable() is promoted to FATAL.
. Make InitLockTable() void, because its only caller does not use its
return value any more.
. Rename variables in lock.c to avoid statements like
LockMethodTable[NumLockMethods] = lockMethodTable;
lockMethodTable = LockMethodTable[lockmethod];
. Change LOCKMETHODID type to uint16 to fit into struct LOCKTAG.
. Remove static variables BITS_OFF and BITS_ON from lock.c, because
I agree to this doubt:
* XXX is a fetch from a static array really faster than a shift?
Bruce Momjian [Mon, 1 Dec 2003 21:52:38 +0000 (21:52 +0000)]
Attached is a patch implementing factorial(), returning numeric. Points
to note:
1) arttype is numeric. I thought this was the best way of allowing
arbitarily large factorials, even though factorial(2^63) is a large
number. Happy to change to integers if this is overkill.
2) since we're accepting numeric arguments, the patch tests for floats.
If a numeric is passed with non-zero decimal portion, an error is raised
since (from memory) they are undefined.
Tom Lane [Mon, 1 Dec 2003 16:53:19 +0000 (16:53 +0000)]
Force zero_damaged_pages to be effectively ON during recovery from WAL,
since there is no need to worry about damaged pages when we are going to
overwrite them anyway from the WAL. Per recent discussion.
Joe Conway [Sun, 30 Nov 2003 20:55:09 +0000 (20:55 +0000)]
Make PQescapeBytea and byteaout consistent with each other, and
octal escape all octets outside the range 0x20 to 0x7e. This fixes
the problem pointed out by Sergey Yatskevich here:
http://archives.postgresql.org/pgsql-bugs/2003-11/msg00140.php
Bruce Momjian [Sun, 30 Nov 2003 03:41:10 +0000 (03:41 +0000)]
Updates:
< manuals (Rory)
> manuals 496c496
< * Jan is Jan Wieck <JanWieck@Yahoo.com> of PeerDirect Corp.
> * Jan is Jan Wieck <JanWieck@Yahoo.com> of Afilias, Inc.
Tom Lane [Sat, 29 Nov 2003 21:40:43 +0000 (21:40 +0000)]
Put out a more useful version indication in the welcome banner for a
standalone backend --- the CVS revision number of postgres.c is not real
useful to anyone.
Joe Conway [Fri, 28 Nov 2003 05:03:02 +0000 (05:03 +0000)]
Fix regression in dblink_disconnect() reported by Eduardo Stern:
persistent_conn was left dangling after a disconnect in the
unnamed connection case, causing a subsequent disconnect to
crash the backend.
Peter Eisentraut [Thu, 27 Nov 2003 19:44:56 +0000 (19:44 +0000)]
Remove possibility to specify an installation root after --with-krbx and
--with-openssl options. This creates too much risk to pick up the wrong
directory accidentally (for example when there are lib64 directories), and
does not really help much with contemporary installation layouts.
Tom Lane [Wed, 26 Nov 2003 20:50:11 +0000 (20:50 +0000)]
Second try at fixing no-room-to-move-down PANIC in compact_fsm_storage.
Ward's report that it can still happen in RC2 forces me to realize that
this is not a can't-happen condition after all, and that the compaction
code had better cope rather than panicking.
Tom Lane [Tue, 25 Nov 2003 23:59:12 +0000 (23:59 +0000)]
Repair subselect.c's occasional assignment of the wrong vartypmod to
Vars created to fill subplan args lists. This is an ancient error, going
back at least to 7.0, but is more easily triggered in 7.4 than before
because we no longer compare varlevelsup when deciding whether a Param
slot can be re-used. Fixes bug reported by Klint Gore.
Tom Lane [Tue, 25 Nov 2003 21:00:54 +0000 (21:00 +0000)]
Get rid of hashkeys field of Hash plan node, since it's redundant with
the hashclauses field of the parent HashJoin. This avoids problems with
duplicated links to SubPlans in hash clauses, as per report from
Andrew Holm-Hansen.
Tom Lane [Mon, 24 Nov 2003 16:54:07 +0000 (16:54 +0000)]
Overdue code review for ALTER SEQUENCE patch. Don't generate illegal Node
tree for CYCLE option; don't assume zeros are invalid values for sequence
fields other than increment_by; don't reset cache_value when not told to;
simplify code for testing whether to apply defaults.
Peter Eisentraut [Mon, 24 Nov 2003 14:52:58 +0000 (14:52 +0000)]
Use --with-docdir to choose installation location of documentation; put
back --infodir, which several automatic build environments expect to exist.
Add --without-docdir to prevent installation of documentation, which is
helpful for things like RPM that have their own method of installing
documentation.
Peter Eisentraut [Mon, 24 Nov 2003 13:16:22 +0000 (13:16 +0000)]
Rename USE_THREADS to ENABLE_THREAD_SAFETY to avoid name clash with Perl.
Fixes compilation failure with --enable-thread-safety --with-perl and Perl
5.6.1.
Tom Lane [Fri, 21 Nov 2003 22:32:49 +0000 (22:32 +0000)]
COMMENT ON casts, conversions, languages, operator classes, and
large objects. Dump all these in pg_dump; also add code to pg_dump
user-defined conversions. Make psql's large object code rely on
the backend for inserting/deleting LOB comments, instead of trying to
hack pg_description directly. Documentation and regression tests added.
Bruce Momjian [Wed, 19 Nov 2003 17:35:40 +0000 (17:35 +0000)]
Mark item as done, update description for 7.5:
< A dash (-) marks changes that will appear in the upcoming 7.4 release.
> A dash (-) marks changes that will appear in the upcoming 7.5 release. 437c437
< * Use background process to write dirty shared buffers to disk
> * -Use background process to write dirty shared buffers to disk
Bruce Momjian [Wed, 19 Nov 2003 17:34:01 +0000 (17:34 +0000)]
Remove items completed in 7.4:
< * -Allow elog() to return error codes, module name, file name, line
< number, not just messages (Tom)
< * -Add error codes (Tom)
< * -Make error messages more consistent
40d35
< * -Add GUC log_statement_and_duration to print statement and >= min duration
51d45
< * -Allow easy display of usernames in a group
53d46
< * -Add start time to pg_stat_activity
55d47
< * -Have standalone backend read postgresql.conf (Tom)
59d50
< * -Allow CIDR format to be used in pg_hba.conf
74d64
< * -Add IPv6 capability to INET/CIDR types
77d66
< * -Change NUMERIC data type to use base 10,000 internally
82d70
< * -Add GUC variables to control floating number output digits (Pedro Ferreira)
90,92d77
< * -Allow current datestyle to restrict dates; prevent month/day swapping
< from making invalid dates valid
< * -Prevent month/day swapping of ISO dates to make invalid dates valid
102d86
< o -Allow arrays to be ORDER'ed
104d87
< o -Support construction of array result values in expressions (Joe) 128d110
< * -Remove Cyrillic recode support
146,147d127
< * -Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
< fails index can't store constant parameters 155d134
< * -Add btree index support for reltime, tinterval, regproc (Tom) 157d135
< * -Certain indexes will not shrink, e.g. indexes on ever-increasing 161d138
< * -Allow LIKE indexing optimization for non-ASCII locales using special index 173d149
< * -Improve concurrency of hash indexes (Tom) 181d156
< * -Allow LIMIT/OFFSET to use expressions (Tom) 187d161
< * -Return proper effected tuple count from complex commands [return] 191d164
< * -Make a transaction-safe TRUNCATE (Rod)
196,197d168
< * -Allow UPDATE to use SET col = DEFAULT
< * -Add config variable to prevent auto-adding missing FROM-clause tables 199d169
< * -Have SELECT '13 minutes'::interval display zero seconds in ISO datestyle
224,225d193
< o -Add ALTER TABLE tab SET WITHOUT OIDS (Rod)
< o -Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values 237d204
< o -Allow CLUSTER to cluster all tables (Alvaro Herrera) 248d214
< o -MOVE 0 should not move to end of cursor (Bruce) 252d217
< o -Allow cursors outside transactions
264,265d228
< o -Allow EXPLAIN EXECUTE to see prepared plans
< o -Allow SHOW of some non-modifiable variables, like pg_controldata 280d242
< o -Allow array declarations and other data types in PL/PgSQL DECLARE
282,283d243
< o -Make PL/PgSQL %TYPE schema-aware
< o -Allow PL/PgSQL to support array element assignment (Joe)
294,298d253
< * -Allow psql to show transaction status if backend protocol changes made
< * -Add schema, cast, and conversion backslash commands to psql (Christopher)
< * -Allow pg_dump to dump a specific schema (Neil Conway)
< * -Allow psql to do table completion for SELECT * FROM schema_part and
< table completion for SELECT * FROM schema_name.
300,302d254
< * -Allow SSL-enabled clients to turn off SSL transfers
< * -Modify pg_get_triggerdef() to take a boolean to pretty-print,
< and use that as part of pg_dump along with psql 327d278
< o -Add SQLSTATE 330d280
< o -Make casts work in variable initializations
334,336d283
< o -Allow multi-threaded use of SQLCA
< o -Understand structure definitions outside a declare section
< o -Allow :var[:index] or :var[<integer>] as cvariable for an array var 356d302
< * -Support statement-level triggers (Neil)
460,461d405
< * -Add checkpoint_min_warning postgresql.conf option to warn about checkpoints
< that are too frequent (Bruce)
472,476d415
< * -Improve Subplan list handling
< * -Allow Subplans to use efficient joins(hash, merge) with upper variable
< * -Add hash for evaluating GROUP BY aggregates (Tom)
< * -Allow merge and hash joins on expressions not just simple variables (Tom)
< * -Make IN/NOT IN have similar performance to EXISTS/NOT EXISTS (Tom) 480d418
< * -Inline simple SQL functions to avoid overhead (Tom) 495d432
< * -Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
511,512d447
< * -Modify regression tests to prevent failures do to minor numeric rounding
< * -Add OpenBSD's getpeereid() call for local socket authentication
537,542d471
< o -Show transaction status in psql
< o -Allow binding of query parameters, support for prepared queries
< o -Remove hard-coded limits on user/db/password names
< o -Remove unused elements of startup packet (unused, tty, passlength)
< o -Fix COPY/fastpath protocol
< o -Error codes 544d472
< o -Special passing of binary values in platform-neutral format (bytea?) 547d474
< o -Report server version number, database encoding, client encoding
Jan Wieck [Wed, 19 Nov 2003 15:55:08 +0000 (15:55 +0000)]
Background writer process
This first part of the background writer does no syncing at all.
It's only purpose is to keep the LRU heads clean so that regular
backends seldom to never have to call write().
Tom Lane [Sun, 16 Nov 2003 20:29:16 +0000 (20:29 +0000)]
Fix datetime input parsing to accept YYYY-MONTHNAME-DD and related syntaxes,
which had been unintentionally broken by recent changes to tighten up the
DateStyle rules for all-numeric date input. Add documentation and
regression tests for this, too.