nyuuzyou/wikis huggingface dataset:
ALTER FUNCTION

=====名字=====
ALTER FUNCTION -- 修改一个函数的定义
=====语法概要=====
 ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
 action [ ... ] [ RESTRICT ]
 ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
 RENAME TO new_name
 ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
 OWNER TO new_owner
 ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
 SET SCHEMA new_schema
 
 where action is one of:
 
 CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
 IMMUTABLE | STABLE | VOLATILE
 [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
 COST execution_cost
 ROWS result_rows
 SET configuration_parameter { TO | = } { value | DEFAULT }
 SET configuration_parameter FROM CURRENT
 RESET configuration_parameter
 RESET ALL
=====描述=====
ALTER FUNCTION 修改一个函数的定义。
要使用 ALTER FUNCTION，你必须具备该函数的所有权。要修改一个函数的模式，你还必须在新模式上拥有 CREATE 权限。要改变外部表的所有者，你必须是新角色的直接或间接成员，并且这个新角色必须在该函数的模式上具有 CREATE 权限。（这强制限制在进行更改所有者的操作时，如果无法通过删除后重建函数的方式完成，那么就不能做任何事。不过，超级用户可以用任何方法任意更改函数的所有者。）
=====参数=====
name
一个现有的函数的名字（可以有模式修饰）。
argmode
参数的使用类型：可以是 IN、OUT、INOUT 或者 VARIADIC。 如果省略，缺省是 IN。请主意 ALTER FUNCTION 实际不会注意任何 OUT 参数，因为判断函数的身份只需要输入参数。 因此列出 IN 和 INOUT 参数就足够了。
argname
参数的名字。请注意 ALTER FUNCTION 实际上不会注意参数名， 因为只有参数的数据类型需要用于判断函数的身份。
argtype
如果有的话，是该函数参数的数据类型（可以用模式修饰）。
;name
:一个现有的函数的名字（可以有模式修饰）。
;argmode
:函数参数的模式：IN，OUT，INOUT或VARIADIC。如果不指定该参数，默认为IN。注意，ALTER FUNCTION 实际上不会处理OUT模式的参数，因为只有输入参数才会作为函数签名的一部分来标识函数实体。因此，列出IN，INOUT，VARIDIC模式就足够了。
;argname
:函数参数的名字。注意，ALTER FUNCTION 实际上不会处理参数名字，因为只有参数的数据类型才会作为函数的签名的一部分来标识函数实体。
;argtype
:函数参数的数据类型，如果有模式的话可以使用模式进行修饰。
;new_name
:函数的新名字
;new_owner
:函数的新所有者。请注意如果函数标记为 SECURITY DEFINER，那么它随后将以新的所有者执行。
;new_schema
:函数的新模式。
;CALLED ON NULL INPUT
;RETURNS NULL ON NULL INPUT
;STRICT
:CALLED ON NULL INPUT 把函数改成在某些或所有参数都是null的时候也可以调用。RETURNS NULL ON NULL INPUT 或者 STRICT 把函数改成如果任何一个参数是空，就越过函数的调用而自动返回默认null。参见 CREATE FUNCTION 获取更多信息。
;IMMUTABLE
;STABLE
;VOLATILE
:把函数的易失属性修改为设定的类型。 参阅 CREATE FUNCTION 细节。
;[ EXTERNAL ] SECURITY INVOKER
;[ EXTERNAL ] SECURITY DEFINER
:修改函数的安全性定义，标识它是否安全定义的。 出于兼容 SQL 标准，关键字 EXTERNAL 被忽略。 参阅 CREATE FUNCTION 获取更多有关这个功能的信息。
;COST execution_cost
:修改函数运行的估计成本。 参阅 CREATE FUNCTION 中的更多信息。
;ROWS result_rows
:修改返回集合类型的函数返回的估计行数。参阅 CREATE FUNCTION 中的更多信息。
;configuration_parameter
;value
:添加或修改函数调用时作为配置参数的参数值。 如果值是DEFAULT或者等价的RESET，函数本地设置被删除，因此函数使用环境中的设置值。使用RESET ALL清除所有函数本地设置。SET FROM CURRENT 保存会话中参数的当前值作为函数执行时使用的值。
:参见 SET 和第18章查看允许的参数名和值。
;RESTRICT
:因兼容 SQL 标准而忽略。
=====示例=====
把名字为 sqrt，参数类型为 integer 的函数重命名为 square_root：
 ALTER FUNCTION sqrt(integer) RENAME TO square_root;
为用于类型 integer 的函数 sqrt 的所有者修改为 joe：
 ALTER FUNCTION sqrt(integer) OWNER TO joe;
把用于类型为 integer 的函数 sqrt 的模式改变为 maths：
 ALTER FUNCTION sqrt(integer) SET SCHEMA maths;
调整函数自动设置的搜索路径：
 ALTER FUNCTION check_password(text) SET search_path = admin, pg_temp;
禁用函数自动设置的查找路径：
 ALTER FUNCTION check_password(text) RESET search_path;
现在，函数将采用调用者使用的搜索路径。
=====兼容性=====
这个语句部分的和SQL标准中的ALTER FUNCTION 语句兼容。 标准允许修改函数的更多的属性，但是没有提供修改函数名字的功能， 也没有提供把一个函数定义为安全定义器的功能，没有为函数提供配置参数，没有提供修改函数所有者、模式和易失性的功能。 标准还要求 RESTRICT 关键字；这在 PostgreSQL 里是可选的。
=====参见=====
CREATE FUNCTION, DROP FUNCTION
ALTER GROUP

=====名字=====
ALTER GROUP -- 修改角色名或者成员关系
=====语法概要=====
 ALTER GROUP group_name ADD USER user_name [, ... ]
 ALTER GROUP group_name DROP USER user_name [, ... ]
 
 ALTER GROUP group_name RENAME TO new_name
=====描述=====
ALTER GROUP 修改一个用户组的属性。 这是一条过时的命令，不过出于向后兼容的原因，还被接受， 因为组（以及用户）都已经被更一般的概念：角色，给代替了。
头两个形式从组中增加或者删除用户。 （任何角色都可以当作"用户"或者"组"来做这个操作。） 这些个变体实际上等效于给名为"group"的角色名上赋予或者撤销成员关系； 因此，做这个事情的比较好的方法是 GRANT 或者 REVOKE。
第三种形式修改一个组的名字。它完全等效于用 ALTER ROLE 重命名角色。
=====参数=====
;group_name
:要修改的组（角色）名称。
;user_name
:准备向组（角色）中增加或从组（角色）中删除的用户名。用户必须已经存在； ALTER GROUP 并不创建或删除用户。
;new_name
:组的新名字。
=====示例=====
向组中增加用户：
 ALTER GROUP staff ADD USER karl, john;
从组中删除用户：
 ALTER GROUP workers DROP USER beth;
=====兼容性=====
SQL标准里没有 ALTER GROUP 语句。
=====参见=====
GRANT, REVOKE, ALTER ROLE
ALTER INDEX

=====名字=====
ALTER INDEX -- 改变一个索引的定义
=====语法概要=====
 ALTER INDEX name RENAME TO new_name
 ALTER INDEX name SET TABLESPACE tablespace_name
 ALTER INDEX name SET ( storage_parameter = value [, ... ] )
 ALTER INDEX name RESET ( storage_parameter [, ... ] )
=====描述=====
ALTER INDEX 改变一个现有索引的定义。 它有几种子形式：
;RENAME
:RENAME 改变索引的名字。对存储的数据没有影响。
;SET TABLESPACE
:这种形式改变索引的表空间为指定表空间，并且把索引相关的数据文件移动到新的表空间里。 参见 CREATE TABLESPACE。
;SET ( storage_parameter = value [, ... ] )
:这种形式改变索引的一个或多个特定该索引算法的存储参数。可用参数的细节可参见CREATE INDEX。注意，命令执行后，索引内容可能不会立即起作用；取决于你设置的参数，可能需要用REINDEX命令重建索引才能体现参数修改后的效果。 
;RESET ( storage_parameter [, ... ] )
:这种形式重置索引的一个或多个特定该索引算法的存储参数为缺省值。就如同SET子句一样，可能需要使用REINDEX重建整个索引。
=====参数=====
;name
:要修改的已有索引的名字（可以有模式修饰）。
;new_name
:索引的新名字。
;tablespace_name
:索引将移动到的表空间的名字。
;storage_parameter
:特定索引算法的存储参数的名字。
;value
:特定索引算法的存储参数的新值。根据不同的参数，值可以是数值或者单词。
=====注意=====
这些操作也可以用 ALTER TABLE 命令完成。 ALTER INDEX 实际上只是 ALTER TABLE 应用于索引的形式的一个别名。
以前还有一个 ALTER INDEX OWNER 变种， 但是现在忽略了（带一个警告）。索引的所有者必须和其表的所有者一样。 改变该表的所有者自动改变索引的所有者。
修改任何系统部分的表索引的操作都是不允许的。
=====示例=====
重命名一个现有的索引：
 ALTER INDEX distributors RENAME TO suppliers;
把一个索引移动到另外一个表空间： 
 ALTER INDEX distributors SET TABLESPACE fasttablespace;
修改一个索引的填充因子(假设这个索引方法支持这个设置)：
 ALTER INDEX distributors SET (fillfactor = 75);
 REINDEX INDEX distributors;
=====兼容性=====
ALTER INDEX 是一个 PostgreSQL 的扩展。
=====参见=====
CREATE INDEX, REINDEX
ALTER LANGUAGE

=====名字=====
ALTER LANGUAGE -- 修改一个过程语言的定义
=====语法概要=====
 ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO new_name
 ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner
=====描述=====
ALTER LANGUAGE 修改过程语言的定义。 目前唯一的功能就是重命名语言或重新设定一个所有者。只有超级用户或过程语言的所有者才可以使用ALTER LANGUAGE命令。
=====参数=====
;name
:过程语言的名字
;new_name
:过程语言的新名字
;new_owner
:过程语言的新所有者
=====兼容性=====
SQL 标准里没有 ALTER LANGUAGE 语句。
=====参见=====
CREATE LANGUAGE, DROP LANGUAGE
ALTER LARGE OBJECT

=====名字=====
ALTER LARGE OBJECT -- 修改大对象的定义
=====语法概要=====
 ALTER LARGE OBJECT large_object_oid OWNER TO new_owner
=====描述=====
ALTER LARGE OBJECT 修改一个大对象的定义。目前唯一的操作是修改一个新所有者。你必须是大对象的超级用户或所有者才能使用ALTER LARGE OBJECT命令。
=====参数=====
;large_object_oid
:希望修改的大对象的OID。
;new_owner
:大对象的新所有者。
=====兼容性=====
SQL标准中没有ALTER LARGE OBJECT 语句。
=====参见=====
9.1第三十二章
ALTER OPERATOR

=====名字=====
ALTER OPERATOR -- 修改一个操作符的定义
=====语法概要=====
 ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) OWNER TO new_owner
 ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) SET SCHEMA new_schema
