Commit Graph

1434 Commits

Author SHA1 Message Date
Tom Lane
aa27977fe2 Support explicit placement of the temporary-table schema within search_path.
This is needed to allow a security-definer function to set a truly secure
value of search_path.  Without it, a malicious user can use temporary objects
to execute code with the privileges of the security-definer function.  Even
pushing the temp schema to the back of the search path is not quite good
enough, because a function or operator at the back of the path might still
capture control from one nearer the front due to having a more exact datatype
match.  Hence, disable searching the temp schema altogether for functions and
operators.

Security: CVE-2007-2138
2007-04-20 02:37:38 +00:00
Bruce Momjian
c228448910 Update docs/error message for CSV quote/escape --- must be ASCII.
Backpatch doc change to 8.2.X.
2007-04-18 02:28:22 +00:00
Bruce Momjian
739425dbe3 Document that the COPY delimiter must be an ASCII byte, rather than a
multi-byte value.  It can also be a single-byte encoded character if
the client and server versions match.

Backpatch to 8.2.X.
2007-04-18 00:17:56 +00:00
Neil Conway
85bbf01e08 Minor fixes for the EXPLAIN reference page. Mention the fact that
EXPLAIN ANALYZE can sometimes be significantly slower than running
the same query normally, and make some minor markup improvements.
2007-04-12 22:39:21 +00:00
Neil Conway
6df6d8e361 Fixes for RESET SESSION patch, per Alvaro. Fix a typo in the RESET
ref page (sorry, my fault!), and simplify the coding of
ResetTempTableNamespace().
2007-04-12 22:34:45 +00:00
Neil Conway
d13e903bea RESET SESSION, plus related new DDL commands. Patch from Marko Kreen,
reviewed by Neil Conway. This patch adds the following DDL command
variants: RESET SESSION, RESET TEMP, RESET PLANS, CLOSE ALL, and
DEALLOCATE ALL. RESET SESSION is intended for use by connection
pool software and the like, in order to reset a client session
to something close to its initial state.

Note that while most of these command variants can be executed
inside a transaction block (but are not transaction-aware!),
RESET SESSION cannot. While this is inconsistent, it is intended
to catch programmer mistakes: RESET SESSION in an open transaction
block is probably unintended.
2007-04-12 06:53:49 +00:00
Tom Lane
e51ac1b899 Minor editorialization on CLUSTER reference page. 2007-04-08 02:07:35 +00:00
Bruce Momjian
e55c8e36ae Support syntax "CLUSTER table USING index", which is more logical.
Holger Schurig
2007-04-08 00:26:34 +00:00
Tom Lane
d7e2de6629 Add note that TRUNCATE is not MVCC-safe. 2007-04-07 17:12:15 +00:00
Bruce Momjian
5695f38f74 Slight wording improvement. 2007-04-07 04:04:56 +00:00
Bruce Momjian
8e0f8630a6 Remove example of SQL-standard syntax for GRANT/REVOKE --- was causing
confusion.
2007-04-07 03:48:25 +00:00
Tom Lane
f02a82b6ad Make 'col IS NULL' clauses be indexable conditions.
Teodor Sigaev, with some kibitzing from Tom Lane.
2007-04-06 22:33:43 +00:00
Bruce Momjian
cd39718446 Document how to identify an invalid index after a failed CREATE INDEX
CONCURRENTLY.

Gregory Stark
2007-04-03 22:38:35 +00:00
Tom Lane
57690c6803 Support enum data types. Along the way, use macros for the values of
pg_type.typtype whereever practical.  Tom Dunstan, with some kibitzing
from Tom Lane.
2007-04-02 03:49:42 +00:00
Tom Lane
b581b85406 Fix seriously broken markup for libpq-envars cross-references. 2007-03-26 17:23:37 +00:00
Tom Lane
55a7cf80a0 Allow non-superuser database owners to create procedural languages.
A DBA is allowed to create a language in his database if it's marked
"tmpldbacreate" in pg_pltemplate.  The factory default is that this is set
for all standard trusted languages, but of course a superuser may adjust
the settings.  In service of this, add the long-foreseen owner column to
pg_language; renaming, dropping, and altering owner of a PL now follow
normal ownership rules instead of being superuser-only.
Jeremy Drake, with some editorialization by Tom Lane.
2007-03-26 16:58:41 +00:00
Bruce Momjian
183c12e0d7 Remove tabs from SGML file. 2007-03-22 15:45:56 +00:00
Jan Wieck
0fe16500d3 Changes pg_trigger and extend pg_rewrite in order to allow triggers and
rules to be defined with different, per session controllable, behaviors
for replication purposes.

This will allow replication systems like Slony-I and, as has been stated
on pgsql-hackers, other products to control the firing mechanism of
triggers and rewrite rules without modifying the system catalog directly.

The firing mechanisms are controlled by a new superuser-only GUC
variable, session_replication_role, together with a change to
pg_trigger.tgenabled and a new column pg_rewrite.ev_enabled. Both
columns are a single char data type now (tgenabled was a bool before).
The possible values in these attributes are:

     'O' - Trigger/Rule fires when session_replication_role is "origin"
           (default) or "local". This is the default behavior.

     'D' - Trigger/Rule is disabled and fires never

     'A' - Trigger/Rule fires always regardless of the setting of
           session_replication_role

     'R' - Trigger/Rule fires when session_replication_role is "replica"

The GUC variable can only be changed as long as the system does not have
any cached query plans. This will prevent changing the session role and
accidentally executing stored procedures or functions that have plans
cached that expand to the wrong query set due to differences in the rule
firing semantics.

