Hmm, absolute pathnames for the copy makes sense. I'll whip up that

patch in a second. Should be sufficent to just make sure the first
character is a '/', right?

Ross J. Reedstrom
This commit is contained in:
Bruce Momjian 2000-03-23 21:38:58 +00:00
parent b2d867fb08
commit 4ddc50dffa
2 changed files with 85 additions and 13 deletions

View File

@ -1,5 +1,5 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/lock.sgml,v 1.14 1999/10/01 15:26:29 thomas Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/ref/lock.sgml,v 1.15 2000/03/23 21:38:57 momjian Exp $
Postgres documentation
-->
@ -32,6 +32,70 @@ LOCK [ TABLE ] <replaceable class="PARAMETER">name</replaceable> IN SHARE ROW EX
<refsect2info>
<date>1999-06-09</date>
</refsect2info>
<title>
Terms
</title>
<para>
<variablelist>
<varlistentry>
<term>EXCLUSIVE</term>
<listitem>
<para>
Exclusive lock that prevents other locks from being granted.
</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>SHARE</term>
<listitem>
<para>
Allows others to share lock. Prevents EXCLUSIVE locks.
</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>ACCESS</term>
<listitem>
<para>
Locks table schema.
</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>ROW</term>
<listitem>
<para>
Locks individual rows.
</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>Notes</term>
<listitem>
<para>
If EXCLUSIVE or SHARE are not speicified, EXCLUSIVE is assumed.
If ROW or ACCESS is not specified, the entire table is locked
for the duration of the transaction.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<title>
Inputs
</title>
@ -53,17 +117,17 @@ LOCK [ TABLE ] <replaceable class="PARAMETER">name</replaceable> IN SHARE ROW EX
<note>
<para>
This lock mode is acquired automatically over tables being queried.
<productname>Postgres</productname> releases automatically acquired
ACCESS SHARE locks after the statement is done.
This lock is released automatically after the statement completes.
It does not remain for the duration of the transaction.
</para>
</note>
<para>
This is the least restrictive lock mode which conflicts only with
ACCESS EXCLUSIVE mode. It is intended to protect a table being
queried from concurrent <command>ALTER TABLE</command>,
modified by concurrent <command>ALTER TABLE</command>,
<command>DROP TABLE</command> and <command>VACUUM</command>
statements over the same table.
commands.
</para>
</listitem>
</varlistentry>
@ -74,6 +138,8 @@ LOCK [ TABLE ] <replaceable class="PARAMETER">name</replaceable> IN SHARE ROW EX
<note>
<para>
Automatically acquired by any <command>SELECT FOR UPDATE</command> statement.
While it is a SHARE lock, there is the intention to later upgrade
this to an EXCLUSIVE lock.
</para>
</note>
@ -90,7 +156,7 @@ LOCK [ TABLE ] <replaceable class="PARAMETER">name</replaceable> IN SHARE ROW EX
<para>
Automatically acquired by any <command>UPDATE</command>,
<command>DELETE</command>, <command>INSERT</command> statement.
</para>
</para>
</note>
<para>
@ -107,6 +173,7 @@ LOCK [ TABLE ] <replaceable class="PARAMETER">name</replaceable> IN SHARE ROW EX
<note>
<para>
Automatically acquired by any <command>CREATE INDEX</command> statement.
Share-locks entire table.
</para>
</note>
@ -123,10 +190,10 @@ LOCK [ TABLE ] <replaceable class="PARAMETER">name</replaceable> IN SHARE ROW EX
<listitem>
<para>
Conflicts with ROW EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE,
EXCLUSIVE and ACCESS EXCLUSIVE modes. This mode is more
restrictive than SHARE mode because of only one transaction
at time can hold this lock.
This is like an EXCLUSIVE lock, but allows SHARE ROW locks
by others.
Conflicts with ROW EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE,
EXCLUSIVE and ACCESS EXCLUSIVE modes.
</para>
</listitem>
</varlistentry>
@ -139,7 +206,7 @@ LOCK [ TABLE ] <replaceable class="PARAMETER">name</replaceable> IN SHARE ROW EX
Conflicts with ROW SHARE, ROW EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE,
EXCLUSIVE and ACCESS EXCLUSIVE modes. This mode is yet more
restrictive than that of SHARE ROW EXCLUSIVE; it blocks all concurrent
SELECT FOR UPDATE queries.
SHARE ROW/SELECT FOR UPDATE queries.
</para>
</listitem>
</varlistentry>
@ -149,7 +216,7 @@ LOCK [ TABLE ] <replaceable class="PARAMETER">name</replaceable> IN SHARE ROW EX
<listitem>
<note>
<para>
Automatically acquired by <command>ALTER TABLE</command>,
Automatically acquired by <command>ALTER TABLE</command>,
<command>DROP TABLE</command>, <command>VACUUM</command> statements.
</para>
</note>

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.102 2000/03/09 05:00:23 inoue Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.103 2000/03/23 21:38:58 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -348,6 +348,11 @@ DoCopy(char *relname, bool binary, bool oids, bool from, bool pipe,
mode_t oumask; /* Pre-existing umask value */
oumask = umask((mode_t) 022);
if (*filename != '/')
elog(ERROR, "Relative path not allowed for server side"
" COPY command.");
#ifndef __CYGWIN32__
fp = AllocateFile(filename, "w");
#else