=====描述=====
ALTER OPERATOR 改变一个操作符的定义。目前唯一能用的功能是改变操作符的所有者。
要使用 ALTER OPERATOR，你必须拥有操作符。 要修改所有者，你必须是新的所有角色的直接或者间接成员， 并且该角色在操作符表的模式上必须有 CREATE 权限。（这强制限制在进行更改所有者的操作时，如果无法通过删除后重建操作符的方式完成，那么就不能做任何事。不过，超级用户可以用任何方法任意更改操作符的所有者。）
=====参数=====
;name
:一个现有操作符的名字（可以有模式修饰）。
;left_type
:操作符的左操作数的数据类型；如果它没有左操作数，那么写 NONE。
;right_type
:操作符的右操作数的数据类型；如果它没有右操作数，那么写 NONE。
;new_owner
:操作符的新所有者。
;new_schema
:操作符的新模式。
=====示例=====
改变一个用于 text 的用户定义操作符 a @@ b 的所有者：
 ALTER OPERATOR @@ (text, text) OWNER TO joe;
=====兼容性=====
在 SQL 标准里没有 ALTER OPERATOR 语句。
=====参见=====
CREATE OPERATOR, DROP OPERATOR
ALTER OPERATOR CLASS

=====名字=====
ALTER OPERATOR CLASS -- 修改一个操作符类的定义
=====语法概要=====
 ALTER OPERATOR CLASS name USING index_method RENAME TO new_name
 ALTER OPERATOR CLASS name USING index_method OWNER TO new_owner
 ALTER OPERATOR CLASS name USING index_method SET SCHEMA new_schema