The SQL syntax for changing a triggers/rules firing semantics is

     ALTER TABLE <tabname> <when> TRIGGER|RULE <name>;

     <when> ::= ENABLE | ENABLE ALWAYS | ENABLE REPLICA | DISABLE

psql's \d command as well as pg_dump are extended in a backward
compatible fashion.

Jan
2007-03-19 23:38:32 +00:00
Magnus Hagander
348b621894 Show aggregate return types in psql \da output.
Greg Sabino Mullane
2007-03-16 08:28:01 +00:00
Bruce Momjian
df910a52a6 Allow \pset and \x, \t to use boolean constants on/off, rather than just
toggle.

Chad Wagner
2007-03-03 17:19:11 +00:00
Bruce Momjian
7031dd6869 Add psql \prompt capability.
Chad Wagner
2007-02-23 18:20:59 +00:00
Bruce Momjian
849000c782 Remove extra tab. 2007-02-21 23:22:42 +00:00
Bruce Momjian
7c656baf15 Remove tabs from SGML reference files, so their addition can be detected
in the future.
2007-02-21 23:21:12 +00:00
Bruce Momjian
571df93cff More clearly document that most PostgreSQL utilities support libpq
environment variables.  Backpatch to 8.2.X.
2007-02-20 18:10:59 +00:00
Bruce Momjian
b16dab66a7 Remove "History" sections for pg_dump and pg_restore. I don't think
anyone cares because the last history change was for PostgreSQL 7.1.
2007-02-20 15:01:17 +00:00
Alvaro Herrera
68046a20c7 Remove useless database name from bootstrap argument processing (including
startup and bgwriter processes), and the -y flag.  It's not used anywhere.
2007-02-16 02:10:07 +00:00
Tom Lane
5c63829f2f Minor editorialization on operator-family documentation: put some
copied-and-pasted text in a more useful location.
2007-02-14 04:30:26 +00:00
Tom Lane
4d160018d2 Improve documentation for CREATE CONSTRAINT TRIGGER. 2007-02-10 20:43:59 +00:00
Bruce Momjian
8b4ff8b6a1 Wording cleanup for error messages. Also change can't -> cannot.
Standard English uses "may", "can", and "might" in different ways:

        may - permission, "You may borrow my rake."

        can - ability, "I can lift that log."

        might - possibility, "It might rain today."

Unfortunately, in conversational English, their use is often mixed, as
in, "You may use this variable to do X", when in fact, "can" is a better
choice.  Similarly, "It may crash" is better stated, "It might crash".
2007-02-01 19:10:30 +00:00
Neil Conway
bd2c171414 This patch adds documentation for the long-version parameters --username
and --password for pg_dump, pg_dumpall and pg_restore, per complaint by
Michael Schmidt. Patch from Magnus Hagander.
2007-02-01 04:39:33 +00:00
Bruce Momjian
b3687889c4 Update CREATE SEQUENCE documentation to show the same sequence being
created and increments.  The old docs created the sequence, then showed
a nextval() of 114.
2007-02-01 00:34:03 +00:00
Bruce Momjian
09a9f10e7f Consistenly use colons before '<programlisting>' blocks, where
appropriate.
2007-02-01 00:28:19 +00:00
Bruce Momjian
e81c138e18 Update reference documentation on may/can/might:
Standard English uses "may", "can", and "might" in different ways:

        may - permission, "You may borrow my rake."

        can - ability, "I can lift that log."

        might - possibility, "It might rain today."

Unfortunately, in conversational English, their use is often mixed, as
in, "You may use this variable to do X", when in fact, "can" is a better
choice.  Similarly, "It may crash" is better stated, "It might crash".
2007-01-31 23:26:05 +00:00
Bruce Momjian
0867493510 Document need for periodic REINDEX in VACUUM FULL cases. 2007-01-31 04:13:22 +00:00
Bruce Momjian
167fa70a2e Update pg_dumpall -f option description. 2007-01-25 15:08:06 +00:00
Bruce Momjian
6441288ec9 Add 'output file' option for pg_dumpall, especially useful for Win32,
where output redirection of child processes (pg_dump) doesn't work.

Dave Page
2007-01-25 03:30:43 +00:00
Bruce Momjian
d37881fd90 Allow pg_dumpall to specify a database name rather than the default
'template1'.

Dave Page
2007-01-25 02:46:33 +00:00
Bruce Momjian
5ce94b28cc Add --tablespaces-only and --roles-only options to pg_dumpall.
Dave Page
2007-01-25 02:30:32 +00:00
Tom Lane
a33cf1041f Add CREATE/ALTER/DROP OPERATOR FAMILY commands, also COMMENT ON OPERATOR
FAMILY; and add FAMILY option to CREATE OPERATOR CLASS to allow adding a
class to a pre-existing family.  Per previous discussion.  Man, what a
tedious lot of cutting and pasting ...
2007-01-23 05:07:18 +00:00
Tom Lane
5a7471c307 Add COST and ROWS options to CREATE/ALTER FUNCTION, plus underlying pg_proc
columns procost and prorows, to allow simple user adjustment of the estimated
cost of a function call, as well as control of the estimated number of rows
returned by a set-returning function.  We might eventually wish to extend this
to allow function-specific estimation routines, but there seems to be
consensus that we should try a simple constant estimate first.  In particular
this provides a relatively simple way to control the order in which different
WHERE clauses are applied in a plan node, which is a Good Thing in view of the
fact that the recent EquivalenceClass planner rewrite made that much less
predictable than before.
2007-01-22 01:35:23 +00:00
Neil Conway
4945a8fad4 Teach psql's \lo slash commands to respect quiet mode, and to output
HTML in HTML mode. Patch from Jeremy Drake.
2007-01-20 16:57:31 +00:00
Neil Conway
02609893da Correct a minor inaccuracy in the pg_dumpall reference page: -g dumps
roles and tablespaces, no longer users and groups. Per Dave Page.

