Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gonAM-0002TT-Eh for pgsql-docs@arkaria.postgresql.org; Wed, 30 Jan 2019 10:32:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gonAL-00019c-5l for pgsql-docs@arkaria.postgresql.org; Wed, 30 Jan 2019 10:32:21 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gonAJ-00015p-Ux for pgsql-docs@lists.postgresql.org; Wed, 30 Jan 2019 10:32:20 +0000 Received: from mout.kundenserver.de ([217.72.192.75]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gonA1-0006aM-Gd for pgsql-docs@lists.postgresql.org; Wed, 30 Jan 2019 10:32:18 +0000 Received: from [192.168.178.23] ([77.185.118.237]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M1qbm-1gqz121wLI-002HGS for ; Wed, 30 Jan 2019 11:31:57 +0100 To: pgsql-docs@lists.postgresql.org From: =?UTF-8?Q?J=c3=bcrgen_Purtz?= Subject: XML: Single root element Message-ID: Date: Wed, 30 Jan 2019 11:34:12 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------94F0ECE4BDE578C46209422B" Content-Language: en-GB X-Provags-ID: V03:K1:XRpE57PfveCmAk5dZYBSiAl3KEbj6MU5+uFAT/OumaVXjPHyk3y 0DQxEJRsW++8WVGBmjFBDK+1+K+JX/ip5RcS8NAuDXl87RprgZQPJqdeO857iiEbBKrgt7e LIstqsXLHHK/m9kM6jee4jfNVIByURHWPOczhLVYmrcu0HuBqEmylHuHeiXrTCZF40GEryS pr7BOwRmsLOd1M63E5z2Q== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:I+SppbtX/Oo=:CnNd2JQIqSu5LOzHnpODfH ChwQbZDqSbV5kIXg74rcc9ZN/V7Rypvmd6FElefkfk1A8bvZjmvuTqtrW8yZFEr7kg+FKu8rv dXf1Dqt7WoWfTtQ0IiviUMjs59TWN1R2vWXMUAiqZHJEzJnvJd6eaCNNTr6i60kBm4CEPzkPU ENYa8oPTIds5crrSV4veqhejkMbHf/vZOhVnaSxm5Ay4YYF1TiA5mqlExEojHDXMbbM9dAzUm D4rX1euqydyd3aTVKV92M6D1+FI3ufGrEbuA+QoZL6vTAL4BCM/VWp8b9MF5OOI0fFeRZpTEd W7L8AgBv9bpWNTuXm6wiff9oVTGC+ByVXSYa5NmnIXybYlg4bFYttOplDT7b2Gz2WpBo2WFpe 3SE6Ga3qG3PVrKIz55MZxai0QtqKOK3Hxda1o2MVW8DvOEmTyZR9uwSU6lf9494FRzAPYXM+v 7LHivQ0SlJQ8sAWHZmvS2Uy7gD0gAe4PaVGrfZifALnT89hHFepkMp4+zVIdh9j47KFXVwxGL bsxqLes9NWFvICo3iVYbycuwX0+SyZHWsykZ6aFgEDzuz4OmRqUd5vAq9YKKKXmhVEDLulvFw /63N5ytnU9p3t4n9bUJy/RpT84zQ54f0Iz7/qiRZlEeXkX1oznNXGOU/BMJ/pW1UoFTApZ8WS UGxeR9MJsG7obHiYdo8waV0kmvBoNP8wy1t/sGjjJVLNSQ7s66mgu2P+1ORPfFkk6yRA5aiO/ RSsurHuOdFPov9+1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------94F0ECE4BDE578C46209422B Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Some time ago we upgraded our documentation from SGML to XML in a huge step. Most of the resulting files are well-formed - but not all. The well-formed criteria is violated by such files which contains more than one root element. You can locate such files with the command: xmllint --noout *.sgml ref/*.sgml 2> >(grep Extra) Actually this is not a serious problem. But for further XML processing (parsing, Docbook upgrade to version 5.x, use of an XML-editor, xinclude, xpath, namespaces, ... ) it is necessary - or at least very helpful - to change the content of every single file in a manual step to a *well-formed* XML file, especially with one single root element. The attached patch results from applying different strategies to achieve this aim. Strategy 1: Move the element of the outer file where the 'calling' entity resides to the included file as an additional top-level element. Example 'legal.sgml': Actual situation ================ postgres.sgml:  PostgreSQL &version; Documentation    The PostgreSQL Global Development Group   PostgreSQL   &version;   &legal;    ... legal.sgml: 2019  1996-2019  The PostgreSQL Global Development Group ... -- End of File -- New situation ============= postgres.sgml:  PostgreSQL &version; Documentation  &legal;  ... legal.sgml:  The PostgreSQL Global Development Group  PostgreSQL  &version;  2019     1996-2019   The PostgreSQL Global Development Group      ...   -- End of File -- Some single files are changed but the intermediate file (respectively the main memory) after resolving all entities keeps unchanged. This file resp. main memory is the basis for all further steps like validation or output generation. Strategy 2: The files of the release notes consists of many sect1-elements at the top level. To overcome this situation one can try to change sect1 to sect2, sect2 to sect3, ... and use a new sect1 element as a cramp over the complete file. The chain of sect sections is limited to 5 levels - and in some cases we use all of them. Therefore it's necessary to change the mark-up from sect-elements to section-elements, which can be used recursively without limits. This strategy leads to changes in the visual representation of the TOC, because every title-element shifts one level down. (In my opinion this is an improvement because a: after clicking to 'Release Notes' we actually have 372 items plus their sub-items. This will be reduced to one item per major release: 11, 10, 9.6, 9.5, ... and b: the acknowledgement-element is shown - as intended - per complete major release, not only with the very first version of a release.) Furthermore we have exactly one HTML file per major release for the standard HTML output. Strategy 3: Split huge files into smaller files (contrib, xfunc) and/or shift some sections to the calling file. From the perspective of a git user or someone, who translates the documentation to a different language, this is not funny but I hope that it will be accepted. PS_1: For tests don't forget the Make-target 'errcodes-table.sgml' PS_2: The remaining files version.sgml, filelist.sgml and ref/allfiles.sgml, which contains nothing but entity definitions, will possibly change or get superfluous with the migration to Docbook 5.x. Kind regards Jürgen Purtz --------------94F0ECE4BDE578C46209422B Content-Type: text/x-patch; name="XmlWellFormed.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="XmlWellFormed.patch" diff --git a/doc/src/sgml/contrib-prog.sgml b/doc/src/sgml/contrib-prog.sgml new file mode 100644 index 0000000000..0912ede300 --- /dev/null +++ b/doc/src/sgml/contrib-prog.sgml @@ -0,0 +1,60 @@ + + + + + + Additional Supplied Programs + + + This appendix and the previous one contain information regarding the modules that + can be found in the contrib directory of the + PostgreSQL distribution. See for + more information about the contrib section in general and + server extensions and plug-ins found in contrib + specifically. + + + + This appendix covers utility programs found in contrib. + Once installed, either from source or a packaging system, they are found in + the bin directory of the + PostgreSQL installation and can be used like any + other program. + + + + Client Applications + + + This section covers PostgreSQL client + applications in contrib. They can be run from anywhere, + independent of where the database server resides. See + also for information about client + applications that part of the core PostgreSQL + distribution. + + + &oid2name; + &vacuumlo; + + + + Server Applications + + + This section covers PostgreSQL server-related + applications in contrib. They are typically run on the + host where the database server resides. See also for information about server applications that + part of the core PostgreSQL distribution. + + + &pgstandby; + + diff --git a/doc/src/sgml/contrib.sgml b/doc/src/sgml/contrib.sgml index b626a345f3..7ea33da2ae 100644 --- a/doc/src/sgml/contrib.sgml +++ b/doc/src/sgml/contrib.sgml @@ -150,60 +150,3 @@ CREATE EXTENSION module_name FROM unpackaged; - - - - Additional Supplied Programs - - - This appendix and the previous one contain information regarding the modules that - can be found in the contrib directory of the - PostgreSQL distribution. See for - more information about the contrib section in general and - server extensions and plug-ins found in contrib - specifically. - - - - This appendix covers utility programs found in contrib. - Once installed, either from source or a packaging system, they are found in - the bin directory of the - PostgreSQL installation and can be used like any - other program. - - - - Client Applications - - - This section covers PostgreSQL client - applications in contrib. They can be run from anywhere, - independent of where the database server resides. See - also for information about client - applications that part of the core PostgreSQL - distribution. - - - &oid2name; - &vacuumlo; - - - - Server Applications - - - This section covers PostgreSQL server-related - applications in contrib. They are typically run on the - host where the database server resides. See also for information about server applications that - part of the core PostgreSQL distribution. - - - &pgstandby; - - diff --git a/doc/src/sgml/errcodes.sgml b/doc/src/sgml/errcodes.sgml index 6fd16f643e..8e96dfdf32 100644 --- a/doc/src/sgml/errcodes.sgml +++ b/doc/src/sgml/errcodes.sgml @@ -77,11 +77,8 @@ - + &errcodes-table; - &errcodes-table; - - diff --git a/doc/src/sgml/extend.sgml b/doc/src/sgml/extend.sgml index a6b77c1cfe..6e26870fcd 100644 --- a/doc/src/sgml/extend.sgml +++ b/doc/src/sgml/extend.sgml @@ -310,10 +310,495 @@ - &xfunc; + + User-defined Functions + + + function + user-defined + + + + PostgreSQL provides four kinds of + functions: + + + + + query language functions (functions written in + SQL) () + + + + + procedural language functions (functions written in, for + example, PL/pgSQL or PL/Tcl) + () + + + + + internal functions () + + + + + C-language functions () + + + + + + + Every kind + of function can take base types, composite types, or + combinations of these as arguments (parameters). In addition, + every kind of function can return a base type or + a composite type. Functions can also be defined to return + sets of base or composite values. + + + + Many kinds of functions can take or return certain pseudo-types + (such as polymorphic types), but the available facilities vary. + Consult the description of each kind of function for more details. + + + + It's easiest to define SQL + functions, so we'll start by discussing those. + Most of the concepts presented for SQL functions + will carry over to the other types of functions. + + + + Throughout this chapter, it can be useful to look at the reference + page of the command to + understand the examples better. Some examples from this chapter + can be found in funcs.sql and + funcs.c in the src/tutorial + directory in the PostgreSQL source + distribution. + + + + + User-defined Procedures + + + procedure + user-defined + + + + A procedure is a database object similar to a function. The difference is + that a procedure does not return a value, so there is no return type + declaration. While a function is called as part of a query or DML + command, a procedure is called explicitly using + the statement. + + + + The explanations on how to define user-defined functions in the rest of + this chapter apply to procedures as well, except that + the command is used instead, there is + no return type, and some other features such as strictness don't apply. + + + + Collectively, functions and procedures are also known + as routinesroutine. + There are commands such as + and that can operate on functions and + procedures without having to know which kind it is. Note, however, that + there is no CREATE ROUTINE command. + + + + &xfunc-sql; + + + Function Overloading + + + overloading + functions + + + + More than one function can be defined with the same SQL name, so long + as the arguments they take are different. In other words, + function names can be overloaded. Whether or not + you use it, this capability entails security precautions when calling + functions in databases where some users mistrust other users; see + . When a query is executed, the server + will determine which function to call from the data types and the number + of the provided arguments. Overloading can also be used to simulate + functions with a variable number of arguments, up to a finite maximum + number. + + + + When creating a family of overloaded functions, one should be + careful not to create ambiguities. For instance, given the + functions: + +CREATE FUNCTION test(int, real) RETURNS ... +CREATE FUNCTION test(smallint, double precision) RETURNS ... + + it is not immediately clear which function would be called with + some trivial input like test(1, 1.5). The + currently implemented resolution rules are described in + , but it is unwise to design a system that subtly + relies on this behavior. + + + + A function that takes a single argument of a composite type should + generally not have the same name as any attribute (field) of that type. + Recall that attribute(table) + is considered equivalent + to table.attribute. + In the case that there is an + ambiguity between a function on a composite type and an attribute of + the composite type, the attribute will always be used. It is possible + to override that choice by schema-qualifying the function name + (that is, schema.func(table) + ) but it's better to + avoid the problem by not choosing conflicting names. + + + + Another possible conflict is between variadic and non-variadic functions. + For instance, it is possible to create both foo(numeric) and + foo(VARIADIC numeric[]). In this case it is unclear which one + should be matched to a call providing a single numeric argument, such as + foo(10.1). The rule is that the function appearing + earlier in the search path is used, or if the two functions are in the + same schema, the non-variadic one is preferred. + + + + When overloading C-language functions, there is an additional + constraint: The C name of each function in the family of + overloaded functions must be different from the C names of all + other functions, either internal or dynamically loaded. If this + rule is violated, the behavior is not portable. You might get a + run-time linker error, or one of the functions will get called + (usually the internal one). The alternative form of the + AS clause for the SQL CREATE + FUNCTION command decouples the SQL function name from + the function name in the C source code. For instance: + +CREATE FUNCTION test(int) RETURNS int + AS 'filename', 'test_1arg' + LANGUAGE C; +CREATE FUNCTION test(int, int) RETURNS int + AS 'filename', 'test_2arg' + LANGUAGE C; + + The names of the C functions here reflect one of many possible conventions. + + + + + Function Volatility Categories + + + volatility + functions + + + VOLATILE + + + STABLE + + + IMMUTABLE + + + + Every function has a volatility classification, with + the possibilities being VOLATILE, STABLE, or + IMMUTABLE. VOLATILE is the default if the + + command does not specify a category. The volatility category is a + promise to the optimizer about the behavior of the function: + + + + + A VOLATILE function can do anything, including modifying + the database. It can return different results on successive calls with + the same arguments. The optimizer makes no assumptions about the + behavior of such functions. A query using a volatile function will + re-evaluate the function at every row where its value is needed. + + + + + A STABLE function cannot modify the database and is + guaranteed to return the same results given the same arguments + for all rows within a single statement. This category allows the + optimizer to optimize multiple calls of the function to a single + call. In particular, it is safe to use an expression containing + such a function in an index scan condition. (Since an index scan + will evaluate the comparison value only once, not once at each + row, it is not valid to use a VOLATILE function in an + index scan condition.) + + + + + An IMMUTABLE function cannot modify the database and is + guaranteed to return the same results given the same arguments forever. + This category allows the optimizer to pre-evaluate the function when + a query calls it with constant arguments. For example, a query like + SELECT ... WHERE x = 2 + 2 can be simplified on sight to + SELECT ... WHERE x = 4, because the function underlying + the integer addition operator is marked IMMUTABLE. + + + + + + + For best optimization results, you should label your functions with the + strictest volatility category that is valid for them. + + + + Any function with side-effects must be labeled + VOLATILE, so that calls to it cannot be optimized away. + Even a function with no side-effects needs to be labeled + VOLATILE if its value can change within a single query; + some examples are random(), currval(), + timeofday(). + + + + Another important example is that the current_timestamp + family of functions qualify as STABLE, since their values do + not change within a transaction. + + + + There is relatively little difference between STABLE and + IMMUTABLE categories when considering simple interactive + queries that are planned and immediately executed: it doesn't matter + a lot whether a function is executed once during planning or once during + query execution startup. But there is a big difference if the plan is + saved and reused later. Labeling a function IMMUTABLE when + it really isn't might allow it to be prematurely folded to a constant during + planning, resulting in a stale value being re-used during subsequent uses + of the plan. This is a hazard when using prepared statements or when + using function languages that cache plans (such as + PL/pgSQL). + + + + For functions written in SQL or in any of the standard procedural + languages, there is a second important property determined by the + volatility category, namely the visibility of any data changes that have + been made by the SQL command that is calling the function. A + VOLATILE function will see such changes, a STABLE + or IMMUTABLE function will not. This behavior is implemented + using the snapshotting behavior of MVCC (see ): + STABLE and IMMUTABLE functions use a snapshot + established as of the start of the calling query, whereas + VOLATILE functions obtain a fresh snapshot at the start of + each query they execute. + + + + + Functions written in C can manage snapshots however they want, but it's + usually a good idea to make C functions work this way too. + + + + + Because of this snapshotting behavior, + a function containing only SELECT commands can safely be + marked STABLE, even if it selects from tables that might be + undergoing modifications by concurrent queries. + PostgreSQL will execute all commands of a + STABLE function using the snapshot established for the + calling query, and so it will see a fixed view of the database throughout + that query. + + + + The same snapshotting behavior is used for SELECT commands + within IMMUTABLE functions. It is generally unwise to select + from database tables within an IMMUTABLE function at all, + since the immutability will be broken if the table contents ever change. + However, PostgreSQL does not enforce that you + do not do that. + + + + A common error is to label a function IMMUTABLE when its + results depend on a configuration parameter. For example, a function + that manipulates timestamps might well have results that depend on the + setting. For safety, such functions should + be labeled STABLE instead. + + + + + PostgreSQL requires that STABLE + and IMMUTABLE functions contain no SQL commands other + than SELECT to prevent data modification. + (This is not a completely bulletproof test, since such functions could + still call VOLATILE functions that modify the database. + If you do that, you will find that the STABLE or + IMMUTABLE function does not notice the database changes + applied by the called function, since they are hidden from its snapshot.) + + + + + + Procedural Language Functions + + + PostgreSQL allows user-defined functions + to be written in other languages besides SQL and C. These other + languages are generically called procedural + languages (PLs). + Procedural languages aren't built into the + PostgreSQL server; they are offered + by loadable modules. + See and following chapters for more + information. + + + + + Internal Functions + + functioninternal + + + Internal functions are functions written in C that have been statically + linked into the PostgreSQL server. + The body of the function definition + specifies the C-language name of the function, which need not be the + same as the name being declared for SQL use. + (For reasons of backward compatibility, an empty body + is accepted as meaning that the C-language function name is the + same as the SQL name.) + + + + Normally, all internal functions present in the + server are declared during the initialization of the database cluster + (see ), + but a user could use CREATE FUNCTION + to create additional alias names for an internal function. + Internal functions are declared in CREATE FUNCTION + with language name internal. For instance, to + create an alias for the sqrt function: + +CREATE FUNCTION square_root(double precision) RETURNS double precision + AS 'dsqrt' + LANGUAGE internal + STRICT; + + (Most internal functions expect to be declared strict.) + + + + + Not all predefined functions are + internal in the above sense. Some predefined + functions are written in SQL. + + + + + &xfunc; &xaggr; &xtypes; - &xoper; + + + User-defined Operators + + + operator + user-defined + + + + Every operator is syntactic sugar for a call to an + underlying function that does the real work; so you must + first create the underlying function before you can create + the operator. However, an operator is not merely + syntactic sugar, because it carries additional information + that helps the query planner optimize queries that use the + operator. The next section will be devoted to explaining + that additional information. + + + + PostgreSQL supports left unary, right + unary, and binary operators. Operators can be + overloaded;overloadingoperators + that is, the same operator name can be used for different operators + that have different numbers and types of operands. When a query is + executed, the system determines the operator to call from the + number and types of the provided operands. + + + + Here is an example of creating an operator for adding two complex + numbers. We assume we've already created the definition of type + complex (see ). First we need a + function that does the work, then we can define the operator: + + +CREATE FUNCTION complex_add(complex, complex) + RETURNS complex + AS 'filename', 'complex_add' + LANGUAGE C IMMUTABLE STRICT; + +CREATE OPERATOR + ( + leftarg = complex, + rightarg = complex, + function = complex_add, + commutator = + +); + + + + + Now we could execute a query like this: + + +SELECT (a + b) AS c FROM test_complex; + + c +----------------- + (5.2,6.05) + (133.42,144.95) + + + + + We've shown how to create a binary operator here. To create unary + operators, just omit one of leftarg (for left unary) or + rightarg (for right unary). The function + clause and the argument clauses are the only required items in + CREATE OPERATOR. The commutator + clause shown in the example is an optional hint to the query + optimizer. Further details about commutator and other + optimizer hints appear in the next section. + + + + &xoper; &xindex; diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml index 5dfdf54815..3d33b906ee 100644 --- a/doc/src/sgml/filelist.sgml +++ b/doc/src/sgml/filelist.sgml @@ -65,6 +65,7 @@ + @@ -104,6 +105,7 @@ + diff --git a/doc/src/sgml/generate-errcodes-table.pl b/doc/src/sgml/generate-errcodes-table.pl index 24b9d891c3..022abf9d20 100644 --- a/doc/src/sgml/generate-errcodes-table.pl +++ b/doc/src/sgml/generate-errcodes-table.pl @@ -8,6 +8,7 @@ use strict; print "\n"; +print "\n"; open my $errcodes, '<', $ARGV[0] or die; @@ -56,4 +57,5 @@ while (<$errcodes>) print "\n"; } +print "\n"; close $errcodes; diff --git a/doc/src/sgml/legal.sgml b/doc/src/sgml/legal.sgml index 9bb1d7983b..03e2a810d5 100644 --- a/doc/src/sgml/legal.sgml +++ b/doc/src/sgml/legal.sgml @@ -1,5 +1,10 @@ + + The PostgreSQL Global Development Group + PostgreSQL + &version; + 2019 @@ -46,3 +51,5 @@ + + diff --git a/doc/src/sgml/postgres.sgml b/doc/src/sgml/postgres.sgml index 96d196d229..c49cc45839 100644 --- a/doc/src/sgml/postgres.sgml +++ b/doc/src/sgml/postgres.sgml @@ -16,13 +16,7 @@ PostgreSQL &version; Documentation - - The PostgreSQL Global Development Group - PostgreSQL - &version; - &legal; - - + &legal; &intro; @@ -272,6 +266,7 @@ &features; &release; &contrib; + &contrib-prog; &external-projects; &sourcerepo; &docguide; diff --git a/doc/src/sgml/release-10.sgml b/doc/src/sgml/release-10.sgml index c72b4c931e..cf031e6ae3 100644 --- a/doc/src/sgml/release-10.sgml +++ b/doc/src/sgml/release-10.sgml @@ -1,7 +1,9 @@ - +
+ Release 10 +
Release 10.6 @@ -15,7 +17,7 @@ . - +
Migration to Version 10.6 @@ -31,9 +33,9 @@ Also, if you are upgrading from a version earlier than 10.4, see . - +
- +
Changes @@ -1338,10 +1340,10 @@ Branch: REL9_3_STABLE [08aad3c81] 2018-09-30 16:24:56 -0400 - - +
+
- +
Release 10.5 @@ -1355,7 +1357,7 @@ Branch: REL9_3_STABLE [08aad3c81] 2018-09-30 16:24:56 -0400 . - +
Migration to Version 10.5 @@ -1366,9 +1368,9 @@ Branch: REL9_3_STABLE [08aad3c81] 2018-09-30 16:24:56 -0400 However, if you are upgrading from a version earlier than 10.4, see . - +
- +
Changes @@ -2407,10 +2409,10 @@ Branch: REL9_3_STABLE [3f36e4fc5] 2018-05-09 13:56:06 -0400 - - +
+
- +
Release 10.4 @@ -2424,7 +2426,7 @@ Branch: REL9_3_STABLE [3f36e4fc5] 2018-05-09 13:56:06 -0400 . - +
Migration to Version 10.4 @@ -2446,9 +2448,9 @@ Branch: REL9_3_STABLE [3f36e4fc5] 2018-05-09 13:56:06 -0400 Also, if you are upgrading from a version earlier than 10.3, see . - +
- +
Changes @@ -3523,10 +3525,10 @@ Branch: REL9_3_STABLE [adcd0c2be] 2018-04-29 15:50:50 -0400 - - +
+
- +
Release 10.3 @@ -3540,7 +3542,7 @@ Branch: REL9_3_STABLE [adcd0c2be] 2018-04-29 15:50:50 -0400 . - +
Migration to Version 10.3 @@ -3567,9 +3569,9 @@ Branch: REL9_3_STABLE [adcd0c2be] 2018-04-29 15:50:50 -0400 Also, if you are upgrading from a version earlier than 10.2, see . - +
- +
Changes @@ -3850,10 +3852,10 @@ Branch: REL9_6_STABLE [83fce670e] 2018-02-22 12:58:43 -0800 - - +
+
- +
Release 10.2 @@ -3867,7 +3869,7 @@ Branch: REL9_6_STABLE [83fce670e] 2018-02-22 12:58:43 -0800 . - +
Migration to Version 10.2 @@ -3884,9 +3886,9 @@ Branch: REL9_6_STABLE [83fce670e] 2018-02-22 12:58:43 -0800 Also, if you are upgrading from a version earlier than 10.1, see . - +
- +
Changes @@ -5062,10 +5064,10 @@ Branch: REL9_3_STABLE [e5e2cc6f8] 2018-01-27 16:43:00 -0500 - - +
+
- +
Release 10.1 @@ -5079,7 +5081,7 @@ Branch: REL9_3_STABLE [e5e2cc6f8] 2018-01-27 16:43:00 -0500 . - +
Migration to Version 10.1 @@ -5089,9 +5091,9 @@ Branch: REL9_3_STABLE [e5e2cc6f8] 2018-01-27 16:43:00 -0500 However, if you use BRIN indexes, see the fourth changelog entry below. - +
- +
Changes @@ -5804,10 +5806,10 @@ Branch: REL_10_STABLE [5159626af] 2017-11-03 14:14:16 -0400 - - +
+
- +
Release 10 @@ -5815,7 +5817,7 @@ Branch: REL_10_STABLE [5159626af] 2017-11-03 14:14:16 -0400 2017-10-05 - +
Overview @@ -5838,9 +5840,9 @@ Branch: REL_10_STABLE [5159626af] 2017-11-03 14:14:16 -0400 The above items are explained in more detail in the sections below. - +
- +
Migration to Version 10 @@ -6374,9 +6376,9 @@ Branch: REL_10_STABLE [5159626af] 2017-11-03 14:14:16 -0400 - +
- +
Changes @@ -6385,10 +6387,10 @@ Branch: REL_10_STABLE [5159626af] 2017-11-03 14:14:16 -0400 release. - +
Server - +
Parallel Queries @@ -6494,9 +6496,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Indexes @@ -6610,9 +6612,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Locking @@ -6654,9 +6656,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Optimizer @@ -6701,9 +6703,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
General Performance @@ -6787,9 +6789,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Monitoring @@ -6840,7 +6842,7 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
Logging @@ -6938,9 +6940,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
<link linkend="pg-stat-activity-view"><structname>pg_stat_activity</structname></link> @@ -7007,10 +7009,10 @@ This was disabled in the PG 9.6 branch so there is no commit here. - - +
+
- +
<acronym>Authentication</acronym> @@ -7080,9 +7082,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Server Configuration @@ -7123,9 +7125,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Reliability @@ -7146,7 +7148,7 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
<link linkend="wal">Write-Ahead Log</link> (<acronym>WAL</acronym>) @@ -7195,13 +7197,13 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
- +
- +
Replication and Recovery @@ -7367,9 +7369,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Queries @@ -7404,9 +7406,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Utility Commands @@ -7595,9 +7597,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Data Types @@ -7715,9 +7717,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Functions @@ -7839,9 +7841,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Server-Side Languages @@ -7878,7 +7880,7 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
<link linkend="pltcl">PL/Tcl</link> @@ -7920,10 +7922,10 @@ This was disabled in the PG 9.6 branch so there is no commit here. - - +
+
- +
Client Interfaces @@ -8015,12 +8017,12 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Client Applications - +
<xref linkend="app-psql"/> @@ -8159,9 +8161,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
<xref linkend="pgbench"/> @@ -8203,11 +8205,11 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
- +
Server Applications @@ -8257,7 +8259,7 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
<link linkend="app-pgdump"><application>pg_dump</application></link>, <link linkend="app-pg-dumpall"><application>pg_dumpall</application></link>, <link linkend="app-pgrestore"><application>pg_restore</application></link> @@ -8336,9 +8338,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
<xref linkend="app-pgbasebackup"/> @@ -8410,9 +8412,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
<application><xref linkend="app-pg-ctl"/></application> @@ -8501,10 +8503,10 @@ This was disabled in the PG 9.6 branch so there is no commit here. - - +
+
- +
Source Code @@ -8781,9 +8783,9 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
Additional Modules @@ -8986,11 +8988,11 @@ This was disabled in the PG 9.6 branch so there is no commit here. - +
- +
- +
Acknowledgments @@ -9325,6 +9327,7 @@ This was disabled in the PG 9.6 branch so there is no commit here. Zhen Ming Yang Zhou Digoal - +
- +
+
diff --git a/doc/src/sgml/release-11.sgml b/doc/src/sgml/release-11.sgml index 09b80b8af5..b31a623fda 100644 --- a/doc/src/sgml/release-11.sgml +++ b/doc/src/sgml/release-11.sgml @@ -1,7 +1,9 @@ - +
+ Release 11 +
Release 11.1 @@ -15,7 +17,7 @@ . - +
Migration to Version 11.1 @@ -26,9 +28,9 @@ However, if you use the pg_stat_statements extension, see the changelog entry below about that. - +
- +
Changes @@ -495,10 +497,10 @@ Branch: REL9_3_STABLE [84261eb10] 2018-10-19 17:02:26 -0400 - - +
+
- +
Release 11 @@ -506,7 +508,7 @@ Branch: REL9_3_STABLE [84261eb10] 2018-10-19 17:02:26 -0400 2018-10-18 - +
Overview @@ -626,9 +628,9 @@ Branch: REL9_3_STABLE [84261eb10] 2018-10-19 17:02:26 -0400 The above items are explained in more detail in the sections below. - +
- +
Migration to Version 11 @@ -1052,9 +1054,9 @@ Branch: REL9_3_STABLE [84261eb10] 2018-10-19 17:02:26 -0400 - +
- +
Changes @@ -1063,10 +1065,10 @@ Branch: REL9_3_STABLE [84261eb10] 2018-10-19 17:02:26 -0400 release. - +
Server - +
Partitioning @@ -1280,9 +1282,9 @@ Branch: REL9_3_STABLE [84261eb10] 2018-10-19 17:02:26 -0400 - +
- +
Parallel Queries @@ -1420,9 +1422,9 @@ same commits as above - +
- +
Indexes @@ -1490,7 +1492,7 @@ same commits as above - +
<link linkend="spgist">SP-Gist</link> @@ -1537,11 +1539,11 @@ same commits as above - +
- +
- +
Optimizer @@ -1627,9 +1629,9 @@ same commits as above - +
- +
General Performance @@ -1766,9 +1768,9 @@ same commits as above - +
- +
Monitoring @@ -1820,7 +1822,7 @@ same commits as above - +
<link linkend="infoschema-tables">Information Schema</link> @@ -1850,10 +1852,10 @@ same commits as above - - +
+
- +
<acronym>Authentication</acronym> @@ -1909,9 +1911,9 @@ same commits as above - +
- +
Permissions @@ -2017,9 +2019,9 @@ same commits as above - +
- +
Server Configuration @@ -2084,9 +2086,9 @@ same commits as above - +
- +
<link linkend="wal">Write-Ahead Log</link> (<acronym>WAL</acronym>) @@ -2136,11 +2138,11 @@ same commits as above - +
- +
- +
Base Backup and Streaming Replication @@ -2245,9 +2247,9 @@ same commits as above - +
- +
Utility Commands @@ -2351,9 +2353,9 @@ same commits as above - +
- +
Data Types @@ -2406,9 +2408,9 @@ same commits as above - +
- +
Functions @@ -2512,9 +2514,9 @@ same commits as above - +
- +
Server-Side Languages @@ -2630,9 +2632,9 @@ same commits as above - +
- +
Client Interfaces @@ -2688,12 +2690,12 @@ same commits as above - +
- +
Client Applications - +
<xref linkend="app-psql"/> @@ -2863,9 +2865,9 @@ same commits as above - +
- +
<link linkend="pgbench"><application>pgbench</application></link> @@ -2976,11 +2978,11 @@ same commits as above - +
- +
- +
Server Applications @@ -3131,7 +3133,7 @@ same commits as above - +
<link linkend="app-pgdump"><application>pg_dump</application></link>, <link linkend="app-pg-dumpall"><application>pg_dumpall</application></link>, <link linkend="app-pgrestore"><application>pg_restore</application></link> @@ -3194,11 +3196,11 @@ same commits as above - +
- +
- +
Source Code @@ -3436,9 +3438,9 @@ same commits as above - +
- +
Additional Modules @@ -3629,11 +3631,11 @@ same commits as above - +
- +
- +
Acknowledgments @@ -3957,6 +3959,7 @@ same commits as above Yves Goergen Zhou Digoal - +
- +
+
diff --git a/doc/src/sgml/release-12.sgml b/doc/src/sgml/release-12.sgml index b06fef287d..480ea53a8c 100644 --- a/doc/src/sgml/release-12.sgml +++ b/doc/src/sgml/release-12.sgml @@ -1,11 +1,14 @@ - +
+ Release 12 +
Release 12 JIT is enabled by default in this release. It was disabled by default in PG 11, so we document is enablement here. - +
+
diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml index a67945a42b..c9c45ec4c7 100644 --- a/doc/src/sgml/release-7.4.sgml +++ b/doc/src/sgml/release-7.4.sgml @@ -1,7 +1,9 @@ - +
+ Release 7.4 +
Release 7.4.30 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 7.4.30 @@ -30,9 +32,9 @@ see . - +
- +
Changes @@ -132,10 +134,10 @@ - - +
+
- +
Release 7.4.29 @@ -155,7 +157,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 7.4.29 @@ -164,9 +166,9 @@ see . - +
- +
Changes @@ -276,10 +278,10 @@ - - +
+
- +
Release 7.4.28 @@ -299,7 +301,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 7.4.28 @@ -308,9 +310,9 @@ see . - +
- +
Changes @@ -395,10 +397,10 @@ - - +
+
- +
Release 7.4.27 @@ -412,7 +414,7 @@ . - +
Migration to Version 7.4.27 @@ -421,9 +423,9 @@ see . - +
- +
Changes @@ -515,10 +517,10 @@ - - +
+
- +
Release 7.4.26 @@ -532,7 +534,7 @@ . - +
Migration to Version 7.4.26 @@ -543,9 +545,9 @@ see . - +
- +
Changes @@ -645,10 +647,10 @@ - - +
+
- +
Release 7.4.25 @@ -662,7 +664,7 @@ . - +
Migration to Version 7.4.25 @@ -671,9 +673,9 @@ see . - +
- +
Changes @@ -725,10 +727,10 @@ - - +
+
- +
Release 7.4.24 @@ -742,7 +744,7 @@ . - +
Migration to Version 7.4.24 @@ -751,9 +753,9 @@ see . - +
- +
Changes @@ -811,10 +813,10 @@ - - +
+
- +
Release 7.4.23 @@ -828,7 +830,7 @@ . - +
Migration to Version 7.4.23 @@ -837,9 +839,9 @@ see . - +
- +
Changes @@ -895,10 +897,10 @@ - - +
+
- +
Release 7.4.22 @@ -912,7 +914,7 @@ . - +
Migration to Version 7.4.22 @@ -921,9 +923,9 @@ see . - +
- +
Changes @@ -971,10 +973,10 @@ - - +
+
- +
Release 7.4.21 @@ -988,7 +990,7 @@ . - +
Migration to Version 7.4.21 @@ -997,9 +999,9 @@ see . - +
- +
Changes @@ -1025,10 +1027,10 @@ - - +
+
- +
Release 7.4.20 @@ -1042,7 +1044,7 @@ . - +
Migration to Version 7.4.20 @@ -1051,9 +1053,9 @@ see . - +
- +
Changes @@ -1170,10 +1172,10 @@ - - +
+
- +
Release 7.4.19 @@ -1188,7 +1190,7 @@ . - +
Migration to Version 7.4.19 @@ -1197,9 +1199,9 @@ see . - +
- +
Changes @@ -1324,10 +1326,10 @@ - - +
+
- +
Release 7.4.18 @@ -1341,7 +1343,7 @@ . - +
Migration to Version 7.4.18 @@ -1350,9 +1352,9 @@ see . - +
- +
Changes @@ -1400,10 +1402,10 @@ - - +
+
- +
Release 7.4.17 @@ -1418,7 +1420,7 @@ . - +
Migration to Version 7.4.17 @@ -1427,9 +1429,9 @@ see . - +
- +
Changes @@ -1471,10 +1473,10 @@ - - +
+
- +
Release 7.4.16 @@ -1489,7 +1491,7 @@ . - +
Migration to Version 7.4.16 @@ -1498,9 +1500,9 @@ see . - +
- +
Changes @@ -1542,10 +1544,10 @@ - - +
+
- +
Release 7.4.15 @@ -1559,7 +1561,7 @@ . - +
Migration to Version 7.4.15 @@ -1568,9 +1570,9 @@ see . - +
- +
Changes @@ -1631,10 +1633,10 @@ - - +
+
- +
Release 7.4.14 @@ -1648,7 +1650,7 @@ . - +
Migration to Version 7.4.14 @@ -1657,9 +1659,9 @@ see . - +
- +
Changes @@ -1678,10 +1680,10 @@ ANYARRAY - - +
+
- +
Release 7.4.13 @@ -1696,7 +1698,7 @@ ANYARRAY . - +
Migration to Version 7.4.13 @@ -1716,9 +1718,9 @@ ANYARRAY PQescapeStringConn()) to perform string escaping, rather than relying on ad hoc code to do it. - +
- +
Changes @@ -1785,10 +1787,10 @@ Fuhr) Fix various minor memory leaks - - +
+
- +
Release 7.4.12 @@ -1802,7 +1804,7 @@ Fuhr) . - +
Migration to Version 7.4.12 @@ -1810,9 +1812,9 @@ Fuhr) if you are upgrading from a version earlier than 7.4.11, see . - +
- +
Changes @@ -1848,10 +1850,10 @@ and isinf during configure (Tom) - - +
+
- +
Release 7.4.11 @@ -1865,7 +1867,7 @@ and isinf during configure (Tom) . - +
Migration to Version 7.4.11 @@ -1876,9 +1878,9 @@ and isinf during configure (Tom) columns after updating, if you are affected by the locale or plperl issues described below. - +
- +
Changes @@ -1915,10 +1917,10 @@ what's actually returned by the query (Joe) - - +
+
- +
Release 7.4.10 @@ -1932,7 +1934,7 @@ what's actually returned by the query (Joe) . - +
Migration to Version 7.4.10 @@ -1940,9 +1942,9 @@ what's actually returned by the query (Joe) if you are upgrading from a version earlier than 7.4.8, see . - +
- +
Changes @@ -1968,10 +1970,10 @@ only supported with merge-joinable join conditions. table has been dropped - - +
+
- +
Release 7.4.9 @@ -1985,7 +1987,7 @@ table has been dropped . - +
Migration to Version 7.4.9 @@ -1993,9 +1995,9 @@ table has been dropped if you are upgrading from a version earlier than 7.4.8, see . - +
- +
Changes @@ -2037,10 +2039,10 @@ the variable is of pass-by-reference type code - - +
+
- +
Release 7.4.8 @@ -2055,7 +2057,7 @@ code . - +
Migration to Version 7.4.8 @@ -2148,9 +2150,9 @@ VACUUM FREEZE; UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - +
- +
Changes @@ -2221,10 +2223,10 @@ holder of the lock released it within a very narrow window. ALTER TABLE SET WITHOUT OIDS - - +
+
- +
Release 7.4.7 @@ -2239,15 +2241,15 @@ holder of the lock released it within a very narrow window. . - +
Migration to Version 7.4.7 A dump/restore is not required for those running 7.4.X. - +
- +
Changes @@ -2281,10 +2283,10 @@ datestyles GMT - - +
+
- +
Release 7.4.6 @@ -2299,15 +2301,15 @@ GMT - +
Migration to Version 7.4.6 A dump/restore is not required for those running 7.4.X. - +
- +
Changes @@ -2353,10 +2355,10 @@ This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN. ECPG prepare statement - - +
+
- +
Release 7.4.5 @@ -2371,15 +2373,15 @@ ECPG prepare statement - +
Migration to Version 7.4.5 A dump/restore is not required for those running 7.4.X. - +
- +
Changes @@ -2391,10 +2393,10 @@ still worth a re-release. The bug does not exist in pre-7.4 releases. - - +
+
- +
Release 7.4.4 @@ -2409,15 +2411,15 @@ still worth a re-release. The bug does not exist in pre-7.4 releases. - +
Migration to Version 7.4.4 A dump/restore is not required for those running 7.4.X. - +
- +
Changes @@ -2443,10 +2445,10 @@ aggregate plan Translation updates (various contributors) - - +
+
- +
Release 7.4.3 @@ -2461,15 +2463,15 @@ aggregate plan - +
Migration to Version 7.4.3 A dump/restore is not required for those running 7.4.X. - +
- +
Changes @@ -2501,10 +2503,10 @@ names from outer query levels. Numerous translation updates (various contributors) - - +
+
- +
Release 7.4.2 @@ -2519,7 +2521,7 @@ names from outer query levels. - +
Migration to Version 7.4.2 @@ -2603,9 +2605,9 @@ VACUUM FREEZE; UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - +
- +
Changes @@ -2644,10 +2646,10 @@ inconveniences associated with the i/I problem.Various JDBC fixes - - +
+
- +
Release 7.4.1 @@ -2662,7 +2664,7 @@ inconveniences associated with the i/I problem. - +
Migration to Version 7.4.1 @@ -2685,9 +2687,9 @@ DROP SCHEMA information_schema CASCADE; Substitute your installation path in the second command. - +
- +
Changes @@ -2758,10 +2760,10 @@ DROP SCHEMA information_schema CASCADE; Fix local ident authentication on FreeBSD (Tom) - - +
+
- +
Release 7.4 @@ -2769,7 +2771,7 @@ DROP SCHEMA information_schema CASCADE; 2003-11-17 - +
Overview @@ -3040,9 +3042,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
Migration to Version 7.4 @@ -3194,9 +3196,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
Changes @@ -3204,7 +3206,7 @@ DROP SCHEMA information_schema CASCADE; release 7.4 and the previous major release. - +
Server Operation Changes @@ -3301,9 +3303,9 @@ DROP SCHEMA information_schema CASCADE; Remove autocommit server setting; move to client applications (Tom) New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter) - +
- +
Performance Improvements @@ -3483,9 +3485,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
Server Configuration Changes @@ -3641,9 +3643,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
Query Changes @@ -3703,9 +3705,9 @@ DROP SCHEMA information_schema CASCADE; Implement CREATE TABLE AS EXECUTE (Neil, Peter) - +
- +
Object Manipulation Changes @@ -3801,9 +3803,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
Utility Command Changes @@ -3981,9 +3983,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
Data Type and Function Changes @@ -4220,9 +4222,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
Server-Side Language Changes @@ -4294,9 +4296,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
psql Changes @@ -4353,9 +4355,9 @@ DROP SCHEMA information_schema CASCADE; New prompt escape sequence %x to show transaction status (Tom) Long options for psql are now available on all platforms - +
- +
pg_dump Changes @@ -4407,9 +4409,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
libpq Changes @@ -4500,9 +4502,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
JDBC Changes @@ -4512,9 +4514,9 @@ DROP SCHEMA information_schema CASCADE; Handle schema names in result sets (Paul Sorenson) Add refcursor support (Nic Ferrier) - +
- +
Miscellaneous Interface Changes @@ -4549,9 +4551,9 @@ DROP SCHEMA information_schema CASCADE; Moved Python client PyGreSQL to (Marc) - +
- +
Source Code Changes @@ -4588,9 +4590,9 @@ DROP SCHEMA information_schema CASCADE; - +
- +
Contrib Changes @@ -4617,6 +4619,7 @@ DROP SCHEMA information_schema CASCADE; Fix dbase option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle) Remove array module because features now included by default (Joe) - - - +
+
+
+
diff --git a/doc/src/sgml/release-8.0.sgml b/doc/src/sgml/release-8.0.sgml index 6171e0d1ee..9efc545bd4 100644 --- a/doc/src/sgml/release-8.0.sgml +++ b/doc/src/sgml/release-8.0.sgml @@ -1,7 +1,9 @@ - +
+ Release 8.0 +
Release 8.0.26 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 8.0.26 @@ -30,9 +32,9 @@ see . - +
- +
Changes @@ -202,10 +204,10 @@ - - +
+
- +
Release 8.0.25 @@ -225,7 +227,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 8.0.25 @@ -234,9 +236,9 @@ see . - +
- +
Changes @@ -362,10 +364,10 @@ - - +
+
- +
Release 8.0.24 @@ -385,7 +387,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 8.0.24 @@ -394,9 +396,9 @@ see . - +
- +
Changes @@ -539,10 +541,10 @@ - - +
+
- +
Release 8.0.23 @@ -556,7 +558,7 @@ . - +
Migration to Version 8.0.23 @@ -565,9 +567,9 @@ see . - +
- +
Changes @@ -694,10 +696,10 @@ - - +
+
- +
Release 8.0.22 @@ -711,7 +713,7 @@ . - +
Migration to Version 8.0.22 @@ -722,9 +724,9 @@ see . - +
- +
Changes @@ -858,10 +860,10 @@ - - +
+
- +
Release 8.0.21 @@ -875,7 +877,7 @@ . - +
Migration to Version 8.0.21 @@ -884,9 +886,9 @@ see . - +
- +
Changes @@ -938,10 +940,10 @@ - - +
+
- +
Release 8.0.20 @@ -955,7 +957,7 @@ . - +
Migration to Version 8.0.20 @@ -964,9 +966,9 @@ see . - +
- +
Changes @@ -1024,10 +1026,10 @@ - - +
+
- +
Release 8.0.19 @@ -1041,7 +1043,7 @@ . - +
Migration to Version 8.0.19 @@ -1050,9 +1052,9 @@ see . - +
- +
Changes @@ -1135,10 +1137,10 @@ - - +
+
- +
Release 8.0.18 @@ -1152,7 +1154,7 @@ . - +
Migration to Version 8.0.18 @@ -1161,9 +1163,9 @@ see . - +
- +
Changes @@ -1269,10 +1271,10 @@ - - +
+
- +
Release 8.0.17 @@ -1286,7 +1288,7 @@ . - +
Migration to Version 8.0.17 @@ -1295,9 +1297,9 @@ see . - +
- +
Changes @@ -1323,10 +1325,10 @@ - - +
+
- +
Release 8.0.16 @@ -1340,7 +1342,7 @@ . - +
Migration to Version 8.0.16 @@ -1349,9 +1351,9 @@ see . - +
- +
Changes @@ -1560,10 +1562,10 @@ - - +
+
- +
Release 8.0.15 @@ -1587,7 +1589,7 @@ be supported on other platforms. - +
Migration to Version 8.0.15 @@ -1596,9 +1598,9 @@ see . - +
- +
Changes @@ -1776,10 +1778,10 @@ - - +
+
- +
Release 8.0.14 @@ -1793,7 +1795,7 @@ . - +
Migration to Version 8.0.14 @@ -1802,9 +1804,9 @@ see . - +
- +
Changes @@ -1884,10 +1886,10 @@ - - +
+
- +
Release 8.0.13 @@ -1902,7 +1904,7 @@ . - +
Migration to Version 8.0.13 @@ -1911,9 +1913,9 @@ see . - +
- +
Changes @@ -1961,10 +1963,10 @@ - - +
+
- +
Release 8.0.12 @@ -1978,7 +1980,7 @@ . - +
Migration to Version 8.0.12 @@ -1987,9 +1989,9 @@ see . - +
- +
Changes @@ -2003,10 +2005,10 @@ - - +
+
- +
Release 8.0.11 @@ -2021,7 +2023,7 @@ . - +
Migration to Version 8.0.11 @@ -2030,9 +2032,9 @@ see . - +
- +
Changes @@ -2074,10 +2076,10 @@ - - +
+
- +
Release 8.0.10 @@ -2091,7 +2093,7 @@ . - +
Migration to Version 8.0.10 @@ -2100,9 +2102,9 @@ see . - +
- +
Changes @@ -2193,10 +2195,10 @@ - - +
+
- +
Release 8.0.9 @@ -2210,7 +2212,7 @@ . - +
Migration to Version 8.0.9 @@ -2219,9 +2221,9 @@ see . - +
- +
Changes @@ -2249,10 +2251,10 @@ Wieland) Intel compilers (Tom) - - +
+
- +
Release 8.0.8 @@ -2267,7 +2269,7 @@ Wieland) . - +
Migration to Version 8.0.8 @@ -2287,9 +2289,9 @@ Wieland) PQescapeStringConn()) to perform string escaping, rather than relying on ad hoc code to do it. - +
- +
Changes @@ -2363,10 +2365,10 @@ Fuhr) (Robert Kinberg) - - +
+
- +
Release 8.0.7 @@ -2380,7 +2382,7 @@ Fuhr) . - +
Migration to Version 8.0.7 @@ -2388,9 +2390,9 @@ Fuhr) if you are upgrading from a version earlier than 8.0.6, see . - +
- +
Changes @@ -2462,10 +2464,10 @@ and isinf during configure (Tom) - - +
+
- +
Release 8.0.6 @@ -2479,7 +2481,7 @@ and isinf during configure (Tom) . - +
Migration to Version 8.0.6 @@ -2490,9 +2492,9 @@ and isinf during configure (Tom) columns after updating, if you are affected by the locale or plperl issues described below. - +
- +
Changes @@ -2547,10 +2549,10 @@ what's actually returned by the query (Joe) - - +
+
- +
Release 8.0.5 @@ -2564,7 +2566,7 @@ what's actually returned by the query (Joe) . - +
Migration to Version 8.0.5 @@ -2572,9 +2574,9 @@ what's actually returned by the query (Joe) if you are upgrading from a version earlier than 8.0.3, see . - +
- +
Changes @@ -2629,10 +2631,10 @@ table has been dropped to subquery results - - +
+
- +
Release 8.0.4 @@ -2646,7 +2648,7 @@ to subquery results . - +
Migration to Version 8.0.4 @@ -2654,9 +2656,9 @@ to subquery results if you are upgrading from a version earlier than 8.0.3, see . - +
- +
Changes @@ -2726,10 +2728,10 @@ intervals over 2000 sec code - - +
+
- +
Release 8.0.3 @@ -2744,7 +2746,7 @@ code . - +
Migration to Version 8.0.3 @@ -2786,9 +2788,9 @@ code procedures shown in the 7.4.8 release notes. - +
- +
Changes @@ -2846,10 +2848,10 @@ firing deferred triggers during transaction commit data types - - +
+
- +
Release 8.0.2 @@ -2863,7 +2865,7 @@ data types . - +
Migration to Version 8.0.2 @@ -2873,9 +2875,9 @@ data types necessary to re-link some user applications if they cannot find the properly-numbered shared library. - +
- +
Changes @@ -3003,10 +3005,10 @@ returned the wrong year for the first few days of January in some years. addresses in INET data types (Tom) - - +
+
- +
Release 8.0.1 @@ -3021,15 +3023,15 @@ addresses in INET data types (Tom) . - +
Migration to Version 8.0.1 A dump/restore is not required for those running 8.0.0. - +
- +
Changes @@ -3072,10 +3074,10 @@ pg_dump/pg_restore typedefs (Michael) - - +
+
- +
Release 8.0 @@ -3083,7 +3085,7 @@ typedefs (Michael) 2005-01-19 - +
Overview @@ -3238,9 +3240,9 @@ typedefs (Michael) - +
- +
Migration to Version 8.0 @@ -3479,9 +3481,9 @@ typedefs (Michael) - +
- +
Deprecated Features @@ -3525,9 +3527,9 @@ typedefs (Michael) - +
- +
Changes @@ -3535,7 +3537,7 @@ typedefs (Michael) release 8.0 and the previous major release. - +
Performance Improvements @@ -3729,10 +3731,10 @@ typedefs (Michael) - +
- +
Server Changes @@ -3948,10 +3950,10 @@ typedefs (Michael) - +
- +
Query Changes @@ -4103,10 +4105,10 @@ typedefs (Michael) - +
- +
Object Manipulation Changes @@ -4273,10 +4275,10 @@ typedefs (Michael) - +
- +
Utility Command Changes @@ -4421,10 +4423,10 @@ typedefs (Michael) - +
- +
Data Type and Function Changes @@ -4708,10 +4710,10 @@ typedefs (Michael) - +
- +
Server-Side Language Changes @@ -4834,10 +4836,10 @@ typedefs (Michael) - +
- +
<application>psql</application> Changes @@ -4957,10 +4959,10 @@ typedefs (Michael) - +
- +
<application>pg_dump</application> Changes @@ -5035,10 +5037,10 @@ typedefs (Michael) - +
- +
libpq Changes @@ -5092,10 +5094,10 @@ typedefs (Michael) - +
- +
Source Code Changes @@ -5333,10 +5335,10 @@ typedefs (Michael) - +
- +
Contrib Changes @@ -5415,7 +5417,8 @@ typedefs (Michael) - +
- - +
+
+
diff --git a/doc/src/sgml/release-8.1.sgml b/doc/src/sgml/release-8.1.sgml index 44a30892fd..bdfaf79871 100644 --- a/doc/src/sgml/release-8.1.sgml +++ b/doc/src/sgml/release-8.1.sgml @@ -1,7 +1,9 @@ - +
+ Release 8.1 +
Release 8.1.23 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 8.1.23 @@ -30,9 +32,9 @@ see . - +
- +
Changes @@ -217,10 +219,10 @@ - - +
+
- +
Release 8.1.22 @@ -240,7 +242,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 8.1.22 @@ -249,9 +251,9 @@ see . - +
- +
Changes @@ -435,10 +437,10 @@ - - +
+
- +
Release 8.1.21 @@ -452,7 +454,7 @@ . - +
Migration to Version 8.1.21 @@ -461,9 +463,9 @@ see . - +
- +
Changes @@ -589,10 +591,10 @@ - - +
+
- +
Release 8.1.20 @@ -606,7 +608,7 @@ . - +
Migration to Version 8.1.20 @@ -615,9 +617,9 @@ see . - +
- +
Changes @@ -779,10 +781,10 @@ - - +
+
- +
Release 8.1.19 @@ -796,7 +798,7 @@ . - +
Migration to Version 8.1.19 @@ -805,9 +807,9 @@ see . - +
- +
Changes @@ -960,10 +962,10 @@ - - +
+
- +
Release 8.1.18 @@ -977,7 +979,7 @@ . - +
Migration to Version 8.1.18 @@ -988,9 +990,9 @@ see . - +
- +
Changes @@ -1124,10 +1126,10 @@ - - +
+
- +
Release 8.1.17 @@ -1141,7 +1143,7 @@ . - +
Migration to Version 8.1.17 @@ -1150,9 +1152,9 @@ see . - +
- +
Changes @@ -1247,10 +1249,10 @@ - - +
+
- +
Release 8.1.16 @@ -1264,7 +1266,7 @@ . - +
Migration to Version 8.1.16 @@ -1273,9 +1275,9 @@ see . - +
- +
Changes @@ -1367,10 +1369,10 @@ - - +
+
- +
Release 8.1.15 @@ -1384,7 +1386,7 @@ . - +
Migration to Version 8.1.15 @@ -1395,9 +1397,9 @@ indexes after the upgrade. - +
- +
Changes @@ -1519,10 +1521,10 @@ - - +
+
- +
Release 8.1.14 @@ -1536,7 +1538,7 @@ . - +
Migration to Version 8.1.14 @@ -1545,9 +1547,9 @@ see . - +
- +
Changes @@ -1695,10 +1697,10 @@ - - +
+
- +
Release 8.1.13 @@ -1712,7 +1714,7 @@ . - +
Migration to Version 8.1.13 @@ -1721,9 +1723,9 @@ see . - +
- +
Changes @@ -1762,10 +1764,10 @@ - - +
+
- +
Release 8.1.12 @@ -1779,7 +1781,7 @@ . - +
Migration to Version 8.1.12 @@ -1788,9 +1790,9 @@ see . - +
- +
Changes @@ -2012,10 +2014,10 @@ - - +
+
- +
Release 8.1.11 @@ -2039,7 +2041,7 @@ be supported on other platforms. - +
Migration to Version 8.1.11 @@ -2048,9 +2050,9 @@ see . - +
- +
Changes @@ -2264,10 +2266,10 @@ - - +
+
- +
Release 8.1.10 @@ -2281,7 +2283,7 @@ . - +
Migration to Version 8.1.10 @@ -2290,9 +2292,9 @@ see . - +
- +
Changes @@ -2385,10 +2387,10 @@ - - +
+
- +
Release 8.1.9 @@ -2403,7 +2405,7 @@ . - +
Migration to Version 8.1.9 @@ -2412,9 +2414,9 @@ see . - +
- +
Changes @@ -2476,10 +2478,10 @@ - - +
+
- +
Release 8.1.8 @@ -2493,7 +2495,7 @@ . - +
Migration to Version 8.1.8 @@ -2502,9 +2504,9 @@ see . - +
- +
Changes @@ -2518,10 +2520,10 @@ - - +
+
- +
Release 8.1.7 @@ -2536,7 +2538,7 @@ . - +
Migration to Version 8.1.7 @@ -2545,9 +2547,9 @@ see . - +
- +
Changes @@ -2620,10 +2622,10 @@ - - +
+
- +
Release 8.1.6 @@ -2637,7 +2639,7 @@ . - +
Migration to Version 8.1.6 @@ -2646,9 +2648,9 @@ see . - +
- +
Changes @@ -2770,10 +2772,10 @@ - - +
+
- +
Release 8.1.5 @@ -2787,7 +2789,7 @@ . - +
Migration to Version 8.1.5 @@ -2796,9 +2798,9 @@ see . - +
- +
Changes @@ -2847,10 +2849,10 @@ compilers (Hiroshi Saito) Fix rare bug in continuous archiving (Tom) - - +
+
- +
Release 8.1.4 @@ -2865,7 +2867,7 @@ compilers (Hiroshi Saito) . - +
Migration to Version 8.1.4 @@ -2885,9 +2887,9 @@ compilers (Hiroshi Saito) PQescapeStringConn()) to perform string escaping, rather than relying on ad hoc code to do it. - +
- +
Changes @@ -3001,10 +3003,10 @@ users and groups reasonably (only possible when dumping from a pre-8.1 server) documented (Tom) - - +
+
- +
Release 8.1.3 @@ -3019,7 +3021,7 @@ documented (Tom) . - +
Migration to Version 8.1.3 @@ -3027,9 +3029,9 @@ documented (Tom) However, if you are upgrading from a version earlier than 8.1.2, see . - +
- +
Changes @@ -3123,10 +3125,10 @@ creation (Tom) - - +
+
- +
Release 8.1.2 @@ -3140,7 +3142,7 @@ creation (Tom) . - +
Migration to Version 8.1.2 @@ -3149,9 +3151,9 @@ creation (Tom) columns after updating, if you are affected by the locale or plperl issues described below. - +
- +
Changes @@ -3226,10 +3228,10 @@ what's actually returned by the query (Joe) - - +
+
- +
Release 8.1.1 @@ -3243,15 +3245,15 @@ what's actually returned by the query (Joe) . - +
Migration to Version 8.1.1 A dump/restore is not required for those running 8.1.X. - +
- +
Changes @@ -3318,10 +3320,10 @@ DISTINCT query UTF-8 byte sequences (Paul Lindner) - - +
+
- +
Release 8.1 @@ -3329,7 +3331,7 @@ DISTINCT query 2005-11-08 - +
Overview @@ -3545,9 +3547,9 @@ DISTINCT query - +
- +
Migration to Version 8.1 @@ -3845,9 +3847,9 @@ psql -t -f fixseq.sql db1 | psql -e db1 - +
- +
Additional Changes @@ -3856,7 +3858,7 @@ psql -t -f fixseq.sql db1 | psql -e db1 previous major release. - +
Performance Improvements @@ -3977,9 +3979,9 @@ psql -t -f fixseq.sql db1 | psql -e db1 - +
- +
Server Changes @@ -4134,10 +4136,10 @@ psql -t -f fixseq.sql db1 | psql -e db1 - +
- +
Query Changes @@ -4209,10 +4211,10 @@ psql -t -f fixseq.sql db1 | psql -e db1 - +
- +
Object Manipulation Changes @@ -4264,10 +4266,10 @@ psql -t -f fixseq.sql db1 | psql -e db1 - +
- +
Utility Command Changes @@ -4380,10 +4382,10 @@ psql -t -f fixseq.sql db1 | psql -e db1 - +
- +
Data Type and Function Changes @@ -4669,10 +4671,10 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- +
Encoding and Locale Changes @@ -4752,10 +4754,10 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- +
General Server-Side Language Changes @@ -4812,9 +4814,9 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- +
PL/pgSQL Server-Side Language Changes @@ -4904,10 +4906,10 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- +
PL/Perl Server-Side Language Changes @@ -4975,10 +4977,10 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- +
<application>psql</application> Changes @@ -5084,10 +5086,10 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- +
<application>pg_dump</application> Changes @@ -5152,10 +5154,10 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- +
<application>libpq</application> Changes @@ -5182,10 +5184,10 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- +
Source Code Changes @@ -5327,10 +5329,10 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- +
Contrib Changes @@ -5438,7 +5440,8 @@ SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - +
- - +
+
+
diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml index d87c5bbd46..f7c82df828 100644 --- a/doc/src/sgml/release-8.2.sgml +++ b/doc/src/sgml/release-8.2.sgml @@ -1,7 +1,9 @@ - +
+ Release 8.2 +
Release 8.2.23 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 8.2.23 @@ -40,9 +42,9 @@ see . - +
- +
Changes @@ -226,10 +228,10 @@ - - +
+
- +
Release 8.2.22 @@ -249,7 +251,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 8.2.22 @@ -258,9 +260,9 @@ see . - +
- +
Changes @@ -533,10 +535,10 @@ - - +
+
- +
Release 8.2.21 @@ -550,7 +552,7 @@ . - +
Migration to Version 8.2.21 @@ -559,9 +561,9 @@ see . - +
- +
Changes @@ -665,10 +667,10 @@ - - +
+
- +
Release 8.2.20 @@ -682,7 +684,7 @@ . - +
Migration to Version 8.2.20 @@ -691,9 +693,9 @@ see . - +
- +
Changes @@ -797,10 +799,10 @@ - - +
+
- +
Release 8.2.19 @@ -814,7 +816,7 @@ . - +
Migration to Version 8.2.19 @@ -823,9 +825,9 @@ see . - +
- +
Changes @@ -1041,10 +1043,10 @@ - - +
+
- +
Release 8.2.18 @@ -1058,7 +1060,7 @@ . - +
Migration to Version 8.2.18 @@ -1067,9 +1069,9 @@ see . - +
- +
Changes @@ -1327,10 +1329,10 @@ - - +
+
- +
Release 8.2.17 @@ -1344,7 +1346,7 @@ . - +
Migration to Version 8.2.17 @@ -1353,9 +1355,9 @@ see . - +
- +
Changes @@ -1528,10 +1530,10 @@ - - +
+
- +
Release 8.2.16 @@ -1545,7 +1547,7 @@ . - +
Migration to Version 8.2.16 @@ -1554,9 +1556,9 @@ see . - +
- +
Changes @@ -1799,10 +1801,10 @@ - - +
+
- +
Release 8.2.15 @@ -1816,7 +1818,7 @@ . - +
Migration to Version 8.2.15 @@ -1825,9 +1827,9 @@ see . - +
- +
Changes @@ -2043,10 +2045,10 @@ - - +
+
- +
Release 8.2.14 @@ -2060,7 +2062,7 @@ . - +
Migration to Version 8.2.14 @@ -2071,9 +2073,9 @@ see . - +
- +
Changes @@ -2273,10 +2275,10 @@ - - +
+
- +
Release 8.2.13 @@ -2290,7 +2292,7 @@ . - +
Migration to Version 8.2.13 @@ -2299,9 +2301,9 @@ see . - +
- +
Changes @@ -2439,10 +2441,10 @@ - - +
+
- +
Release 8.2.12 @@ -2456,7 +2458,7 @@ . - +
Migration to Version 8.2.12 @@ -2465,9 +2467,9 @@ see . - +
- +
Changes @@ -2618,10 +2620,10 @@ - - +
+
- +
Release 8.2.11 @@ -2635,7 +2637,7 @@ . - +
Migration to Version 8.2.11 @@ -2646,9 +2648,9 @@ indexes after the upgrade. - +
- +
Changes @@ -2802,10 +2804,10 @@ - - +
+
- +
Release 8.2.10 @@ -2819,7 +2821,7 @@ . - +
Migration to Version 8.2.10 @@ -2828,9 +2830,9 @@ see . - +
- +
Changes @@ -3034,10 +3036,10 @@ - - +
+
- +
Release 8.2.9 @@ -3051,7 +3053,7 @@ . - +
Migration to Version 8.2.9 @@ -3060,9 +3062,9 @@ see . - +
- +
Changes @@ -3101,10 +3103,10 @@ - - +
+
- +
Release 8.2.8 @@ -3118,7 +3120,7 @@ . - +
Migration to Version 8.2.8 @@ -3127,9 +3129,9 @@ see . - +
- +
Changes @@ -3296,10 +3298,10 @@ - - +
+
- +
Release 8.2.7 @@ -3313,7 +3315,7 @@ . - +
Migration to Version 8.2.7 @@ -3323,9 +3325,9 @@ issue described below. - +
- +
Changes @@ -3565,10 +3567,10 @@ - - +
+
- +
Release 8.2.6 @@ -3583,16 +3585,16 @@ . - +
Migration to Version 8.2.6 A dump/restore is not required for those running 8.2.X. - +
- +
Changes @@ -3856,10 +3858,10 @@ - - +
+
- +
Release 8.2.5 @@ -3873,16 +3875,16 @@ . - +
Migration to Version 8.2.5 A dump/restore is not required for those running 8.2.X. - +
- +
Changes @@ -4033,10 +4035,10 @@ - - +
+
- +
Release 8.2.4 @@ -4051,16 +4053,16 @@ . - +
Migration to Version 8.2.4 A dump/restore is not required for those running 8.2.X. - +
- +
Changes @@ -4177,10 +4179,10 @@ - - +
+
- +
Release 8.2.3 @@ -4194,16 +4196,16 @@ . - +
Migration to Version 8.2.3 A dump/restore is not required for those running 8.2.X. - +
- +
Changes @@ -4223,10 +4225,10 @@ - - +
+
- +
Release 8.2.2 @@ -4241,16 +4243,16 @@ . - +
Migration to Version 8.2.2 A dump/restore is not required for those running 8.2.X. - +
- +
Changes @@ -4381,10 +4383,10 @@ - - +
+
- +
Release 8.2.1 @@ -4398,16 +4400,16 @@ . - +
Migration to Version 8.2.1 A dump/restore is not required for those running 8.2. - +
- +
Changes @@ -4516,10 +4518,10 @@ - - +
+
- +
Release 8.2 @@ -4527,7 +4529,7 @@ 2006-12-05 - +
Overview @@ -4639,9 +4641,9 @@ - +
- +
Migration to Version 8.2 @@ -4967,9 +4969,9 @@ - +
- +
Changes @@ -4978,7 +4980,7 @@ the previous major release. - +
Performance Improvements @@ -5152,9 +5154,9 @@ - +
- +
Server Changes @@ -5467,9 +5469,9 @@ - +
- +
Query Changes @@ -5684,9 +5686,9 @@ - +
- +
Object Manipulation Changes @@ -5868,9 +5870,9 @@ - +
- +
Utility Command Changes @@ -5951,9 +5953,9 @@ - +
- +
Date/Time Changes @@ -6063,9 +6065,9 @@ - +
- +
Other Data Type and Function Changes @@ -6209,9 +6211,9 @@ - +
- +
PL/pgSQL Server-Side Language Changes @@ -6258,9 +6260,9 @@ - +
- +
PL/Perl Server-Side Language Changes @@ -6303,9 +6305,9 @@ - +
- +
PL/Python Server-Side Language Changes @@ -6350,9 +6352,9 @@ - +
- +
<link linkend="app-psql"><application>psql</application></link> Changes @@ -6458,9 +6460,9 @@ - +
- +
<link linkend="app-pgdump"><application>pg_dump</application></link> Changes @@ -6505,9 +6507,9 @@ - +
- +
<link linkend="libpq"><application>libpq</application></link> Changes @@ -6574,9 +6576,9 @@ - +
- +
<link linkend="ecpg"><application>ecpg</application></link> Changes @@ -6608,9 +6610,9 @@ - +
- +
<application>Windows</application> Port @@ -6662,9 +6664,9 @@ - +
- +
Source Code Changes @@ -6877,9 +6879,9 @@ - +
- +
Contrib Changes @@ -7071,7 +7073,8 @@ - +
- - +
+
+
diff --git a/doc/src/sgml/release-8.3.sgml b/doc/src/sgml/release-8.3.sgml index 021922966b..b856624aaa 100644 --- a/doc/src/sgml/release-8.3.sgml +++ b/doc/src/sgml/release-8.3.sgml @@ -1,7 +1,9 @@ - +
+ Release 8.3 +
Release 8.3.23 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 8.3.23 @@ -33,9 +35,9 @@ see . - +
- +
Changes @@ -167,10 +169,10 @@ - - +
+
- +
Release 8.3.22 @@ -190,7 +192,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 8.3.22 @@ -202,9 +204,9 @@ see . - +
- +
Changes @@ -463,10 +465,10 @@ - - +
+
- +
Release 8.3.21 @@ -486,7 +488,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 8.3.21 @@ -498,9 +500,9 @@ see . - +
- +
Changes @@ -573,10 +575,10 @@ - - +
+
- +
Release 8.3.20 @@ -596,7 +598,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 8.3.20 @@ -608,9 +610,9 @@ see . - +
- +
Changes @@ -796,10 +798,10 @@ - - +
+
- +
Release 8.3.19 @@ -813,7 +815,7 @@ . - +
Migration to Version 8.3.19 @@ -825,9 +827,9 @@ see . - +
- +
Changes @@ -1025,10 +1027,10 @@ - - +
+
- +
Release 8.3.18 @@ -1042,7 +1044,7 @@ . - +
Migration to Version 8.3.18 @@ -1054,9 +1056,9 @@ see . - +
- +
Changes @@ -1313,10 +1315,10 @@ - - +
+
- +
Release 8.3.17 @@ -1330,7 +1332,7 @@ . - +
Migration to Version 8.3.17 @@ -1349,9 +1351,9 @@ see . - +
- +
Changes @@ -1580,10 +1582,10 @@ - - +
+
- +
Release 8.3.16 @@ -1597,7 +1599,7 @@ . - +
Migration to Version 8.3.16 @@ -1606,9 +1608,9 @@ see . - +
- +
Changes @@ -1951,10 +1953,10 @@ - - +
+
- +
Release 8.3.15 @@ -1968,7 +1970,7 @@ . - +
Migration to Version 8.3.15 @@ -1977,9 +1979,9 @@ see . - +
- +
Changes @@ -2114,10 +2116,10 @@ - - +
+
- +
Release 8.3.14 @@ -2131,7 +2133,7 @@ . - +
Migration to Version 8.3.14 @@ -2140,9 +2142,9 @@ see . - +
- +
Changes @@ -2246,10 +2248,10 @@ - - +
+
- +
Release 8.3.13 @@ -2263,7 +2265,7 @@ . - +
Migration to Version 8.3.13 @@ -2272,9 +2274,9 @@ see . - +
- +
Changes @@ -2524,10 +2526,10 @@ - - +
+
- +
Release 8.3.12 @@ -2541,7 +2543,7 @@ . - +
Migration to Version 8.3.12 @@ -2550,9 +2552,9 @@ see . - +
- +
Changes @@ -2887,10 +2889,10 @@ - - +
+
- +
Release 8.3.11 @@ -2904,7 +2906,7 @@ . - +
Migration to Version 8.3.11 @@ -2913,9 +2915,9 @@ see . - +
- +
Changes @@ -3116,10 +3118,10 @@ - - +
+
- +
Release 8.3.10 @@ -3133,7 +3135,7 @@ . - +
Migration to Version 8.3.10 @@ -3142,9 +3144,9 @@ see . - +
- +
Changes @@ -3443,10 +3445,10 @@ - - +
+
- +
Release 8.3.9 @@ -3460,7 +3462,7 @@ . - +
Migration to Version 8.3.9 @@ -3469,9 +3471,9 @@ see . - +
- +
Changes @@ -3776,10 +3778,10 @@ - - +
+
- +
Release 8.3.8 @@ -3793,7 +3795,7 @@ . - +
Migration to Version 8.3.8 @@ -3804,9 +3806,9 @@ see . - +
- +
Changes @@ -4066,10 +4068,10 @@ - - +
+
- +
Release 8.3.7 @@ -4083,7 +4085,7 @@ . - +
Migration to Version 8.3.7 @@ -4092,9 +4094,9 @@ see . - +
- +
Changes @@ -4289,10 +4291,10 @@ - - +
+
- +
Release 8.3.6 @@ -4306,7 +4308,7 @@ . - +
Migration to Version 8.3.6 @@ -4315,9 +4317,9 @@ see . - +
- +
Changes @@ -4583,10 +4585,10 @@ - - +
+
- +
Release 8.3.5 @@ -4600,7 +4602,7 @@ . - +
Migration to Version 8.3.5 @@ -4611,9 +4613,9 @@ indexes after the upgrade. - +
- +
Changes @@ -4838,10 +4840,10 @@ - - +
+
- +
Release 8.3.4 @@ -4855,7 +4857,7 @@ . - +
Migration to Version 8.3.4 @@ -4864,9 +4866,9 @@ see . - +
- +
Changes @@ -5192,10 +5194,10 @@ - - +
+
- +
Release 8.3.3 @@ -5209,7 +5211,7 @@ . - +
Migration to Version 8.3.3 @@ -5218,9 +5220,9 @@ see . - +
- +
Changes @@ -5259,10 +5261,10 @@ - - +
+
- +
Release 8.3.2 @@ -5276,7 +5278,7 @@ . - +
Migration to Version 8.3.2 @@ -5285,9 +5287,9 @@ see . - +
- +
Changes @@ -5624,10 +5626,10 @@ - - +
+
- +
Release 8.3.1 @@ -5641,7 +5643,7 @@ . - +
Migration to Version 8.3.1 @@ -5651,9 +5653,9 @@ issue described below. - +
- +
Changes @@ -5937,10 +5939,10 @@ - - +
+
- +
Release 8.3 @@ -5948,7 +5950,7 @@ 2008-02-04 - +
Overview @@ -6126,9 +6128,9 @@ The above items are explained in more detail in the sections below. - +
- +
Migration to Version 8.3 @@ -6141,7 +6143,7 @@ Observe the following incompatibilities: - +
General @@ -6368,9 +6370,9 @@ current_date < 2017-11-17 - +
- +
Configuration Parameters @@ -6433,10 +6435,10 @@ current_date < 2017-11-17 - +
- +
Character Encodings @@ -6549,11 +6551,11 @@ current_date < 2017-11-17 - +
- +
- +
Changes @@ -6562,7 +6564,7 @@ current_date < 2017-11-17 the previous major release. - +
Performance @@ -6766,9 +6768,9 @@ current_date < 2017-11-17 - +
- +
Server @@ -6909,9 +6911,9 @@ current_date < 2017-11-17 - +
- +
Monitoring @@ -7062,9 +7064,9 @@ current_date < 2017-11-17 - +
- +
Authentication @@ -7107,9 +7109,9 @@ current_date < 2017-11-17 - +
- +
Write-Ahead Log (<acronym>WAL</acronym>) and Continuous Archiving @@ -7155,9 +7157,9 @@ current_date < 2017-11-17 - +
- +
Queries @@ -7289,9 +7291,9 @@ current_date < 2017-11-17 - +
- +
Object Manipulation @@ -7404,9 +7406,9 @@ current_date < 2017-11-17 - +
- +
Utility Commands @@ -7506,9 +7508,9 @@ current_date < 2017-11-17 - +
- +
Data Types @@ -7583,9 +7585,9 @@ current_date < 2017-11-17 - +
- +
Functions @@ -7721,9 +7723,9 @@ current_date < 2017-11-17 - +
- +
PL/pgSQL Server-Side Language @@ -7807,9 +7809,9 @@ current_date < 2017-11-17 - +
- +
Other Server-Side Languages @@ -7864,9 +7866,9 @@ current_date < 2017-11-17 - +
- +
<link linkend="app-psql"><application>psql</application></link> @@ -7953,9 +7955,9 @@ current_date < 2017-11-17 - +
- +
<link linkend="app-pgdump"><application>pg_dump</application></link> @@ -8008,9 +8010,9 @@ current_date < 2017-11-17 - +
- +
Other Client Applications @@ -8073,9 +8075,9 @@ current_date < 2017-11-17 - +
- +
<link linkend="libpq"><application>libpq</application></link> @@ -8144,9 +8146,9 @@ current_date < 2017-11-17 - +
- +
<link linkend="ecpg"><application>ecpg</application></link> @@ -8180,9 +8182,9 @@ current_date < 2017-11-17 - +
- +
<application>Windows</application> Port @@ -8223,9 +8225,9 @@ current_date < 2017-11-17 - +
- +
Server Programming Interface (<acronym>SPI</acronym>) @@ -8266,9 +8268,9 @@ current_date < 2017-11-17 - +
- +
Build Options @@ -8309,9 +8311,9 @@ current_date < 2017-11-17 - +
- +
Source Code @@ -8424,9 +8426,9 @@ current_date < 2017-11-17 - +
- +
Contrib @@ -8544,6 +8546,7 @@ current_date < 2017-11-17 - - - +
+
+
+
diff --git a/doc/src/sgml/release-8.4.sgml b/doc/src/sgml/release-8.4.sgml index 934f720387..5cb018965d 100644 --- a/doc/src/sgml/release-8.4.sgml +++ b/doc/src/sgml/release-8.4.sgml @@ -1,7 +1,9 @@ - +
+ Release 8.4 +
Release 8.4.22 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 8.4.22 @@ -39,9 +41,9 @@ see . - +
- +
Changes @@ -317,10 +319,10 @@ - - +
+
- +
Release 8.4.21 @@ -340,7 +342,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 8.4.21 @@ -352,9 +354,9 @@ see . - +
- +
Changes @@ -436,10 +438,10 @@ - - +
+
- +
Release 8.4.20 @@ -459,7 +461,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 8.4.20 @@ -471,9 +473,9 @@ see . - +
- +
Changes @@ -895,10 +897,10 @@ - - +
+
- +
Release 8.4.19 @@ -912,7 +914,7 @@ . - +
Migration to Version 8.4.19 @@ -930,9 +932,9 @@ see . - +
- +
Changes @@ -1096,10 +1098,10 @@ - - +
+
- +
Release 8.4.18 @@ -1113,7 +1115,7 @@ . - +
Migration to Version 8.4.18 @@ -1125,9 +1127,9 @@ see . - +
- +
Changes @@ -1296,10 +1298,10 @@ - - +
+
- +
Release 8.4.17 @@ -1313,7 +1315,7 @@ . - +
Migration to Version 8.4.17 @@ -1332,9 +1334,9 @@ see . - +
- +
Changes @@ -1525,10 +1527,10 @@ - - +
+
- +
Release 8.4.16 @@ -1542,7 +1544,7 @@ . - +
Migration to Version 8.4.16 @@ -1554,9 +1556,9 @@ see . - +
- +
Changes @@ -1735,10 +1737,10 @@ - - +
+
- +
Release 8.4.15 @@ -1752,7 +1754,7 @@ . - +
Migration to Version 8.4.15 @@ -1764,9 +1766,9 @@ see . - +
- +
Changes @@ -2037,10 +2039,10 @@ - - +
+
- +
Release 8.4.14 @@ -2054,7 +2056,7 @@ . - +
Migration to Version 8.4.14 @@ -2066,9 +2068,9 @@ see . - +
- +
Changes @@ -2153,10 +2155,10 @@ - - +
+
- +
Release 8.4.13 @@ -2170,7 +2172,7 @@ . - +
Migration to Version 8.4.13 @@ -2182,9 +2184,9 @@ see . - +
- +
Changes @@ -2387,10 +2389,10 @@ - - +
+
- +
Release 8.4.12 @@ -2404,7 +2406,7 @@ . - +
Migration to Version 8.4.12 @@ -2416,9 +2418,9 @@ see . - +
- +
Changes @@ -2672,10 +2674,10 @@ - - +
+
- +
Release 8.4.11 @@ -2689,7 +2691,7 @@ . - +
Migration to Version 8.4.11 @@ -2701,9 +2703,9 @@ see . - +
- +
Changes @@ -3034,10 +3036,10 @@ - - +
+
- +
Release 8.4.10 @@ -3051,7 +3053,7 @@ . - +
Migration to Version 8.4.10 @@ -3070,9 +3072,9 @@ see . - +
- +
Changes @@ -3349,10 +3351,10 @@ - - +
+
- +
Release 8.4.9 @@ -3366,7 +3368,7 @@ . - +
Migration to Version 8.4.9 @@ -3378,9 +3380,9 @@ see . - +
- +
Changes @@ -3874,10 +3876,10 @@ - - +
+
- +
Release 8.4.8 @@ -3891,7 +3893,7 @@ . - +
Migration to Version 8.4.8 @@ -3914,9 +3916,9 @@ see . - +
- +
Changes @@ -4119,10 +4121,10 @@ - - +
+
- +
Release 8.4.7 @@ -4136,7 +4138,7 @@ . - +
Migration to Version 8.4.7 @@ -4145,9 +4147,9 @@ see . - +
- +
Changes @@ -4251,10 +4253,10 @@ - - +
+
- +
Release 8.4.6 @@ -4268,7 +4270,7 @@ . - +
Migration to Version 8.4.6 @@ -4277,9 +4279,9 @@ see . - +
- +
Changes @@ -4562,10 +4564,10 @@ - - +
+
- +
Release 8.4.5 @@ -4579,7 +4581,7 @@ . - +
Migration to Version 8.4.5 @@ -4588,9 +4590,9 @@ see . - +
- +
Changes @@ -5084,10 +5086,10 @@ - - +
+
- +
Release 8.4.4 @@ -5101,7 +5103,7 @@ . - +
Migration to Version 8.4.4 @@ -5110,9 +5112,9 @@ see . - +
- +
Changes @@ -5375,10 +5377,10 @@ - - +
+
- +
Release 8.4.3 @@ -5392,7 +5394,7 @@ . - +
Migration to Version 8.4.3 @@ -5401,9 +5403,9 @@ see . - +
- +
Changes @@ -5842,10 +5844,10 @@ - - +
+
- +
Release 8.4.2 @@ -5859,7 +5861,7 @@ . - +
Migration to Version 8.4.2 @@ -5869,9 +5871,9 @@ to repair possible damage. - +
- +
Changes @@ -6373,10 +6375,10 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - - +
+
- +
Release 8.4.1 @@ -6390,16 +6392,16 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE . - +
Migration to Version 8.4.1 A dump/restore is not required for those running 8.4.X. - +
- +
Changes @@ -6672,10 +6674,10 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - - +
+
- +
Release 8.4 @@ -6683,7 +6685,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE 2009-07-01 - +
Overview @@ -6800,9 +6802,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE The above items are explained in more detail in the sections below. - +
- +
Migration to Version 8.4 @@ -6815,7 +6817,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE Observe the following incompatibilities: - +
General @@ -6844,9 +6846,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Server Settings @@ -6929,9 +6931,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Queries @@ -7015,10 +7017,10 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Functions and Operators @@ -7122,7 +7124,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
Temporal Functions and Operators @@ -7185,13 +7187,13 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
- +
- +
Changes @@ -7200,7 +7202,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE release. - +
Performance @@ -7356,12 +7358,12 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Server - +
Settings @@ -7391,9 +7393,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Authentication and security @@ -7446,9 +7448,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
<filename>pg_hba.conf</filename> @@ -7566,9 +7568,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Continuous Archiving @@ -7629,9 +7631,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Monitoring @@ -7722,11 +7724,11 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
- +
Queries @@ -7865,7 +7867,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
<command>TRUNCATE</command> @@ -7902,9 +7904,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
<command>EXPLAIN</command> @@ -7942,9 +7944,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
<literal>LIMIT</literal>/<literal>OFFSET</literal> @@ -7969,11 +7971,11 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
- +
Object Manipulation @@ -8064,7 +8066,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
<command>ALTER</command> @@ -8145,9 +8147,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Database Manipulation @@ -8195,11 +8197,11 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
- +
Utility Operations @@ -8220,7 +8222,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
Indexes @@ -8268,9 +8270,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Full Text Indexes @@ -8314,9 +8316,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
<command>VACUUM</command> @@ -8387,11 +8389,11 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
- +
Data Types @@ -8442,7 +8444,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
Temporal Data Types @@ -8535,9 +8537,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Arrays @@ -8615,9 +8617,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Wide-Value Storage (<acronym>TOAST</acronym>) @@ -8646,11 +8648,11 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
- +
Functions @@ -8707,7 +8709,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
Object Information Functions @@ -8857,9 +8859,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Function Creation @@ -8898,9 +8900,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
PL/pgSQL Server-Side Language @@ -9026,11 +9028,11 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
- +
Client Applications @@ -9065,7 +9067,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
<application>psql</application> @@ -9164,9 +9166,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
<application>psql</application> \d* commands @@ -9260,9 +9262,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
<application>pg_dump</application> @@ -9358,14 +9360,14 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
- +
Programming Tools - +
<application>libpq</application> @@ -9431,9 +9433,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
<application>libpq</application> <acronym>SSL</acronym> (Secure Sockets Layer) support @@ -9498,9 +9500,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
<application>ecpg</application> @@ -9524,9 +9526,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Server Programming Interface (<acronym>SPI</acronym>) @@ -9563,11 +9565,11 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
- +
Build Options @@ -9698,9 +9700,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Source Code @@ -9903,9 +9905,9 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - +
- +
Contrib @@ -10075,6 +10077,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE - - - +
+
+
+
diff --git a/doc/src/sgml/release-9.0.sgml b/doc/src/sgml/release-9.0.sgml index 9e90f5a7f3..8cb56e8c73 100644 --- a/doc/src/sgml/release-9.0.sgml +++ b/doc/src/sgml/release-9.0.sgml @@ -1,7 +1,9 @@ - +
+ Release 9.0 +
Release 9.0.23 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 9.0.23 @@ -33,9 +35,9 @@ see . - +
- +
Changes @@ -495,10 +497,10 @@ - - +
+
- +
Release 9.0.22 @@ -518,7 +520,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 9.0.22 @@ -530,9 +532,9 @@ see . - +
- +
Changes @@ -569,10 +571,10 @@ - - +
+
- +
Release 9.0.21 @@ -592,7 +594,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 9.0.21 @@ -604,9 +606,9 @@ see . - +
- +
Changes @@ -663,10 +665,10 @@ - - +
+
- +
Release 9.0.20 @@ -686,7 +688,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 9.0.20 @@ -698,9 +700,9 @@ see . - +
- +
Changes @@ -1107,10 +1109,10 @@ - - +
+
- +
Release 9.0.19 @@ -1124,7 +1126,7 @@ . - +
Migration to Version 9.0.19 @@ -1136,9 +1138,9 @@ see . - +
- +
Changes @@ -1833,10 +1835,10 @@ - - +
+
- +
Release 9.0.18 @@ -1850,7 +1852,7 @@ . - +
Migration to Version 9.0.18 @@ -1868,9 +1870,9 @@ see . - +
- +
Changes @@ -2179,10 +2181,10 @@ - - +
+
- +
Release 9.0.17 @@ -2196,7 +2198,7 @@ . - +
Migration to Version 9.0.17 @@ -2208,9 +2210,9 @@ see . - +
- +
Changes @@ -2332,10 +2334,10 @@ - - +
+
- +
Release 9.0.16 @@ -2349,7 +2351,7 @@ . - +
Migration to Version 9.0.16 @@ -2361,9 +2363,9 @@ see . - +
- +
Changes @@ -2833,10 +2835,10 @@ - - +
+
- +
Release 9.0.15 @@ -2850,7 +2852,7 @@ . - +
Migration to Version 9.0.15 @@ -2868,9 +2870,9 @@ see . - +
- +
Changes @@ -3071,10 +3073,10 @@ - - +
+
- +
Release 9.0.14 @@ -3088,7 +3090,7 @@ . - +
Migration to Version 9.0.14 @@ -3100,9 +3102,9 @@ see . - +
- +
Changes @@ -3337,10 +3339,10 @@ - - +
+
- +
Release 9.0.13 @@ -3354,7 +3356,7 @@ . - +
Migration to Version 9.0.13 @@ -3373,9 +3375,9 @@ see . - +
- +
Changes @@ -3634,10 +3636,10 @@ - - +
+
- +
Release 9.0.12 @@ -3651,7 +3653,7 @@ . - +
Migration to Version 9.0.12 @@ -3663,9 +3665,9 @@ see . - +
- +
Changes @@ -3896,10 +3898,10 @@ - - +
+
- +
Release 9.0.11 @@ -3913,7 +3915,7 @@ . - +
Migration to Version 9.0.11 @@ -3925,9 +3927,9 @@ see . - +
- +
Changes @@ -4274,10 +4276,10 @@ - - +
+
- +
Release 9.0.10 @@ -4291,7 +4293,7 @@ . - +
Migration to Version 9.0.10 @@ -4303,9 +4305,9 @@ see . - +
- +
Changes @@ -4416,10 +4418,10 @@ - - +
+
- +
Release 9.0.9 @@ -4433,7 +4435,7 @@ . - +
Migration to Version 9.0.9 @@ -4445,9 +4447,9 @@ see . - +
- +
Changes @@ -4722,10 +4724,10 @@ - - +
+
- +
Release 9.0.8 @@ -4739,7 +4741,7 @@ . - +
Migration to Version 9.0.8 @@ -4751,9 +4753,9 @@ see . - +
- +
Changes @@ -5042,10 +5044,10 @@ - - +
+
- +
Release 9.0.7 @@ -5059,7 +5061,7 @@ . - +
Migration to Version 9.0.7 @@ -5071,9 +5073,9 @@ see . - +
- +
Changes @@ -5558,10 +5560,10 @@ - - +
+
- +
Release 9.0.6 @@ -5575,7 +5577,7 @@ . - +
Migration to Version 9.0.6 @@ -5594,9 +5596,9 @@ see . - +
- +
Changes @@ -5942,10 +5944,10 @@ - - +
+
- +
Release 9.0.5 @@ -5959,7 +5961,7 @@ . - +
Migration to Version 9.0.5 @@ -5971,9 +5973,9 @@ see . - +
- +
Changes @@ -6592,10 +6594,10 @@ - - +
+
- +
Release 9.0.4 @@ -6609,7 +6611,7 @@ . - +
Migration to Version 9.0.4 @@ -6627,9 +6629,9 @@ http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix. - +
- +
Changes @@ -6933,10 +6935,10 @@ - - +
+
- +
Release 9.0.3 @@ -6950,16 +6952,16 @@ . - +
Migration to Version 9.0.3 A dump/restore is not required for those running 9.0.X. - +
- +
Changes @@ -7109,10 +7111,10 @@ - - +
+
- +
Release 9.0.2 @@ -7126,16 +7128,16 @@ . - +
Migration to Version 9.0.2 A dump/restore is not required for those running 9.0.X. - +
- +
Changes @@ -7556,10 +7558,10 @@ - - +
+
- +
Release 9.0.1 @@ -7573,16 +7575,16 @@ . - +
Migration to Version 9.0.1 A dump/restore is not required for those running 9.0.X. - +
- +
Changes @@ -7698,10 +7700,10 @@ - - +
+
- +
Release 9.0 @@ -7709,7 +7711,7 @@ 2010-09-20 - +
Overview @@ -7872,9 +7874,9 @@ The above items are explained in more detail in the sections below. - +
- +
Migration to Version 9.0 @@ -7894,7 +7896,7 @@ Observe the following incompatibilities: - +
Server Settings @@ -7935,9 +7937,9 @@ - +
- +
Queries @@ -7958,9 +7960,9 @@ - +
- +
Data Types @@ -8035,9 +8037,9 @@ - +
- +
Object Renaming @@ -8080,9 +8082,9 @@ - +
- +
PL/pgSQL @@ -8172,9 +8174,9 @@ - +
- +
Other Incompatibilities @@ -8206,10 +8208,10 @@ - - +
+
- +
Changes Version 9.0 has an unprecedented number of new major features, @@ -8217,10 +8219,10 @@ new functions, and other changes. - +
Server - +
Continuous Archiving and Streaming Replication @@ -8276,9 +8278,9 @@ - +
- +
Performance @@ -8322,9 +8324,9 @@ - +
- +
Optimizer @@ -8370,9 +8372,9 @@ - +
- +
<link linkend="geqo">GEQO</link> @@ -8405,9 +8407,9 @@ - +
- +
Optimizer Statistics @@ -8465,9 +8467,9 @@ - +
- +
Authentication @@ -8518,9 +8520,9 @@ - +
- +
Monitoring @@ -8567,9 +8569,9 @@ - +
- +
Statistics Counters @@ -8595,9 +8597,9 @@ - +
- +
Server Settings @@ -8696,11 +8698,11 @@ - +
- +
- +
Queries @@ -8760,7 +8762,7 @@ - +
Unicode Strings @@ -8784,11 +8786,11 @@ - +
- +
- +
Object Manipulation @@ -8831,7 +8833,7 @@ - +
<command>ALTER TABLE</command> @@ -8867,9 +8869,9 @@ - +
- +
<link linkend="sql-createtable"><command>CREATE TABLE</command></link> @@ -8905,9 +8907,9 @@ - +
- +
Constraints @@ -8965,9 +8967,9 @@ - +
- +
Object Permissions @@ -9017,11 +9019,11 @@ - +
- +
- +
Utility Operations @@ -9067,7 +9069,7 @@ - +
<link linkend="sql-copy"><command>COPY</command></link> @@ -9098,9 +9100,9 @@ - +
- +
<link linkend="sql-explain"><command>EXPLAIN</command></link> @@ -9153,9 +9155,9 @@ - +
- +
<link linkend="sql-vacuum"><command>VACUUM</command></link> @@ -9190,9 +9192,9 @@ - +
- +
Indexes @@ -9256,11 +9258,11 @@ - +
- +
- +
Data Types @@ -9313,7 +9315,7 @@ - +
<link linkend="textsearch">Full Text Search</link> @@ -9351,11 +9353,11 @@ - +
- +
- +
Functions @@ -9442,7 +9444,7 @@ - +
Aggregates @@ -9493,9 +9495,9 @@ - +
- +
Bit Strings @@ -9521,9 +9523,9 @@ - +
- +
Object Information Functions @@ -9571,9 +9573,9 @@ - +
- +
Function and Trigger Creation @@ -9623,11 +9625,11 @@ - +
- +
- +
Server-Side Languages @@ -9648,7 +9650,7 @@ - +
<link linkend="plpgsql">PL/pgSQL</link> Server-Side Language @@ -9772,9 +9774,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
<link linkend="plperl">PL/Perl</link> Server-Side Language @@ -9859,9 +9861,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
<link linkend="plpython">PL/Python</link> Server-Side Language @@ -9925,11 +9927,11 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
- +
Client Applications @@ -9944,7 +9946,7 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
<link linkend="app-psql"><application>psql</application></link> @@ -10008,7 +10010,7 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
<application>psql</application> Display @@ -10035,9 +10037,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
<application>psql</application> <link linkend="app-psql-meta-commands"><command>\d</command></link> Commands @@ -10080,10 +10082,10 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - - +
+
- +
<link linkend="app-pgdump"><application>pg_dump</application></link> @@ -10154,9 +10156,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
<link linkend="app-pg-ctl"><application>pg_ctl</application></link> @@ -10185,14 +10187,14 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
- +
<application>Development Tools</application> - +
<link linkend="libpq"><application>libpq</application></link> @@ -10285,9 +10287,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
<link linkend="ecpg"><application>ecpg</application></link> @@ -10357,7 +10359,7 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
<application>ecpg</application> Cursors @@ -10391,13 +10393,13 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
- +
- +
Build Options @@ -10433,7 +10435,7 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
Makefiles @@ -10471,9 +10473,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
Windows @@ -10501,11 +10503,11 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
- +
Source Code @@ -10699,7 +10701,7 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
New Build Requirements @@ -10732,9 +10734,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
Portability @@ -10786,9 +10788,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
Server Programming @@ -10856,9 +10858,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
Server Hooks @@ -10879,9 +10881,9 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
Binary Upgrade Support @@ -10930,11 +10932,11 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - +
- +
- +
Contrib @@ -11086,6 +11088,7 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - - - +
+
+
+
diff --git a/doc/src/sgml/release-9.1.sgml b/doc/src/sgml/release-9.1.sgml index e928bf3cb7..1556107a88 100644 --- a/doc/src/sgml/release-9.1.sgml +++ b/doc/src/sgml/release-9.1.sgml @@ -1,7 +1,9 @@ - +
+ Release 9.1 +
Release 9.1.24 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 9.1.24 @@ -33,9 +35,9 @@ see . - +
- +
Changes @@ -208,10 +210,10 @@ - - +
+
- +
Release 9.1.23 @@ -231,7 +233,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 9.1.23 @@ -243,9 +245,9 @@ see . - +
- +
Changes @@ -550,10 +552,10 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 - - +
+
- +
Release 9.1.22 @@ -573,7 +575,7 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 Users are encouraged to update to a newer release branch soon. - +
Migration to Version 9.1.22 @@ -585,9 +587,9 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 see . - +
- +
Changes @@ -715,10 +717,10 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 - - +
+
- +
Release 9.1.21 @@ -732,7 +734,7 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 . - +
Migration to Version 9.1.21 @@ -744,9 +746,9 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 see . - +
- +
Changes @@ -921,10 +923,10 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 - - +
+
- +
Release 9.1.20 @@ -938,7 +940,7 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 . - +
Migration to Version 9.1.20 @@ -950,9 +952,9 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 see . - +
- +
Changes @@ -1434,10 +1436,10 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 - - +
+
- +
Release 9.1.19 @@ -1451,7 +1453,7 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 . - +
Migration to Version 9.1.19 @@ -1463,9 +1465,9 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 see . - +
- +
Changes @@ -1995,10 +1997,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.18 @@ -2012,7 +2014,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.18 @@ -2024,9 +2026,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -2063,10 +2065,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.17 @@ -2080,7 +2082,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.17 @@ -2092,9 +2094,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -2151,10 +2153,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.16 @@ -2168,7 +2170,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.16 @@ -2186,9 +2188,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -2677,10 +2679,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.15 @@ -2694,7 +2696,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.15 @@ -2706,9 +2708,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -3487,10 +3489,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.14 @@ -3504,7 +3506,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.14 @@ -3522,9 +3524,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -3870,10 +3872,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.13 @@ -3887,7 +3889,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.13 @@ -3899,9 +3901,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -4037,10 +4039,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.12 @@ -4054,7 +4056,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.12 @@ -4066,9 +4068,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -4587,10 +4589,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.11 @@ -4604,7 +4606,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.11 @@ -4622,9 +4624,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -4844,10 +4846,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.10 @@ -4861,7 +4863,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.10 @@ -4873,9 +4875,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -5179,10 +5181,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.9 @@ -5196,7 +5198,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.9 @@ -5215,9 +5217,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -5513,10 +5515,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.8 @@ -5530,7 +5532,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.8 @@ -5542,9 +5544,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -5835,10 +5837,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.7 @@ -5852,7 +5854,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.7 @@ -5864,9 +5866,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -6298,10 +6300,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.6 @@ -6315,7 +6317,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.6 @@ -6333,9 +6335,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -6550,10 +6552,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.5 @@ -6567,7 +6569,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.5 @@ -6579,9 +6581,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -6937,10 +6939,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.4 @@ -6954,7 +6956,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.4 @@ -6978,9 +6980,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -7427,10 +7429,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.3 @@ -7444,7 +7446,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.3 @@ -7456,9 +7458,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 see . - +
- +
Changes @@ -8064,10 +8066,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.2 @@ -8081,7 +8083,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.2 @@ -8107,9 +8109,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 as explained in the second changelog item. - +
- +
Changes @@ -8711,10 +8713,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1.1 @@ -8728,16 +8730,16 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 . - +
Migration to Version 9.1.1 A dump/restore is not required for those running 9.1.X. - +
- +
Changes @@ -8779,10 +8781,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Release 9.1 @@ -8790,7 +8792,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 2011-09-12 - +
Overview @@ -8886,9 +8888,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 The above items are explained in more detail in the sections below. - +
- +
Migration to Version 9.1 @@ -8904,7 +8906,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 with previous releases. Observe the following incompatibilities: - +
Strings @@ -8940,9 +8942,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Casting @@ -8983,9 +8985,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Arrays @@ -9018,9 +9020,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Object Modification @@ -9047,9 +9049,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Server Settings @@ -9081,9 +9083,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
<link linkend="plpgsql">PL/pgSQL</link> Server-Side Language @@ -9144,9 +9146,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Contrib @@ -9170,9 +9172,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Other Incompatibilities @@ -9206,10 +9208,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - - +
+
- +
Changes @@ -9218,10 +9220,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 release. - +
Server - +
Performance @@ -9302,9 +9304,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Optimizer @@ -9336,9 +9338,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Authentication @@ -9429,9 +9431,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Monitoring @@ -9472,9 +9474,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Statistical Views @@ -9535,9 +9537,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Server Settings @@ -9572,14 +9574,14 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
- +
Replication and Recovery - +
Streaming Replication and Continuous Archiving @@ -9657,9 +9659,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Replication Monitoring @@ -9692,9 +9694,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Hot Standby @@ -9766,9 +9768,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Recovery Control @@ -9855,11 +9857,11 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
- +
Queries @@ -9945,7 +9947,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
Strings @@ -9967,11 +9969,11 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
- +
Object Manipulation @@ -10028,7 +10030,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
<command>ALTER</command> Object @@ -10075,9 +10077,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
<link linkend="sql-createtable"><command>CREATE/ALTER TABLE</command></link> @@ -10152,9 +10154,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Object Permissions @@ -10172,11 +10174,11 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
- +
Utility Operations @@ -10209,7 +10211,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
<link linkend="sql-copy"><command>COPY</command></link> @@ -10240,9 +10242,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
<link linkend="sql-explain"><command>EXPLAIN</command></link> @@ -10256,9 +10258,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
<link linkend="sql-vacuum"><command>VACUUM</command></link> @@ -10290,9 +10292,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
<link linkend="sql-cluster"><command>CLUSTER</command></link> @@ -10306,9 +10308,9 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - +
- +
Indexes @@ -10369,11 +10371,11 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
- +
Data Types @@ -10439,7 +10441,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
Casting @@ -10472,9 +10474,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
<link linkend="functions-xml"><acronym>XML</acronym></link> @@ -10512,11 +10514,11 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
- +
Functions @@ -10581,7 +10583,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
Object Information Functions @@ -10658,9 +10660,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
Function and Trigger Creation @@ -10678,14 +10680,14 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
- +
Server-Side Languages - +
<link linkend="plpgsql">PL/pgSQL</link> Server-Side Language @@ -10719,9 +10721,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
<link linkend="plperl">PL/Perl</link> Server-Side Language @@ -10762,9 +10764,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
<link linkend="plpython">PL/Python</link> Server-Side Language @@ -10848,11 +10850,11 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
- +
Client Applications @@ -10867,7 +10869,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
<link linkend="app-psql"><application>psql</application></link> @@ -10959,9 +10961,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
<link linkend="app-pgdump"><application>pg_dump</application></link> @@ -10990,9 +10992,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
<link linkend="app-pg-ctl"><application>pg_ctl</application></link> @@ -11033,14 +11035,14 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
- +
<application>Development Tools</application> - +
<link linkend="libpq"><application>libpq</application></link> @@ -11105,9 +11107,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
<link linkend="ecpg"><application>ECPG</application></link> @@ -11128,11 +11130,11 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
- +
Build Options @@ -11151,7 +11153,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
Makefiles @@ -11208,9 +11210,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
Windows @@ -11248,11 +11250,11 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
- +
Source Code @@ -11352,7 +11354,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
Server Hooks @@ -11379,11 +11381,11 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
- +
Contrib @@ -11514,7 +11516,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
Security @@ -11559,9 +11561,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
Performance @@ -11609,9 +11611,9 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
Fsync Testing @@ -11647,11 +11649,11 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- +
- +
Documentation @@ -11754,7 +11756,8 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; - +
- - +
+
+
diff --git a/doc/src/sgml/release-9.2.sgml b/doc/src/sgml/release-9.2.sgml index e012f7fb6c..e86b5b490e 100644 --- a/doc/src/sgml/release-9.2.sgml +++ b/doc/src/sgml/release-9.2.sgml @@ -1,7 +1,9 @@ - +
+ Release 9.2 +
Release 9.2.24 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 9.2.24 @@ -33,9 +35,9 @@ see . - +
- +
Changes @@ -199,10 +201,10 @@ - - +
+
- +
Release 9.2.23 @@ -222,7 +224,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 9.2.23 @@ -234,9 +236,9 @@ see . - +
- +
Changes @@ -368,10 +370,10 @@ CREATE OR REPLACE VIEW table_privileges AS - - +
+
- +
Release 9.2.22 @@ -391,7 +393,7 @@ CREATE OR REPLACE VIEW table_privileges AS Users are encouraged to update to a newer release branch soon. - +
Migration to Version 9.2.22 @@ -408,9 +410,9 @@ CREATE OR REPLACE VIEW table_privileges AS see . - +
- +
Changes @@ -834,10 +836,10 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - +
+
- +
Release 9.2.21 @@ -857,7 +859,7 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; Users are encouraged to update to a newer release branch soon. - +
Migration to Version 9.2.21 @@ -874,9 +876,9 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; see . - +
- +
Changes @@ -1214,10 +1216,10 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - +
+
- +
Release 9.2.20 @@ -1231,7 +1233,7 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; . - +
Migration to Version 9.2.20 @@ -1249,9 +1251,9 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; see . - +
- +
Changes @@ -1626,10 +1628,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 - - +
+
- +
Release 9.2.19 @@ -1643,7 +1645,7 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 . - +
Migration to Version 9.2.19 @@ -1655,9 +1657,9 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 see . - +
- +
Changes @@ -1892,10 +1894,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 - - +
+
- +
Release 9.2.18 @@ -1909,7 +1911,7 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 . - +
Migration to Version 9.2.18 @@ -1921,9 +1923,9 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 see . - +
- +
Changes @@ -2233,10 +2235,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 - - +
+
- +
Release 9.2.17 @@ -2250,7 +2252,7 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 . - +
Migration to Version 9.2.17 @@ -2262,9 +2264,9 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 see . - +
- +
Changes @@ -2429,10 +2431,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 - - +
+
- +
Release 9.2.16 @@ -2446,7 +2448,7 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 . - +
Migration to Version 9.2.16 @@ -2458,9 +2460,9 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 see . - +
- +
Changes @@ -2635,10 +2637,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 - - +
+
- +
Release 9.2.15 @@ -2652,7 +2654,7 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 . - +
Migration to Version 9.2.15 @@ -2664,9 +2666,9 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 see . - +
- +
Changes @@ -3179,10 +3181,10 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 - - +
+
- +
Release 9.2.14 @@ -3196,7 +3198,7 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 . - +
Migration to Version 9.2.14 @@ -3208,9 +3210,9 @@ Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900 see . - +
- +
Changes @@ -3776,10 +3778,10 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 - - +
+
- +
Release 9.2.13 @@ -3793,7 +3795,7 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 . - +
Migration to Version 9.2.13 @@ -3805,9 +3807,9 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 see . - +
- +
Changes @@ -3844,10 +3846,10 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 - - +
+
- +
Release 9.2.12 @@ -3861,7 +3863,7 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 . - +
Migration to Version 9.2.12 @@ -3873,9 +3875,9 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 see . - +
- +
Changes @@ -3939,10 +3941,10 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 - - +
+
- +
Release 9.2.11 @@ -3956,7 +3958,7 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 . - +
Migration to Version 9.2.11 @@ -3974,9 +3976,9 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 see . - +
- +
Changes @@ -4521,10 +4523,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.10 @@ -4538,7 +4540,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.10 @@ -4559,9 +4561,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 see . - +
- +
Changes @@ -5438,10 +5440,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.9 @@ -5455,7 +5457,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.9 @@ -5473,9 +5475,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 see . - +
- +
Changes @@ -5919,10 +5921,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.8 @@ -5936,7 +5938,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.8 @@ -5948,9 +5950,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 see . - +
- +
Changes @@ -6108,10 +6110,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.7 @@ -6125,7 +6127,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.7 @@ -6137,9 +6139,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 see . - +
- +
Changes @@ -6715,10 +6717,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.6 @@ -6732,7 +6734,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.6 @@ -6750,9 +6752,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 see . - +
- +
Changes @@ -7052,10 +7054,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.5 @@ -7069,7 +7071,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.5 @@ -7081,9 +7083,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 see . - +
- +
Changes @@ -7471,10 +7473,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.4 @@ -7488,7 +7490,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.4 @@ -7507,9 +7509,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 see . - +
- +
Changes @@ -7878,10 +7880,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.3 @@ -7895,7 +7897,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.3 @@ -7907,9 +7909,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 see . - +
- +
Changes @@ -8329,10 +8331,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.2 @@ -8346,7 +8348,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.2 @@ -8364,9 +8366,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 see . - +
- +
Changes @@ -9053,10 +9055,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2.1 @@ -9070,7 +9072,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 . - +
Migration to Version 9.2.1 @@ -9083,9 +9085,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 corruption bug described in the first changelog item below. - +
- +
Changes @@ -9221,10 +9223,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - - +
+
- +
Release 9.2 @@ -9232,7 +9234,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 2012-09-10 - +
Overview @@ -9339,9 +9341,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 The above items are explained in more detail in the sections below. - +
- +
Migration to Version 9.2 @@ -9356,7 +9358,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 with previous releases. Observe the following incompatibilities: - +
System Catalogs @@ -9396,9 +9398,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Functions @@ -9492,9 +9494,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Object Modification @@ -9542,9 +9544,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Command-Line Tools @@ -9602,9 +9604,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Server Settings @@ -9657,9 +9659,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Monitoring @@ -9720,11 +9722,11 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
- +
Changes @@ -9733,10 +9735,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 release. - +
Server - +
Performance @@ -9897,9 +9899,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Process Management @@ -9948,9 +9950,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Optimizer @@ -10089,9 +10091,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Authentication @@ -10137,9 +10139,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Monitoring @@ -10216,9 +10218,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Statistical Views @@ -10256,9 +10258,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Server Settings @@ -10343,7 +10345,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
<filename>postgresql.conf</filename> @@ -10406,13 +10408,13 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
- +
- +
Replication and Recovery @@ -10480,9 +10482,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Queries @@ -10562,9 +10564,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Object Manipulation @@ -10609,7 +10611,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
Constraints @@ -10657,9 +10659,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
<command>ALTER</command> @@ -10738,9 +10740,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
<link linkend="sql-createtable"><command>CREATE TABLE</command></link> @@ -10774,9 +10776,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Object Permissions @@ -10836,11 +10838,11 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
- +
Utility Operations @@ -10885,9 +10887,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Data Types @@ -10996,9 +10998,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Functions @@ -11097,9 +11099,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
<link linkend="information-schema">Information Schema</link> @@ -11169,12 +11171,12 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Server-Side Languages - +
<link linkend="plpgsql">PL/pgSQL</link> Server-Side Language @@ -11216,9 +11218,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
<link linkend="plpython">PL/Python</link> Server-Side Language @@ -11254,9 +11256,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
<link linkend="xfunc-sql">SQL</link> Server-Side Language @@ -11273,11 +11275,11 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
- +
Client Applications @@ -11323,7 +11325,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
<link linkend="app-psql"><application>psql</application></link> @@ -11438,9 +11440,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Informational Commands @@ -11499,9 +11501,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Tab Completion @@ -11546,9 +11548,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
<link linkend="app-pgdump"><application>pg_dump</application></link> @@ -11646,11 +11648,11 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
- +
<link linkend="libpq"><application>libpq</application></link> @@ -11725,9 +11727,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Source Code @@ -11873,9 +11875,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
Additional Modules @@ -11953,7 +11955,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
<link linkend="pgupgrade"><application>pg_upgrade</application></link> @@ -12057,9 +12059,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
<link linkend="pgstatstatements"><application>pg_stat_statements</application></link> @@ -12093,9 +12095,9 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
<link linkend="sepgsql">sepgsql</link> @@ -12139,11 +12141,11 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- +
- +
Documentation @@ -12195,7 +12197,8 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - +
- - +
+
+
diff --git a/doc/src/sgml/release-9.3.sgml b/doc/src/sgml/release-9.3.sgml index 3575cb5d76..fca9653b93 100644 --- a/doc/src/sgml/release-9.3.sgml +++ b/doc/src/sgml/release-9.3.sgml @@ -1,7 +1,9 @@ - +
+ Release 9.3 +
Release 9.3.25 @@ -21,7 +23,7 @@ release branch soon. - +
Migration to Version 9.3.25 @@ -32,9 +34,9 @@ However, if you are upgrading from a version earlier than 9.3.23, see . - +
- +
Changes @@ -464,10 +466,10 @@ - - +
+
- +
Release 9.3.24 @@ -487,7 +489,7 @@ Users are encouraged to update to a newer release branch soon. - +
Migration to Version 9.3.24 @@ -498,9 +500,9 @@ However, if you are upgrading from a version earlier than 9.3.23, see . - +
- +
Changes @@ -781,10 +783,10 @@ - - +
+
- +
Release 9.3.23 @@ -798,7 +800,7 @@ . - +
Migration to Version 9.3.23 @@ -815,9 +817,9 @@ Also, if you are upgrading from a version earlier than 9.3.22, see . - +
- +
Changes @@ -1150,10 +1152,10 @@ - - +
+
- +
Release 9.3.22 @@ -1167,7 +1169,7 @@ . - +
Migration to Version 9.3.22 @@ -1194,9 +1196,9 @@ Also, if you are upgrading from a version earlier than 9.3.18, see . - +
- +
Changes @@ -1336,10 +1338,10 @@ - - +
+
- +
Release 9.3.21 @@ -1353,7 +1355,7 @@ . - +
Migration to Version 9.3.21 @@ -1364,9 +1366,9 @@ However, if you are upgrading from a version earlier than 9.3.18, see . - +
- +
Changes @@ -1658,10 +1660,10 @@ - - +
+
- +
Release 9.3.20 @@ -1675,7 +1677,7 @@ . - +
Migration to Version 9.3.20 @@ -1687,9 +1689,9 @@ see . - +
- +
Changes @@ -1892,10 +1894,10 @@ - - +
+
- +
Release 9.3.19 @@ -1909,7 +1911,7 @@ . - +
Migration to Version 9.3.19 @@ -1921,9 +1923,9 @@ see . - +
- +
Changes @@ -2063,10 +2065,10 @@ CREATE OR REPLACE VIEW table_privileges AS - - +
+
- +
Release 9.3.18 @@ -2080,7 +2082,7 @@ CREATE OR REPLACE VIEW table_privileges AS . - +
Migration to Version 9.3.18 @@ -2097,9 +2099,9 @@ CREATE OR REPLACE VIEW table_privileges AS see . - +
- +
Changes @@ -2622,10 +2624,10 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - +
+
- +
Release 9.3.17 @@ -2639,7 +2641,7 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; . - +
Migration to Version 9.3.17 @@ -2656,9 +2658,9 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; see . - +
- +
Changes @@ -3041,10 +3043,10 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - +
+
- +
Release 9.3.16 @@ -3058,7 +3060,7 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; . - +
Migration to Version 9.3.16 @@ -3076,9 +3078,9 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; see . - +
- +
Changes @@ -3489,10 +3491,10 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - +
+
- +
Release 9.3.15 @@ -3506,7 +3508,7 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; . - +
Migration to Version 9.3.15 @@ -3524,9 +3526,9 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; see . - +
- +
Changes @@ -3818,10 +3820,10 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - +
+
- +
Release 9.3.14 @@ -3835,7 +3837,7 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; . - +
Migration to Version 9.3.14 @@ -3847,9 +3849,9 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; see . - +
- +
Changes @@ -4308,10 +4310,10 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - +
+
- +
Release 9.3.13 @@ -4325,7 +4327,7 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; . - +
Migration to Version 9.3.13 @@ -4337,9 +4339,9 @@ UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; see . - +
- +
Changes @@ -4538,10 +4540,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 - - +
+
- +
Release 9.3.12 @@ -4555,7 +4557,7 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 . - +
Migration to Version 9.3.12 @@ -4567,9 +4569,9 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 see . - +
- +
Changes @@ -4757,10 +4759,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 - - +
+
- +
Release 9.3.11 @@ -4774,7 +4776,7 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 . - +
Migration to Version 9.3.11 @@ -4786,9 +4788,9 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 see . - +
- +
Changes @@ -5380,10 +5382,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 - - +
+
- +
Release 9.3.10 @@ -5397,7 +5399,7 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 . - +
Migration to Version 9.3.10 @@ -5409,9 +5411,9 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 see . - +
- +
Changes @@ -6009,10 +6011,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 - - +
+
- +
Release 9.3.9 @@ -6026,7 +6028,7 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 . - +
Migration to Version 9.3.9 @@ -6044,9 +6046,9 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 see . - +
- +
Changes @@ -6158,10 +6160,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 - - +
+
- +
Release 9.3.8 @@ -6175,7 +6177,7 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 . - +
Migration to Version 9.3.8 @@ -6187,9 +6189,9 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 see . - +
- +
Changes @@ -6266,10 +6268,10 @@ Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400 - - +
+
- +
Release 9.3.7 @@ -6283,7 +6285,7 @@ Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400 . - +
Migration to Version 9.3.7 @@ -6301,9 +6303,9 @@ Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400 see . - +
- +
Changes @@ -6856,10 +6858,10 @@ Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400 - - +
+
- +
Release 9.3.6 @@ -6873,7 +6875,7 @@ Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400 . - +
Migration to Version 9.3.6 @@ -6894,9 +6896,9 @@ Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400 see . - +
- +
Changes @@ -8741,10 +8743,10 @@ Branch: REL9_0_STABLE [b6391f587] 2014-10-04 14:18:43 -0400 - - +
+
- +
Release 9.3.5 @@ -8758,7 +8760,7 @@ Branch: REL9_0_STABLE [b6391f587] 2014-10-04 14:18:43 -0400 . - +
Migration to Version 9.3.5 @@ -8778,9 +8780,9 @@ Branch: REL9_0_STABLE [b6391f587] 2014-10-04 14:18:43 -0400 see . - +
- +
Changes @@ -9861,10 +9863,10 @@ Branch: REL8_4_STABLE [c51da696b] 2014-07-19 15:01:45 -0400 - - +
+
- +
Release 9.3.4 @@ -9878,7 +9880,7 @@ Branch: REL8_4_STABLE [c51da696b] 2014-07-19 15:01:45 -0400 . - +
Migration to Version 9.3.4 @@ -9897,9 +9899,9 @@ Branch: REL8_4_STABLE [c51da696b] 2014-07-19 15:01:45 -0400 see . - +
- +
Changes @@ -10323,10 +10325,10 @@ Branch: REL8_4_STABLE [6e6c2c2e1] 2014-03-15 13:36:57 -0400 - - +
+
- +
Release 9.3.3 @@ -10340,7 +10342,7 @@ Branch: REL8_4_STABLE [6e6c2c2e1] 2014-03-15 13:36:57 -0400 . - +
Migration to Version 9.3.3 @@ -10369,9 +10371,9 @@ Branch: REL8_4_STABLE [6e6c2c2e1] 2014-03-15 13:36:57 -0400 see . - +
- +
Changes @@ -11785,10 +11787,10 @@ Branch: REL8_4_STABLE [c0c2d62ac] 2014-02-14 21:59:56 -0500 - - +
+
- +
Release 9.3.2 @@ -11802,7 +11804,7 @@ Branch: REL8_4_STABLE [c0c2d62ac] 2014-02-14 21:59:56 -0500 . - +
Migration to Version 9.3.2 @@ -11820,9 +11822,9 @@ Branch: REL8_4_STABLE [c0c2d62ac] 2014-02-14 21:59:56 -0500 see . - +
- +
Changes @@ -12264,10 +12266,10 @@ SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z - - +
+
- +
Release 9.3.1 @@ -12281,7 +12283,7 @@ SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z . - +
Migration to Version 9.3.1 @@ -12293,9 +12295,9 @@ SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z first changelog entry. - +
- +
Changes @@ -12367,10 +12369,10 @@ ALTER EXTENSION hstore UPDATE; - - +
+
- +
Release 9.3 @@ -12378,7 +12380,7 @@ ALTER EXTENSION hstore UPDATE; 2013-09-09 - +
Overview @@ -12468,9 +12470,9 @@ ALTER EXTENSION hstore UPDATE; The above items are explained in more detail in the sections below. - +
- +
Migration to Version 9.3 @@ -12486,7 +12488,7 @@ ALTER EXTENSION hstore UPDATE; with previous releases. Observe the following incompatibilities: - +
Server Settings @@ -12526,9 +12528,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Other @@ -12646,11 +12648,11 @@ ALTER EXTENSION hstore UPDATE; - +
- +
- +
Changes @@ -12659,10 +12661,10 @@ ALTER EXTENSION hstore UPDATE; release. - +
Server - +
Locking @@ -12696,9 +12698,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Indexes @@ -12733,9 +12735,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Optimizer @@ -12778,9 +12780,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
General Performance @@ -12867,9 +12869,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Monitoring @@ -12926,9 +12928,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Authentication @@ -12983,9 +12985,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Server Settings @@ -13055,11 +13057,11 @@ ALTER EXTENSION hstore UPDATE; - +
- +
- +
Replication and Recovery @@ -13188,9 +13190,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Queries @@ -13228,9 +13230,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Object Manipulation @@ -13320,7 +13322,7 @@ ALTER EXTENSION hstore UPDATE; - +
<command>ALTER</command> @@ -13360,9 +13362,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
<link linkend="rules-views"><command>VIEWs</command></link> @@ -13428,11 +13430,11 @@ ALTER EXTENSION hstore UPDATE; - +
- +
- +
Data Types @@ -13460,7 +13462,7 @@ ALTER EXTENSION hstore UPDATE; - +
<link linkend="datatype-json"><type>JSON</type></link> @@ -13490,12 +13492,12 @@ ALTER EXTENSION hstore UPDATE; - +
- +
- +
Functions @@ -13589,12 +13591,12 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Server-Side Languages - +
<link linkend="plpgsql">PL/pgSQL</link> Server-Side Language @@ -13647,9 +13649,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
<link linkend="plpython">PL/Python</link> Server-Side Language @@ -13681,11 +13683,11 @@ ALTER EXTENSION hstore UPDATE; - +
- +
- +
Server Programming Interface (<link linkend="spi">SPI</link>) @@ -13718,9 +13720,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Client Applications @@ -13772,7 +13774,7 @@ ALTER EXTENSION hstore UPDATE; - +
<link linkend="app-psql"><application>psql</application></link> @@ -13817,7 +13819,7 @@ ALTER EXTENSION hstore UPDATE; - +
<link linkend="app-psql-meta-commands">Backslash Commands</link> @@ -13883,9 +13885,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Output @@ -13924,11 +13926,11 @@ ALTER EXTENSION hstore UPDATE; - +
- +
- +
<link linkend="app-pgdump"><application>pg_dump</application></link> @@ -13967,9 +13969,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
<link linkend="app-initdb"><application>initdb</application></link> @@ -14006,11 +14008,11 @@ ALTER EXTENSION hstore UPDATE; - +
- +
- +
Source Code @@ -14272,9 +14274,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
Additional Modules @@ -14369,7 +14371,7 @@ ALTER EXTENSION hstore UPDATE; - +
<link linkend="pgupgrade"><application>pg_upgrade</application></link> @@ -14430,9 +14432,9 @@ ALTER EXTENSION hstore UPDATE; - +
- +
<link linkend="pgbench"><application>pgbench</application></link> @@ -14497,11 +14499,11 @@ ALTER EXTENSION hstore UPDATE; - +
- +
- +
Documentation @@ -14545,7 +14547,8 @@ ALTER EXTENSION hstore UPDATE; - +
- - +
+
+
diff --git a/doc/src/sgml/release-9.4.sgml b/doc/src/sgml/release-9.4.sgml index 9851d96d42..5e572d18c9 100644 --- a/doc/src/sgml/release-9.4.sgml +++ b/doc/src/sgml/release-9.4.sgml @@ -1,7 +1,9 @@ - +
+ Release 9.4 +
Release 9.4.20 @@ -15,7 +17,7 @@ . - +
Migration to Version 9.4.20 @@ -26,9 +28,9 @@ However, if you are upgrading from a version earlier than 9.4.18, see . - +
- +
Changes @@ -514,10 +516,10 @@ - - +
+
- +
Release 9.4.19 @@ -531,7 +533,7 @@ . - +
Migration to Version 9.4.19 @@ -542,9 +544,9 @@ However, if you are upgrading from a version earlier than 9.4.18, see . - +
- +
Changes @@ -882,10 +884,10 @@ - - +
+
- +
Release 9.4.18 @@ -899,7 +901,7 @@ . - +
Migration to Version 9.4.18 @@ -916,9 +918,9 @@ Also, if you are upgrading from a version earlier than 9.4.17, see . - +
- +
Changes @@ -1295,10 +1297,10 @@ - - +
+
- +
Release 9.4.17 @@ -1312,7 +1314,7 @@ . - +
Migration to Version 9.4.17 @@ -1339,9 +1341,9 @@ Also, if you are upgrading from a version earlier than 9.4.13, see . - +
- +
Changes @@ -1481,10 +1483,10 @@ - - +
+
- +
Release 9.4.16 @@ -1498,7 +1500,7 @@ . - +
Migration to Version 9.4.16 @@ -1509,9 +1511,9 @@ However, if you are upgrading from a version earlier than 9.4.13, see . - +
- +
Changes @@ -1844,10 +1846,10 @@ - - +
+
- +
Release 9.4.15 @@ -1861,7 +1863,7 @@ . - +
Migration to Version 9.4.15 @@ -1872,9 +1874,9 @@ However, if you are upgrading from a version earlier than 9.4.13, see . - +
- +
Changes @@ -2122,10 +2124,10 @@ - - +
+
- +
Release 9.4.14 @@ -2139,7 +2141,7 @@ . - +
Migration to Version 9.4.14 @@ -2150,9 +2152,9 @@ However, if you are upgrading from a version earlier than 9.4.13, see . - +
- +
Changes @@ -2309,10 +2311,10 @@ CREATE OR REPLACE VIEW table_privileges AS - - +
+
- +
Release 9.4.13 @@ -2326,7 +2328,7 @@ CREATE OR REPLACE VIEW table_privileges AS . - +
Migration to Version 9.4.13 @@ -2342,9 +2344,9 @@ CREATE OR REPLACE VIEW table_privileges AS Also, if you are upgrading from a version earlier than 9.4.12, see . - +
- +
Changes @@ -2982,10 +2984,10 @@ Branch: REL9_4_STABLE [23a2b818f] 2017-08-05 14:56:40 -0700 - - +
+
- +
Release 9.4.12 @@ -2999,7 +3001,7 @@ Branch: REL9_4_STABLE [23a2b818f] 2017-08-05 14:56:40 -0700 . - +
Migration to Version 9.4.12 @@ -3020,9 +3022,9 @@ Branch: REL9_4_STABLE [23a2b818f] 2017-08-05 14:56:40 -0700 Also, if you are upgrading from a version earlier than 9.4.11, see . - +
- +
Changes @@ -3490,10 +3492,10 @@ Branch: REL9_2_STABLE [fb50c38e9] 2017-04-17 13:52:42 -0400 - - +
+
- +
Release 9.4.11 @@ -3507,7 +3509,7 @@ Branch: REL9_2_STABLE [fb50c38e9] 2017-04-17 13:52:42 -0400 . - +
Migration to Version 9.4.11 @@ -3524,9 +3526,9 @@ Branch: REL9_2_STABLE [fb50c38e9] 2017-04-17 13:52:42 -0400 Also, if you are upgrading from a version earlier than 9.4.10, see . - +
- +
Changes @@ -4023,10 +4025,10 @@ Branch: REL9_2_STABLE [fb50c38e9] 2017-04-17 13:52:42 -0400 - - +
+
- +
Release 9.4.10 @@ -4040,7 +4042,7 @@ Branch: REL9_2_STABLE [fb50c38e9] 2017-04-17 13:52:42 -0400 . - +
Migration to Version 9.4.10 @@ -4057,9 +4059,9 @@ Branch: REL9_2_STABLE [fb50c38e9] 2017-04-17 13:52:42 -0400 Also, if you are upgrading from a version earlier than 9.4.6, see . - +
- +
Changes @@ -4489,10 +4491,10 @@ Branch: REL9_4_STABLE [10ad15f48] 2016-09-01 11:45:16 -0400 - - +
+
- +
Release 9.4.9 @@ -4506,7 +4508,7 @@ Branch: REL9_4_STABLE [10ad15f48] 2016-09-01 11:45:16 -0400 . - +
Migration to Version 9.4.9 @@ -4517,9 +4519,9 @@ Branch: REL9_4_STABLE [10ad15f48] 2016-09-01 11:45:16 -0400 However, if you are upgrading from a version earlier than 9.4.6, see . - +
- +
Changes @@ -5011,10 +5013,10 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 - - +
+
- +
Release 9.4.8 @@ -5028,7 +5030,7 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 . - +
Migration to Version 9.4.8 @@ -5039,9 +5041,9 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 However, if you are upgrading from a version earlier than 9.4.6, see . - +
- +
Changes @@ -5274,10 +5276,10 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 - - +
+
- +
Release 9.4.7 @@ -5291,7 +5293,7 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 . - +
Migration to Version 9.4.7 @@ -5302,9 +5304,9 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 However, if you are upgrading from a version earlier than 9.4.6, see . - +
- +
Changes @@ -5545,10 +5547,10 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 - - +
+
- +
Release 9.4.6 @@ -5562,7 +5564,7 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 . - +
Migration to Version 9.4.6 @@ -5579,9 +5581,9 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 Also, if you are upgrading from a version earlier than 9.4.4, see . - +
- +
Changes @@ -6642,10 +6644,10 @@ Branch: REL9_1_STABLE [386dcd539] 2015-12-11 19:08:40 -0500 - - +
+
- +
Release 9.4.5 @@ -6659,7 +6661,7 @@ Branch: REL9_1_STABLE [386dcd539] 2015-12-11 19:08:40 -0500 . - +
Migration to Version 9.4.5 @@ -6670,9 +6672,9 @@ Branch: REL9_1_STABLE [386dcd539] 2015-12-11 19:08:40 -0500 However, if you are upgrading from a version earlier than 9.4.4, see . - +
- +
Changes @@ -8165,10 +8167,10 @@ Branch: REL9_0_STABLE [47ac95f37] 2015-10-02 19:16:37 -0400 - - +
+
- +
Release 9.4.4 @@ -8182,7 +8184,7 @@ Branch: REL9_0_STABLE [47ac95f37] 2015-10-02 19:16:37 -0400 . - +
Migration to Version 9.4.4 @@ -8199,9 +8201,9 @@ Branch: REL9_0_STABLE [47ac95f37] 2015-10-02 19:16:37 -0400 Also, if you are upgrading from a version earlier than 9.4.2, see . - +
- +
Changes @@ -8346,10 +8348,10 @@ Branch: REL9_3_STABLE [d3fdec6ae] 2015-06-03 11:58:47 -0400 - - +
+
- +
Release 9.4.3 @@ -8363,7 +8365,7 @@ Branch: REL9_3_STABLE [d3fdec6ae] 2015-06-03 11:58:47 -0400 . - +
Migration to Version 9.4.3 @@ -8374,9 +8376,9 @@ Branch: REL9_3_STABLE [d3fdec6ae] 2015-06-03 11:58:47 -0400 However, if you are upgrading from a version earlier than 9.4.2, see . - +
- +
Changes @@ -8489,10 +8491,10 @@ Branch: REL9_0_STABLE [b06649b7f] 2015-05-26 22:15:00 -0400 - - +
+
- +
Release 9.4.2 @@ -8506,7 +8508,7 @@ Branch: REL9_0_STABLE [b06649b7f] 2015-05-26 22:15:00 -0400 . - +
Migration to Version 9.4.2 @@ -8523,9 +8525,9 @@ Branch: REL9_0_STABLE [b06649b7f] 2015-05-26 22:15:00 -0400 Also, if you are upgrading from a version earlier than 9.4.1, see . - +
- +
Changes @@ -9770,10 +9772,10 @@ Branch: REL9_0_STABLE [3c3749a3b] 2015-05-15 19:36:20 -0400 - - +
+
- +
Release 9.4.1 @@ -9787,7 +9789,7 @@ Branch: REL9_0_STABLE [3c3749a3b] 2015-05-15 19:36:20 -0400 . - +
Migration to Version 9.4.1 @@ -9803,9 +9805,9 @@ Branch: REL9_0_STABLE [3c3749a3b] 2015-05-15 19:36:20 -0400 alias Norwegian_Norway. For details see - +
- +
Changes @@ -10583,10 +10585,10 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - - +
+
- +
Release 9.4 @@ -10594,7 +10596,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 2014-12-18 - +
Overview @@ -10654,9 +10656,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 The above items are explained in more detail in the sections below. - +
- +
Migration to Version 9.4 @@ -10985,9 +10987,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
Changes @@ -10996,7 +10998,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 release. - +
Server @@ -11059,7 +11061,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
Indexes @@ -11116,9 +11118,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
General Performance @@ -11236,9 +11238,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
Monitoring @@ -11276,9 +11278,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
<acronym>SSL</acronym> @@ -11337,9 +11339,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
Server Settings @@ -11485,11 +11487,11 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
- +
Replication and Recovery @@ -11585,7 +11587,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
<link linkend="logicaldecoding">Logical Decoding</link> @@ -11648,11 +11650,11 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
- +
Queries @@ -11701,9 +11703,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
Utility Commands @@ -11750,7 +11752,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
<xref linkend="sql-explain"/> @@ -11778,9 +11780,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
Views @@ -11838,11 +11840,11 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
- +
Object Manipulation @@ -11933,9 +11935,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
Data Types @@ -12011,7 +12013,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
<link linkend="datatype-json"><acronym>JSON</acronym></link> @@ -12059,11 +12061,11 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
- +
Functions @@ -12170,7 +12172,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
System Information Functions @@ -12224,9 +12226,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
Aggregates @@ -12281,11 +12283,11 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
- +
Server-Side Languages @@ -12312,7 +12314,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
<link linkend="plpgsql">PL/pgSQL</link> Server-Side Language @@ -12350,11 +12352,11 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
- +
<link linkend="libpq"><application>libpq</application></link> @@ -12380,9 +12382,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
Client Applications @@ -12465,7 +12467,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
<xref linkend="app-psql"/> @@ -12487,7 +12489,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
<link linkend="app-psql-meta-commands">Backslash Commands</link> @@ -12593,11 +12595,11 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
- +
<xref linkend="app-pgdump"/> @@ -12632,9 +12634,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
<xref linkend="app-pgbasebackup"/> @@ -12672,11 +12674,11 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
- +
Source Code @@ -12917,9 +12919,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
Additional Modules @@ -13050,7 +13052,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
<xref linkend="pgbench"/> @@ -13089,9 +13091,9 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
<xref linkend="pgstatstatements"/> @@ -13150,9 +13152,10 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - +
- +
- - +
+
+
diff --git a/doc/src/sgml/release-9.5.sgml b/doc/src/sgml/release-9.5.sgml index 00d5619a0a..a01ef05aa0 100644 --- a/doc/src/sgml/release-9.5.sgml +++ b/doc/src/sgml/release-9.5.sgml @@ -1,7 +1,9 @@ - +
+ Release 9.5 +
Release 9.5.15 @@ -15,7 +17,7 @@ . - +
Migration to Version 9.5.15 @@ -26,9 +28,9 @@ However, if you are upgrading from a version earlier than 9.5.13, see . - +
- +
Changes @@ -638,10 +640,10 @@ Branch: REL9_3_STABLE [01187f32c] 2018-10-12 14:49:33 -0400 - - +
+
- +
Release 9.5.14 @@ -655,7 +657,7 @@ Branch: REL9_3_STABLE [01187f32c] 2018-10-12 14:49:33 -0400 . - +
Migration to Version 9.5.14 @@ -666,9 +668,9 @@ Branch: REL9_3_STABLE [01187f32c] 2018-10-12 14:49:33 -0400 However, if you are upgrading from a version earlier than 9.5.13, see . - +
- +
Changes @@ -1060,10 +1062,10 @@ Branch: REL9_3_STABLE [01187f32c] 2018-10-12 14:49:33 -0400 - - +
+
- +
Release 9.5.13 @@ -1077,7 +1079,7 @@ Branch: REL9_3_STABLE [01187f32c] 2018-10-12 14:49:33 -0400 . - +
Migration to Version 9.5.13 @@ -1094,9 +1096,9 @@ Branch: REL9_3_STABLE [01187f32c] 2018-10-12 14:49:33 -0400 Also, if you are upgrading from a version earlier than 9.5.12, see . - +
- +
Changes @@ -1532,10 +1534,10 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 - - +
+
- +
Release 9.5.12 @@ -1549,7 +1551,7 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 . - +
Migration to Version 9.5.12 @@ -1576,9 +1578,9 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 Also, if you are upgrading from a version earlier than 9.5.10, see . - +
- +
Changes @@ -1718,10 +1720,10 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 - - +
+
- +
Release 9.5.11 @@ -1735,7 +1737,7 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 . - +
Migration to Version 9.5.11 @@ -1746,9 +1748,9 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 However, if you are upgrading from a version earlier than 9.5.10, see . - +
- +
Changes @@ -2133,10 +2135,10 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 - - +
+
- +
Release 9.5.10 @@ -2150,7 +2152,7 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 . - +
Migration to Version 9.5.10 @@ -2165,9 +2167,9 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 Also, if you are upgrading from a version earlier than 9.5.8, see . - +
- +
Changes @@ -2494,10 +2496,10 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 - - +
+
- +
Release 9.5.9 @@ -2511,7 +2513,7 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 . - +
Migration to Version 9.5.9 @@ -2522,9 +2524,9 @@ Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400 However, if you are upgrading from a version earlier than 9.5.8, see . - +
- +
Changes @@ -2671,10 +2673,10 @@ CREATE OR REPLACE VIEW table_privileges AS - - +
+
- +
Release 9.5.8 @@ -2688,7 +2690,7 @@ CREATE OR REPLACE VIEW table_privileges AS . - +
Migration to Version 9.5.8 @@ -2704,9 +2706,9 @@ CREATE OR REPLACE VIEW table_privileges AS Also, if you are upgrading from a version earlier than 9.5.7, see . - +
- +
Changes @@ -3378,10 +3380,10 @@ Branch: REL9_2_STABLE [1188b9b2c] 2017-08-02 15:07:21 -0400 - - +
+
- +
Release 9.5.7 @@ -3395,7 +3397,7 @@ Branch: REL9_2_STABLE [1188b9b2c] 2017-08-02 15:07:21 -0400 . - +
Migration to Version 9.5.7 @@ -3416,9 +3418,9 @@ Branch: REL9_2_STABLE [1188b9b2c] 2017-08-02 15:07:21 -0400 Also, if you are upgrading from a version earlier than 9.5.6, see . - +
- +
Changes @@ -3947,10 +3949,10 @@ Branch: REL9_3_STABLE [3aa16b117] 2017-05-06 22:17:35 -0400 - - +
+
- +
Release 9.5.6 @@ -3964,7 +3966,7 @@ Branch: REL9_3_STABLE [3aa16b117] 2017-05-06 22:17:35 -0400 . - +
Migration to Version 9.5.6 @@ -3981,9 +3983,9 @@ Branch: REL9_3_STABLE [3aa16b117] 2017-05-06 22:17:35 -0400 Also, if you are upgrading from a version earlier than 9.5.5, see . - +
- +
Changes @@ -4609,10 +4611,10 @@ Branch: REL9_2_STABLE [60314e28e] 2016-12-13 19:08:09 -0600 - - +
+
- +
Release 9.5.5 @@ -4626,7 +4628,7 @@ Branch: REL9_2_STABLE [60314e28e] 2016-12-13 19:08:09 -0600 . - +
Migration to Version 9.5.5 @@ -4643,9 +4645,9 @@ Branch: REL9_2_STABLE [60314e28e] 2016-12-13 19:08:09 -0600 Also, if you are upgrading from a version earlier than 9.5.2, see . - +
- +
Changes @@ -5433,10 +5435,10 @@ Branch: REL9_1_STABLE [380dad29d] 2016-09-02 17:29:32 -0400 - - +
+
- +
Release 9.5.4 @@ -5450,7 +5452,7 @@ Branch: REL9_1_STABLE [380dad29d] 2016-09-02 17:29:32 -0400 . - +
Migration to Version 9.5.4 @@ -5461,9 +5463,9 @@ Branch: REL9_1_STABLE [380dad29d] 2016-09-02 17:29:32 -0400 However, if you are upgrading from a version earlier than 9.5.2, see . - +
- +
Changes @@ -6506,10 +6508,10 @@ Branch: REL9_1_STABLE [a44388ffe] 2016-08-05 12:59:02 -0400 - - +
+
- +
Release 9.5.3 @@ -6523,7 +6525,7 @@ Branch: REL9_1_STABLE [a44388ffe] 2016-08-05 12:59:02 -0400 . - +
Migration to Version 9.5.3 @@ -6534,9 +6536,9 @@ Branch: REL9_1_STABLE [a44388ffe] 2016-08-05 12:59:02 -0400 However, if you are upgrading from a version earlier than 9.5.2, see . - +
- +
Changes @@ -7007,10 +7009,10 @@ Branch: REL9_1_STABLE [bfc39da64] 2016-05-05 20:09:32 -0400 - - +
+
- +
Release 9.5.2 @@ -7024,7 +7026,7 @@ Branch: REL9_1_STABLE [bfc39da64] 2016-05-05 20:09:32 -0400 . - +
Migration to Version 9.5.2 @@ -7035,9 +7037,9 @@ Branch: REL9_1_STABLE [bfc39da64] 2016-05-05 20:09:32 -0400 However, you may need to REINDEX some indexes after applying the update, as per the first changelog entry below. - +
- +
Changes @@ -7718,10 +7720,10 @@ Branch: REL9_1_STABLE [e5fd35cc5] 2016-03-25 19:03:54 -0400 - - +
+
- +
Release 9.5.1 @@ -7735,15 +7737,15 @@ Branch: REL9_1_STABLE [e5fd35cc5] 2016-03-25 19:03:54 -0400 . - +
Migration to Version 9.5.1 A dump/restore is not required for those running 9.5.X. - +
- +
Changes @@ -8166,10 +8168,10 @@ Branch: REL9_1_STABLE [6887d72d0] 2016-02-05 10:59:39 -0500 - - +
+
- +
Release 9.5 @@ -8177,7 +8179,7 @@ Branch: REL9_1_STABLE [6887d72d0] 2016-02-05 10:59:39 -0500 2016-01-07 - +
Overview @@ -8244,9 +8246,9 @@ Branch: REL9_1_STABLE [6887d72d0] 2016-02-05 10:59:39 -0500 The above items are explained in more detail in the sections below. - +
- +
Migration to Version 9.5 @@ -8469,9 +8471,9 @@ max_wal_size = (3 * checkpoint_segments) * 16MB - +
- +
Changes @@ -8480,10 +8482,10 @@ max_wal_size = (3 * checkpoint_segments) * 16MB release. - +
Server - +
Indexes @@ -8570,9 +8572,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
General Performance @@ -8766,9 +8768,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
Monitoring @@ -8814,9 +8816,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
<acronym>SSL</acronym> @@ -8888,9 +8890,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
Server Settings @@ -9049,11 +9051,11 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
- +
Replication and Recovery @@ -9207,9 +9209,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
Queries @@ -9307,9 +9309,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
Utility Commands @@ -9352,7 +9354,7 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
<xref linkend="sql-reindex"/> @@ -9400,10 +9402,10 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - - +
+
- +
Object Manipulation @@ -9560,7 +9562,7 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
<link linkend="ddl-foreign-data">Foreign Tables</link> @@ -9628,9 +9630,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
<link linkend="event-triggers">Event Triggers</link> @@ -9695,11 +9697,11 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
- +
Data Types @@ -9776,7 +9778,7 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
<link linkend="datatype-json"><acronym>JSON</acronym></link> @@ -9869,11 +9871,11 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
- +
Functions @@ -9992,7 +9994,7 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
System Information Functions and Views @@ -10061,9 +10063,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
Aggregates @@ -10093,11 +10095,11 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
- +
Server-Side Languages @@ -10152,7 +10154,7 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
<link linkend="plpgsql">PL/pgSQL</link> Server-Side Language @@ -10192,11 +10194,11 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
- +
Client Applications @@ -10323,7 +10325,7 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
<xref linkend="app-psql"/> @@ -10443,7 +10445,7 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
<link linkend="app-psql-meta-commands">Backslash Commands</link> @@ -10535,11 +10537,11 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
- +
<xref linkend="app-pgdump"/> @@ -10605,9 +10607,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
<xref linkend="app-pg-ctl"/> @@ -10656,9 +10658,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
<xref linkend="pgupgrade"/> @@ -10711,9 +10713,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
<xref linkend="pgbench"/> @@ -10784,11 +10786,11 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
- +
Source Code @@ -10963,7 +10965,7 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
MS Windows @@ -11054,11 +11056,11 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
- +
Additional Modules @@ -11184,8 +11186,9 @@ Add GUC and storage parameter to set the maximum size of GIN pending list. - +
- +
- +
+
diff --git a/doc/src/sgml/release-9.6.sgml b/doc/src/sgml/release-9.6.sgml index acebcc6249..710f142360 100644 --- a/doc/src/sgml/release-9.6.sgml +++ b/doc/src/sgml/release-9.6.sgml @@ -1,7 +1,9 @@ - +
+ Release 9.6 +
Release 9.6.11 @@ -15,7 +17,7 @@ . - +
Migration to Version 9.6.11 @@ -26,9 +28,9 @@ However, if you are upgrading from a version earlier than 9.6.9, see . - +
- +
Changes @@ -680,10 +682,10 @@ - - +
+
- +
Release 9.6.10 @@ -697,7 +699,7 @@ . - +
Migration to Version 9.6.10 @@ -708,9 +710,9 @@ However, if you are upgrading from a version earlier than 9.6.9, see . - +
- +
Changes @@ -1126,10 +1128,10 @@ - - +
+
- +
Release 9.6.9 @@ -1143,7 +1145,7 @@ . - +
Migration to Version 9.6.9 @@ -1165,9 +1167,9 @@ Also, if you are upgrading from a version earlier than 9.6.8, see . - +
- +
Changes @@ -1691,10 +1693,10 @@ - - +
+
- +
Release 9.6.8 @@ -1708,7 +1710,7 @@ . - +
Migration to Version 9.6.8 @@ -1735,9 +1737,9 @@ Also, if you are upgrading from a version earlier than 9.6.7, see . - +
- +
Changes @@ -1884,10 +1886,10 @@ - - +
+
- +
Release 9.6.7 @@ -1901,7 +1903,7 @@ . - +
Migration to Version 9.6.7 @@ -1918,9 +1920,9 @@ Also, if you are upgrading from a version earlier than 9.6.6, see . - +
- +
Changes @@ -2363,10 +2365,10 @@ - - +
+
- +
Release 9.6.6 @@ -2380,7 +2382,7 @@ . - +
Migration to Version 9.6.6 @@ -2395,9 +2397,9 @@ Also, if you are upgrading from a version earlier than 9.6.4, see . - +
- +
Changes @@ -2942,10 +2944,10 @@ Branch: REL9_2_STABLE [1317d1301] 2017-10-23 17:54:09 -0400 - - +
+
- +
Release 9.6.5 @@ -2959,7 +2961,7 @@ Branch: REL9_2_STABLE [1317d1301] 2017-10-23 17:54:09 -0400 . - +
Migration to Version 9.6.5 @@ -2970,9 +2972,9 @@ Branch: REL9_2_STABLE [1317d1301] 2017-10-23 17:54:09 -0400 However, if you are upgrading from a version earlier than 9.6.4, see . - +
- +
Changes @@ -3221,10 +3223,10 @@ Branch: REL9_5_STABLE [a784d5f21] 2017-08-09 12:06:14 -0400 - - +
+
- +
Release 9.6.4 @@ -3238,7 +3240,7 @@ Branch: REL9_5_STABLE [a784d5f21] 2017-08-09 12:06:14 -0400 . - +
Migration to Version 9.6.4 @@ -3254,9 +3256,9 @@ Branch: REL9_5_STABLE [a784d5f21] 2017-08-09 12:06:14 -0400 Also, if you are upgrading from a version earlier than 9.6.3, see . - +
- +
Changes @@ -4502,10 +4504,10 @@ Branch: REL9_4_STABLE [9c3f502b4] 2017-07-16 11:27:15 -0400 - - +
+
- +
Release 9.6.3 @@ -4519,7 +4521,7 @@ Branch: REL9_4_STABLE [9c3f502b4] 2017-07-16 11:27:15 -0400 . - +
Migration to Version 9.6.3 @@ -4540,9 +4542,9 @@ Branch: REL9_4_STABLE [9c3f502b4] 2017-07-16 11:27:15 -0400 Also, if you are upgrading from a version earlier than 9.6.2, see . - +
- +
Changes @@ -5554,10 +5556,10 @@ Branch: REL9_2_STABLE [82e7d3dfd] 2017-05-07 11:57:41 -0400 - - +
+
- +
Release 9.6.2 @@ -5571,7 +5573,7 @@ Branch: REL9_2_STABLE [82e7d3dfd] 2017-05-07 11:57:41 -0400 . - +
Migration to Version 9.6.2 @@ -5588,9 +5590,9 @@ Branch: REL9_2_STABLE [82e7d3dfd] 2017-05-07 11:57:41 -0400 Also, if you are upgrading from a version earlier than 9.6.1, see . - +
- +
Changes @@ -6971,10 +6973,10 @@ Branch: REL9_2_STABLE [ef878cc2c] 2017-01-30 11:41:09 -0500 - - +
+
- +
Release 9.6.1 @@ -6988,7 +6990,7 @@ Branch: REL9_2_STABLE [ef878cc2c] 2017-01-30 11:41:09 -0500 . - +
Migration to Version 9.6.1 @@ -7001,9 +7003,9 @@ Branch: REL9_2_STABLE [ef878cc2c] 2017-01-30 11:41:09 -0500 to take action to repair corrupted free space maps and/or visibility maps. - +
- +
Changes @@ -7566,10 +7568,10 @@ Branch: REL9_1_STABLE [22cf97635] 2016-10-19 17:57:06 -0400 - - +
+
- +
Release 9.6 @@ -7577,7 +7579,7 @@ Branch: REL9_1_STABLE [22cf97635] 2016-10-19 17:57:06 -0400 2016-09-29 - +
Overview @@ -7633,9 +7635,9 @@ Branch: REL9_1_STABLE [22cf97635] 2016-10-19 17:57:06 -0400 The above items are explained in more detail in the sections below. - +
- +
Migration to Version 9.6 @@ -7892,9 +7894,9 @@ and many others in the same vein - +
- +
Changes @@ -7903,10 +7905,10 @@ and many others in the same vein release. - +
Server - +
Parallel Queries @@ -7980,9 +7982,9 @@ and many others in the same vein - +
- +
Indexes @@ -8061,9 +8063,9 @@ and many others in the same vein - +
- +
Sorting @@ -8134,9 +8136,9 @@ and many others in the same vein - +
- +
Locking @@ -8210,9 +8212,9 @@ and many others in the same vein - +
- +
Optimizer Statistics @@ -8272,9 +8274,9 @@ and many others in the same vein - +
- +
<command>VACUUM</command> @@ -8329,9 +8331,9 @@ and many others in the same vein - +
- +
General Performance @@ -8627,9 +8629,9 @@ and many others in the same vein - +
- +
Monitoring @@ -8767,9 +8769,9 @@ and many others in the same vein - +
- +
<acronym>Authentication</acronym> @@ -8844,9 +8846,9 @@ and many others in the same vein - +
- +
Server Configuration @@ -8972,9 +8974,9 @@ and many others in the same vein - +
- +
Reliability @@ -9058,11 +9060,11 @@ XXX this is pending backpatch, may need to remove - +
- +
- +
Replication and Recovery @@ -9157,9 +9159,9 @@ XXX this is pending backpatch, may need to remove - +
- +
Queries @@ -9285,9 +9287,9 @@ XXX this is pending backpatch, may need to remove - +
- +
Utility Commands @@ -9473,9 +9475,9 @@ XXX this is pending backpatch, may need to remove - +
- +
Permissions Management @@ -9520,9 +9522,9 @@ XXX this is pending backpatch, may need to remove - +
- +
Data Types @@ -9673,9 +9675,9 @@ XXX this is pending backpatch, may need to remove - +
- +
Functions @@ -9961,9 +9963,9 @@ XXX this is pending backpatch, may need to remove - +
- +
Server-Side Languages @@ -10068,9 +10070,9 @@ XXX this is pending backpatch, may need to remove - +
- +
Client Interfaces @@ -10159,9 +10161,9 @@ This commit is also listed under psql and PL/pgSQL - +
- +
Client Applications @@ -10235,7 +10237,7 @@ This commit is also listed under psql and PL/pgSQL - +
<xref linkend="app-psql"/> @@ -10435,9 +10437,9 @@ This commit is also listed under libpq and PL/pgSQL - +
- +
<xref linkend="pgbench"/> @@ -10583,11 +10585,11 @@ This commit is also listed under libpq and PL/pgSQL - +
- +
- +
Server Applications @@ -10640,9 +10642,9 @@ This commit is also listed under libpq and PL/pgSQL - +
- +
Source Code @@ -11035,9 +11037,9 @@ This commit is also listed under libpq and PL/pgSQL - +
- +
Additional Modules @@ -11228,7 +11230,7 @@ This commit is also listed under libpq and PL/pgSQL - +
<link linkend="postgres-fdw"><filename>postgres_fdw</filename></link> @@ -11332,10 +11334,11 @@ This commit is also listed under libpq and PL/pgSQL - +
- +
- +
- +
+
diff --git a/doc/src/sgml/release-old.sgml b/doc/src/sgml/release-old.sgml index d55209d85b..5f0d04f5b1 100644 --- a/doc/src/sgml/release-old.sgml +++ b/doc/src/sgml/release-old.sgml @@ -1,7 +1,9 @@ - +
+ Release 7.3 and older +
Release 7.3.21 @@ -20,7 +22,7 @@ release branch soon. - +
Migration to Version 7.3.21 @@ -29,9 +31,9 @@ see . - +
- +
Changes @@ -110,10 +112,10 @@ - - +
+
- +
Release 7.3.20 @@ -125,7 +127,7 @@ This release contains fixes from 7.3.19. - +
Migration to Version 7.3.20 @@ -134,9 +136,9 @@ see . - +
- +
Changes @@ -171,10 +173,10 @@ - - +
+
- +
Release 7.3.19 @@ -187,7 +189,7 @@ including a security fix. - +
Migration to Version 7.3.19 @@ -196,9 +198,9 @@ see . - +
- +
Changes @@ -227,10 +229,10 @@ - - +
+
- +
Release 7.3.18 @@ -243,7 +245,7 @@ a security fix. - +
Migration to Version 7.3.18 @@ -252,9 +254,9 @@ see . - +
- +
Changes @@ -289,10 +291,10 @@ - - +
+
- +
Release 7.3.17 @@ -304,7 +306,7 @@ This release contains a variety of fixes from 7.3.16. - +
Migration to Version 7.3.17 @@ -313,9 +315,9 @@ see . - +
- +
Changes @@ -345,10 +347,10 @@ - - +
+
- +
Release 7.3.16 @@ -360,7 +362,7 @@ This release contains a variety of fixes from 7.3.15. - +
Migration to Version 7.3.16 @@ -369,9 +371,9 @@ see . - +
- +
Changes @@ -387,10 +389,10 @@ - - +
+
- +
Release 7.3.15 @@ -403,7 +405,7 @@ including patches for extremely serious security issues. - +
Migration to Version 7.3.15 @@ -423,9 +425,9 @@ PQescapeStringConn()) to perform string escaping, rather than relying on ad hoc code to do it. - +
- +
Changes @@ -479,10 +481,10 @@ Fuhr) Fix various minor memory leaks - - +
+
- +
Release 7.3.14 @@ -494,7 +496,7 @@ Fuhr) This release contains a variety of fixes from 7.3.13. - +
Migration to Version 7.3.14 @@ -502,9 +504,9 @@ Fuhr) if you are upgrading from a version earlier than 7.3.13, see . - +
- +
Changes @@ -536,10 +538,10 @@ and isinf during configure (Tom) - - +
+
- +
Release 7.3.13 @@ -551,7 +553,7 @@ and isinf during configure (Tom) This release contains a variety of fixes from 7.3.12. - +
Migration to Version 7.3.13 @@ -562,9 +564,9 @@ and isinf during configure (Tom) columns after updating, if you are affected by the locale or plperl issues described below. - +
- +
Changes @@ -598,10 +600,10 @@ what's actually returned by the query (Joe) - - +
+
- +
Release 7.3.12 @@ -613,7 +615,7 @@ what's actually returned by the query (Joe) This release contains a variety of fixes from 7.3.11. - +
Migration to Version 7.3.12 @@ -621,9 +623,9 @@ what's actually returned by the query (Joe) if you are upgrading from a version earlier than 7.3.10, see . - +
- +
Changes @@ -645,10 +647,10 @@ table has been dropped - - +
+
- +
Release 7.3.11 @@ -660,7 +662,7 @@ table has been dropped This release contains a variety of fixes from 7.3.10. - +
Migration to Version 7.3.11 @@ -668,9 +670,9 @@ table has been dropped if you are upgrading from a version earlier than 7.3.10, see . - +
- +
Changes @@ -696,10 +698,10 @@ enabled the variable is of pass-by-reference type - - +
+
- +
Release 7.3.10 @@ -712,7 +714,7 @@ the variable is of pass-by-reference type security-related issues. - +
Migration to Version 7.3.10 @@ -773,9 +775,9 @@ VACUUM FREEZE; UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - +
- +
Changes @@ -822,10 +824,10 @@ month-related formats RECORD - - +
+
- +
Release 7.3.9 @@ -838,15 +840,15 @@ month-related formats security-related issues. - +
Migration to Version 7.3.9 A dump/restore is not required for those running 7.3.X. - +
- +
Changes @@ -878,10 +880,10 @@ in case of nested merge joins could give outright wrong answers. datestyles - - +
+
- +
Release 7.3.8 @@ -894,15 +896,15 @@ datestyles - +
Migration to Version 7.3.8 A dump/restore is not required for those running 7.3.X. - +
- +
Changes @@ -928,10 +930,10 @@ concern since there is no reason for non-developers to use this script anyway. - - +
+
- +
Release 7.3.7 @@ -944,15 +946,15 @@ concern since there is no reason for non-developers to use this script anyway. - +
Migration to Version 7.3.7 A dump/restore is not required for those running 7.3.X. - +
- +
Changes @@ -968,10 +970,10 @@ since PostgreSQL 7.1. Properly schema-qualify function names when pg_dump'ing a CAST - - +
+
- +
Release 7.3.6 @@ -984,7 +986,7 @@ since PostgreSQL 7.1. - +
Migration to Version 7.3.6 @@ -992,9 +994,9 @@ since PostgreSQL 7.1. running 7.3.*. - +
- +
Changes @@ -1033,10 +1035,10 @@ in multibyte cases (Korea PostgreSQL Users' Group) operations on bytea columns (Joe) - - +
+
- +
Release 7.3.5 @@ -1049,16 +1051,16 @@ operations on bytea columns (Joe) - +
Migration to Version 7.3.5 A dump/restore is not required for those running 7.3.*. - +
- +
Changes @@ -1084,10 +1086,10 @@ operations on bytea columns (Joe) Fix corner case for btree search in parallel with first root page split - - +
+
- +
Release 7.3.4 @@ -1100,16 +1102,16 @@ operations on bytea columns (Joe) - +
Migration to Version 7.3.4 A dump/restore is not required for those running 7.3.*. - +
- +
Changes @@ -1123,11 +1125,11 @@ operations on bytea columns (Joe) Work around buggy strxfrm() present in some Solaris releases (Tom) Properly escape jdbc setObject() strings to improve security (Barry) - - +
+
- +
Release 7.3.3 @@ -1139,16 +1141,16 @@ operations on bytea columns (Joe) This release contains a variety of fixes for version 7.3.2. - +
Migration to Version 7.3.3 A dump/restore is not required for those running version 7.3.*. - +
- +
Changes @@ -1233,11 +1235,11 @@ operations on bytea columns (Joe) Fixed problem with parsing table ACLs in JDBC Better error message for character set conversion problems in JDBC - - +
+
- +
Release 7.3.2 @@ -1250,16 +1252,16 @@ operations on bytea columns (Joe) - +
Migration to Version 7.3.2 A dump/restore is not required for those running version 7.3.*. - +
- +
Changes @@ -1294,11 +1296,11 @@ operations on bytea columns (Joe) Add casts between types lo and oid in contrib/lo fastpath code now checks for privilege to call function - - +
+
- +
Release 7.3.1 @@ -1311,7 +1313,7 @@ operations on bytea columns (Joe) - +
Migration to Version 7.3.1 @@ -1321,9 +1323,9 @@ operations on bytea columns (Joe) has a new major version number for this release, which might require recompilation of client code in certain cases. - +
- +
Changes @@ -1344,11 +1346,11 @@ operations on bytea columns (Joe) SSL fixes (Nathan Mueller) Prevent composite column creation via ALTER TABLE (Tom) - - +
+
- +
Release 7.3 @@ -1356,7 +1358,7 @@ operations on bytea columns (Joe) 2002-11-27 - +
Overview @@ -1478,9 +1480,9 @@ operations on bytea columns (Joe) - +
- +
Migration to Version 7.3 @@ -1586,12 +1588,12 @@ operations on bytea columns (Joe) - +
- +
Changes - +
Server Operation Add pg_locks view to show locks (Neil) @@ -1599,9 +1601,9 @@ operations on bytea columns (Joe) Remove support for version 0 FE/BE protocol (PostgreSQL 6.2 and earlier) (Tom) Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews) - +
- +
Performance Improve startup by calling localtime() only once (Tom) @@ -1623,9 +1625,9 @@ operations on bytea columns (Joe) Improve free space map performance on large tables (Stephen Marshall, Tom) Improved WAL write concurrency (Tom) - +
- +
Privileges Add privileges on functions and procedural languages (Peter) @@ -1634,9 +1636,9 @@ operations on bytea columns (Joe) Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom) Allow functions to be executed with the privilege of the function owner (Peter) - +
- +
Server Configuration Server log messages now tagged with LOG, not DEBUG (Bruce) @@ -1656,9 +1658,9 @@ operations on bytea columns (Joe) Rename show_query_stats to show_statement_stats (Bruce) Add param log_min_error_statement to print commands to logs on error (Gavin) - +
- +
Queries Make cursors insensitive, meaning their contents do not change (Tom) @@ -1680,9 +1682,9 @@ operations on bytea columns (Joe) Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce) Add variable autocommit (Tom, David Van Wie) - +
- +
Object Manipulation Make equals signs optional in CREATE DATABASE (Gavin Sherry) @@ -1717,9 +1719,9 @@ operations on bytea columns (Joe) Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod) Allow better casting when inserting/updating values (Tom) - +
- +
Utility Commands Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom) @@ -1757,9 +1759,9 @@ operations on bytea columns (Joe) Fix rare index corruption when a page split affects bulk delete (Tom) Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera) - +
- +
Data Types and Functions Fix factorial(0) to return 1 (Bruce) @@ -1803,9 +1805,9 @@ operations on bytea columns (Joe) Fix to_char(1,'FM999.99') to return a period (Karel) Fix trigger/type/language functions returning OPAQUE to return proper type (Tom) - +
- +
Internationalization Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya) @@ -1821,9 +1823,9 @@ operations on bytea columns (Joe) pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter) New and updated translations - +
- +
Server-side Languages Allow recursive SQL function (Peter) @@ -1834,9 +1836,9 @@ operations on bytea columns (Joe) Make PL/pgSQL schema-aware (Joe) Remove some memory leaks (Nigel J. Andrews, Tom) - +
- +
psql Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom) @@ -1851,9 +1853,9 @@ operations on bytea columns (Joe) Have psql reports its version number on startup (Tom) Allow \copy to specify column names (Tom) - +
- +
libpq Add ~/.pgpass to store host/user password combinations (Alvaro Herrera) @@ -1865,9 +1867,9 @@ operations on bytea columns (Joe) Fix for SSL with non-blocking connections (Jack Bates) Add libpq connection timeout parameter (Denis A Ustimenko) - +
- +
JDBC Allow JDBC to compile with JDK 1.4 (Dave) @@ -1881,9 +1883,9 @@ operations on bytea columns (Joe) Fix MD5 encryption handling for multibyte servers (Jun Kawai) Add support for prepared statements (Barry) - +
- +
Miscellaneous Interfaces Fixed ECPG bug concerning octal numbers in single quotes (Michael) @@ -1897,9 +1899,9 @@ operations on bytea columns (Joe) Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce) Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom) - +
- +
Source Code Fix for parallel make (Peter) @@ -1952,9 +1954,9 @@ operations on bytea columns (Joe) Remove parameter wal_files because WAL files are now recycled (Bruce) Add version numbers to heap pages (Tom) - +
- +
Contrib Allow inet arrays in /contrib/array (Neil) @@ -1979,12 +1981,12 @@ operations on bytea columns (Joe) Fixes to /contrib/cube (Bruno Wolff) Improve /contrib/fulltextindex (Christopher) - +
- - +
+
- +
Release 7.2.8 @@ -1997,15 +1999,15 @@ operations on bytea columns (Joe) security-related issue. - +
Migration to Version 7.2.8 A dump/restore is not required for those running 7.2.X. - +
- +
Changes @@ -2032,10 +2034,10 @@ month-related formats (Marko Kreen) - - +
+
- +
Release 7.2.7 @@ -2048,15 +2050,15 @@ month-related formats security-related issues. - +
Migration to Version 7.2.7 A dump/restore is not required for those running 7.2.X. - +
- +
Changes @@ -2080,10 +2082,10 @@ in case of nested merge joins could give outright wrong answers. datestyles - - +
+
- +
Release 7.2.6 @@ -2096,15 +2098,15 @@ datestyles - +
Migration to Version 7.2.6 A dump/restore is not required for those running 7.2.X. - +
- +
Changes @@ -2131,10 +2133,10 @@ concern since there is no reason for non-developers to use this script anyway. Update to newer versions of Bison - - +
+
- +
Release 7.2.5 @@ -2147,15 +2149,15 @@ concern since there is no reason for non-developers to use this script anyway. - +
Migration to Version 7.2.5 A dump/restore is not required for those running 7.2.X. - +
- +
Changes @@ -2174,10 +2176,10 @@ since PostgreSQL 7.1. Repair memory leaks in pg_dump Avoid conflict with system definition of isblank() function or macro - - +
+
- +
Release 7.2.4 @@ -2190,16 +2192,16 @@ since PostgreSQL 7.1. including fixes to prevent possible data loss. - +
Migration to Version 7.2.4 A dump/restore is not required for those running version 7.2.*. - +
- +
Changes @@ -2212,11 +2214,11 @@ since PostgreSQL 7.1. Fix integer overflows in circle_poly(), path_encode(), path_add() (Neil) Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center() - - +
+
- +
Release 7.2.3 @@ -2229,16 +2231,16 @@ since PostgreSQL 7.1. including fixes to prevent possible data loss. - +
Migration to Version 7.2.3 A dump/restore is not required for those running version 7.2.*. - +
- +
Changes @@ -2249,11 +2251,11 @@ since PostgreSQL 7.1. Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima) Fix pg_dump to properly dump FULL JOIN USING (Tom) - - +
+
- +
Release 7.2.2 @@ -2265,16 +2267,16 @@ since PostgreSQL 7.1. This release contains a variety of fixes for version 7.2.1. - +
Migration to Version 7.2.2 A dump/restore is not required for those running version 7.2.*. - +
- +
Changes @@ -2292,11 +2294,11 @@ since PostgreSQL 7.1. Fix for crash with long DATA strings (Thomas, Neil) Fix for repeat(), lpad(), rpad() and long strings (Neil) - - +
+
- +
Release 7.2.1 @@ -2308,16 +2310,16 @@ since PostgreSQL 7.1. This release contains a variety of fixes for version 7.2. - +
Migration to Version 7.2.1 A dump/restore is not required for those running version 7.2. - +
- +
Changes @@ -2338,11 +2340,11 @@ since PostgreSQL 7.1. Fix for array subscripts handling (Tom) Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom) - - +
+
- +
Release 7.2 @@ -2350,7 +2352,7 @@ since PostgreSQL 7.1. 2002-02-04 - +
Overview @@ -2437,9 +2439,9 @@ since PostgreSQL 7.1. - +
- +
Migration to Version 7.2 @@ -2508,12 +2510,12 @@ since PostgreSQL 7.1. separate LIMIT and OFFSET clauses, e.g. LIMIT 10 OFFSET 20. - +
- +
Changes - +
Server Operation Create temporary files in a separate directory (Bruce) @@ -2537,9 +2539,9 @@ since PostgreSQL 7.1. Superuser ID now fixed at 1 (Peter E) New pg_ctl "reload" option (Tom) - +
- +
Performance Optimizer improvements (Tom) @@ -2553,9 +2555,9 @@ since PostgreSQL 7.1. R-tree performance improvements (Kenneth Been) B-tree splits more efficient (Tom) - +
- +
Privileges Change UPDATE, DELETE privileges to be distinct (Peter E) @@ -2567,9 +2569,9 @@ since PostgreSQL 7.1. Fix bug in privilege modifications on newly created tables (Tom) Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom) - +
- +
Client Authentication Fork postmaster before doing authentication to prevent hangs (Peter E) @@ -2579,9 +2581,9 @@ since PostgreSQL 7.1. PAM authentication (Dominic J. Eidson) Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce) - +
- +
Server Configuration Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce) @@ -2591,9 +2593,9 @@ since PostgreSQL 7.1. New parameter to set client authentication timeout (Tom) New parameter to set maximum number of open files (Tom) - +
- +
Queries Statements added by INSERT rules now execute after the INSERT (Jan) @@ -2606,9 +2608,9 @@ since PostgreSQL 7.1. Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom) Fix nested EXCEPT/INTERSECT (Tom) - +
- +
Schema Manipulation Fix SERIAL in temporary tables (Bruce) @@ -2629,9 +2631,9 @@ since PostgreSQL 7.1. Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom) Enable partial indexes (Martijn van Oosterhout) - +
- +
Utility Commands Add RESET ALL, SHOW ALL (Marko Kreen) @@ -2645,9 +2647,9 @@ since PostgreSQL 7.1. Fix privilege checks for CREATE INDEX (Tom) Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom) - +
- +
Data Types and Functions SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom) @@ -2688,9 +2690,9 @@ since PostgreSQL 7.1. Some datatype() function calls now evaluated differently Add support for Julian and ISO time specifications (Thomas) - +
- +
Internationalization National language support in psql, pg_dump, libpq, and server (Peter E) @@ -2702,9 +2704,9 @@ since PostgreSQL 7.1. Make mic2ascii() non-ASCII aware (Tatsuo) Reject invalid multibyte character sequences (Tatsuo) - +
- +
<application>PL/pgSQL</application> Now uses portals for SELECT loops, allowing huge result sets (Jan) @@ -2719,32 +2721,32 @@ since PostgreSQL 7.1. Memory leak fix (Jan, Tom) Make trailing semicolon optional (Tom) - +
- +
PL/Perl New untrusted PL/Perl (Alex Pilosov) PL/Perl is now built on some platforms even if libperl is not shared (Peter E) - +
- +
PL/Tcl Now reports errorInfo (Vsevolod Lobko) Add spi_lastoid function (bob@redivi.com) - +
- +
PL/Python ...is new (Andrew Bosma) - +
- +
<application>psql</application> \d displays indexes in unique, primary groupings (Christopher Kings-Lynne) @@ -2753,17 +2755,17 @@ since PostgreSQL 7.1. Force new password prompt when changing user and database (Tatsuo, Tom) Format the correct number of columns for Unicode (Patrice) - +
- +
<application>libpq</application> New function PQescapeString() to escape quotes in command strings (Florian Weimer) New function PQescapeBytea() escapes binary strings for use as SQL string literals - +
- +
JDBC Return OID of INSERT (Ken K) @@ -2799,9 +2801,9 @@ since PostgreSQL 7.1. MD5 password encryption support (Jeremy Wohl) Fix to actually use type cache (Ned Wolpert) - +
- +
ODBC Remove query size limit (Hiroshi) @@ -2815,9 +2817,9 @@ since PostgreSQL 7.1. MD5 password encryption support (Bruce) Add more compatibility functions to odbc.sql (Peter E) - +
- +
<application>ECPG</application> EXECUTE ... INTO implemented (Christof Petig) @@ -2831,9 +2833,9 @@ since PostgreSQL 7.1. All function names with external linkage are now prefixed by ECPG Fixes for arrays of structures (Michael) - +
- +
Misc. Interfaces Python fix fetchone() (Gerhard Haring) @@ -2842,9 +2844,9 @@ since PostgreSQL 7.1. Prevent output of default index op class in pg_dump (Tom) Fix libpgeasy memory leak (Bruce) - +
- +
Build and Install Configure, dynamic loader, and shared library fixes (Peter E) @@ -2860,9 +2862,9 @@ since PostgreSQL 7.1. Rename config.h to pg_config.h (Peter E) Reorganize installation layout of header files (Peter E) - +
- +
Source Code Remove SEP_CHAR (Bruce) @@ -2877,9 +2879,9 @@ since PostgreSQL 7.1. Add 'volatile' usage in spinlock structures Improve signal handling logic (Tom) - +
- +
Contrib New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev) @@ -2893,12 +2895,12 @@ since PostgreSQL 7.1. New pg_upgrade utility (Bruce) Add new pg_resetxlog options (Bruce, Tom) - - - +
+
+
- +
Release 7.1.3 @@ -2906,16 +2908,16 @@ since PostgreSQL 7.1. 2001-08-15 - +
Migration to Version 7.1.3 A dump/restore is not required for those running 7.1.X. - +
- +
Changes @@ -2932,11 +2934,11 @@ Disable COPY TO/FROM a view (Tom) Cygwin build (Jason Tishler) - - +
+
- +
Release 7.1.2 @@ -2949,16 +2951,16 @@ Cygwin build (Jason Tishler) - +
Migration to Version 7.1.2 A dump/restore is not required for those running 7.1.X. - +
- +
Changes @@ -2970,11 +2972,11 @@ Optimizer fixes pg_dump cleanups - - +
+
- +
Release 7.1.1 @@ -2987,16 +2989,16 @@ pg_dump cleanups - +
Migration to Version 7.1.1 A dump/restore is not required for those running 7.1. - +
- +
Changes @@ -3017,11 +3019,11 @@ EXTRACT can now take string argument (Thomas) Python fixes (Darcy) - - +
+
- +
Release 7.1 @@ -3114,16 +3116,16 @@ Subqueries in FROM are now supported. - +
Migration to Version 7.1 A dump/restore using pg_dump is required for those wishing to migrate data from any previous release. - +
- +
Changes @@ -3315,11 +3317,11 @@ New contrib/pg_control utility (Oliver) New FreeBSD tools ipc_check, start-scripts/freebsd - - +
+
- +
Release 7.0.3 @@ -3332,16 +3334,16 @@ New FreeBSD tools ipc_check, start-scripts/freebsd - +
Migration to Version 7.0.3 A dump/restore is not required for those running 7.0.*. - +
- +
Changes @@ -3387,11 +3389,11 @@ Fix for inserting/copying longer multibyte strings into char() data Fix for crash of backend, on abort (Tom) - - +
+
- +
Release 7.0.2 @@ -3404,16 +3406,16 @@ Fix for crash of backend, on abort (Tom) - +
Migration to Version 7.0.2 A dump/restore is not required for those running 7.*. - +
- +
Changes @@ -3421,11 +3423,11 @@ Fix for crash of backend, on abort (Tom) Added documentation to tarball. - - +
+
- +
Release 7.0.1 @@ -3437,16 +3439,16 @@ Added documentation to tarball. This is a cleanup release for 7.0. - +
Migration to Version 7.0.1 A dump/restore is not required for those running 7.0. - +
- +
Changes @@ -3477,10 +3479,10 @@ JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu) ecpg changes (Michael) - - +
+
- +
Release 7.0 @@ -3557,7 +3559,7 @@ ecpg changes (Michael) - +
Migration to Version 7.0 @@ -3620,9 +3622,9 @@ ecpg changes (Michael) - +
- +
Changes @@ -3946,10 +3948,10 @@ Fixes for Alpha compiles New multibyte encodings - - +
+
- +
Release 6.5.3 @@ -3963,15 +3965,15 @@ New multibyte encodings - +
Migration to Version 6.5.3 A dump/restore is not required for those running 6.5.*. - - +
+
Changes @@ -3981,11 +3983,11 @@ NT-specific patch Fix dumping rules on inherited tables - - +
+
- +
Release 6.5.2 @@ -3999,16 +4001,16 @@ Fix dumping rules on inherited tables - +
Migration to Version 6.5.2 A dump/restore is not required for those running 6.5.*. - +
- +
Changes @@ -4039,10 +4041,10 @@ Repair incorrect cleanup of heap memory allocation during transaction abort(Tom) Updated version of pgaccess 0.98 - - +
+
- +
Release 6.5.1 @@ -4055,16 +4057,16 @@ Updated version of pgaccess 0.98 problems reported by 6.5 users. - +
Migration to Version 6.5.1 A dump/restore is not required for those running 6.5. - +
- +
Changes @@ -4094,10 +4096,10 @@ Fix some compiler warnings (Tomoaki Nishiyama) Add Win1250 (Czech) support (Pavel Behal) - - +
+
- +
Release 6.5 @@ -4254,7 +4256,7 @@ Add Win1250 (Czech) support (Pavel Behal) - +
Migration to Version 6.5 @@ -4274,7 +4276,7 @@ Add Win1250 (Czech) support (Pavel Behal) behavior you need. - +
Multiversion Concurrency Control @@ -4322,10 +4324,10 @@ Add Win1250 (Czech) support (Pavel Behal) (uncommitted) data (regardless of isolation level) and true referential integrity will be implemented. - - +
+
- +
Changes @@ -4493,11 +4495,11 @@ Improve file handling to be more uniform, prevent file descriptor leak(Tom) New install commands for plpgsql(Jan) - - +
+
- +
Release 6.4.2 @@ -4511,15 +4513,15 @@ bug fix. - +
Migration to Version 6.4.2 A dump/restore is not required for those running 6.4.*. - - +
+
Changes @@ -4527,12 +4529,12 @@ A dump/restore is not required for those running Fix for datetime constant problem on some platforms(Thomas) - - +
+
- +
Release 6.4.1 @@ -4546,15 +4548,15 @@ problems reported by 6.4 users. - +
Migration to Version 6.4.1 A dump/restore is not required for those running 6.4. - - +
+
Changes @@ -4591,12 +4593,12 @@ Compilation of libpq for Windows fixes(Magnus) Upgrade to PyGreSQL 2.2(D'Arcy) - - +
+
- +
Release 6.4 @@ -4680,7 +4682,7 @@ been. - +
Migration to Version 6.4 @@ -4689,9 +4691,9 @@ or pg_dumpall is required for those wishing to migrate data from any previous release of PostgreSQL. - +
- +
Changes @@ -4890,10 +4892,10 @@ configure uses supplied install-sh if no install script found(Tom) new Makefile.shlib for shared library configuration(Tom) - - +
+
- +
Release 6.3.2 @@ -4935,7 +4937,7 @@ For upgrades from pre-6.3 installations, refer to the installation and migration instructions for version 6.3. - +
Changes @@ -4960,10 +4962,10 @@ Makefile dependency cleanup(Jeroen van Vianen) ASSERT fixes(Bruce) - - +
+
- +
Release 6.3.1 @@ -5012,7 +5014,7 @@ For upgrades from pre-6.3 installations, refer to the installation and migration instructions for version 6.3. - +
Changes @@ -5046,10 +5048,10 @@ Solaris compile fix(Albert Chin-A-Young) Better identify tcl and tk libs and includes(Bruce) - - +
+
- +
Release 6.3 @@ -5176,7 +5178,7 @@ Better identify tcl and tk libs and includes(Bruce) are no longer needed. - +
Migration to Version 6.3 @@ -5185,9 +5187,9 @@ Better identify tcl and tk libs and includes(Bruce) is required for those wishing to migrate data from any previous release of PostgreSQL. - +
- +
Changes @@ -5358,10 +5360,10 @@ Expand a few function names formerly truncated to 16 characters(Thomas) Remove un-needed malloc() calls and replace with palloc()(Bruce) - - +
+
- +
Release 6.2.1 @@ -5396,7 +5398,7 @@ For upgrades from pre-6.2 systems, a full dump/reload is required. Refer to the 6.2 release notes for instructions. - +
Migration from version 6.2 to version 6.2.1 @@ -5420,9 +5422,9 @@ update pg_aggregate set aggfinalfn = 'cash_div_flt8' This will need to be done to every existing database, including template1. - +
- +
Changes @@ -5440,10 +5442,10 @@ Documented new libpq function to return affected rows, PQcmdTuples(Bruce) Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan) - - +
+
- +
Release 6.2 @@ -5456,7 +5458,7 @@ A dump/restore is required for those wishing to migrate data from previous releases of PostgreSQL. - +
Migration from version 6.1 to version 6.2 @@ -5467,18 +5469,18 @@ restore of the database in 6.2. Note that the pg_dump and pg_dumpall utility from 6.2 should be used to dump the 6.1 database. - +
- +
Migration from version 1.<replaceable>x</replaceable> to version 6.2 Those migrating from earlier 1.* releases should first upgrade to 1.09 because the COPY output format was improved from the 1.02 release. - +
- +
Changes @@ -5593,10 +5595,10 @@ Files moved to /src/tools directory(Bruce) SPI and Trigger programming guides (Vadim & D'Arcy) - - +
+
- +
Release 6.1.1 @@ -5604,7 +5606,7 @@ SPI and Trigger programming guides (Vadim & D'Arcy) 1997-07-22 - +
Migration from version 6.1 to version 6.1.1 @@ -5612,9 +5614,9 @@ This is a minor bug-fix release. A dump/reload is not required from version 6.1, but is required from any release prior to 6.1. Refer to the release notes for 6.1 for more details. - +
- +
Changes @@ -5638,10 +5640,10 @@ allow underscores in usernames(Bruce) pg_dumpall now returns proper status, portability fix(Bruce) - - +
+
- +
Release 6.1 @@ -5696,7 +5698,7 @@ optimizer which uses genetic machine (Linux/gcc/i686). - +
Migration to Version 6.1 @@ -5707,9 +5709,9 @@ restore of the database in 6.1. Those migrating from earlier 1.* releases should first upgrade to 1.09 because the COPY output format was improved from the 1.02 release. - +
- +
Changes @@ -5810,10 +5812,10 @@ warn about buggy flex(Bruce) DG/UX, Ultrix, IRIX, AIX portability fixes - - +
+
- +
Release 6.0 @@ -5826,25 +5828,25 @@ A dump/restore is required for those wishing to migrate data from previous releases of PostgreSQL. - +
Migration from version 1.09 to version 6.0 This migration requires a complete dump of the 1.09 database and a restore of the database in 6.0. - +
- +
Migration from pre-1.09 to version 6.0 Those migrating from earlier 1.* releases should first upgrade to 1.09 because the COPY output format was improved from the 1.02 release. - +
- +
Changes @@ -5954,10 +5956,10 @@ Restructured port-specific file locations(Bryan, Marc) Unused/uninitialized variables corrected - - +
+
- +
Release 1.09 @@ -5970,9 +5972,9 @@ Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of the changes listed in 6.0 were actually included in the 1.02.1 to 1.09 releases. - +
- +
Release 1.02 @@ -5980,7 +5982,7 @@ releases. 1996-08-01 - +
Migration from version 1.02 to version 1.02.1 @@ -6026,9 +6028,9 @@ not a cause for concern. - +
- +
Dump/Reload Procedure @@ -6056,9 +6058,9 @@ create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexe create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne); - +
- +
Changes @@ -6118,10 +6120,10 @@ Contributors (apologies to any missed) * Paul "Shag" Walmsley <ccshag@cclabs.missouri.edu> * "Alistair G. Crooks" <azcb0@sde.uts.amdahl.com> --> - - +
+
- +
Release 1.01 @@ -6130,7 +6132,7 @@ Contributors (apologies to any missed) - +
Migration from version 1.0 to version 1.01 @@ -6269,9 +6271,9 @@ create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne) - +
- +
Changes @@ -6310,10 +6312,10 @@ Bug fixes: * applied public patches 1-14 - - +
+
- +
Release 1.0 @@ -6321,7 +6323,7 @@ Bug fixes: 1995-09-05 - +
Changes @@ -6367,10 +6369,10 @@ Bug fixes: work when you try to use them - - +
+
- +
<productname>Postgres95</productname> Release 0.03 @@ -6378,7 +6380,7 @@ Bug fixes: 1995-07-21 - +
Changes @@ -6489,10 +6491,10 @@ New documentation: * the user manual has been revised and libpq documentation added. - - +
+
- +
<productname>Postgres95</productname> Release 0.02 @@ -6500,7 +6502,7 @@ New documentation: 1995-05-25 - +
Changes @@ -6540,10 +6542,10 @@ The following bugs have been fixed in postgres95-beta-0.02: * wrong result using more than 1 aggregate in a SELECT - - +
+
- +
<productname>Postgres95</productname> Release 0.01 @@ -6554,4 +6556,5 @@ The following bugs have been fixed in postgres95-beta-0.02: Initial release. - +
+
diff --git a/doc/src/sgml/xfunc-sql.sgml b/doc/src/sgml/xfunc-sql.sgml new file mode 100644 index 0000000000..c0539f17cd --- /dev/null +++ b/doc/src/sgml/xfunc-sql.sgml @@ -0,0 +1,1291 @@ + + + + Query Language (<acronym>SQL</acronym>) Functions + + + function + user-defined + in SQL + + + + SQL functions execute an arbitrary list of SQL statements, returning + the result of the last query in the list. + In the simple (non-set) + case, the first row of the last query's result will be returned. + (Bear in mind that the first row of a multirow + result is not well-defined unless you use ORDER BY.) + If the last query happens + to return no rows at all, the null value will be returned. + + + + Alternatively, an SQL function can be declared to return a set (that is, + multiple rows) by specifying the function's return type as SETOF + sometype, or equivalently by declaring it as + RETURNS TABLE(columns). In this case + all rows of the last query's result are returned. Further details appear + below. + + + + The body of an SQL function must be a list of SQL + statements separated by semicolons. A semicolon after the last + statement is optional. Unless the function is declared to return + void, the last statement must be a SELECT, + or an INSERT, UPDATE, or DELETE + that has a RETURNING clause. + + + + Any collection of commands in the SQL + language can be packaged together and defined as a function. + Besides SELECT queries, the commands can include data + modification queries (INSERT, + UPDATE, and DELETE), as well as + other SQL commands. (You cannot use transaction control commands, e.g. + COMMIT, SAVEPOINT, and some utility + commands, e.g. VACUUM, in SQL functions.) + However, the final command + must be a SELECT or have a RETURNING + clause that returns whatever is + specified as the function's return type. Alternatively, if you + want to define a SQL function that performs actions but has no + useful value to return, you can define it as returning void. + For example, this function removes rows with negative salaries from + the emp table: + + +CREATE FUNCTION clean_emp() RETURNS void AS ' + DELETE FROM emp + WHERE salary < 0; +' LANGUAGE SQL; + +SELECT clean_emp(); + + clean_emp +----------- + +(1 row) + + + + + + The entire body of a SQL function is parsed before any of it is + executed. While a SQL function can contain commands that alter + the system catalogs (e.g., CREATE TABLE), the effects + of such commands will not be visible during parse analysis of + later commands in the function. Thus, for example, + CREATE TABLE foo (...); INSERT INTO foo VALUES(...); + will not work as desired if packaged up into a single SQL function, + since foo won't exist yet when the INSERT + command is parsed. It's recommended to use PL/pgSQL + instead of a SQL function in this type of situation. + + + + + The syntax of the CREATE FUNCTION command requires + the function body to be written as a string constant. It is usually + most convenient to use dollar quoting (see ) for the string constant. + If you choose to use regular single-quoted string constant syntax, + you must double single quote marks (') and backslashes + (\) (assuming escape string syntax) in the body of + the function (see ). + + + + Arguments for <acronym>SQL</acronym> Functions + + + function + named argument + + + + Arguments of a SQL function can be referenced in the function + body using either names or numbers. Examples of both methods appear + below. + + + + To use a name, declare the function argument as having a name, and + then just write that name in the function body. If the argument name + is the same as any column name in the current SQL command within the + function, the column name will take precedence. To override this, + qualify the argument name with the name of the function itself, that is + function_name.argument_name. + (If this would conflict with a qualified column name, again the column + name wins. You can avoid the ambiguity by choosing a different alias for + the table within the SQL command.) + + + + In the older numeric approach, arguments are referenced using the syntax + $n: $1 refers to the first input + argument, $2 to the second, and so on. This will work + whether or not the particular argument was declared with a name. + + + + If an argument is of a composite type, then the dot notation, + e.g., argname.fieldname or + $1.fieldname, can be used to access attributes of the + argument. Again, you might need to qualify the argument's name with the + function name to make the form with an argument name unambiguous. + + + + SQL function arguments can only be used as data values, + not as identifiers. Thus for example this is reasonable: + +INSERT INTO mytable VALUES ($1); + +but this will not work: + +INSERT INTO $1 VALUES (42); + + + + + + The ability to use names to reference SQL function arguments was added + in PostgreSQL 9.2. Functions to be used in + older servers must use the $n notation. + + + + + + <acronym>SQL</acronym> Functions on Base Types + + + The simplest possible SQL function has no arguments and + simply returns a base type, such as integer: + + +CREATE FUNCTION one() RETURNS integer AS $$ + SELECT 1 AS result; +$$ LANGUAGE SQL; + +-- Alternative syntax for string literal: +CREATE FUNCTION one() RETURNS integer AS ' + SELECT 1 AS result; +' LANGUAGE SQL; + +SELECT one(); + + one +----- + 1 + + + + + Notice that we defined a column alias within the function body for the result of the function + (with the name result), but this column alias is not visible + outside the function. Hence, the result is labeled one + instead of result. + + + + It is almost as easy to define SQL functions + that take base types as arguments: + + +CREATE FUNCTION add_em(x integer, y integer) RETURNS integer AS $$ + SELECT x + y; +$$ LANGUAGE SQL; + +SELECT add_em(1, 2) AS answer; + + answer +-------- + 3 + + + + + Alternatively, we could dispense with names for the arguments and + use numbers: + + +CREATE FUNCTION add_em(integer, integer) RETURNS integer AS $$ + SELECT $1 + $2; +$$ LANGUAGE SQL; + +SELECT add_em(1, 2) AS answer; + + answer +-------- + 3 + + + + + Here is a more useful function, which might be used to debit a + bank account: + + +CREATE FUNCTION tf1 (accountno integer, debit numeric) RETURNS numeric AS $$ + UPDATE bank + SET balance = balance - debit + WHERE accountno = tf1.accountno; + SELECT 1; +$$ LANGUAGE SQL; + + + A user could execute this function to debit account 17 by $100.00 as + follows: + + +SELECT tf1(17, 100.0); + + + + + In this example, we chose the name accountno for the first + argument, but this is the same as the name of a column in the + bank table. Within the UPDATE command, + accountno refers to the column bank.accountno, + so tf1.accountno must be used to refer to the argument. + We could of course avoid this by using a different name for the argument. + + + + In practice one would probably like a more useful result from the + function than a constant 1, so a more likely definition + is: + + +CREATE FUNCTION tf1 (accountno integer, debit numeric) RETURNS numeric AS $$ + UPDATE bank + SET balance = balance - debit + WHERE accountno = tf1.accountno; + SELECT balance FROM bank WHERE accountno = tf1.accountno; +$$ LANGUAGE SQL; + + + which adjusts the balance and returns the new balance. + The same thing could be done in one command using RETURNING: + + +CREATE FUNCTION tf1 (accountno integer, debit numeric) RETURNS numeric AS $$ + UPDATE bank + SET balance = balance - debit + WHERE accountno = tf1.accountno + RETURNING balance; +$$ LANGUAGE SQL; + + + + + A SQL function must return exactly its declared + result type. This may require inserting an explicit cast. + For example, suppose we wanted the + previous add_em function to return + type float8 instead. This won't work: + + +CREATE FUNCTION add_em(integer, integer) RETURNS float8 AS $$ + SELECT $1 + $2; +$$ LANGUAGE SQL; + + + even though in other contexts PostgreSQL + would be willing to insert an implicit cast to + convert integer to float8. + We need to write it as + + +CREATE FUNCTION add_em(integer, integer) RETURNS float8 AS $$ + SELECT ($1 + $2)::float8; +$$ LANGUAGE SQL; + + + + + + <acronym>SQL</acronym> Functions on Composite Types + + + When writing functions with arguments of composite types, we must not + only specify which argument we want but also the desired attribute + (field) of that argument. For example, suppose that + emp is a table containing employee data, and therefore + also the name of the composite type of each row of the table. Here + is a function double_salary that computes what someone's + salary would be if it were doubled: + + +CREATE TABLE emp ( + name text, + salary numeric, + age integer, + cubicle point +); + +INSERT INTO emp VALUES ('Bill', 4200, 45, '(2,1)'); + +CREATE FUNCTION double_salary(emp) RETURNS numeric AS $$ + SELECT $1.salary * 2 AS salary; +$$ LANGUAGE SQL; + +SELECT name, double_salary(emp.*) AS dream + FROM emp + WHERE emp.cubicle ~= point '(2,1)'; + + name | dream +------+------- + Bill | 8400 + + + + + Notice the use of the syntax $1.salary + to select one field of the argument row value. Also notice + how the calling SELECT command + uses table_name.* to select + the entire current row of a table as a composite value. The table + row can alternatively be referenced using just the table name, + like this: + +SELECT name, double_salary(emp) AS dream + FROM emp + WHERE emp.cubicle ~= point '(2,1)'; + + but this usage is deprecated since it's easy to get confused. + (See for details about these + two notations for the composite value of a table row.) + + + + Sometimes it is handy to construct a composite argument value + on-the-fly. This can be done with the ROW construct. + For example, we could adjust the data being passed to the function: + +SELECT name, double_salary(ROW(name, salary*1.1, age, cubicle)) AS dream + FROM emp; + + + + + It is also possible to build a function that returns a composite type. + This is an example of a function + that returns a single emp row: + + +CREATE FUNCTION new_emp() RETURNS emp AS $$ + SELECT text 'None' AS name, + 1000.0 AS salary, + 25 AS age, + point '(2,2)' AS cubicle; +$$ LANGUAGE SQL; + + + In this example we have specified each of the attributes + with a constant value, but any computation + could have been substituted for these constants. + + + + Note two important things about defining the function: + + + + + The select list order in the query must be exactly the same as + that in which the columns appear in the table associated + with the composite type. (Naming the columns, as we did above, + is irrelevant to the system.) + + + + + We must ensure each expression's type matches the corresponding + column of the composite type, inserting a cast if necessary. + Otherwise we'll get errors like this: + + +ERROR: function declared to return emp returns varchar instead of text at column 1 + + + As with the base-type case, the function will not insert any casts + automatically. + + + + + + + A different way to define the same function is: + + +CREATE FUNCTION new_emp() RETURNS emp AS $$ + SELECT ROW('None', 1000.0, 25, '(2,2)')::emp; +$$ LANGUAGE SQL; + + + Here we wrote a SELECT that returns just a single + column of the correct composite type. This isn't really better + in this situation, but it is a handy alternative in some cases + — for example, if we need to compute the result by calling + another function that returns the desired composite value. + Another example is that if we are trying to write a function that + returns a domain over composite, rather than a plain composite type, + it is always necessary to write it as returning a single column, + since there is no other way to produce a value that is exactly of + the domain type. + + + + We could call this function directly either by using it in + a value expression: + + +SELECT new_emp(); + + new_emp +-------------------------- + (None,1000.0,25,"(2,2)") + + + or by calling it as a table function: + + +SELECT * FROM new_emp(); + + name | salary | age | cubicle +------+--------+-----+--------- + None | 1000.0 | 25 | (2,2) + + + The second way is described more fully in . + + + + When you use a function that returns a composite type, + you might want only one field (attribute) from its result. + You can do that with syntax like this: + + +SELECT (new_emp()).name; + + name +------ + None + + + The extra parentheses are needed to keep the parser from getting + confused. If you try to do it without them, you get something like this: + + +SELECT new_emp().name; +ERROR: syntax error at or near "." +LINE 1: SELECT new_emp().name; + ^ + + + + + Another option is to use functional notation for extracting an attribute: + + +SELECT name(new_emp()); + + name +------ + None + + + As explained in , the field notation and + functional notation are equivalent. + + + + Another way to use a function returning a composite type is to pass the + result to another function that accepts the correct row type as input: + + +CREATE FUNCTION getname(emp) RETURNS text AS $$ + SELECT $1.name; +$$ LANGUAGE SQL; + +SELECT getname(new_emp()); + getname +--------- + None +(1 row) + + + + + + <acronym>SQL</acronym> Functions with Output Parameters + + + function + output parameter + + + + An alternative way of describing a function's results is to define it + with output parameters, as in this example: + + +CREATE FUNCTION add_em (IN x int, IN y int, OUT sum int) +AS 'SELECT x + y' +LANGUAGE SQL; + +SELECT add_em(3,7); + add_em +-------- + 10 +(1 row) + + + This is not essentially different from the version of add_em + shown in . The real value of + output parameters is that they provide a convenient way of defining + functions that return several columns. For example, + + +CREATE FUNCTION sum_n_product (x int, y int, OUT sum int, OUT product int) +AS 'SELECT x + y, x * y' +LANGUAGE SQL; + + SELECT * FROM sum_n_product(11,42); + sum | product +-----+--------- + 53 | 462 +(1 row) + + + What has essentially happened here is that we have created an anonymous + composite type for the result of the function. The above example has + the same end result as + + +CREATE TYPE sum_prod AS (sum int, product int); + +CREATE FUNCTION sum_n_product (int, int) RETURNS sum_prod +AS 'SELECT $1 + $2, $1 * $2' +LANGUAGE SQL; + + + but not having to bother with the separate composite type definition + is often handy. Notice that the names attached to the output parameters + are not just decoration, but determine the column names of the anonymous + composite type. (If you omit a name for an output parameter, the + system will choose a name on its own.) + + + + Notice that output parameters are not included in the calling argument + list when invoking such a function from SQL. This is because + PostgreSQL considers only the input + parameters to define the function's calling signature. That means + also that only the input parameters matter when referencing the function + for purposes such as dropping it. We could drop the above function + with either of + + +DROP FUNCTION sum_n_product (x int, y int, OUT sum int, OUT product int); +DROP FUNCTION sum_n_product (int, int); + + + + + Parameters can be marked as IN (the default), + OUT, INOUT, or VARIADIC. + An INOUT + parameter serves as both an input parameter (part of the calling + argument list) and an output parameter (part of the result record type). + VARIADIC parameters are input parameters, but are treated + specially as described next. + + + + + <acronym>SQL</acronym> Functions with Variable Numbers of Arguments + + + function + variadic + + + + variadic function + + + + SQL functions can be declared to accept + variable numbers of arguments, so long as all the optional + arguments are of the same data type. The optional arguments will be + passed to the function as an array. The function is declared by + marking the last parameter as VARIADIC; this parameter + must be declared as being of an array type. For example: + + +CREATE FUNCTION mleast(VARIADIC arr numeric[]) RETURNS numeric AS $$ + SELECT min($1[i]) FROM generate_subscripts($1, 1) g(i); +$$ LANGUAGE SQL; + +SELECT mleast(10, -1, 5, 4.4); + mleast +-------- + -1 +(1 row) + + + Effectively, all the actual arguments at or beyond the + VARIADIC position are gathered up into a one-dimensional + array, as if you had written + + +SELECT mleast(ARRAY[10, -1, 5, 4.4]); -- doesn't work + + + You can't actually write that, though — or at least, it will + not match this function definition. A parameter marked + VARIADIC matches one or more occurrences of its element + type, not of its own type. + + + + Sometimes it is useful to be able to pass an already-constructed array + to a variadic function; this is particularly handy when one variadic + function wants to pass on its array parameter to another one. Also, + this is the only secure way to call a variadic function found in a schema + that permits untrusted users to create objects; see + . You can do this by + specifying VARIADIC in the call: + + +SELECT mleast(VARIADIC ARRAY[10, -1, 5, 4.4]); + + + This prevents expansion of the function's variadic parameter into its + element type, thereby allowing the array argument value to match + normally. VARIADIC can only be attached to the last + actual argument of a function call. + + + + Specifying VARIADIC in the call is also the only way to + pass an empty array to a variadic function, for example: + + +SELECT mleast(VARIADIC ARRAY[]::numeric[]); + + + Simply writing SELECT mleast() does not work because a + variadic parameter must match at least one actual argument. + (You could define a second function also named mleast, + with no parameters, if you wanted to allow such calls.) + + + + The array element parameters generated from a variadic parameter are + treated as not having any names of their own. This means it is not + possible to call a variadic function using named arguments (), except when you specify + VARIADIC. For example, this will work: + + +SELECT mleast(VARIADIC arr => ARRAY[10, -1, 5, 4.4]); + + + but not these: + + +SELECT mleast(arr => 10); +SELECT mleast(arr => ARRAY[10, -1, 5, 4.4]); + + + + + + <acronym>SQL</acronym> Functions with Default Values for Arguments + + + function + default values for arguments + + + + Functions can be declared with default values for some or all input + arguments. The default values are inserted whenever the function is + called with insufficiently many actual arguments. Since arguments + can only be omitted from the end of the actual argument list, all + parameters after a parameter with a default value have to have + default values as well. (Although the use of named argument notation + could allow this restriction to be relaxed, it's still enforced so that + positional argument notation works sensibly.) Whether or not you use it, + this capability creates a need for precautions when calling functions in + databases where some users mistrust other users; see + . + + + + For example: + +CREATE FUNCTION foo(a int, b int DEFAULT 2, c int DEFAULT 3) +RETURNS int +LANGUAGE SQL +AS $$ + SELECT $1 + $2 + $3; +$$; + +SELECT foo(10, 20, 30); + foo +----- + 60 +(1 row) + +SELECT foo(10, 20); + foo +----- + 33 +(1 row) + +SELECT foo(10); + foo +----- + 15 +(1 row) + +SELECT foo(); -- fails since there is no default for the first argument +ERROR: function foo() does not exist + + The = sign can also be used in place of the + key word DEFAULT. + + + + + <acronym>SQL</acronym> Functions as Table Sources + + + All SQL functions can be used in the FROM clause of a query, + but it is particularly useful for functions returning composite types. + If the function is defined to return a base type, the table function + produces a one-column table. If the function is defined to return + a composite type, the table function produces a column for each attribute + of the composite type. + + + + Here is an example: + + +CREATE TABLE foo (fooid int, foosubid int, fooname text); +INSERT INTO foo VALUES (1, 1, 'Joe'); +INSERT INTO foo VALUES (1, 2, 'Ed'); +INSERT INTO foo VALUES (2, 1, 'Mary'); + +CREATE FUNCTION getfoo(int) RETURNS foo AS $$ + SELECT * FROM foo WHERE fooid = $1; +$$ LANGUAGE SQL; + +SELECT *, upper(fooname) FROM getfoo(1) AS t1; + + fooid | foosubid | fooname | upper +-------+----------+---------+------- + 1 | 1 | Joe | JOE +(1 row) + + + As the example shows, we can work with the columns of the function's + result just the same as if they were columns of a regular table. + + + + Note that we only got one row out of the function. This is because + we did not use SETOF. That is described in the next section. + + + + + <acronym>SQL</acronym> Functions Returning Sets + + + function + with SETOF + + + + When an SQL function is declared as returning SETOF + sometype, the function's final + query is executed to completion, and each row it + outputs is returned as an element of the result set. + + + + This feature is normally used when calling the function in the FROM + clause. In this case each row returned by the function becomes + a row of the table seen by the query. For example, assume that + table foo has the same contents as above, and we say: + + +CREATE FUNCTION getfoo(int) RETURNS SETOF foo AS $$ + SELECT * FROM foo WHERE fooid = $1; +$$ LANGUAGE SQL; + +SELECT * FROM getfoo(1) AS t1; + + + Then we would get: + + fooid | foosubid | fooname +-------+----------+--------- + 1 | 1 | Joe + 1 | 2 | Ed +(2 rows) + + + + + It is also possible to return multiple rows with the columns defined by + output parameters, like this: + + +CREATE TABLE tab (y int, z int); +INSERT INTO tab VALUES (1, 2), (3, 4), (5, 6), (7, 8); + +CREATE FUNCTION sum_n_product_with_tab (x int, OUT sum int, OUT product int) +RETURNS SETOF record +AS $$ + SELECT $1 + tab.y, $1 * tab.y FROM tab; +$$ LANGUAGE SQL; + +SELECT * FROM sum_n_product_with_tab(10); + sum | product +-----+--------- + 11 | 10 + 13 | 30 + 15 | 50 + 17 | 70 +(4 rows) + + + The key point here is that you must write RETURNS SETOF record + to indicate that the function returns multiple rows instead of just one. + If there is only one output parameter, write that parameter's type + instead of record. + + + + It is frequently useful to construct a query's result by invoking a + set-returning function multiple times, with the parameters for each + invocation coming from successive rows of a table or subquery. The + preferred way to do this is to use the LATERAL key word, + which is described in . + Here is an example using a set-returning function to enumerate + elements of a tree structure: + + +SELECT * FROM nodes; + name | parent +-----------+-------- + Top | + Child1 | Top + Child2 | Top + Child3 | Top + SubChild1 | Child1 + SubChild2 | Child1 +(6 rows) + +CREATE FUNCTION listchildren(text) RETURNS SETOF text AS $$ + SELECT name FROM nodes WHERE parent = $1 +$$ LANGUAGE SQL STABLE; + +SELECT * FROM listchildren('Top'); + listchildren +-------------- + Child1 + Child2 + Child3 +(3 rows) + +SELECT name, child FROM nodes, LATERAL listchildren(name) AS child; + name | child +--------+----------- + Top | Child1 + Top | Child2 + Top | Child3 + Child1 | SubChild1 + Child1 | SubChild2 +(5 rows) + + + This example does not do anything that we couldn't have done with a + simple join, but in more complex calculations the option to put + some of the work into a function can be quite convenient. + + + + Functions returning sets can also be called in the select list + of a query. For each row that the query + generates by itself, the set-returning function is invoked, and an output + row is generated for each element of the function's result set. + The previous example could also be done with queries like + these: + + +SELECT listchildren('Top'); + listchildren +-------------- + Child1 + Child2 + Child3 +(3 rows) + +SELECT name, listchildren(name) FROM nodes; + name | listchildren +--------+-------------- + Top | Child1 + Top | Child2 + Top | Child3 + Child1 | SubChild1 + Child1 | SubChild2 +(5 rows) + + + In the last SELECT, + notice that no output row appears for Child2, Child3, etc. + This happens because listchildren returns an empty set + for those arguments, so no result rows are generated. This is the same + behavior as we got from an inner join to the function result when using + the LATERAL syntax. + + + + PostgreSQL's behavior for a set-returning function in a + query's select list is almost exactly the same as if the set-returning + function had been written in a LATERAL FROM-clause item + instead. For example, + +SELECT x, generate_series(1,5) AS g FROM tab; + + is almost equivalent to + +SELECT x, g FROM tab, LATERAL generate_series(1,5) AS g; + + It would be exactly the same, except that in this specific example, + the planner could choose to put g on the outside of the + nestloop join, since g has no actual lateral dependency + on tab. That would result in a different output row + order. Set-returning functions in the select list are always evaluated + as though they are on the inside of a nestloop join with the rest of + the FROM clause, so that the function(s) are run to + completion before the next row from the FROM clause is + considered. + + + + If there is more than one set-returning function in the query's select + list, the behavior is similar to what you get from putting the functions + into a single LATERAL ROWS FROM( ... ) FROM-clause + item. For each row from the underlying query, there is an output row + using the first result from each function, then an output row using the + second result, and so on. If some of the set-returning functions + produce fewer outputs than others, null values are substituted for the + missing data, so that the total number of rows emitted for one + underlying row is the same as for the set-returning function that + produced the most outputs. Thus the set-returning functions + run in lockstep until they are all exhausted, and then + execution continues with the next underlying row. + + + + Set-returning functions can be nested in a select list, although that is + not allowed in FROM-clause items. In such cases, each level + of nesting is treated separately, as though it were + a separate LATERAL ROWS FROM( ... ) item. For example, in + +SELECT srf1(srf2(x), srf3(y)), srf4(srf5(z)) FROM tab; + + the set-returning functions srf2, srf3, + and srf5 would be run in lockstep for each row + of tab, and then srf1 and srf4 + would be applied in lockstep to each row produced by the lower + functions. + + + + Set-returning functions cannot be used within conditional-evaluation + constructs, such as CASE or COALESCE. For + example, consider + +SELECT x, CASE WHEN x > 0 THEN generate_series(1, 5) ELSE 0 END FROM tab; + + It might seem that this should produce five repetitions of input rows + that have x > 0, and a single repetition of those that do + not; but actually, because generate_series(1, 5) would be + run in an implicit LATERAL FROM item before + the CASE expression is ever evaluated, it would produce five + repetitions of every input row. To reduce confusion, such cases produce + a parse-time error instead. + + + + + If a function's last command is INSERT, UPDATE, + or DELETE with RETURNING, that command will + always be executed to completion, even if the function is not declared + with SETOF or the calling query does not fetch all the + result rows. Any extra rows produced by the RETURNING + clause are silently dropped, but the commanded table modifications + still happen (and are all completed before returning from the function). + + + + + + Before PostgreSQL 10, putting more than one + set-returning function in the same select list did not behave very + sensibly unless they always produced equal numbers of rows. Otherwise, + what you got was a number of output rows equal to the least common + multiple of the numbers of rows produced by the set-returning + functions. Also, nested set-returning functions did not work as + described above; instead, a set-returning function could have at most + one set-returning argument, and each nest of set-returning functions + was run independently. Also, conditional execution (set-returning + functions inside CASE etc) was previously allowed, + complicating things even more. + Use of the LATERAL syntax is recommended when writing + queries that need to work in older PostgreSQL versions, + because that will give consistent results across different versions. + If you have a query that is relying on conditional execution of a + set-returning function, you may be able to fix it by moving the + conditional test into a custom set-returning function. For example, + +SELECT x, CASE WHEN y > 0 THEN generate_series(1, z) ELSE 5 END FROM tab; + + could become + +CREATE FUNCTION case_generate_series(cond bool, start int, fin int, els int) + RETURNS SETOF int AS $$ +BEGIN + IF cond THEN + RETURN QUERY SELECT generate_series(start, fin); + ELSE + RETURN QUERY SELECT els; + END IF; +END$$ LANGUAGE plpgsql; + +SELECT x, case_generate_series(y > 0, 1, z, 5) FROM tab; + + This formulation will work the same in all versions + of PostgreSQL. + + + + + + <acronym>SQL</acronym> Functions Returning <literal>TABLE</literal> + + + function + RETURNS TABLE + + + + There is another way to declare a function as returning a set, + which is to use the syntax + RETURNS TABLE(columns). + This is equivalent to using one or more OUT parameters plus + marking the function as returning SETOF record (or + SETOF a single output parameter's type, as appropriate). + This notation is specified in recent versions of the SQL standard, and + thus may be more portable than using SETOF. + + + + For example, the preceding sum-and-product example could also be + done this way: + + +CREATE FUNCTION sum_n_product_with_tab (x int) +RETURNS TABLE(sum int, product int) AS $$ + SELECT $1 + tab.y, $1 * tab.y FROM tab; +$$ LANGUAGE SQL; + + + It is not allowed to use explicit OUT or INOUT + parameters with the RETURNS TABLE notation — you must + put all the output columns in the TABLE list. + + + + + Polymorphic <acronym>SQL</acronym> Functions + + + SQL functions can be declared to accept and + return the polymorphic types anyelement, + anyarray, anynonarray, + anyenum, and anyrange. See for a more detailed + explanation of polymorphic functions. Here is a polymorphic + function make_array that builds up an array + from two arbitrary data type elements: + +CREATE FUNCTION make_array(anyelement, anyelement) RETURNS anyarray AS $$ + SELECT ARRAY[$1, $2]; +$$ LANGUAGE SQL; + +SELECT make_array(1, 2) AS intarray, make_array('a'::text, 'b') AS textarray; + intarray | textarray +----------+----------- + {1,2} | {a,b} +(1 row) + + + + + Notice the use of the typecast 'a'::text + to specify that the argument is of type text. This is + required if the argument is just a string literal, since otherwise + it would be treated as type + unknown, and array of unknown is not a valid + type. + Without the typecast, you will get errors like this: + + +ERROR: could not determine polymorphic type because input has type "unknown" + + + + + + It is permitted to have polymorphic arguments with a fixed + return type, but the converse is not. For example: + +CREATE FUNCTION is_greater(anyelement, anyelement) RETURNS boolean AS $$ + SELECT $1 > $2; +$$ LANGUAGE SQL; + +SELECT is_greater(1, 2); + is_greater +------------ + f +(1 row) + +CREATE FUNCTION invalid_func() RETURNS anyelement AS $$ + SELECT 1; +$$ LANGUAGE SQL; +ERROR: cannot determine result data type +DETAIL: A function returning a polymorphic type must have at least one polymorphic argument. + + + + + Polymorphism can be used with functions that have output arguments. + For example: + +CREATE FUNCTION dup (f1 anyelement, OUT f2 anyelement, OUT f3 anyarray) +AS 'select $1, array[$1,$1]' LANGUAGE SQL; + +SELECT * FROM dup(22); + f2 | f3 +----+--------- + 22 | {22,22} +(1 row) + + + + + Polymorphism can also be used with variadic functions. + For example: + +CREATE FUNCTION anyleast (VARIADIC anyarray) RETURNS anyelement AS $$ + SELECT min($1[i]) FROM generate_subscripts($1, 1) g(i); +$$ LANGUAGE SQL; + +SELECT anyleast(10, -1, 5, 4); + anyleast +---------- + -1 +(1 row) + +SELECT anyleast('abc'::text, 'def'); + anyleast +---------- + abc +(1 row) + +CREATE FUNCTION concat_values(text, VARIADIC anyarray) RETURNS text AS $$ + SELECT array_to_string($2, $1); +$$ LANGUAGE SQL; + +SELECT concat_values('|', 1, 4, 2); + concat_values +--------------- + 1|4|2 +(1 row) + + + + + + <acronym>SQL</acronym> Functions with Collations + + + collation + in SQL functions + + + + When a SQL function has one or more parameters of collatable data types, + a collation is identified for each function call depending on the + collations assigned to the actual arguments, as described in . If a collation is successfully identified + (i.e., there are no conflicts of implicit collations among the arguments) + then all the collatable parameters are treated as having that collation + implicitly. This will affect the behavior of collation-sensitive + operations within the function. For example, using the + anyleast function described above, the result of + +SELECT anyleast('abc'::text, 'ABC'); + + will depend on the database's default collation. In C locale + the result will be ABC, but in many other locales it will + be abc. The collation to use can be forced by adding + a COLLATE clause to any of the arguments, for example + +SELECT anyleast('abc'::text, 'ABC' COLLATE "C"); + + Alternatively, if you wish a function to operate with a particular + collation regardless of what it is called with, insert + COLLATE clauses as needed in the function definition. + This version of anyleast would always use en_US + locale to compare strings: + +CREATE FUNCTION anyleast (VARIADIC anyarray) RETURNS anyelement AS $$ + SELECT min($1[i] COLLATE "en_US") FROM generate_subscripts($1, 1) g(i); +$$ LANGUAGE SQL; + + But note that this will throw an error if applied to a non-collatable + data type. + + + + If no common collation can be identified among the actual arguments, + then a SQL function treats its parameters as having their data types' + default collation (which is usually the database's default collation, + but could be different for parameters of domain types). + + + + The behavior of collatable parameters can be thought of as a limited + form of polymorphism, applicable only to textual data types. + + + + diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml index e18272c33a..f400400168 100644 --- a/doc/src/sgml/xfunc.sgml +++ b/doc/src/sgml/xfunc.sgml @@ -1,1701 +1,5 @@ - - User-defined Functions - - - function - user-defined - - - - PostgreSQL provides four kinds of - functions: - - - - - query language functions (functions written in - SQL) () - - - - - procedural language functions (functions written in, for - example, PL/pgSQL or PL/Tcl) - () - - - - - internal functions () - - - - - C-language functions () - - - - - - - Every kind - of function can take base types, composite types, or - combinations of these as arguments (parameters). In addition, - every kind of function can return a base type or - a composite type. Functions can also be defined to return - sets of base or composite values. - - - - Many kinds of functions can take or return certain pseudo-types - (such as polymorphic types), but the available facilities vary. - Consult the description of each kind of function for more details. - - - - It's easiest to define SQL - functions, so we'll start by discussing those. - Most of the concepts presented for SQL functions - will carry over to the other types of functions. - - - - Throughout this chapter, it can be useful to look at the reference - page of the command to - understand the examples better. Some examples from this chapter - can be found in funcs.sql and - funcs.c in the src/tutorial - directory in the PostgreSQL source - distribution. - - - - - User-defined Procedures - - - procedure - user-defined - - - - A procedure is a database object similar to a function. The difference is - that a procedure does not return a value, so there is no return type - declaration. While a function is called as part of a query or DML - command, a procedure is called explicitly using - the statement. - - - - The explanations on how to define user-defined functions in the rest of - this chapter apply to procedures as well, except that - the command is used instead, there is - no return type, and some other features such as strictness don't apply. - - - - Collectively, functions and procedures are also known - as routinesroutine. - There are commands such as - and that can operate on functions and - procedures without having to know which kind it is. Note, however, that - there is no CREATE ROUTINE command. - - - - - Query Language (<acronym>SQL</acronym>) Functions - - - function - user-defined - in SQL - - - - SQL functions execute an arbitrary list of SQL statements, returning - the result of the last query in the list. - In the simple (non-set) - case, the first row of the last query's result will be returned. - (Bear in mind that the first row of a multirow - result is not well-defined unless you use ORDER BY.) - If the last query happens - to return no rows at all, the null value will be returned. - - - - Alternatively, an SQL function can be declared to return a set (that is, - multiple rows) by specifying the function's return type as SETOF - sometype, or equivalently by declaring it as - RETURNS TABLE(columns). In this case - all rows of the last query's result are returned. Further details appear - below. - - - - The body of an SQL function must be a list of SQL - statements separated by semicolons. A semicolon after the last - statement is optional. Unless the function is declared to return - void, the last statement must be a SELECT, - or an INSERT, UPDATE, or DELETE - that has a RETURNING clause. - - - - Any collection of commands in the SQL - language can be packaged together and defined as a function. - Besides SELECT queries, the commands can include data - modification queries (INSERT, - UPDATE, and DELETE), as well as - other SQL commands. (You cannot use transaction control commands, e.g. - COMMIT, SAVEPOINT, and some utility - commands, e.g. VACUUM, in SQL functions.) - However, the final command - must be a SELECT or have a RETURNING - clause that returns whatever is - specified as the function's return type. Alternatively, if you - want to define a SQL function that performs actions but has no - useful value to return, you can define it as returning void. - For example, this function removes rows with negative salaries from - the emp table: - - -CREATE FUNCTION clean_emp() RETURNS void AS ' - DELETE FROM emp - WHERE salary < 0; -' LANGUAGE SQL; - -SELECT clean_emp(); - - clean_emp ------------ - -(1 row) - - - - - - The entire body of a SQL function is parsed before any of it is - executed. While a SQL function can contain commands that alter - the system catalogs (e.g., CREATE TABLE), the effects - of such commands will not be visible during parse analysis of - later commands in the function. Thus, for example, - CREATE TABLE foo (...); INSERT INTO foo VALUES(...); - will not work as desired if packaged up into a single SQL function, - since foo won't exist yet when the INSERT - command is parsed. It's recommended to use PL/pgSQL - instead of a SQL function in this type of situation. - - - - - The syntax of the CREATE FUNCTION command requires - the function body to be written as a string constant. It is usually - most convenient to use dollar quoting (see ) for the string constant. - If you choose to use regular single-quoted string constant syntax, - you must double single quote marks (') and backslashes - (\) (assuming escape string syntax) in the body of - the function (see ). - - - - Arguments for <acronym>SQL</acronym> Functions - - - function - named argument - - - - Arguments of a SQL function can be referenced in the function - body using either names or numbers. Examples of both methods appear - below. - - - - To use a name, declare the function argument as having a name, and - then just write that name in the function body. If the argument name - is the same as any column name in the current SQL command within the - function, the column name will take precedence. To override this, - qualify the argument name with the name of the function itself, that is - function_name.argument_name. - (If this would conflict with a qualified column name, again the column - name wins. You can avoid the ambiguity by choosing a different alias for - the table within the SQL command.) - - - - In the older numeric approach, arguments are referenced using the syntax - $n: $1 refers to the first input - argument, $2 to the second, and so on. This will work - whether or not the particular argument was declared with a name. - - - - If an argument is of a composite type, then the dot notation, - e.g., argname.fieldname or - $1.fieldname, can be used to access attributes of the - argument. Again, you might need to qualify the argument's name with the - function name to make the form with an argument name unambiguous. - - - - SQL function arguments can only be used as data values, - not as identifiers. Thus for example this is reasonable: - -INSERT INTO mytable VALUES ($1); - -but this will not work: - -INSERT INTO $1 VALUES (42); - - - - - - The ability to use names to reference SQL function arguments was added - in PostgreSQL 9.2. Functions to be used in - older servers must use the $n notation. - - - - - - <acronym>SQL</acronym> Functions on Base Types - - - The simplest possible SQL function has no arguments and - simply returns a base type, such as integer: - - -CREATE FUNCTION one() RETURNS integer AS $$ - SELECT 1 AS result; -$$ LANGUAGE SQL; - --- Alternative syntax for string literal: -CREATE FUNCTION one() RETURNS integer AS ' - SELECT 1 AS result; -' LANGUAGE SQL; - -SELECT one(); - - one ------ - 1 - - - - - Notice that we defined a column alias within the function body for the result of the function - (with the name result), but this column alias is not visible - outside the function. Hence, the result is labeled one - instead of result. - - - - It is almost as easy to define SQL functions - that take base types as arguments: - - -CREATE FUNCTION add_em(x integer, y integer) RETURNS integer AS $$ - SELECT x + y; -$$ LANGUAGE SQL; - -SELECT add_em(1, 2) AS answer; - - answer --------- - 3 - - - - - Alternatively, we could dispense with names for the arguments and - use numbers: - - -CREATE FUNCTION add_em(integer, integer) RETURNS integer AS $$ - SELECT $1 + $2; -$$ LANGUAGE SQL; - -SELECT add_em(1, 2) AS answer; - - answer --------- - 3 - - - - - Here is a more useful function, which might be used to debit a - bank account: - - -CREATE FUNCTION tf1 (accountno integer, debit numeric) RETURNS numeric AS $$ - UPDATE bank - SET balance = balance - debit - WHERE accountno = tf1.accountno; - SELECT 1; -$$ LANGUAGE SQL; - - - A user could execute this function to debit account 17 by $100.00 as - follows: - - -SELECT tf1(17, 100.0); - - - - - In this example, we chose the name accountno for the first - argument, but this is the same as the name of a column in the - bank table. Within the UPDATE command, - accountno refers to the column bank.accountno, - so tf1.accountno must be used to refer to the argument. - We could of course avoid this by using a different name for the argument. - - - - In practice one would probably like a more useful result from the - function than a constant 1, so a more likely definition - is: - - -CREATE FUNCTION tf1 (accountno integer, debit numeric) RETURNS numeric AS $$ - UPDATE bank - SET balance = balance - debit - WHERE accountno = tf1.accountno; - SELECT balance FROM bank WHERE accountno = tf1.accountno; -$$ LANGUAGE SQL; - - - which adjusts the balance and returns the new balance. - The same thing could be done in one command using RETURNING: - - -CREATE FUNCTION tf1 (accountno integer, debit numeric) RETURNS numeric AS $$ - UPDATE bank - SET balance = balance - debit - WHERE accountno = tf1.accountno - RETURNING balance; -$$ LANGUAGE SQL; - - - - - A SQL function must return exactly its declared - result type. This may require inserting an explicit cast. - For example, suppose we wanted the - previous add_em function to return - type float8 instead. This won't work: - - -CREATE FUNCTION add_em(integer, integer) RETURNS float8 AS $$ - SELECT $1 + $2; -$$ LANGUAGE SQL; - - - even though in other contexts PostgreSQL - would be willing to insert an implicit cast to - convert integer to float8. - We need to write it as - - -CREATE FUNCTION add_em(integer, integer) RETURNS float8 AS $$ - SELECT ($1 + $2)::float8; -$$ LANGUAGE SQL; - - - - - - <acronym>SQL</acronym> Functions on Composite Types - - - When writing functions with arguments of composite types, we must not - only specify which argument we want but also the desired attribute - (field) of that argument. For example, suppose that - emp is a table containing employee data, and therefore - also the name of the composite type of each row of the table. Here - is a function double_salary that computes what someone's - salary would be if it were doubled: - - -CREATE TABLE emp ( - name text, - salary numeric, - age integer, - cubicle point -); - -INSERT INTO emp VALUES ('Bill', 4200, 45, '(2,1)'); - -CREATE FUNCTION double_salary(emp) RETURNS numeric AS $$ - SELECT $1.salary * 2 AS salary; -$$ LANGUAGE SQL; - -SELECT name, double_salary(emp.*) AS dream - FROM emp - WHERE emp.cubicle ~= point '(2,1)'; - - name | dream -------+------- - Bill | 8400 - - - - - Notice the use of the syntax $1.salary - to select one field of the argument row value. Also notice - how the calling SELECT command - uses table_name.* to select - the entire current row of a table as a composite value. The table - row can alternatively be referenced using just the table name, - like this: - -SELECT name, double_salary(emp) AS dream - FROM emp - WHERE emp.cubicle ~= point '(2,1)'; - - but this usage is deprecated since it's easy to get confused. - (See for details about these - two notations for the composite value of a table row.) - - - - Sometimes it is handy to construct a composite argument value - on-the-fly. This can be done with the ROW construct. - For example, we could adjust the data being passed to the function: - -SELECT name, double_salary(ROW(name, salary*1.1, age, cubicle)) AS dream - FROM emp; - - - - - It is also possible to build a function that returns a composite type. - This is an example of a function - that returns a single emp row: - - -CREATE FUNCTION new_emp() RETURNS emp AS $$ - SELECT text 'None' AS name, - 1000.0 AS salary, - 25 AS age, - point '(2,2)' AS cubicle; -$$ LANGUAGE SQL; - - - In this example we have specified each of the attributes - with a constant value, but any computation - could have been substituted for these constants. - - - - Note two important things about defining the function: - - - - - The select list order in the query must be exactly the same as - that in which the columns appear in the table associated - with the composite type. (Naming the columns, as we did above, - is irrelevant to the system.) - - - - - We must ensure each expression's type matches the corresponding - column of the composite type, inserting a cast if necessary. - Otherwise we'll get errors like this: - - -ERROR: function declared to return emp returns varchar instead of text at column 1 - - - As with the base-type case, the function will not insert any casts - automatically. - - - - - - - A different way to define the same function is: - - -CREATE FUNCTION new_emp() RETURNS emp AS $$ - SELECT ROW('None', 1000.0, 25, '(2,2)')::emp; -$$ LANGUAGE SQL; - - - Here we wrote a SELECT that returns just a single - column of the correct composite type. This isn't really better - in this situation, but it is a handy alternative in some cases - — for example, if we need to compute the result by calling - another function that returns the desired composite value. - Another example is that if we are trying to write a function that - returns a domain over composite, rather than a plain composite type, - it is always necessary to write it as returning a single column, - since there is no other way to produce a value that is exactly of - the domain type. - - - - We could call this function directly either by using it in - a value expression: - - -SELECT new_emp(); - - new_emp --------------------------- - (None,1000.0,25,"(2,2)") - - - or by calling it as a table function: - - -SELECT * FROM new_emp(); - - name | salary | age | cubicle -------+--------+-----+--------- - None | 1000.0 | 25 | (2,2) - - - The second way is described more fully in . - - - - When you use a function that returns a composite type, - you might want only one field (attribute) from its result. - You can do that with syntax like this: - - -SELECT (new_emp()).name; - - name ------- - None - - - The extra parentheses are needed to keep the parser from getting - confused. If you try to do it without them, you get something like this: - - -SELECT new_emp().name; -ERROR: syntax error at or near "." -LINE 1: SELECT new_emp().name; - ^ - - - - - Another option is to use functional notation for extracting an attribute: - - -SELECT name(new_emp()); - - name ------- - None - - - As explained in , the field notation and - functional notation are equivalent. - - - - Another way to use a function returning a composite type is to pass the - result to another function that accepts the correct row type as input: - - -CREATE FUNCTION getname(emp) RETURNS text AS $$ - SELECT $1.name; -$$ LANGUAGE SQL; - -SELECT getname(new_emp()); - getname ---------- - None -(1 row) - - - - - - <acronym>SQL</acronym> Functions with Output Parameters - - - function - output parameter - - - - An alternative way of describing a function's results is to define it - with output parameters, as in this example: - - -CREATE FUNCTION add_em (IN x int, IN y int, OUT sum int) -AS 'SELECT x + y' -LANGUAGE SQL; - -SELECT add_em(3,7); - add_em --------- - 10 -(1 row) - - - This is not essentially different from the version of add_em - shown in . The real value of - output parameters is that they provide a convenient way of defining - functions that return several columns. For example, - - -CREATE FUNCTION sum_n_product (x int, y int, OUT sum int, OUT product int) -AS 'SELECT x + y, x * y' -LANGUAGE SQL; - - SELECT * FROM sum_n_product(11,42); - sum | product ------+--------- - 53 | 462 -(1 row) - - - What has essentially happened here is that we have created an anonymous - composite type for the result of the function. The above example has - the same end result as - - -CREATE TYPE sum_prod AS (sum int, product int); - -CREATE FUNCTION sum_n_product (int, int) RETURNS sum_prod -AS 'SELECT $1 + $2, $1 * $2' -LANGUAGE SQL; - - - but not having to bother with the separate composite type definition - is often handy. Notice that the names attached to the output parameters - are not just decoration, but determine the column names of the anonymous - composite type. (If you omit a name for an output parameter, the - system will choose a name on its own.) - - - - Notice that output parameters are not included in the calling argument - list when invoking such a function from SQL. This is because - PostgreSQL considers only the input - parameters to define the function's calling signature. That means - also that only the input parameters matter when referencing the function - for purposes such as dropping it. We could drop the above function - with either of - - -DROP FUNCTION sum_n_product (x int, y int, OUT sum int, OUT product int); -DROP FUNCTION sum_n_product (int, int); - - - - - Parameters can be marked as IN (the default), - OUT, INOUT, or VARIADIC. - An INOUT - parameter serves as both an input parameter (part of the calling - argument list) and an output parameter (part of the result record type). - VARIADIC parameters are input parameters, but are treated - specially as described next. - - - - - <acronym>SQL</acronym> Functions with Variable Numbers of Arguments - - - function - variadic - - - - variadic function - - - - SQL functions can be declared to accept - variable numbers of arguments, so long as all the optional - arguments are of the same data type. The optional arguments will be - passed to the function as an array. The function is declared by - marking the last parameter as VARIADIC; this parameter - must be declared as being of an array type. For example: - - -CREATE FUNCTION mleast(VARIADIC arr numeric[]) RETURNS numeric AS $$ - SELECT min($1[i]) FROM generate_subscripts($1, 1) g(i); -$$ LANGUAGE SQL; - -SELECT mleast(10, -1, 5, 4.4); - mleast --------- - -1 -(1 row) - - - Effectively, all the actual arguments at or beyond the - VARIADIC position are gathered up into a one-dimensional - array, as if you had written - - -SELECT mleast(ARRAY[10, -1, 5, 4.4]); -- doesn't work - - - You can't actually write that, though — or at least, it will - not match this function definition. A parameter marked - VARIADIC matches one or more occurrences of its element - type, not of its own type. - - - - Sometimes it is useful to be able to pass an already-constructed array - to a variadic function; this is particularly handy when one variadic - function wants to pass on its array parameter to another one. Also, - this is the only secure way to call a variadic function found in a schema - that permits untrusted users to create objects; see - . You can do this by - specifying VARIADIC in the call: - - -SELECT mleast(VARIADIC ARRAY[10, -1, 5, 4.4]); - - - This prevents expansion of the function's variadic parameter into its - element type, thereby allowing the array argument value to match - normally. VARIADIC can only be attached to the last - actual argument of a function call. - - - - Specifying VARIADIC in the call is also the only way to - pass an empty array to a variadic function, for example: - - -SELECT mleast(VARIADIC ARRAY[]::numeric[]); - - - Simply writing SELECT mleast() does not work because a - variadic parameter must match at least one actual argument. - (You could define a second function also named mleast, - with no parameters, if you wanted to allow such calls.) - - - - The array element parameters generated from a variadic parameter are - treated as not having any names of their own. This means it is not - possible to call a variadic function using named arguments (), except when you specify - VARIADIC. For example, this will work: - - -SELECT mleast(VARIADIC arr => ARRAY[10, -1, 5, 4.4]); - - - but not these: - - -SELECT mleast(arr => 10); -SELECT mleast(arr => ARRAY[10, -1, 5, 4.4]); - - - - - - <acronym>SQL</acronym> Functions with Default Values for Arguments - - - function - default values for arguments - - - - Functions can be declared with default values for some or all input - arguments. The default values are inserted whenever the function is - called with insufficiently many actual arguments. Since arguments - can only be omitted from the end of the actual argument list, all - parameters after a parameter with a default value have to have - default values as well. (Although the use of named argument notation - could allow this restriction to be relaxed, it's still enforced so that - positional argument notation works sensibly.) Whether or not you use it, - this capability creates a need for precautions when calling functions in - databases where some users mistrust other users; see - . - - - - For example: - -CREATE FUNCTION foo(a int, b int DEFAULT 2, c int DEFAULT 3) -RETURNS int -LANGUAGE SQL -AS $$ - SELECT $1 + $2 + $3; -$$; - -SELECT foo(10, 20, 30); - foo ------ - 60 -(1 row) - -SELECT foo(10, 20); - foo ------ - 33 -(1 row) - -SELECT foo(10); - foo ------ - 15 -(1 row) - -SELECT foo(); -- fails since there is no default for the first argument -ERROR: function foo() does not exist - - The = sign can also be used in place of the - key word DEFAULT. - - - - - <acronym>SQL</acronym> Functions as Table Sources - - - All SQL functions can be used in the FROM clause of a query, - but it is particularly useful for functions returning composite types. - If the function is defined to return a base type, the table function - produces a one-column table. If the function is defined to return - a composite type, the table function produces a column for each attribute - of the composite type. - - - - Here is an example: - - -CREATE TABLE foo (fooid int, foosubid int, fooname text); -INSERT INTO foo VALUES (1, 1, 'Joe'); -INSERT INTO foo VALUES (1, 2, 'Ed'); -INSERT INTO foo VALUES (2, 1, 'Mary'); - -CREATE FUNCTION getfoo(int) RETURNS foo AS $$ - SELECT * FROM foo WHERE fooid = $1; -$$ LANGUAGE SQL; - -SELECT *, upper(fooname) FROM getfoo(1) AS t1; - - fooid | foosubid | fooname | upper --------+----------+---------+------- - 1 | 1 | Joe | JOE -(1 row) - - - As the example shows, we can work with the columns of the function's - result just the same as if they were columns of a regular table. - - - - Note that we only got one row out of the function. This is because - we did not use SETOF. That is described in the next section. - - - - - <acronym>SQL</acronym> Functions Returning Sets - - - function - with SETOF - - - - When an SQL function is declared as returning SETOF - sometype, the function's final - query is executed to completion, and each row it - outputs is returned as an element of the result set. - - - - This feature is normally used when calling the function in the FROM - clause. In this case each row returned by the function becomes - a row of the table seen by the query. For example, assume that - table foo has the same contents as above, and we say: - - -CREATE FUNCTION getfoo(int) RETURNS SETOF foo AS $$ - SELECT * FROM foo WHERE fooid = $1; -$$ LANGUAGE SQL; - -SELECT * FROM getfoo(1) AS t1; - - - Then we would get: - - fooid | foosubid | fooname --------+----------+--------- - 1 | 1 | Joe - 1 | 2 | Ed -(2 rows) - - - - - It is also possible to return multiple rows with the columns defined by - output parameters, like this: - - -CREATE TABLE tab (y int, z int); -INSERT INTO tab VALUES (1, 2), (3, 4), (5, 6), (7, 8); - -CREATE FUNCTION sum_n_product_with_tab (x int, OUT sum int, OUT product int) -RETURNS SETOF record -AS $$ - SELECT $1 + tab.y, $1 * tab.y FROM tab; -$$ LANGUAGE SQL; - -SELECT * FROM sum_n_product_with_tab(10); - sum | product ------+--------- - 11 | 10 - 13 | 30 - 15 | 50 - 17 | 70 -(4 rows) - - - The key point here is that you must write RETURNS SETOF record - to indicate that the function returns multiple rows instead of just one. - If there is only one output parameter, write that parameter's type - instead of record. - - - - It is frequently useful to construct a query's result by invoking a - set-returning function multiple times, with the parameters for each - invocation coming from successive rows of a table or subquery. The - preferred way to do this is to use the LATERAL key word, - which is described in . - Here is an example using a set-returning function to enumerate - elements of a tree structure: - - -SELECT * FROM nodes; - name | parent ------------+-------- - Top | - Child1 | Top - Child2 | Top - Child3 | Top - SubChild1 | Child1 - SubChild2 | Child1 -(6 rows) - -CREATE FUNCTION listchildren(text) RETURNS SETOF text AS $$ - SELECT name FROM nodes WHERE parent = $1 -$$ LANGUAGE SQL STABLE; - -SELECT * FROM listchildren('Top'); - listchildren --------------- - Child1 - Child2 - Child3 -(3 rows) - -SELECT name, child FROM nodes, LATERAL listchildren(name) AS child; - name | child ---------+----------- - Top | Child1 - Top | Child2 - Top | Child3 - Child1 | SubChild1 - Child1 | SubChild2 -(5 rows) - - - This example does not do anything that we couldn't have done with a - simple join, but in more complex calculations the option to put - some of the work into a function can be quite convenient. - - - - Functions returning sets can also be called in the select list - of a query. For each row that the query - generates by itself, the set-returning function is invoked, and an output - row is generated for each element of the function's result set. - The previous example could also be done with queries like - these: - - -SELECT listchildren('Top'); - listchildren --------------- - Child1 - Child2 - Child3 -(3 rows) - -SELECT name, listchildren(name) FROM nodes; - name | listchildren ---------+-------------- - Top | Child1 - Top | Child2 - Top | Child3 - Child1 | SubChild1 - Child1 | SubChild2 -(5 rows) - - - In the last SELECT, - notice that no output row appears for Child2, Child3, etc. - This happens because listchildren returns an empty set - for those arguments, so no result rows are generated. This is the same - behavior as we got from an inner join to the function result when using - the LATERAL syntax. - - - - PostgreSQL's behavior for a set-returning function in a - query's select list is almost exactly the same as if the set-returning - function had been written in a LATERAL FROM-clause item - instead. For example, - -SELECT x, generate_series(1,5) AS g FROM tab; - - is almost equivalent to - -SELECT x, g FROM tab, LATERAL generate_series(1,5) AS g; - - It would be exactly the same, except that in this specific example, - the planner could choose to put g on the outside of the - nestloop join, since g has no actual lateral dependency - on tab. That would result in a different output row - order. Set-returning functions in the select list are always evaluated - as though they are on the inside of a nestloop join with the rest of - the FROM clause, so that the function(s) are run to - completion before the next row from the FROM clause is - considered. - - - - If there is more than one set-returning function in the query's select - list, the behavior is similar to what you get from putting the functions - into a single LATERAL ROWS FROM( ... ) FROM-clause - item. For each row from the underlying query, there is an output row - using the first result from each function, then an output row using the - second result, and so on. If some of the set-returning functions - produce fewer outputs than others, null values are substituted for the - missing data, so that the total number of rows emitted for one - underlying row is the same as for the set-returning function that - produced the most outputs. Thus the set-returning functions - run in lockstep until they are all exhausted, and then - execution continues with the next underlying row. - - - - Set-returning functions can be nested in a select list, although that is - not allowed in FROM-clause items. In such cases, each level - of nesting is treated separately, as though it were - a separate LATERAL ROWS FROM( ... ) item. For example, in - -SELECT srf1(srf2(x), srf3(y)), srf4(srf5(z)) FROM tab; - - the set-returning functions srf2, srf3, - and srf5 would be run in lockstep for each row - of tab, and then srf1 and srf4 - would be applied in lockstep to each row produced by the lower - functions. - - - - Set-returning functions cannot be used within conditional-evaluation - constructs, such as CASE or COALESCE. For - example, consider - -SELECT x, CASE WHEN x > 0 THEN generate_series(1, 5) ELSE 0 END FROM tab; - - It might seem that this should produce five repetitions of input rows - that have x > 0, and a single repetition of those that do - not; but actually, because generate_series(1, 5) would be - run in an implicit LATERAL FROM item before - the CASE expression is ever evaluated, it would produce five - repetitions of every input row. To reduce confusion, such cases produce - a parse-time error instead. - - - - - If a function's last command is INSERT, UPDATE, - or DELETE with RETURNING, that command will - always be executed to completion, even if the function is not declared - with SETOF or the calling query does not fetch all the - result rows. Any extra rows produced by the RETURNING - clause are silently dropped, but the commanded table modifications - still happen (and are all completed before returning from the function). - - - - - - Before PostgreSQL 10, putting more than one - set-returning function in the same select list did not behave very - sensibly unless they always produced equal numbers of rows. Otherwise, - what you got was a number of output rows equal to the least common - multiple of the numbers of rows produced by the set-returning - functions. Also, nested set-returning functions did not work as - described above; instead, a set-returning function could have at most - one set-returning argument, and each nest of set-returning functions - was run independently. Also, conditional execution (set-returning - functions inside CASE etc) was previously allowed, - complicating things even more. - Use of the LATERAL syntax is recommended when writing - queries that need to work in older PostgreSQL versions, - because that will give consistent results across different versions. - If you have a query that is relying on conditional execution of a - set-returning function, you may be able to fix it by moving the - conditional test into a custom set-returning function. For example, - -SELECT x, CASE WHEN y > 0 THEN generate_series(1, z) ELSE 5 END FROM tab; - - could become - -CREATE FUNCTION case_generate_series(cond bool, start int, fin int, els int) - RETURNS SETOF int AS $$ -BEGIN - IF cond THEN - RETURN QUERY SELECT generate_series(start, fin); - ELSE - RETURN QUERY SELECT els; - END IF; -END$$ LANGUAGE plpgsql; - -SELECT x, case_generate_series(y > 0, 1, z, 5) FROM tab; - - This formulation will work the same in all versions - of PostgreSQL. - - - - - - <acronym>SQL</acronym> Functions Returning <literal>TABLE</literal> - - - function - RETURNS TABLE - - - - There is another way to declare a function as returning a set, - which is to use the syntax - RETURNS TABLE(columns). - This is equivalent to using one or more OUT parameters plus - marking the function as returning SETOF record (or - SETOF a single output parameter's type, as appropriate). - This notation is specified in recent versions of the SQL standard, and - thus may be more portable than using SETOF. - - - - For example, the preceding sum-and-product example could also be - done this way: - - -CREATE FUNCTION sum_n_product_with_tab (x int) -RETURNS TABLE(sum int, product int) AS $$ - SELECT $1 + tab.y, $1 * tab.y FROM tab; -$$ LANGUAGE SQL; - - - It is not allowed to use explicit OUT or INOUT - parameters with the RETURNS TABLE notation — you must - put all the output columns in the TABLE list. - - - - - Polymorphic <acronym>SQL</acronym> Functions - - - SQL functions can be declared to accept and - return the polymorphic types anyelement, - anyarray, anynonarray, - anyenum, and anyrange. See for a more detailed - explanation of polymorphic functions. Here is a polymorphic - function make_array that builds up an array - from two arbitrary data type elements: - -CREATE FUNCTION make_array(anyelement, anyelement) RETURNS anyarray AS $$ - SELECT ARRAY[$1, $2]; -$$ LANGUAGE SQL; - -SELECT make_array(1, 2) AS intarray, make_array('a'::text, 'b') AS textarray; - intarray | textarray -----------+----------- - {1,2} | {a,b} -(1 row) - - - - - Notice the use of the typecast 'a'::text - to specify that the argument is of type text. This is - required if the argument is just a string literal, since otherwise - it would be treated as type - unknown, and array of unknown is not a valid - type. - Without the typecast, you will get errors like this: - - -ERROR: could not determine polymorphic type because input has type "unknown" - - - - - - It is permitted to have polymorphic arguments with a fixed - return type, but the converse is not. For example: - -CREATE FUNCTION is_greater(anyelement, anyelement) RETURNS boolean AS $$ - SELECT $1 > $2; -$$ LANGUAGE SQL; - -SELECT is_greater(1, 2); - is_greater ------------- - f -(1 row) - -CREATE FUNCTION invalid_func() RETURNS anyelement AS $$ - SELECT 1; -$$ LANGUAGE SQL; -ERROR: cannot determine result data type -DETAIL: A function returning a polymorphic type must have at least one polymorphic argument. - - - - - Polymorphism can be used with functions that have output arguments. - For example: - -CREATE FUNCTION dup (f1 anyelement, OUT f2 anyelement, OUT f3 anyarray) -AS 'select $1, array[$1,$1]' LANGUAGE SQL; - -SELECT * FROM dup(22); - f2 | f3 -----+--------- - 22 | {22,22} -(1 row) - - - - - Polymorphism can also be used with variadic functions. - For example: - -CREATE FUNCTION anyleast (VARIADIC anyarray) RETURNS anyelement AS $$ - SELECT min($1[i]) FROM generate_subscripts($1, 1) g(i); -$$ LANGUAGE SQL; - -SELECT anyleast(10, -1, 5, 4); - anyleast ----------- - -1 -(1 row) - -SELECT anyleast('abc'::text, 'def'); - anyleast ----------- - abc -(1 row) - -CREATE FUNCTION concat_values(text, VARIADIC anyarray) RETURNS text AS $$ - SELECT array_to_string($2, $1); -$$ LANGUAGE SQL; - -SELECT concat_values('|', 1, 4, 2); - concat_values ---------------- - 1|4|2 -(1 row) - - - - - - <acronym>SQL</acronym> Functions with Collations - - - collation - in SQL functions - - - - When a SQL function has one or more parameters of collatable data types, - a collation is identified for each function call depending on the - collations assigned to the actual arguments, as described in . If a collation is successfully identified - (i.e., there are no conflicts of implicit collations among the arguments) - then all the collatable parameters are treated as having that collation - implicitly. This will affect the behavior of collation-sensitive - operations within the function. For example, using the - anyleast function described above, the result of - -SELECT anyleast('abc'::text, 'ABC'); - - will depend on the database's default collation. In C locale - the result will be ABC, but in many other locales it will - be abc. The collation to use can be forced by adding - a COLLATE clause to any of the arguments, for example - -SELECT anyleast('abc'::text, 'ABC' COLLATE "C"); - - Alternatively, if you wish a function to operate with a particular - collation regardless of what it is called with, insert - COLLATE clauses as needed in the function definition. - This version of anyleast would always use en_US - locale to compare strings: - -CREATE FUNCTION anyleast (VARIADIC anyarray) RETURNS anyelement AS $$ - SELECT min($1[i] COLLATE "en_US") FROM generate_subscripts($1, 1) g(i); -$$ LANGUAGE SQL; - - But note that this will throw an error if applied to a non-collatable - data type. - - - - If no common collation can be identified among the actual arguments, - then a SQL function treats its parameters as having their data types' - default collation (which is usually the database's default collation, - but could be different for parameters of domain types). - - - - The behavior of collatable parameters can be thought of as a limited - form of polymorphism, applicable only to textual data types. - - - - - - Function Overloading - - - overloading - functions - - - - More than one function can be defined with the same SQL name, so long - as the arguments they take are different. In other words, - function names can be overloaded. Whether or not - you use it, this capability entails security precautions when calling - functions in databases where some users mistrust other users; see - . When a query is executed, the server - will determine which function to call from the data types and the number - of the provided arguments. Overloading can also be used to simulate - functions with a variable number of arguments, up to a finite maximum - number. - - - - When creating a family of overloaded functions, one should be - careful not to create ambiguities. For instance, given the - functions: - -CREATE FUNCTION test(int, real) RETURNS ... -CREATE FUNCTION test(smallint, double precision) RETURNS ... - - it is not immediately clear which function would be called with - some trivial input like test(1, 1.5). The - currently implemented resolution rules are described in - , but it is unwise to design a system that subtly - relies on this behavior. - - - - A function that takes a single argument of a composite type should - generally not have the same name as any attribute (field) of that type. - Recall that attribute(table) - is considered equivalent - to table.attribute. - In the case that there is an - ambiguity between a function on a composite type and an attribute of - the composite type, the attribute will always be used. It is possible - to override that choice by schema-qualifying the function name - (that is, schema.func(table) - ) but it's better to - avoid the problem by not choosing conflicting names. - - - - Another possible conflict is between variadic and non-variadic functions. - For instance, it is possible to create both foo(numeric) and - foo(VARIADIC numeric[]). In this case it is unclear which one - should be matched to a call providing a single numeric argument, such as - foo(10.1). The rule is that the function appearing - earlier in the search path is used, or if the two functions are in the - same schema, the non-variadic one is preferred. - - - - When overloading C-language functions, there is an additional - constraint: The C name of each function in the family of - overloaded functions must be different from the C names of all - other functions, either internal or dynamically loaded. If this - rule is violated, the behavior is not portable. You might get a - run-time linker error, or one of the functions will get called - (usually the internal one). The alternative form of the - AS clause for the SQL CREATE - FUNCTION command decouples the SQL function name from - the function name in the C source code. For instance: - -CREATE FUNCTION test(int) RETURNS int - AS 'filename', 'test_1arg' - LANGUAGE C; -CREATE FUNCTION test(int, int) RETURNS int - AS 'filename', 'test_2arg' - LANGUAGE C; - - The names of the C functions here reflect one of many possible conventions. - - - - - Function Volatility Categories - - - volatility - functions - - - VOLATILE - - - STABLE - - - IMMUTABLE - - - - Every function has a volatility classification, with - the possibilities being VOLATILE, STABLE, or - IMMUTABLE. VOLATILE is the default if the - - command does not specify a category. The volatility category is a - promise to the optimizer about the behavior of the function: - - - - - A VOLATILE function can do anything, including modifying - the database. It can return different results on successive calls with - the same arguments. The optimizer makes no assumptions about the - behavior of such functions. A query using a volatile function will - re-evaluate the function at every row where its value is needed. - - - - - A STABLE function cannot modify the database and is - guaranteed to return the same results given the same arguments - for all rows within a single statement. This category allows the - optimizer to optimize multiple calls of the function to a single - call. In particular, it is safe to use an expression containing - such a function in an index scan condition. (Since an index scan - will evaluate the comparison value only once, not once at each - row, it is not valid to use a VOLATILE function in an - index scan condition.) - - - - - An IMMUTABLE function cannot modify the database and is - guaranteed to return the same results given the same arguments forever. - This category allows the optimizer to pre-evaluate the function when - a query calls it with constant arguments. For example, a query like - SELECT ... WHERE x = 2 + 2 can be simplified on sight to - SELECT ... WHERE x = 4, because the function underlying - the integer addition operator is marked IMMUTABLE. - - - - - - - For best optimization results, you should label your functions with the - strictest volatility category that is valid for them. - - - - Any function with side-effects must be labeled - VOLATILE, so that calls to it cannot be optimized away. - Even a function with no side-effects needs to be labeled - VOLATILE if its value can change within a single query; - some examples are random(), currval(), - timeofday(). - - - - Another important example is that the current_timestamp - family of functions qualify as STABLE, since their values do - not change within a transaction. - - - - There is relatively little difference between STABLE and - IMMUTABLE categories when considering simple interactive - queries that are planned and immediately executed: it doesn't matter - a lot whether a function is executed once during planning or once during - query execution startup. But there is a big difference if the plan is - saved and reused later. Labeling a function IMMUTABLE when - it really isn't might allow it to be prematurely folded to a constant during - planning, resulting in a stale value being re-used during subsequent uses - of the plan. This is a hazard when using prepared statements or when - using function languages that cache plans (such as - PL/pgSQL). - - - - For functions written in SQL or in any of the standard procedural - languages, there is a second important property determined by the - volatility category, namely the visibility of any data changes that have - been made by the SQL command that is calling the function. A - VOLATILE function will see such changes, a STABLE - or IMMUTABLE function will not. This behavior is implemented - using the snapshotting behavior of MVCC (see ): - STABLE and IMMUTABLE functions use a snapshot - established as of the start of the calling query, whereas - VOLATILE functions obtain a fresh snapshot at the start of - each query they execute. - - - - - Functions written in C can manage snapshots however they want, but it's - usually a good idea to make C functions work this way too. - - - - - Because of this snapshotting behavior, - a function containing only SELECT commands can safely be - marked STABLE, even if it selects from tables that might be - undergoing modifications by concurrent queries. - PostgreSQL will execute all commands of a - STABLE function using the snapshot established for the - calling query, and so it will see a fixed view of the database throughout - that query. - - - - The same snapshotting behavior is used for SELECT commands - within IMMUTABLE functions. It is generally unwise to select - from database tables within an IMMUTABLE function at all, - since the immutability will be broken if the table contents ever change. - However, PostgreSQL does not enforce that you - do not do that. - - - - A common error is to label a function IMMUTABLE when its - results depend on a configuration parameter. For example, a function - that manipulates timestamps might well have results that depend on the - setting. For safety, such functions should - be labeled STABLE instead. - - - - - PostgreSQL requires that STABLE - and IMMUTABLE functions contain no SQL commands other - than SELECT to prevent data modification. - (This is not a completely bulletproof test, since such functions could - still call VOLATILE functions that modify the database. - If you do that, you will find that the STABLE or - IMMUTABLE function does not notice the database changes - applied by the called function, since they are hidden from its snapshot.) - - - - - - Procedural Language Functions - - - PostgreSQL allows user-defined functions - to be written in other languages besides SQL and C. These other - languages are generically called procedural - languages (PLs). - Procedural languages aren't built into the - PostgreSQL server; they are offered - by loadable modules. - See and following chapters for more - information. - - - - - Internal Functions - - functioninternal - - - Internal functions are functions written in C that have been statically - linked into the PostgreSQL server. - The body of the function definition - specifies the C-language name of the function, which need not be the - same as the name being declared for SQL use. - (For reasons of backward compatibility, an empty body - is accepted as meaning that the C-language function name is the - same as the SQL name.) - - - - Normally, all internal functions present in the - server are declared during the initialization of the database cluster - (see ), - but a user could use CREATE FUNCTION - to create additional alias names for an internal function. - Internal functions are declared in CREATE FUNCTION - with language name internal. For instance, to - create an alias for the sqrt function: - -CREATE FUNCTION square_root(double precision) RETURNS double precision - AS 'dsqrt' - LANGUAGE internal - STRICT; - - (Most internal functions expect to be declared strict.) - - - - - Not all predefined functions are - internal in the above sense. Some predefined - functions are written in SQL. - - - - C-Language Functions diff --git a/doc/src/sgml/xoper.sgml b/doc/src/sgml/xoper.sgml index 2f5560ac50..2c68b1f747 100644 --- a/doc/src/sgml/xoper.sgml +++ b/doc/src/sgml/xoper.sgml @@ -1,80 +1,5 @@ - - User-defined Operators - - - operator - user-defined - - - - Every operator is syntactic sugar for a call to an - underlying function that does the real work; so you must - first create the underlying function before you can create - the operator. However, an operator is not merely - syntactic sugar, because it carries additional information - that helps the query planner optimize queries that use the - operator. The next section will be devoted to explaining - that additional information. - - - - PostgreSQL supports left unary, right - unary, and binary operators. Operators can be - overloaded;overloadingoperators - that is, the same operator name can be used for different operators - that have different numbers and types of operands. When a query is - executed, the system determines the operator to call from the - number and types of the provided operands. - - - - Here is an example of creating an operator for adding two complex - numbers. We assume we've already created the definition of type - complex (see ). First we need a - function that does the work, then we can define the operator: - - -CREATE FUNCTION complex_add(complex, complex) - RETURNS complex - AS 'filename', 'complex_add' - LANGUAGE C IMMUTABLE STRICT; - -CREATE OPERATOR + ( - leftarg = complex, - rightarg = complex, - function = complex_add, - commutator = + -); - - - - - Now we could execute a query like this: - - -SELECT (a + b) AS c FROM test_complex; - - c ------------------ - (5.2,6.05) - (133.42,144.95) - - - - - We've shown how to create a binary operator here. To create unary - operators, just omit one of leftarg (for left unary) or - rightarg (for right unary). The function - clause and the argument clauses are the only required items in - CREATE OPERATOR. The commutator - clause shown in the example is an optional hint to the query - optimizer. Further details about commutator and other - optimizer hints appear in the next section. - - - Operator Optimization Information --------------94F0ECE4BDE578C46209422B--