=====描述=====
ALTER OPERATOR CLASS 修改一个操作符类的定义。
要使用 ALTER OPERATOR CLASS，你必须拥有操作符表。 要修改所有者，你必须是新的所有角色的直接或者间接成员， 并且该角色在操作符表的模式上必须有 CREATE 权限。 （这强制限制在进行更改所有者的操作时，如果无法通过删除后重建操作符类的方式完成，那么就不能做任何事。不过，超级用户可以用任何方法任意更改操作符类的所有者。）
=====参数=====
;name
:一个现有操作符类的名字（可以有模式修饰）.
;index_method
:这个操作符类操作的索引方法的名字。
;new_name
:操作符类的新名字。
;new_owner
:操作符表的新所有者。要修改一个操作符表的所有者，你必须是一个超级用户。
;new_schema
:操作符类的新模式。
=====兼容性=====
在 SQL 标准里没有 ALTER OPERATOR CLASS 语句。
=====参见=====
CREATE OPERATOR CLASS, DROP OPERATOR CLASS
ALTER SCHEMA

=====名字=====
ALTER SCHEMA -- 修改一个模式的定义
=====语法概要=====
 ALTER SCHEMA name RENAME TO new_name
 ALTER SCHEMA name OWNER TO new_owner
=====描述=====
ALTER SCHEMA 修改一个模式的定义。
要使用 ALTER SCHEMA，你必须拥有该模式。 要给一个模式重命名，你必须在该数据库上具有CREATE 权限。 要修改所有者，你还必须是新的所有者角色的直接或者间接成员， 并且必须在该数据库上有 CREATE 权限。 （注意，超级用户自动拥有上面全部权限。）
=====参数=====
;name
:现有模式的名字
;new_name
:模式的新名字，新名字不能以 pg_ 开头， 因为这些名字是保留给系统模式的。
;new_owner
:模式的新所有者。
=====兼容性=====
在 SQL 标准里没有 ALTER SCHEMA 语句。
=====参见=====
CREATE SCHEMA, DROP SCHEMA
ALTER SEQUENCE