Backport to 8.2 and 8.1.
2007-01-15 17:22:46 +00:00
Bruce Momjian
7f1bc239c1 For pg_ctl -w, add reference to additional environment variables and pgpass. 2007-01-11 02:30:01 +00:00
Tom Lane
1e0bf9041e Marginal tweaks in the documentation for ORDER BY; in particular point
out the common error that ORDER BY x, y DESC does not mean the same as
ORDER BY x DESC, y DESC.
2007-01-09 16:59:20 +00:00
Tom Lane
4431758229 Support ORDER BY ... NULLS FIRST/LAST, and add ASC/DESC/NULLS FIRST/NULLS LAST
per-column options for btree indexes.  The planner's support for this is still
pretty rudimentary; it does not yet know how to plan mergejoins with
nondefault ordering options.  The documentation is pretty rudimentary, too.
I'll work on improving that stuff later.

Note incompatible change from prior behavior: ORDER BY ... USING will now be
rejected if the operator is not a less-than or greater-than member of some
btree opclass.  This prevents less-than-sane behavior if an operator that
doesn't actually define a proper sort ordering is selected.
2007-01-09 02:14:16 +00:00
Bruce Momjian
c3578a68f8 Allow initdb to specify the pg_xlog directory.
Euler Taveira de Oliveira
2007-01-06 19:40:00 +00:00
Andrew Dunstan
226e9fffc8 Call setrlimit if possible in pg_regress to allow core file generation, and provide a switch for similar behaviour in pg_ctl. 2007-01-05 16:17:55 +00:00
Tom Lane
53c26d6f8f Add missing reference to pg_shdescription. Greg Mullane 2007-01-05 01:18:59 +00:00
Tom Lane
eeb2189112 Fix erroneous implementation of -s in postmaster.c (the switch doesn't take
an optarg).  Add some comments noting that code in three different files has
to be kept in sync.  Fix erroneous description of -S switch (it sets work_mem
not silent_mode), and do some light copy-editing elsewhere in postgres-ref.
2007-01-04 00:57:51 +00:00
Tom Lane
5725b9d9af Support type modifiers for user-defined types, and pull most knowledge
about typmod representation for standard types out into type-specific
typmod I/O functions.  Teodor Sigaev, with some editorialization by
Tom Lane.
2006-12-30 21:21:56 +00:00
Bruce Momjian
4f1e49119e Use "dead" rather than "expired" for vacuumable rows. 2006-12-27 14:55:17 +00:00
Bruce Momjian
ef5870350a Change a VACUUM manual page word from 'deleted' to 'expired', so DELETE
and UPDATE are clearly covered by the term.
2006-12-23 01:58:40 +00:00
Bruce Momjian
05911de4da Document that CREATE TYPE names should not begin with an underscore,
rather than being disallowed.
2006-12-23 01:28:09 +00:00
Tom Lane
a78fcfb512 Restructure operator classes to allow improved handling of cross-data-type
cases.  Operator classes now exist within "operator families".  While most
families are equivalent to a single class, related classes can be grouped
into one family to represent the fact that they are semantically compatible.
Cross-type operators are now naturally adjunct parts of a family, without
having to wedge them into a particular opclass as we had done originally.

This commit restructures the catalogs and cleans up enough of the fallout so
that everything still works at least as well as before, but most of the work
needed to actually improve the planner's behavior will come later.  Also,
there are not yet CREATE/DROP/ALTER OPERATOR FAMILY commands; the only way
to create a new family right now is to allow CREATE OPERATOR CLASS to make
one by default.  I owe some more documentation work, too.  But that can all
be done in smaller pieces once this infrastructure is in place.
2006-12-23 00:43:13 +00:00
Andrew Dunstan
5133dd786b Interpret a dbName param to PQsetdbLogin as a conninfo string if it contains an = sign. Tom Lane and Andrew Dunstan. 2006-12-19 01:53:36 +00:00
Tom Lane
0cb91ccba9 Remove the logId/logSeg fields from pg_control, because they are not needed
in normal operation, and we can avoid rewriting pg_control at every log
segment switch if we don't insist that these values be valid.  Reducing
the number of pg_control updates is a good idea for both performance and
reliability.  It does make pg_resetxlog's life a bit harder, but that seems
a good tradeoff; and anyway the change to pg_resetxlog amounts to automating
something people formerly needed to do by hand, namely look at the existing
pg_xlog files to make sure the new WAL start point was past them.

In passing, change the wording of xlog.c's "database system was interrupted"
messages: describe the pg_control timestamp as "last known up at" rather than
implying it is the exact time of service interruption.  With this change the
timestamp will generally be the time of the last checkpoint, which could be
many minutes before the failure; and we've already seen indications that
people tend to misinterpret the old wording.

