Bruce Momjian [Mon, 26 Jul 2004 01:48:00 +0000 (01:48 +0000)]
Here is a patch that fixes the pipes used in find_other_exec() when
running as a service on windows <= 2000. Required to make the pg_ctl
service wrapper to work at all.
Tom Lane [Thu, 22 Jul 2004 21:09:37 +0000 (21:09 +0000)]
Add cross-check that current timeline of pg_control is an ancestor of
recovery_target_timeline --- otherwise there is no path from the backup
to the requested timeline. This check was foreseen in the original
discussion but I forgot to implement it.
Tom Lane [Thu, 22 Jul 2004 20:18:40 +0000 (20:18 +0000)]
Add a check on file size as an additional safety check that a WAL file
recovered from archive is not corrupt. It's not much but it will catch
one common problem, viz out-of-disk-space.
Also, force a WAL recovery scan when recovery.conf is present, even if
pg_control shows a clean shutdown. This allows recovery with a tar backup
that was taken with the postmaster shut down, as per complaint from
Mark Kirkwood.
Tom Lane [Thu, 22 Jul 2004 05:28:30 +0000 (05:28 +0000)]
Still another try at automatically detecting the best match in the zic
timezone database for the system behavior we find ourselves in. Scan
backwards from current time and choose the zone that matches furthest
back. As per discussion a week or so back.
Tom Lane [Wed, 21 Jul 2004 22:31:26 +0000 (22:31 +0000)]
Invent WAL timelines, as per recent discussion, to make point-in-time
recovery more manageable. Also, undo recent change to add FILE_HEADER
and WASTED_SPACE records to XLOG; instead make the XLOG page header
variable-size with extra fields in the first page of an XLOG file.
This should fix the boundary-case bugs observed by Mark Kirkwood.
initdb forced due to change of XLOG representation.
Bruce Momjian [Wed, 21 Jul 2004 13:46:44 +0000 (13:46 +0000)]
Mention plpgsql:
< o -Allow parameters to be specified by name and type during definition
> o -Allow PL/pgSQL parameters to be specified by name and type during definition
Bruce Momjian [Mon, 19 Jul 2004 21:39:48 +0000 (21:39 +0000)]
Here is another patch that fixes a stack of pg_dump bugs:
* Fix help text ordering
* Add back --set-session-authorization to pg_dumpall. Updated the docs
for that. Updated help for that.
* Dump ALTER USER commands for the cluster owner ("pgsql"). These are
dumped AFTER the create user and create database commands in case the
permissions to do these have been revoked.
* Dump ALTER OWNER for public schema (because it's possible to change
it). This was done by adding TOC entries for the public schema, and
filtering them out at archiver time. I also save the owner in the TOC
entry just for the public schema.
* Suppress dumping single quotes around schema_path and DateStyle
options when they are set using ALTER USER or ALTER DATABASE. Added a
comment to the steps in guc.c to remind people to update that list.
* Fix dumping in --clean mode against a pre-7.3 server. It just sets
all drop statements to assume the public schema, allowing it to restore
without error.
* Cleaned up text output. eg. Don't output -- Tablespaces comment if
there are none. Same for groups and users.
* Make the commands to DELETE FROM pg_shadow and DELETE FROM pg_group
only be output when -c mode is enabled. I'm not sure why that hasn't
been done before?!?!
This should be good for application asap, after which I will start on
regression dumping 7.0-7.4 databases.
Peter Eisentraut [Sat, 17 Jul 2004 18:53:56 +0000 (18:53 +0000)]
Rename AC_PROG_LD* macros to PGAC_PROG_LD*. This avoids clashes with the
macros provided by the real libtool, when other packages borrow some macros
from PostgreSQL, as in the case of the ODBC driver.
Tom Lane [Sat, 17 Jul 2004 17:28:29 +0000 (17:28 +0000)]
When renaming a column that participates in a foreign key, we must
force relcache rebuild for the other table as well as the column's
own table. Otherwise, already-cached foreign key triggers will stop
working. Per example from Alexander Pravking.
Tom Lane [Sat, 17 Jul 2004 03:32:14 +0000 (03:32 +0000)]
Invent ResourceOwner mechanism as per my recent proposal, and use it to
keep track of portal-related resources separately from transaction-related
resources. This allows cursors to work in a somewhat sane fashion with
nested transactions. For now, cursor behavior is non-subtransactional,
that is a cursor's state does not roll back if you abort a subtransaction
that fetched from the cursor. We might want to change that later.
Bruce Momjian [Fri, 16 Jul 2004 19:18:24 +0000 (19:18 +0000)]
Here is a patch required to build plperl with win32. The issues were:
* perl_useshrplib gets set to "yes" and not to "true". I assume it's set
to "true" on unix, so I left both.
* Need to translate backslashes into slashes
* The linker config coming out of perl was for MSVC and not for mingw
Bruce Momjian [Thu, 15 Jul 2004 15:23:32 +0000 (15:23 +0000)]
> pg_ctl --help
> ---skiped---
> -P user name of account to register PostgreSQL server
> -U password of account to register PostgreSQL server
> ---skiped---
>
> I think that isn't right ;)
Bruce Momjian [Tue, 13 Jul 2004 03:00:17 +0000 (03:00 +0000)]
Change pg_dump to use ALTER OWNER commands instead of SET SESSION
AUTHORIZATION commands by default. Move all GRANT and REVOKE commands
to the end of the dump to avoid restore failures in several situations.
Bring back --use-set-session-authorization option to get previous SET
behaviour
Tom Lane [Tue, 13 Jul 2004 00:06:46 +0000 (00:06 +0000)]
Cause libpq and ecpg libraries to be built as proper shared libraries
(.dylib format) on Mac OS X, while not messing up loadable modules for
the backend (which are the same kind of animal as a shared library on
every other platform, but not here). Also get the naming convention
to match OS X practice, viz libFOO.version.so not libFOO.so.version.
In support of that last, refactor code in Makefile.shlib to make it
easier to have platform-specific shlib naming conventions.
This patch is loosely based on the Fink project's current postgresql.patch.
Tested by yours truly on OS X 10.3.4; does anyone have 10.2.* to check
it on?
Bruce Momjian [Mon, 12 Jul 2004 14:31:04 +0000 (14:31 +0000)]
The attached patch, which incorporates the previous one sent and
currently unapplied regarding spi_internal.c, makes some additional
fixes relating to return types, and also contains the fix for
preventing the use of insecure versions of Safe.pm.
There is one remaing return case that does not appear to work, namely
return of a composite directly in a select, i.e. if foo returns some
composite type, 'select * from foo()' works but 'select foo()' doesn't.
We will either fix that or document it as a limitation.
The function plperl_func_handler is a mess - I will try to get it
cleaned up (and split up) in a subsequent patch, time permitting.
Also, reiterating previous advice - this changes slightly the API for
spi_exec_query - the returned object has either 2 or 3 members: 'status'
(string) and 'proceesed' (int,- number of rows) and, if rows are
returned, 'rows' (array of tuple hashes).
Bruce Momjian [Mon, 12 Jul 2004 14:23:28 +0000 (14:23 +0000)]
> win32 doesn't support a static initializer for mutexes, thus the first
> user must initialize the lock. The problem are concurrent "first" users
> - the pthread_mutex_t initialization must be synchronized.
> The current implementation is broken, the attached patches fixes that:
> mutex_initlock is a spinlock. If the pthread_mutex_t mutex is not
> initialized, then the spinlock is acquired, if the pthread_mutex_t is
> initialized if it's not yet initialized and then the spinlock is dropped.
Bruce Momjian [Mon, 12 Jul 2004 14:11:17 +0000 (14:11 +0000)]
win32 doesn't support a static initializer for mutexes, thus the first
user must initialize the lock. The problem are concurrent "first" users
- the pthread_mutex_t initialization must be synchronized.
The current implementation is broken, the attached patches fixes that:
mutex_initlock is a spinlock. If the pthread_mutex_t mutex is not
initialized, then the spinlock is acquired, if the pthread_mutex_t is
initialized if it's not yet initialized and then the spinlock is
dropped.
Tom Lane [Mon, 12 Jul 2004 05:38:11 +0000 (05:38 +0000)]
Remove TABLESPACE option of CREATE SEQUENCE; sequences will now always
live in database or schema's default tablespace, as per today's discussion.
Also, remove some unused keywords from the grammar (PATH, PENDANT,
VERSION), and fix ALSO, which was added as a keyword but not added
to the keyword classification lists, thus making it worse-than-reserved.
Bruce Momjian [Sun, 11 Jul 2004 23:26:51 +0000 (23:26 +0000)]
This patch fixes a small error in the Porting PL/SQL to PL/pgSQL
section where a instr function parameter is mistyped as varchar. It
works properly when changed to integer.
Tom Lane [Sun, 11 Jul 2004 19:52:52 +0000 (19:52 +0000)]
Move TablespaceCreateDbspace() call into smgrcreate(), which is where it
probably should have been to begin with; this is to cover cases like
needing to recreate the per-db directory during WAL replay.
Also, fix heap_create to force pg_class.reltablespace to be zero instead
of the database's default tablespace; this makes the world safe for
CREATE DATABASE to handle all tables in the default tablespace alike,
as per previous discussion. And force pg_class.reltablespace to zero
when creating a relation without physical storage (eg, a view); this
avoids possibly having dangling references in this column after a
subsequent DROP TABLESPACE.
Tom Lane [Sun, 11 Jul 2004 18:01:45 +0000 (18:01 +0000)]
Rename XLOG_BTREE_NEWPAGE xlog record type into XLOG_HEAP_NEWPAGE, and
shift support code into heapam.c accordingly. This is in service of
soon-to-be-committed ALTER TABLE SET TABLESPACE code that will want to
use this same record type for both heaps and indexes.
Theoretically I should have forced initdb for this, but in practice there
is no change in xlog contents because CVS tip will never really emit this
record type anyhow...