=====名字=====
ALTER SEQUENCE -- 修改一个序列生成器的定义
=====语法概要=====
 ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]
 [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
 [ START [ WITH ] start ]
 [ RESTART [ [ WITH ] restart ] ]
 [ CACHE cache ] [ [ NO ] CYCLE ]
 [ OWNED BY { table.column | NONE } ]
 ALTER SEQUENCE name OWNER TO new_owner
 ALTER SEQUENCE name RENAME TO new_name
 ALTER SEQUENCE name SET SCHEMA new_schema
 
=====描述=====
ALTER SEQUENCE 命令修改一个现有的序列发生器的参数。 任何没有明确在 ALTER SEQUENCE 命令里声明的参数都将保留原先的设置。
要使用 ALTER SEQUENCE，你必须拥有该序列。 要改变一个序列的模式，你必须在新的模式上有 CREATE 权限。要修改所有者，你还必须是新的所有者角色的直接或者间接成员， 并且必须在该序列的模式上具有 CREATE 权限。 （这强制限制在进行更改所有者的操作时，如果无法通过删除后重建序列发生器的方式完成，那么就不能做任何事。不过，超级用户可以改变所有序列发生器的所有者。）
=====参数=====
;name
:一个要修改的序列的名字（可以有模式修饰）。
;increment
:INCREMENT BY increment 子句是可选的。一个正数会让序列成为递增序列，负数则成为递减序列。 如果没有声明，将沿用原来的递增值。
;minvalue
;NO MINVALUE
:可选的子句 MINVALUE minvalue 决定一个序列可以生成的最小的值。如果声明了 NO MINVALUE，将使用缺省值， 对于递增和递减的序列分别是 1 和 -2^63-1。如果没有声明任何选项，则沿用当前的最小值。
;maxvalue
;NO MAXVALUE
:可选的子句 MAXVALUE maxvalue 决定序列的最大值。如果声明了 NO MAXVALUE，则使用缺省值， 对于递增和递减的序列分别是 2^63-1 和 -1。如果两个选项都没有声明， 则沿用当前的最大值。
;start
:可选的START WITH start 子句改变序列记录的起始值。当前序列值不受影响，该子句只对后面使用 ALTER SEQUENCE RESTART 命令时使用的值进行设置。 
;restart
:可选的RESTART [ WITH restart ]子句改变序列的当前值。这等效于使用is_called=false参数调用setval函数：设定的值在下一次调用nextval时返回。RESTART 子句如果没有restart值的话，就等效于默认使用 CREATE SEQUENCE 创建序列时记录的起始值或者最后一次使用命令 ALTER SEQUENCE START WITH 设置的起始值。
;cache
:CACHE cache 选项使能序列号预分配功能，将之存储在内存中加快访问。最小值是 1 （也就是每次只能生成一个数值，没有缓冲）。 如果没有声明，将沿用旧的缓冲值。
;CYCLE
:可选的键字 CYCLE 可以用于允许序列在达到递增序列的 maxvalue 或者递减序列的 minvalue的时候重叠使用。 如果达到了极限，那么生成的下一个数字将分别是 minvalue 或者 maxvalue。
;NO CYCLE
:如果指定了可选键字 NO CYCLE，任何在序列达到其最大极限后对 nextval 的调用都将返回错误。 如果既未声明 CYCLE 也未声明 NO CYCLE， 那么将沿用原有的序列号产生方式。
;OWNED BY table.column
;OWNED BY NONE
:OWNED BY 子句将序列与某个表中的列绑定，如此之后如果这个列（或整个表）被删除，序列也将自动被删除。如果设定该子句，之前的绑定都将被替换覆盖。指定的表必须和序列有相同的所有者，并且在一个模式中。OWNED BY NONE子句删除所有已有的绑定，使得序列独立于任何表的列。
;new_owner
:序列新所有者的用户名。
;new_name
:序列的新名字。
;new_schema
:序列的新模式。
 
=====注意=====
为了避免并发的事务从同一个序列获取数值的时候被阻塞住，ALTER SEQUENCE 操作从来不会回滚； 修改马上生效并且不能恢复。但是，OWNED BY, OWNER TO, RENAME TO, 和 SET SCHEMA 子句导致的系统编目的寻常更新可以回滚。
不同于当前后端，ALTER SEQUENCE 命令在其他后端有预分配（已缓冲）的序列号时不会立刻受到影响。它们只有耗尽所有已缓冲的序列值之后才能意识到序列参数的改变。而当前后端将立即被影响。
ALTER SEQUENCE 不影响序列的currval状态。（PostgreSQL8.3之前有时候有影响。）
由于历史原因，ALTER TABLE 也可以用来设置序列；但是ALTER TABLE中那个仅有的用来设置序列的语法形式和上面所示的形式的效果完全相同。
有些 ALTER TABLE 的变种可以和序列一起用； 比如，使用 ALTER TABLE RENAME 给一个序列重命名。
=====示例=====
从 105 开始重新开始一个叫 serial 的序列：
 ALTER SEQUENCE serial RESTART WITH 105;
=====兼容性=====
ALTER SEQUENCE 遵循 SQL 标准， 但是 START WITH, OWNED BY, OWNER TO, RENAME TO, 和 SET SCHEMA 子句除外，这些是 PostgreSQL 扩展。
=====参见=====
CREATE SEQUENCE, DROP SEQUENCE
ALTER SERVER

=====名字=====
ALTER SERVER -- 修改一个外部服务器的定义
=====语法概要=====
 ALTER SERVER server_name [ VERSION 'new_version' ]
 [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]
 ALTER SERVER server_name OWNER TO new_owner
=====描述=====
ALTER SERVER 修改一个外部服务器的定义。 命令的第一种形式用来修改外部服务器的版本号或者外部服务器的通用选项（至少需要指定一个子句）。第二种形式修改外部服务器的所有者。
要对外部服务器进行修改，需要是它的所有者。 另外，要修改所有者的话，必须是这个外部服务器所有者，还必须是新角色的直接或间接成员，还必须在外部服务器的外部数据封装上具有USAGE权限。（注意，超级用户自动具备以上条件）。
=====参数=====
;server_name
:已有外部服务器的名字。
;new_version
:外部服务器的新版本号。
;OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )
:修改外部服务器的选项。 ADD, SET, 和 DROP 指定所进行的操作。 如果没有指定操作的话，默认就是ADD操作。 选项的名字必须唯一；选项名和值必须能够通过外部服务器的外部数据封装库的合法性验证。
=====示例=====
修改外部服务器foo，添加连接选项：
 ALTER SERVER foo OPTIONS (host 'foo', dbname 'foodb');