initdb forced due to change in pg_control layout.  Simon Riggs and Tom Lane
2006-12-08 19:50:53 +00:00
Bruce Momjian
a39e3958e9 Change psql \\ example to use single quotes, per TOm. 2006-12-06 15:47:22 +00:00
Bruce Momjian
d7f316d28e Clean up psql -c documentation that uses \\. 2006-12-06 15:40:11 +00:00
Bruce Momjian
c08cfab407 Fix documentation example of using psql \x with a SELECT command, per
Simon Riggs.  Backpatch to 8.2.X.
2006-12-05 17:40:55 +00:00
Peter Eisentraut
d92b939a0a Make Options for Windows a second-level heading instead of first-level. 2006-12-02 00:34:52 +00:00
Tom Lane
c184470be3 Document the recently-understood hazard that a rollback can release row-level
locks that logically should not be released, because when a subtransaction
overwrites XMAX all knowledge of the previous lock state is lost.  It seems
unlikely that we will be able to fix this before 8.3...
2006-12-01 20:49:53 +00:00
Tom Lane
7bbe35a540 Add an example showing how to cope with mixed-case names in pg_dump
switches.
2006-11-28 22:54:18 +00:00
Tom Lane
81b0b06462 Make pg_restore usage examples more useful: illustrate restoring into
both the same database name and a different one.
2006-11-26 18:11:11 +00:00
Bruce Momjian
ae81a6329d Move libpq environment reference in psql documentation to a more
appropriate place, per Andrew Dunstan.
2006-11-21 17:01:58 +00:00
Tom Lane
2c2faa17f2 Emphasize that immutable and stable functions are not allowed to modify
the database.  xfunc.sgml was already pretty definite on the point, but
it doesn't hurt to make it clear here too.
2006-11-10 20:52:18 +00:00
Tom Lane
48188e1621 Fix recently-understood problems with handling of XID freezing, particularly
in PITR scenarios.  We now WAL-log the replacement of old XIDs with
FrozenTransactionId, so that such replacement is guaranteed to propagate to
PITR slave databases.  Also, rather than relying on hint-bit updates to be
preserved, pg_clog is not truncated until all instances of an XID are known to
have been replaced by FrozenTransactionId.  Add new GUC variables and
pg_autovacuum columns to allow management of the freezing policy, so that
users can trade off the size of pg_clog against the amount of freezing work
done.  Revise the already-existing code that forces autovacuum of tables
approaching the wraparound point to make it more bulletproof; also, revise the
autovacuum logic so that anti-wraparound vacuuming is done per-table rather
than per-database.  initdb forced because of changes in pg_class, pg_database,
and pg_autovacuum catalogs.  Heikki Linnakangas, Simon Riggs, and Tom Lane.
2006-11-05 22:42:10 +00:00
Tom Lane
10c70b8602 Add note about space usage of 'manual' approach to clustering, per
suggestion from Sergey Koposov.  Also some other minor editing.
2006-11-04 19:03:51 +00:00
Tom Lane
17a814ca02 Mention 'void' as the proper return type when there's nothing to
return, per suggestion from Joachim Wieland.
2006-11-03 07:17:36 +00:00
Tom Lane
7e63445d59 Fix misstatement about the results of using -1 with BEGIN. 2006-10-31 02:29:15 +00:00
Neil Conway
bc4b856e7b Add text to the VACUUM, REINDEX, DROP TABLESPACE and CREATE TABLESPACE
reference pages documenting that these commands cannot be used within
a transaction block. Also make some minor improvements to the psql
reference page. Patch from Simon Riggs, minor editorialization by
myself.
2006-10-31 01:52:31 +00:00
Peter Eisentraut
0f763503ff Spellchecking and such 2006-10-23 18:10:32 +00:00
Bruce Momjian
10d9bbaf01 Fixes for CREATE CONSTRAINT manual page.
Michael Paesold
2006-10-17 12:53:03 +00:00
Bruce Momjian
a2ebf81913 CREATE CONSTRAINT manual page wording improvements.
Michael Paesold
2006-10-16 19:33:12 +00:00
Bruce Momjian
52831f7911 Update to CREATE CONSTRAINT manual page.
Michael Glaesemann
2006-10-16 19:30:09 +00:00
Bruce Momjian
389fad1e6b Remove use of '<' and '>' in SGML, use '&' escapes.
Update find_gt_lt to allow grep parameters to be passed into it.
2006-10-16 17:28:03 +00:00
Tom Lane
1314983fd3 Code review for --no-data-for-failed-tables patch. Instead of trashing
one of the program's core data structures, make use of the existing
ability to selectively exclude TOC items by ID.  Slightly more code but
much less likely to create future maintenance problems.
2006-10-14 23:07:22 +00:00
Tom Lane
f58eac82ee Code and docs review for ALTER TABLE INHERIT/NO INHERIT patch. 2006-10-13 21:43:19 +00:00
Tom Lane
24e9752863 Revise psql pattern-matching switches as per discussion. The rule is now
to process all inclusion switches then all exclusion switches, so that the
behavior is independent of switch ordering.
Use of -T does not cause non-table objects to be suppressed.  And
the patterns are now interpreted the same way psql's \d commands do it,
rather than as pure regex commands; this allows for example -t schema.tab
to do what it should have been doing all along.  Re-enable the --blobs
switch to do something useful, ie, add back blobs into a dump they were
otherwise suppressed from.
2006-10-09 23:36:59 +00:00
Tom Lane
77d2b1b625 Improve description of the pattern matching rules used by psql's \d
commands (and soon by pg_dump).
2006-10-09 23:31:29 +00:00
Peter Eisentraut
2b25e1169f The -X option in pg_dump was supposed to be a workaround for the lack of
portable long options.  But we have had portable long options for a long
time now, so this is obsolete.  Now people have added options which *only*
work with -X but not as regular long option, so I'm putting a stop to this:
-X is deprecated; it still works, but it has been removed from the
documentation, and please don't add more of them.
2006-10-07 20:59:05 +00:00
Bruce Momjian
9e23cd612e Improve readline psql prompt suggestion.
Andreas Seltenreich
2006-10-03 21:14:46 +00:00
Tom Lane
e893e87530 Update timezone documentation to reflect current reality: instead of
giving tables of known timezone names, refer the user to the system views.
Joachim Wieland
2006-09-22 16:20:00 +00:00
Neil Conway
ecf5009099 Make the order of the CASCADE and RESTRICT keywords in the DROP OWNED
syntax summary consistent with the other SQL reference pages. Patch
from Euler Taveira de Oliveira.
2006-09-18 21:19:29 +00:00
Tom Lane
b5b1eb80b7 Documentation for VALUES lists. Joe Conway and Tom Lane 2006-09-18 19:54:01 +00:00
Bruce Momjian
32cebaecff Remove emacs info from footer of SGML files. 2006-09-16 00:30:20 +00:00
Teodor Sigaev
0ca9907ce4 GIN documentation and slightly improving GiST docs.
Thanks to  Christopher Kings-Lynne <chris.kingslynne@gmail.com> for
initial version and Jeff Davis <pgsql@j-davis.com> for inspection
2006-09-14 11:16:27 +00:00
Tom Lane
f8fe328c24 Some small editorialization on the description of CREATE INDEX
CONCURRENTLY.  Greg Stark, some further tweaks by me.
2006-09-13 23:42:26 +00:00
Tom Lane
684ad6a92f Rename contrib contains/contained-by operators to @> and <@, per discussion. 2006-09-10 17:36:52 +00:00
Tom Lane
7bae5a289c Get rid of the separate RULE privilege for tables: now only a table's owner
can create or modify rules for the table.  Do setRuleCheckAsUser() while
loading rules into the relcache, rather than when defining a rule.  This
ensures that permission checks for tables referenced in a rule are done with
respect to the current owner of the rule's table, whereas formerly ALTER TABLE
OWNER would fail to update the permission checking for associated rules.
Removal of separate RULE privilege is needed to prevent various scenarios
in which a grantee of RULE privilege could effectively have any privilege
of the table owner.  For backwards compatibility, GRANT/REVOKE RULE is still
accepted, but it doesn't do anything.  Per discussion here:
http://archives.postgresql.org/pgsql-hackers/2006-04/msg01138.php
2006-09-05 21:08:36 +00:00
Tom Lane
091fe03775 Code review for UPDATE SET (columnlist) patch. Make it handle as much
of the syntax as this fundamentally dead-end approach can, in particular
combinations of single and multi column assignments.  Improve rather
inadequate documentation and provide some regression tests.
2006-09-03 22:37:06 +00:00
Bruce Momjian
6e8596a146 Add UPDATE tab SET ROW (col, ...) = (val, ...) for updating
multiple columns

