mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
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:
parent
b2d867fb08
commit
4ddc50dffa
@ -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>
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user