修改外部服务器foo，修改版本号，修改选项host：
 ALTER SERVER foo VERSION '8.4' OPTIONS (SET host 'baz');
=====兼容性=====
ALTER SERVER 命令兼容 ISO/IEC 9075-9 (SQL/MED) 。
=====参见=====
CREATE SERVER, DROP SERVER
AndroidAppContest

= PostgreSQL Android Application Contest =
We are having a contest to create an open source PostgreSQL application for the Android OS. The prize is a brand-new Nexus One phone generously donated by Google.
== Timeline ==
* April 25, 2010: contest announced
* July 6, 2010: entries due
* PDXPUG Day, OSCON, July 19 OSCON 2010: winners announced
== Contestants ==
* Stephen Denne - pgQuilt (.apk)
* Magnus Hagander - Mailing List Moderator (.apk)
* Roland Tritsch - ChargeFinder (.apk)
* Mark Wong - PGTop (.apk)
* Marek Wróbel & Albert Łącki - Barcode Inventory (.apk)
== Prize ==
Winner: Brand-new developer version (unlocked) Nexus One phone from Google.
All participants who complete an app will get a Postgres 9 shirt.
Also, all participants will be blogged and announced.
== Rules ==
# The contest participant must have done the majority of the coding work on the application.
# The application can be anything which is functionally dependent on or complementary to PostgreSQL. This would include things like a simple PostgreSQL GUI or query creator, a PostGIS geo application, or similar. 
# Applications which do not actually use the database, but are complementary to PostgreSQL use, such as an EXPLAIN ANALYZE viewer or PostgreSQL documentation searcher, are also permitted.
# PostgreSQL need not (and really should not) be run on the phone. For this reason, the application can depend on having a data connection.
# The source code must be distributed under an OSI-approved license, and delivered with the completed application to the contest judges. Source code will be distributed by the judges via a Git repo at git.postgresql.org. BSD or PostgreSQL license is preferred but not required.
# The application must be available in an Android-standard package, but submitting it for the Marketplace is not a requirement.
# You must live somewhere we can affordably ship the Nexus One from the USA and reasonably expect it to arrive intact. If in doubt, ask us.
# The application cannot already be available before April 15, 2010.
# All three judges must be able to install and try the application on their phones. This means making the application compatible with Android version 1 (likely 1.6 is good enough).
== Judges ==
*Josh Berkus (testing on both G1 and Nexus One)
*Selena Deckelmann (testing on G1)
*Matthew Momjian (testing on G1)
== E-mail for Participation ==
Please join the pgAndroid Google Group
== Questions asked by participants ==
Q: Where can I find the android SDK?
A: http://developer.android.com/sdk/index.html
Q: What is the minimum SDK API level required? (i.e. is it sufficient to support android 1.6 to run on the G1 phones?)
A: 1.6 should be sufficient.
Category:Mobile application
Apt Installation for IBM Z

