Tom Lane [Tue, 17 Aug 2004 18:47:09 +0000 (18:47 +0000)]
Standardize on the assumption that the arguments of a RowExpr correspond
to the physical layout of the rowtype, ie, there are dummy arguments
corresponding to any dropped columns in the rowtype. We formerly had a
couple of places that did it this way and several others that did not.
Fixes Gaetano Mendola's "cache lookup failed for type 0" bug of 5-Aug.
Bruce Momjian [Tue, 17 Aug 2004 17:14:56 +0000 (17:14 +0000)]
Add:
< * -Allow savepoints / nested transactions [transactions] (Alvaro)
> * -Allow savepoints / nested transactions (Alvaro) 348a349,353
> * Add an option to automatically use savepoints for each statement in a
> multi-statement transaction.
>
> When enabled, this would allow errors in multi-statement transactions
> to be automatically ignored.
Tom Lane [Tue, 17 Aug 2004 04:24:23 +0000 (04:24 +0000)]
Fix linking problem when enabling thread safety on Darwin: uninitialized
global variables are problematic on this platform. Simplest solution
seems to be to initialize pthread key variable to 0. Also, rename this
variable and check_sigpipe_handler to something involving "pq" to
avoid gratuitous pollution of application namespace.
Bruce Momjian [Mon, 16 Aug 2004 04:38:46 +0000 (04:38 +0000)]
Add:
> * Set proper permissions on non-system schemas during db creation
>
> Currently all schemas are owned by the super-user because they are
> copied from the template1 database.
>
Tom Lane [Sun, 15 Aug 2004 23:44:46 +0000 (23:44 +0000)]
Dept. of further reflection: I looked around to see if any other callers
of XLogInsert had the same sort of checkpoint interlock problem as
RecordTransactionCommit, and indeed I found some. Btree index build
and ALTER TABLE SET TABLESPACE write data outside the friendly confines
of the buffer manager, and therefore they have to take their own
responsibility for checkpoint interlock. The easiest solution seems to
be to force smgrimmedsync at the end of the index build or table copy,
even when the operation is being WAL-logged. This is sufficient since
the new index or table will be of interest to no one if we don't get
as far as committing the current transaction.
Tom Lane [Sun, 15 Aug 2004 17:03:36 +0000 (17:03 +0000)]
Xmin calculations should consider only top transaction IDs, and
therefore starting with GetCurrentTransactionId is wrong. Fixes
miscomputation of RecentGlobalXmin leading to bizarre behavior
reported by Gavin Sherry.
Tom Lane [Sat, 14 Aug 2004 22:18:23 +0000 (22:18 +0000)]
Add discussion and example about predicate locking and why "serializable"
mode isn't really serializable. I had thought this was covered already
in our docs, but I sure can't find it.
Bruce Momjian [Sat, 14 Aug 2004 01:30:49 +0000 (01:30 +0000)]
Add:
>
> * Allow buffered WAL writes and fsync
>
> Instead of guaranteeing recovery of all committed transactions, this
> would provide improved performance by delaying WAL writes and fsync
> so an abrupt operating system restart might lose a few seconds of
> committed transactions but still be consistent. We could perhaps
> remove the 'fsync' parameter (which results in an an inconsistent
> database) in favor of this capability.
Tom Lane [Fri, 13 Aug 2004 04:50:28 +0000 (04:50 +0000)]
Change order of operations in ALTER TABLE SET TABLESPACE so that we
don't hold an open file reference to the original table at the end.
This is a good thing in any case, particularly so on Windows which
cannot drop the table file otherwise.
Tom Lane [Thu, 12 Aug 2004 21:00:34 +0000 (21:00 +0000)]
Allow commas in BEGIN, START TRANSACTION, and SET TRANSACTION, as required
by the SQL standard. For backwards compatibility, however, continue to
accept the syntax without. Minor editorialization in the reference pages
for these commands, too.
Bruce Momjian [Thu, 12 Aug 2004 19:45:24 +0000 (19:45 +0000)]
Add:
> * Allow finer control over the caching of prepared query plans
>
> Currently, queries prepared via the libpq API are planned on first
> execute using the supplied parameters --- allow SQL PREPARE to do the
> same. Also, allow control over replanning prepared queries either
> manually or automatically when statistics for execute parameters
> differ dramatically from those used during planning.
>
Bruce Momjian [Thu, 12 Aug 2004 18:32:52 +0000 (18:32 +0000)]
Add make_native_path() because Win32 COPY is an internal CMD.EXE command
and doesn't process forward slashes in the same way as external
commands. Quoting the first argument to COPY does not convert forward
to backward slashes, but COPY does properly process quoted forward
slashes in the second argument.
Win32 COPY works with quoted forward slashes in the first argument only if the
current directory is the same as the directory of the first argument.
Bruce Momjian [Thu, 12 Aug 2004 16:39:50 +0000 (16:39 +0000)]
Be more aggressive about adding flags to thread compiles. The configure
test only tests for building a binary, not building a shared library.
On Linux, you can build a binary with -pthread, but you can't build a
binary that uses a threaded shared library unless you also use -pthread
when building the binary, or adding -lpthread to the shared library
build. This patch has the effect of doing the later by adding both
-pthread and -lpthread when building libpq.
Tom Lane [Wed, 11 Aug 2004 18:06:01 +0000 (18:06 +0000)]
Add PQserverVersion() to libpq to provide more-convenient access to
the server version number. This commit also removes bogus DOS line
endings from libpqddll.def.
Tom Lane [Wed, 11 Aug 2004 16:53:28 +0000 (16:53 +0000)]
Fix function definition that somehow missed being ANSI-fied, and align
it with previous prototype to suppress complaints from picky compilers,
per report from Scott Bailey. Also, remove substitute strerror
definition --- not needed, since we link this with libpgport.
Tom Lane [Wed, 11 Aug 2004 04:07:16 +0000 (04:07 +0000)]
Fix failure to guarantee that a checkpoint will write out pg_clog updates
for transaction commits that occurred just before the checkpoint. This is
an EXTREMELY serious bug --- kudos to Satoshi Okada for creating a
reproducible test case to prove its existence.
Joe Conway [Wed, 11 Aug 2004 00:49:35 +0000 (00:49 +0000)]
Hashed crosstab was dying with an SPI_finish error when the source SQL
produced no rows. Now it returns 0 rows instead. Adjusted regression
test for this case.
Bruce Momjian [Tue, 10 Aug 2004 17:30:47 +0000 (17:30 +0000)]
Update DELETE FROM:
< * Allow DELETE to handle table aliases for self-joins
> * Allow an alias to be provided for the target table in UPDATE/DELETE
276,279c276,282
< There is no way to create a table alias for the deleted table for use
< in the DELETE WHERE clause. The agreed approach is to allow a USING
< clause to specify additional tables. UPDATE already has an optional
< FROM clause for this purpose.
> This is not SQL-spec but many DBMSs allow it.
>
> * Allow additional tables to be specified in DELETE for joins
>
> UPDATE already allows this (UPDATE...FROM) but we need similar
> functionality in DELETE. It's been agreed that the keyword should
> be USING, to avoid anything as confusing as DELETE FROM a FROM b.
Tom Lane [Mon, 9 Aug 2004 20:20:47 +0000 (20:20 +0000)]
Path-mangling logic was failing to account for paths containing mentions
of '.' or '..'. Extend canonicalize_path() to trim off trailing occurrences
of these things, and use it to fix up paths where needed (which I think is
only after places where we trim the last path component, but maybe some
others will turn up). Fixes Josh's complaint that './initdb' does not
work.
Tom Lane [Mon, 9 Aug 2004 16:26:06 +0000 (16:26 +0000)]
When expanding %p in archive_command or restore_command, translate
slashes to backslashes #ifdef WIN32. This is to cope with the fact
that Windows seems exceedingly unfriendly to slashes in shell commands,
as per recent discussion.
Bruce Momjian [Sun, 8 Aug 2004 06:44:36 +0000 (06:44 +0000)]
Allow libpgport to call memory allocation routines even though
CurrentMemoryContext is DLLIMPORT on Win32. Work around that by
creating stubs in the backend for palloc/pstrdup.
Also fix pg_dumpall to do proper quoting on Win32.
Joe Conway [Sun, 8 Aug 2004 05:01:55 +0000 (05:01 +0000)]
Tighened up syntax checking of array input processing considerably. Junk that
was previously allowed in odd places with odd results now causes an ERROR.
Also changed behavior with respect to whitespace -- trailing whitespace is
now ignored as well as leading whitespace (which has always been ignored).
Documentation updated to reflect change in whitespace handling. Also some
refactoring to what I believe is a more sensible order of several paragraphs.