mirror of
https://github.com/postgres/postgres.git
synced 2025-07-23 00:02:06 -04:00
Compare commits
6 Commits
82063edd4a
...
f646ac6725
Author | SHA1 | Date | |
---|---|---|---|
|
f646ac6725 | ||
|
1e774846b8 | ||
|
7f85099f4b | ||
|
d5b1045e67 | ||
|
9d4ea0bb3f | ||
|
8cb1d99f23 |
@ -213,6 +213,12 @@ createdb -O <replaceable>rolename</replaceable> <replaceable>dbname</replaceable
|
|||||||
action being taken when those databases are created.
|
action being taken when those databases are created.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
However, <command>CREATE DATABASE</command> does not copy database-level
|
||||||
|
<command>GRANT</command> permissions attached to the source database.
|
||||||
|
The new database has default database-level permissions.
|
||||||
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
There is a second standard system database named
|
There is a second standard system database named
|
||||||
<literal>template0</literal>.<indexterm><primary>template0</primary></indexterm> This
|
<literal>template0</literal>.<indexterm><primary>template0</primary></indexterm> This
|
||||||
|
@ -213,9 +213,10 @@ if docs_dep.found()
|
|||||||
|
|
||||||
install_doc_man = custom_target('install-man',
|
install_doc_man = custom_target('install-man',
|
||||||
output: 'install-man',
|
output: 'install-man',
|
||||||
|
input: man,
|
||||||
command: [
|
command: [
|
||||||
python, install_files, '--prefix', dir_prefix,
|
python, install_files, '--prefix', dir_prefix,
|
||||||
'--install-dirs', dir_man, man],
|
'--install-dirs', dir_man, '@INPUT@'],
|
||||||
build_always_stale: true, build_by_default: false,
|
build_always_stale: true, build_by_default: false,
|
||||||
)
|
)
|
||||||
alias_target('install-doc-man', install_doc_man)
|
alias_target('install-doc-man', install_doc_man)
|
||||||
|
@ -137,7 +137,11 @@ REVOKE [ GRANT OPTION FOR ]
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The name of an existing role of which the current role is a member.
|
The name of an existing role of which the current role is a member.
|
||||||
If <literal>FOR ROLE</literal> is omitted, the current role is assumed.
|
Default access privileges are not inherited, so member roles
|
||||||
|
must use <command>SET ROLE</command> to access these privileges,
|
||||||
|
or <command>ALTER DEFAULT PRIVILEGES</command> must be run for
|
||||||
|
each member role. If <literal>FOR ROLE</literal> is omitted,
|
||||||
|
the current role is assumed.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
@ -59,15 +59,16 @@ CREATE [ OR REPLACE ] RULE <replaceable class="parameter">name</replaceable> AS
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Presently, <literal>ON SELECT</literal> rules must be unconditional
|
Presently, <literal>ON SELECT</literal> rules can only be attached
|
||||||
<literal>INSTEAD</literal> rules and must have actions that consist
|
to views. Such a rule must be named <literal>"_RETURN"</literal>,
|
||||||
of a single <command>SELECT</command> command. Thus, an
|
must be an unconditional <literal>INSTEAD</literal> rule, and must have
|
||||||
<literal>ON SELECT</literal> rule effectively turns the table into
|
an action that consists of a single <command>SELECT</command> command.
|
||||||
a view, whose visible contents are the rows returned by the rule's
|
This command defines the visible contents of the view. (The view
|
||||||
<command>SELECT</command> command rather than whatever had been
|
itself is basically a dummy table with no storage.) It's best to
|
||||||
stored in the table (if anything). It is considered better style
|
regard such a rule as an implementation detail. While a view can be
|
||||||
to write a <command>CREATE VIEW</command> command than to create a
|
redefined via <literal>CREATE OR REPLACE RULE "_RETURN" AS
|
||||||
real table and define an <literal>ON SELECT</literal> rule for it.
|
...</literal>, it's better style to use <literal>CREATE OR REPLACE
|
||||||
|
VIEW</literal>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -1119,6 +1119,10 @@ INSERT INTO tbl1 VALUES ($1, $2) \bind 'first value' 'second value' \g
|
|||||||
destination, because all data must pass through the client/server
|
destination, because all data must pass through the client/server
|
||||||
connection. For large amounts of data the <acronym>SQL</acronym>
|
connection. For large amounts of data the <acronym>SQL</acronym>
|
||||||
command might be preferable.
|
command might be preferable.
|
||||||
|
Also, because of this pass-through method, <literal>\copy
|
||||||
|
... from</literal> in <acronym>CSV</acronym> mode will erroneously
|
||||||
|
treat a <literal>\.</literal> data value alone on a line as an
|
||||||
|
end-of-input marker.
|
||||||
</para>
|
</para>
|
||||||
</tip>
|
</tip>
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -627,6 +627,7 @@ handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary, PGresult **res)
|
|||||||
* This code erroneously assumes '\.' on a line alone
|
* This code erroneously assumes '\.' on a line alone
|
||||||
* inside a quoted CSV string terminates the \copy.
|
* inside a quoted CSV string terminates the \copy.
|
||||||
* https://www.postgresql.org/message-id/E1TdNVQ-0001ju-GO@wrigleys.postgresql.org
|
* https://www.postgresql.org/message-id/E1TdNVQ-0001ju-GO@wrigleys.postgresql.org
|
||||||
|
* https://www.postgresql.org/message-id/bfcd57e4-8f23-4c3e-a5db-2571d09208e2@beta.fastmail.com
|
||||||
*/
|
*/
|
||||||
if ((linelen == 3 && memcmp(fgresult, "\\.\n", 3) == 0) ||
|
if ((linelen == 3 && memcmp(fgresult, "\\.\n", 3) == 0) ||
|
||||||
(linelen == 4 && memcmp(fgresult, "\\.\r\n", 4) == 0))
|
(linelen == 4 && memcmp(fgresult, "\\.\r\n", 4) == 0))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user