==PostgreSQL packages for Ubuntu for Linux on IBM Z (s390x)==
Currently, we support
* 16.04 (xenial), 18.04 (bionic)
* Architectures: s390x (IBM Z)
* PostgreSQL 10
==Quickstart==
Create /etc/apt/sources.list.d/pgdg.list. The distributions are called codename-pgdg. In the example, replace bionic with the actual distribution you are using:
 deb http://packages.2ndquadrant.com/postgresql-z/apt/ bionic-pgdg main
(You may determine the codename of your distribution by running lsb_release -c). For a shorthand version of the above, presuming you are using a supported release:
 sudo sh -c 'echo "deb http://packages.2ndquadrant.com/postgresql-z/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Import the repository key from http://packages.2ndquadrant.com/postgresql-z/07F98489.asc, update the package lists, and start installing packages:
 sudo apt-get install wget ca-certificates
wget --quiet -O - http://packages.2ndquadrant.com/postgresql-z/07F98489.asc | sudo apt-key add -
 sudo apt-get update
 sudo apt-get upgrade
 sudo apt-get install postgresql-10
Note: This repository provides "postgresql", "postgresql-contrib", and "postgresql-client" meta-packages that depend on the latest postgresql-x.y, ... packages, similar to the ones present in Debian and Ubuntu. Once a new PostgreSQL version is released, these meta-packages will be updated to depend on the new version. If you rather want to stay with a particular PostgreSQL version, you should install specific packages like "postgresql-10" instead of "postgresql".
Apt/Jenkins