Susanne Ebrecht
2006-09-02 20:34:47 +00:00
Tom Lane
917bbebf7f Apply a simple solution to the problem of making INSERT/UPDATE/DELETE
RETURNING play nice with views/rules.  To wit, have the rule rewriter
rewrite any RETURNING clause found in a rule to produce what the rule's
triggering query asked for in its RETURNING clause, in particular drop
the RETURNING clause if no RETURNING in the triggering query.  This
leaves the responsibility for knowing how to produce the view's output
columns on the rule author, without requiring any fundamental changes
in rule semantics such as adding new rule event types would do.  The
initial implementation constrains things to ensure that there is
exactly one, unconditionally invoked RETURNING clause among the rules
for an event --- later we might be able to relax that, but for a post
feature freeze fix it seems better to minimize how much invention we do.
Per gripe from Jaime Casanova.
2006-09-02 17:06:52 +00:00
Tom Lane
85188ab883 Extend COPY to support COPY (SELECT ...) TO ...
Bernd Helmle
2006-08-30 23:34:22 +00:00
Tom Lane
c2f60711d2 Create a FETCH_COUNT parameter that causes psql to execute SELECT-like
queries via a cursor, fetching a limited number of rows at a time and
therefore not risking exhausting memory.  A disadvantage of the scheme
is that 'aligned' output mode will align each group of rows independently
leading to odd-looking output, but all the other output formats work
reasonably well.  Chris Mair, with some additional hacking by moi.
2006-08-29 22:25:08 +00:00
Tom Lane
e093dcdd28 Add the ability to create indexes 'concurrently', that is, without
blocking concurrent writes to the table.  Greg Stark, with a little help
from Tom Lane.
2006-08-25 04:06:58 +00:00
Tom Lane
35af5422f6 Make the server track an 'XID epoch', that is, maintain higher-order bits
of the transaction ID counter.  Nothing is done with the epoch except to
store it in checkpoint records, but this provides a foundation with which
add-on code can pretend that XIDs never wrap around.  This is a severely
trimmed and rewritten version of the xxid patch submitted by Marko Kreen.
Per discussion, the epoch counter seems the only part of xxid that really
needs to be in the core server.
2006-08-21 16:16:31 +00:00
Tom Lane
2b2a50722c Fix all known problems with pg_dump's handling of serial sequences
by abandoning the idea that it should say SERIAL in the dump.  Instead,
dump serial sequences and column defaults just like regular ones.
Add a new backend command ALTER SEQUENCE OWNED BY to let pg_dump recreate
the sequence-to-column dependency that was formerly created "behind the
scenes" by SERIAL.  This restores SERIAL to being truly "just a macro"
consisting of component operations that can be stated explicitly in SQL.
Furthermore, the new command allows sequence ownership to be reassigned,
so that old mistakes can be cleaned up.