==Overview==
Packages are built in a Jenkins installation at https://pgdgbuild.dus.dg-i.net/ (login required, see below).
We are using a slightly patched variant of Mika Prokop's Jenkins-Debian-Glue scripts.
Our version is at https://git.postgresql.org/gitweb/?p=pgapt.git;a=tree;f=jenkins.
For every package, there are two jobs:
* foobar-source builds .dsc source packages from an VCS repository, which triggers
* foobar-binaries builds .deb binary packages from the source packages
* Some packages have a foobar-testsuite job that executes the autopkgtests. (The other packages execute this as part of -binaries.)
These jobs then trigger a common job:
* dput uploads the source and binary packages to the repository host
There are some other jobs for maintenance tasks:
* apt.postgresql.org updates the build scripts used on the build host from git, and also runs jenkins-job-builder to update/create jobs
* sbuild-update updates the build chroots
* debcheck runs debcheck installability checks on the repository
==Jenkins Login==
To access the Jenkins web interface, an SSL client certificate from sso.debian.org is required.
* An account on alioth.debian.org is required first
* Go to sso.debian.org and log in with your alioth account (which usually includes the "-guest" suffix)
* Click on "SSO certificates" in the upper right corner
* Your browser will generate an SSL client certificate, and the server will sign it (chromium will ask for your permission here)
* https://pgdgbuild.dus.dg-i.net/ should recognize you now
==Jenkins Configuration==
The Jenkins config is autogenerated from a YAML description in our git repo using Jenkins Job Builder.
https://git.postgresql.org/gitweb/?p=pgapt.git;a=tree;f=jenkins
Apt/Packages

= Packages on apt.postgresql.org =
Generally, packages should be kept in sync between apt.postgresql.org and Debian unstable. Some packages are only present in apt.postgresql.org (see below). Other differences should generally be avoided. If packages need extra tweaks that cannot be represented by normal patches (debian/patches/ directory in the source package), the generate-pgdg-source script can apply changes at "build source" time for apt.postgresql.org. "Binary builds" will also set dpkg build profiles named after the target distribution, but that mechanism isn't used widely yet as it's not sanctioned by Debian policy.
== Packages only on apt.postgresql.org ==
Debian releases contain only one PostgreSQL major version. Other major versions exist as source packages only on apt.postgresql.org. For a small number of other packages, the same split has been done:
* postgresql-NN
* pgaudit-NN: separate packages per supported PG major version
* pg-hint-plan-NN: separate packages per supported PG major version
* postgresql-NN-age: separate packages per supported PG major version
Some packages are only on apt.postgresql.org for licensing or packaging reasons:
* elephant-shed: OSS, but depends on many other components and tweaks some configs in ways that Debian might not like
* omdb-postgresql: no problems, just no upload to Debian yet
* oracle-libs: downloader package for Oracle client libraries
* oracle-fdw: needs oracle-libs
* pgdg-buildenv: only applicable to the apt.pg.o build daemons
* postgresql-pljava: depends on a load of java libraries which are likely not all packaged yet
* powa-web: contains minified Javascript, JS package manager "bower" is not packaged
Some packages target older PostgreSQL major versions and are no longer in Debian unstable:
* amcheck: merged into core in PG > 10
* pgespresso: barman helper extension in PG <= 9.5
Apt/PostgreSQL10

= Status of PostgreSQL 10 extensions in Debian and apt.postgresql.org =
Transition tracker: https://release.debian.org/transitions/html/postgresql-10.html
* postgresql-*-mysql-fdw: 9.2 10
** new version released (and uploaded to Debian), still buggy: https://github.com/EnterpriseDB/mysql_fdw/issues/147
* skytools3 aka postgresql-*-pgq3: 10
** package refactored upstream, needs major repackaging, see https://github.com/pgq
* postgresql-*-pgstatplans: 9.3 9.4 9.5 9.6 10
** package dead upstream since 2013
* postgresql-*-python-multicorn: 10
** PG10 issue fixed (https://github.com/Kozea/Multicorn/issues/191), but still fails on older python versions
Apt/RepoDocs

This page documents the package and repository workflow of apt.postgresql.org.
== Packages ==
Almost all packages in the repository are rebuilds of packages in Debian unstable (aka sid). Most packages are rebuilt unmodified, except for a new entry in debian/changelog that adds the ".pgdgNN+X" suffix to the version number.
The reason for the suffix is twofold:
* The added ".pgdg" clearly marks the origin of this package; every .deb file will have ".pgdg" in the filename.
* The "NN+X" part makes sure dist-upgrades work: .pgdg60+1 (squeeze) < .pgdg70+1 (wheezy) < .pgdg+1 (sid), and .pgdg10.4 (lucid) < .pgdg12.4 (precise) < .pgdg14.04 (trusty). (Ubuntu's original spelling of the version numbers is with a leading zero, but we chose not to change the strings we originally started with for lucid an precise.)
All packages are built several times to produce source and binary packages for various distribution (Debian-speak for "release") and architecture combinations. Currently (early 2014) this is (squeeze+wheezy+sid+lucid+precise+trusty)*(amd64+i386) = 12.
== Build Scripts ==
All scripts used are maintained on a git repository: http://git.postgresql.org/gitweb/?p=pgapt.git;a=summary. While there is still some old cruft in there, the "jenkins" and "repo" sub directories contain the scripts that are currently used.
Package builds are done in two steps: generation of the source package(s), and building the binary packages.
=== Source Package Generation ===
Most packages are built from the VCS that hosts the package for Debian (i.e. Debian/unstable). Some packages use "apt-get source" from unstable instead. From a checkout (or unpacked source package from unstable), the "generate-pgdg-source" script produces a source package (.dsc file). This is usually just the above-mentioned new changelog entry, but a few packages get special tweaks applied here, either unconditionally, or depending on the target distribution (e.g. on lucid, the xz compression support for .deb files is unsupported, so it is removed here using sed/awk).
This step is repeated once per target distribution.
=== Building Binary Packages ===
The source packages are then fed to cowbuilder (a pbuilder variant) that builds the binary .deb packages. The script used for this is "build-and-provide-package", slighly patched from the jenkins-debian-glue project. (We don't use the "provide" part of the script, just the "build" part.)
This script also invokes the autopkgtest test suite in debian/tests/*, if the package features one. This is invoked from a pbuilder hook in jenkins/pbuilder-hookdir.
This step is repeated once for every distribution-architecture combination.
== Automation in Jenkins ==
All the above steps are automated using Jenkins.
== Repository Layout ==
The repository is a standard "reprepro" setup.
Argentina: PostgreSQL Day 2008

* Introducción de la comunidad (ArPug)
* Open Solaris y Postgresql (Hernan Saltiel)
* Alta Disponibilidad con Postgresql (Diogo Biazus-Brasil)
* Postgresql 8.4 (David Fetter)
* PyReplica (Mariano Reingart)
* Propuesta de Venezuela (Ernesto Lozano y Hector Lopez)
Próximamente subiremos el resto de los videos a youtube. Para verlos en baja definición o bajar las presentaciones, ir a la Página del evento en el ArPUG
Category:PostgreSQL Events