Also, downgrade the OWNED-BY dependency from INTERNAL to AUTO, since there
is no longer any very compelling argument why the sequence couldn't be
dropped while keeping the column.  (This forces initdb, to be sure the
right kinds of dependencies are in there.)

Along the way, add checks to prevent ALTER OWNER or SET SCHEMA on an
owned sequence; you can now only do this indirectly by changing the
owning table's owner or schema.  This is an oversight in previous
releases, but probably not worth back-patching.
2006-08-21 00:57:26 +00:00
Tom Lane
abc3120e9b Add server support for "plugin" libraries that can be used for add-on tasks
such as debugging and performance measurement.  This consists of two features:
a table of "rendezvous variables" that allows separately-loaded shared
libraries to communicate, and a new GUC setting "local_preload_libraries"
that allows libraries to be loaded into specific sessions without explicit
cooperation from the client application.  To make local_preload_libraries
as flexible as possible, we do not restrict its use to superusers; instead,
it is restricted to load only libraries stored in $libdir/plugins/.  The
existing LOAD command has also been modified to allow non-superusers to
LOAD libraries stored in this directory.

This patch also renames the existing GUC variable preload_libraries to
shared_preload_libraries (after a suggestion by Simon Riggs) and does some
code refactoring in dfmgr.c to improve clarity.

Korry Douglas, with a little help from Tom Lane.
2006-08-15 18:26:59 +00:00
Tom Lane
7a3e30e608 Add INSERT/UPDATE/DELETE RETURNING, with basic docs and regression tests.
plpgsql support to come later.  Along the way, convert execMain's
SELECT INTO support into a DestReceiver, in order to eliminate some ugly
special cases.

Jonah Harris and Tom Lane
2006-08-12 02:52:06 +00:00
Tom Lane
7946f77220 Cause ALTER TABLE to perform ALTER COLUMN DROP DEFAULT operations during
the DROP pass rather than the ADD_CONSTR pass.  On examining the code I
think this was just an oversight rather than intentional, and it seems
to satisfy the principle of least surprise better than the alternative
solution that was discussed.  Add an example to the ref page showing how
to do ALTER TYPE and update the default in one command.  Per gripe from
Markus Bertheau that that wasn't possible.
2006-08-03 20:57:06 +00:00
Tom Lane
9649b182a1 Fix documentation error: GRANT/REVOKE for roles only accept role names
as grantees, not PUBLIC ... and you can't say GROUP either.  Noted by
Brian Hurt.
2006-08-02 16:29:49 +00:00
Bruce Momjian
c61607bd52 Add pg_dump -X no-data-for-failed-tables option to suppress loading data
if table creation failed (the table already exists).

Martin Pitt
2006-08-01 18:21:44 +00:00
Bruce Momjian
8977b68a42 Allow multiple -n (schema) and -t (table) pg_dump options, and add -T
and -N options to exclude objects.  Also support regular expressions for
option object names.

Greg Sabino Mullane
2006-08-01 18:05:04 +00:00
Alvaro Herrera
638860ce35 Fix confusion between COPY FROM and COPY TO, per Gavin Sharry and Arul Shaji. 2006-07-31 01:10:56 +00:00
Tom Lane
108fe47301 Aggregate functions now support multiple input arguments. I also took
the opportunity to treat COUNT(*) as a zero-argument aggregate instead
of the old hack that equated it to COUNT(1); this is materially cleaner
(no more weird ANYOID cases) and ought to be at least a tiny bit faster.
Original patch by Sergey Koposov; review, documentation, simple regression
tests, pg_dump and psql support by moi.
2006-07-27 19:52:07 +00:00
Tom Lane
d8b5c95ca8 Remove hard-wired lists of timezone abbreviations in favor of providing
configuration files that can be altered by a DBA.  The australian_timezones
GUC setting disappears, replaced by a timezone_abbreviations setting (set this
to 'Australia' to get the effect of australian_timezones).  The list of zone
names defined by default has undergone a bit of cleanup, too.  Documentation
still needs some work --- in particular, should we fix Table B-4, or just get
rid of it?  Joachim Wieland, with some editorializing by moi.
2006-07-25 03:51:23 +00:00
Bruce Momjian
9652b79ae4 Update documentation on GRANT SCEMA USAGE, again. 2006-07-20 18:00:03 +00:00
Bruce Momjian
a8e44f0b1b Update GRANT USAGE on schema permission description. 2006-07-19 18:42:31 +00:00
Bruce Momjian
de7e81fff4 Update schema USAGE permission description. 2006-07-12 15:37:10 +00:00
Tom Lane
d29b66882a Tweak fillfactor code as per my recent proposal. Fix nbtsort.c so that
it can handle small fillfactors for ordinary-sized index entries without
failing on large ones; fix nbtinsert.c to distinguish leaf and nonleaf
pages; change the minimum fillfactor to 10% for all index types.
2006-07-11 21:05:57 +00:00
Bruce Momjian
f0cd764723 Add #include code to prevent multiple inclusion. 2006-07-10 21:03:58 +00:00
Bruce Momjian
ec3efa244b Update schema GRANT USAGE description. 2006-07-10 16:48:46 +00:00
Tom Lane
2d0c1d3102 Documentation fixes for FILLFACTOR patch. Minor other editorialization. 2006-07-04 18:07:24 +00:00
Bruce Momjian
277807bd9e Add FILLFACTOR to CREATE INDEX.
ITAGAKI Takahiro
2006-07-02 02:23:23 +00:00
Bruce Momjian
8c092781f4 ALTER TABLE ... ADD/DROPS INHERIT (actually INHERIT / NO INHERIT)
Open items:

There were a few tangentially related issues that have come up that I think
are TODOs. I'm likely to tackle one or two of these next so I'm interested in
hearing feedback on them as well.

. Constraints currently do not know anything about inheritance. Tom suggested
  adding a coninhcount and conislocal like attributes have to track their
  inheritance status.

. Foreign key constraints currently do not get copied to new children (and
  therefore my code doesn't verify them). I don't think it would be hard to
  add them and treat them like CHECK constraints.

. No constraints at all are copied to tables defined with LIKE. That makes it
  hard to use LIKE to define new partitions. The standard defines LIKE and
  specifically says it does not copy constraints. But the standard already has
  an option called INCLUDING DEFAULTS; we could always define a non-standard
  extension LIKE table INCLUDING CONSTRAINTS that gives the user the option to
  request a copy including constraints.

. Personally, I think the whole attislocal thing is bunk. The decision about
  whether to drop a column from children tables or not is something that
  should be up to the user and trying to DWIM based on whether there was ever
  a local definition or the column was acquired purely through inheritance is
  hardly ever going to match up with user expectations.

. And of course there's the whole unique and primary key constraint issue. I
  think to get any traction at all on this you have a prerequisite of a real
  partitioned table implementation where the system knows what the partition
  key is so it can recognize when it's a leading part of an index key.

Greg Stark
2006-07-02 01:58:36 +00:00
Neil Conway
6e9c974e43 Editorialization for the additions to the CREATE TABLE reference page
made as part of the recent INCLUDING CONSTRAINTS patch. The text could
stand further improvement, but this is at least a step in the right
direction.
2006-06-28 22:01:52 +00:00
Bruce Momjian
dc2c25fc62 Add INCLUDING CONSTRAINTS to CREATE TABLE LIKE.
Greg Stark
2006-06-27 03:43:20 +00:00
Peter Eisentraut
5266f221a2 Merge postmaster and postgres command into just postgres. postmaster
symlink is kept for now for compatibility.  To call single-user mode, use
postgres --single.
2006-06-18 15:38:37 +00:00
Andrew Dunstan
e287fb27a5 docs for DROP ... IF EXISTS for the following cases:
language, tablespace, trigger, rule, opclass, function, aggregate. operator, and cast.
2006-06-16 22:27:55 +00:00
Bruce Momjian
4fff9d7290 Document issues with non-default tablespaces and pg_dumpall restores.
Backpatch documentation addition to 8.1.X.
2006-06-16 22:01:17 +00:00
Bruce Momjian
be05b260a9 Remove pg_resetxlog -r flag, feature has problems referenced here:
http://archives.postgresql.org/pgsql-hackers/2006-05/msg00002.php
2006-06-03 02:19:24 +00:00
Tom Lane
2703007501 Fix example of how to escape data in psql backslash commands. 2006-05-31 22:34:35 +00:00
Bruce Momjian
3b7ed9ba9c Recommend '' for literal ', rather than \', in psql documentation. 2006-05-31 11:47:20 +00:00
Bruce Momjian
c3c3902611 Support '' for literal ' in psql single-quote strings, documentation update. 2006-05-31 11:35:17 +00:00
Tom Lane
223ae6957f Support binary COPY through psql. Also improve detection of write errors
during COPY OUT.  Andreas Pflug, some editorialization by moi.
2006-05-26 19:51:29 +00:00
Bruce Momjian
fb4c180da0 Update pg_dump vesion wording. 2006-05-13 17:10:35 +00:00
Bruce Momjian
4b7b1df8a6 Mention version portability of pg_dump. 2006-05-13 16:19:54 +00:00
Bruce Momjian
d9d2d91544 Recommend more clearly custom pg_dump format over tar, buy showing
custom format examples first.
2006-05-06 23:25:37 +00:00
Tom Lane
52667d56a3 Rethink the locking mechanisms used for CREATE/DROP/RENAME DATABASE.
The former approach used ExclusiveLock on pg_database, which being a
cluster-wide lock meant only one of these operations could proceed at
a time; worse, it also blocked all incoming connections in ReverifyMyDatabase.
Now that we have LockSharedObject(), we can use locks of different types
applied to databases considered as objects.  This allows much more
flexible management of the interlocking: two CREATE DATABASEs need not
block each other, and need not block connections except to the template
database being used.  Similarly DROP DATABASE doesn't block unrelated
operations.  The locking used in flatfiles.c is also much narrower in
scope than before.  Per recent proposal.
2006-05-04 16:07:29 +00:00
Tom Lane
82a2881c5b Code review for GRANT CONNECT patch. Spell the privilege as CONNECT not
CONNECTION, fix a number of places that were missed (eg pg_dump support),
avoid executing an extra search of pg_database during startup.
2006-04-30 21:15:33 +00:00
Tom Lane
986085a7f0 Improve the representation of FOR UPDATE/FOR SHARE so that we can
support both FOR UPDATE and FOR SHARE in one command, as well as both
NOWAIT and normal WAIT behavior.  The more general code is actually
simpler and cleaner.
2006-04-30 18:30:40 +00:00
Bruce Momjian
4899aaf2d5 Add GRANT CONNECTION ON DATABASE, to be used in addition to pg_hba.conf.
Gevik Babakhani
2006-04-30 02:09:07 +00:00
Bruce Momjian
02eb8f4f5c Use schema search path to find the first matching contraint name for SET
CONSTRAINT, rather than affecting all constraints in all schemas (which
is what we used to do).  Also allow schema specifications.

Kris Jurka
2006-04-27 00:33:46 +00:00
Bruce Momjian
0df32e3cbe Allow pg_resetxlog -f to reset pg_control counters using xlog
information, and add a -r option to reset pg_control without affecting
xlog.

yuanjia lee
2006-04-26 02:17:15 +00:00
Bruce Momjian
89083876c9 Adjust SGML spacing. 2006-04-25 21:02:33 +00:00
Tom Lane
7e2d5594d7 Back out the rest of the RESET CONNECTION patch. 2006-04-25 18:58:37 +00:00
Bruce Momjian
706cbfd632 Call SET varaiables "configuration_parameter"s in the documentation. 2006-04-25 14:56:04 +00:00
Bruce Momjian
e72fd16fa8 Change "parameter" to "varname" in the alter role and alter user
documentation sections.  Also update SET/RESET to be consistent.

Nicolas Barbier
2006-04-25 14:47:29 +00:00
Bruce Momjian
59d591e79a Back out RESET CONNECTION until there is more discussion. 2006-04-25 14:11:59 +00:00
Bruce Momjian
6378fdd971 Add RESET CONNECTION, to reset all aspects of a session.
Hans-J?rgen Sch?nig
2006-04-25 14:09:21 +00:00
Bruce Momjian
9d483b7bcf Suggest Win32 users user E'' strings and double backslashes used for
patch separators in COPY.

Backpatch doubleing backslashes suggestion to 8.1.
2006-04-22 03:03:11 +00:00
Bruce Momjian
598dfee552 Document that pg_dump -d/-D prevents invalid data from canceling the
entire table load.
2006-04-15 18:11:16 +00:00
Tom Lane
3651a3e6fb Support the syntax
CREATE AGGREGATE aggname (input_type) (parameter_list)
along with the old syntax where the input type was named in the parameter
list.  This fits more naturally with the way that the aggregate is identified
in DROP AGGREGATE and other utility commands; furthermore it has a natural
extension to handle multiple-input aggregates, where the basetype-parameter
method would get ugly.  In fact, this commit fixes the grammar and all the
utility commands to support multiple-input aggregates; but DefineAggregate
rejects it because the executor isn't fixed yet.
I didn't do anything about treating agg(*) as a zero-input aggregate instead
of artificially making it a one-input aggregate, but that should be considered
in combination with supporting multi-input aggregates.
2006-04-15 17:45:46 +00:00
Tom Lane
7fdb4305db Fix a bunch of problems with domains by making them use special input functions
that apply the necessary domain constraint checks immediately.  This fixes
cases where domain constraints went unchecked for statement parameters,
PL function local variables and results, etc.  We can also eliminate existing
special cases for domains in places that had gotten it right, eg COPY.

Also, allow domains over domains (base of a domain is another domain type).
This almost worked before, but was disallowed because the original patch
hadn't gotten it quite right.
2006-04-05 22:11:58 +00:00
Tom Lane
147d4bf3e5 Modify all callers of datatype input and receive functions so that if these
functions are not strict, they will be called (passing a NULL first parameter)
during any attempt to input a NULL value of their datatype.  Currently, all
our input functions are strict and so this commit does not change any
behavior.  However, this will make it possible to build domain input functions
that centralize checking of domain constraints, thereby closing numerous holes
in our domain support, as per previous discussion.

While at it, I took the opportunity to introduce convenience functions
InputFunctionCall, OutputFunctionCall, etc to use in code that calls I/O
functions.  This eliminates a lot of grotty-looking casts, but the main
motivation is to make it easier to grep for these places if we ever need
to touch them again.
2006-04-04 19:35:37 +00:00
Neil Conway
7815ca7bef Rewrite much of psql's \connect code, for the sake of code clarity and
to fix regressions introduced in the recent patch adding additional
\connect options. This is based on work by Volkan YAZICI, although
this version of the patch doesn't bear much resemblance to Volkan's
version.

\connect takes 4 optional arguments: database name, user name, host
name, and port number. If any of those parameters are omitted or
specified as "-", the value of that parameter from the previous
connection is used instead; if there is no previous connection,
the libpq default is used. Note that this behavior makes it
impossible to reuse the libpq defaults without quitting psql and
restarting it; I don't really see the use case for needing to do
that.
2006-04-02 20:08:22 +00:00
Neil Conway
d73336f8f4 Correct some errors and do some SGML police work on the reference pages
for REASSIGN OWNED and DROP OWNED.
2006-04-02 04:02:40 +00:00
Neil Conway
a619e068d3 Minor improvement to DROP TABLE reference page. 2006-04-02 03:56:40 +00:00
Peter Eisentraut
5094f99830 Document long names for format options (plain, tar, custom). They already
worked and someone asked about them, so we might as well document them.
2006-03-17 16:02:47 +00:00
Tom Lane
66fc528d99 Remove somebody's flight of fancy about an UPDATE with ORDER BY and LIMIT. 2006-03-08 22:59:09 +00:00