nyuuzyou/wikis huggingface dataset:
CVS Branch Management

Warning: the PostgreSQL project is using Git now for version control. See Using Back Branches instead of this document for information about listing and checking out old branches of the code
----
This was written by Tom Lane - 2001-05-07
If you just do basic "cvs checkout", "cvs update", "cvs commit", then you'll always be dealing with the HEAD version of the files in CVS. That's what you want for development, but if you need to patch past stable releases then you have to be able to access and update the "branch" portions of our CVS repository. We normally fork off a branch for a stable release just before starting the development cycle for the next release.
The first thing you have to know is the branch name for the branch you are interested in getting at. To obtain the list of existing branches, you can use this command:
 cvs status -v configure.in
(Thanks to Ian Lance Taylor for pointing out that this is the easiest way to do it.) Typical branch names are:
 REL7_1_STABLE
 REL7_0_PATCHES
 REL6_5_PATCHES
OK, so how do you do work on a branch? By far the best way is to create a separate checkout tree for the branch and do your work in that. Not only is that the easiest way to deal with CVS, but you really need to have the whole past tree available anyway to test your work. (And you *better* test your work. Never forget that dot-releases tend to go out with very little beta testing --- so whenever you commit an update to a stable branch, you'd better be doubly sure that it's correct.)
Normally, to checkout the head branch, you just cd to the place you want to contain the toplevel "pgsql" directory and say
 cvs ... checkout pgsql
To get a past branch, you cd to wherever you want it and say
 cvs ... checkout -r BRANCHNAME pgsql
For example, just a couple days ago I did
 mkdir ~postgres/REL7_1
 cd ~postgres/REL7_1
 cvs ... checkout -r REL7_1_STABLE pgsql
and now I have a maintenance copy of 7.1.*.
When you've done a checkout in this way, the branch name is "sticky": CVS automatically knows that this directory tree is for the branch, and whenever you do "cvs update" or "cvs commit" in this tree, you'll fetch or store the latest version in the branch, not the head version. Easy as can be.
So, if you have a patch that needs to apply to both the head and a recent stable branch, you have to make the edits and do the commit twice, once in your development tree and once in your stable branch tree. This is kind of a pain, but there is no better way.
Category:Historical information
Cyclic Tag System

This SQL query (requires PostgreSQL 8.4) forms a cyclic tag system (wikipedia), which is sufficient to demonstrate that SQL is Turing-complete. It is written entirely in SQL:2003-conformant SQL.
Thanks to Andrew (RhodiumToad) Gierth, who came up with the concept and wrote the code.
The productions are encoded in the table "p" as follows:
 "iter" is the production number;
 "rnum" is the index of the bit;
 "tag" is the bit value.
This example uses the productions:
 110 01 0000
The initial state is encoded in the non-recursive union arm, in this case just '1'
The mod(r.iter, n) subexpression encodes the number of productions, which can be greater than the size of table "p", because empty productions are not included in the table.
Parameters:
 the content of "p"
 the content of the non-recursive branch
 the 3 in mod(r.iter, 3)
"p" encodes the production rules; the non-recursive branch is the initial state, and the 3 is the number of rules
The result at each level is a bitstring encoded as 1 bit per row, with rnum as the index of the bit number.
At each iteration, bit 0 is removed, the remaining bits shifted up one, and if and only if bit 0 was a 1, the content of the current production rule is appended at the end of the string.
WITH RECURSIVE
p(iter,rnum,tag) AS (
 VALUES (0,0,1),(0,1,1),(0,2,0),
 (1,0,0),(1,1,1),
 (2,0,0),(2,1,0),(2,2,0),(2,3,0)
),
r(iter,rnum,tag) AS (
 VALUES (0,0,1)
UNION ALL
 SELECT r.iter+1,
 CASE
 WHEN r.rnum=0 THEN p.rnum + max(r.rnum) OVER ()
 ELSE r.rnum-1
 END,
 CASE
 WHEN r.rnum=0 THEN p.tag
 ELSE r.tag
 END
 FROM
 r
 LEFT JOIN p
 ON (r.rnum=0 and r.tag=1 and p.iter=mod(r.iter, 3))
 WHERE
 r.rnum>0
 OR p.iter IS NOT NULL
)
SELECT iter, rnum, tag
FROM r
ORDER BY iter, rnum;
Database Administration and Maintenance/ja

== 一般的な管理トピック ==
*クライアント認証 (pg_hba.conf)
*プランナ統計情報
* PostgreSQL データベースにおけるトータル・セキュリティー 2009-11-17
* シンプルな設定の提案
* アプリケーション用データベーススキーマの推奨設定
== バックアップ ==
*Linuxでの自動バックアップ
*Windowsでの自動バックアップ
その他の文書はBackupカテゴリを参照してください。
== リストアとリカバリ ==
== 定常的なメンテナンスと監視 ==
*バキューム処理
*PostgreSQLの状態と監視
*ロック状態の監視
*インデックスのメンテナンス
*ディスク使用量の確認
== Windows系のカテゴリ ==
Windowsカテゴリ
Category:General articles and guides
Database Hardware

==Disk and hardware setup==
*Database Hardware for PostgreSQL (PDF) by Greg Smith
*Testing your disks for PostgreSQL by Greg Smith
*Ext2 vs Ext3 on 50 spindles by Joshua Drake
*Dell md1000 bonnie++ benchmarks by Merlin Moncure
*SCSI vs. IDE/SATA Disks
*Direct Storage vs. SAN
*Intel vs. AMD Processors
*Community Disk Tuning Guide (work in progress)
* HP ProLiant DL380 G5 Tuning Guide 
Category:PerformanceCategory:Benchmarking
Database Schema Recommendations for an Application/ja

原文最終更新日：22 February 2013
== アプリケーションのためのデータベーススキーマ推奨設定 ==
PostgreSQLデータベースクラスタの範囲において、オブジェクトの分割と名前空間の基本的な手法はデータベースの管理とスキーマデータ定義にて解説されています。
複数命名されたスキーマを伴った単一のデータベースを作成することを推奨します。これは、複数データベースを作成し、"public"スキーマ内にオブジェクトを格納する一般的な（そしてより古い）事例と相違があります。加えて、publicスキーマを削除することを推奨します。
この推奨設定に倣うことでいくつかの優位点があります：
* スキーマを跨ったオブジェクトへのアクセスが単一のデータベース接続にて可能となります。
* スキーマへのアクセスの権限付与はpg_hba.confファイルの再設定ではなくGRANT文を通じて実行されます。
* スキーマのオブジェクト分割と名前空間がANSI標準となります。
* 単一のサーバ（PostgreSQLクラスタ）内の一つのデータベースのみ管理します。
データベースを分割する方法を利用する優位点は、データベースに接続されたセッションが、データベースの境界を越えられないことです。オブジェクトの分割はより完璧です。しかしながら、もっとオブジェクトを分割したい（例えば違う環境変数を使う）場合は、新たなサーバを作成することを推奨します。
注記：データベースレベルの分割は、db_user_namespace設定パラメータを用いて結合された複数テナントホスティングのために使用することができます。スキーマの再分割は、それぞれのホスティングされたデータベースにおいてデータベース構成要素の分割のために重要な機能となります。
===テーブルスペースを作成する===
それぞれのアプリケーションに最適なテーブルスペースのセットを作成してください。これはアプリケーションごとに記憶媒体の物理的な分割を提供します。アプリケーションの範囲において記憶媒体の分割も提供可能です。テーブルとインデックスの記憶媒体の分離は、管理の柔軟性の向上と性能向上を提供することができます。
PostgreSQLは、ホストOSがデバイス管理を提供することを要求します。テーブルスペースの記憶媒体を分割し、制御するためにそれぞれのテーブルスペースごとにファイルシステムを作成してください。以下は、pgdatapoolとpgindexpoolという名称の記憶媒体プールを伴ったZFS利用例です。2つの10GBのテーブルスペースはとあるアプリケーションで、1つはテーブル用、もう1つはインデックス用に使用されます。
Unixコマンド：
 zfs create -o mountpoint=/pgdata/app1_data pgdatapool/app1_data
 zfs set refquota=10G pgdatapool/app1_data
 zfs set refreference=10G pgdatapool/app1_data
 zfs create -o mountpoint=/pgdata/app1_index pgindexpool/app1_index
 zfs set refquota=10G pgindexpool/app1_index
 zfs set refreference=10G pgindexpool/app1_index
SQLコマンド：
 create tablespace app1_data location '/pgdata/app1_data';
 create tablespace app1_index location '/pgdata/app1_index';
===アカウントとロールを作成する===
PostgreSQLデータベースオブジェクトは、アカウント（ロール）の所有権を持っています。オブジェクトの空間に名前付けるスキーマと同意のアカウントを作成してください。このアカウントはオブジェクトの所有者として使用されます。セキュリティ目的のために、アカウントが所有するアプリケーションのデータベースオブジェクトへのanyoneの接続権限を許可しないでください。このアカウントは、以前に作成されたテーブルスペースへのアクセスが必要となります。アプリケーションオブジェクトが作成された時に、所有権が正しく設定されていることを確かめてください。
 create user app1 nologin;
 grant create on tablespace app1_data to app1;
 grant create on tablespace app1_index to app1;
ユーザもしくはアプリケーションアカウントにデータベースオブジェクトの権限を付与することは、ロールの使用を通じて行います。アプリケーション用に適切なロールを作成してください。簡潔にするには、少なくとも2つのロールを作成し、一つはアプリケーション用の読み書き権限に使用し、一つは問い合わせ用に使用します。データベースとしてアプリケーション用に作成されたオブジェクトには適切な権限付与をロールに適用します。
 create role app1_role;
 create role app1_query_role;
アプリケーションは一般的に、アプリケーションサーバからプール（共有）されたアカウントを使用してデータベースに接続します。これらのアカウントの認識と資格情報を制限してください。可能であれば、これらのアカウントが定義済みアプリケーションサーバからのみデータベースに接続できるようにpg_hba.confの定義を使用してください。
 create user app1_pool password 'app1_pool';
 grant app1_role to app1_pool;
===アプリケーションスキーマを作成する===
アプリケーションスキーマを作成し、アプリケーションユーザとロールに適切な権限を付与してください。定義済みスキーマ内のアプリケーションオブジェクトの作成と適切なオブジェクト所有権の設定を確認してください。
 create schema app1 authorization app1;
 grant usage on schema app1 to app1_role;
 grant usage on schema app1 to app1_query_role;
===免責事項===
これらはDBAの経験からの推奨設定です。これらを倣うことも、拒否することもできます。個人的には、アプリケーションスキーマを管理するために、これらいくつかの単純な方法に倣うことによって、人生を簡単にできます。
Category:Administration
Category:Japanese
DataWarehousing

= Data Warehousing Features =
* On-disk Bitmap Index (anyone game to finish GP patch?)
* Error Handling in COPY
* Parallel Query
* Windowing Functions
* MERGE
* Parallel Index Build
Note that there's much overlap between here and the Simon Riggs' Development Projects planning.
== On-Disk Bitmap Index ==
== Error Handling in COPY ==
Handled OK by pg_loader, so lower priority
== Parallel Query ==
2 main kinds are single-node and multi-node parallelism
Fairly easy to get something working to improve SeqScan performance, but will be more difficult to get something working that applies further up into the executor.
Challenges are
* Planner changes
* How to manage the pool of query slaves
* Deciding which parts of the data are accessed by which slave
Notably the last two aren't an issue at all in most multi-node parallel architectures, since there is one query slave per node, plus each node operates only on the data that has been statically partitioned to it, often using a hash partitioning scheme.
== Windowing Functions ==
SQL:2003 feature
== MERGE ==
SQL:2003 feature
== Parallel Index Build ==
Josh Berkus: not sure how this works exactly, but it speeds Oracle 
up considerably
== Slides ==
Overview of "Data warehousing with PostgreSQL" presented by Gabriele Bartolini at PGDay.EU 2009 ()
Category:Asking Questions
Date Generator

Category:SQL
by Scott Bailey 'Artacus' 
When working with scheduling applications, having a date relation (a table of dates) is pretty much a requirement. However, someone challenged me on why I was materializing it when Postgres could have generated it on the fly with a set returning function.
Some testing showed that generating it on the fly performed as well as reading from disk, even when all of the pieces I was filtering on were broken out and indexed.
CREATE OR REPLACE FUNCTION generate_dates(
 dt1 date,
 dt2 date,
 n int
) RETURNS SETOF date AS
$$
 SELECT $1 + i
 FROM generate_series(0, $2 - $1, $3) i;
$$ LANGUAGE sql IMMUTABLE;
== Usage ==
-- Select even days in odd months
SELECT dt, to_char(dt, 'FMDAY, DD MON YYYY') 
FROM generate_dates('2009-01-01', '2009-12-31', 1) dt
WHERE MOD(EXTRACT(MONTH FROM dt)::int,2) = 1 AND MOD(EXTRACT(DAY FROM dt)::int,2) = 0;
== Note ==
PostgreSQL 8.4 provides a generate_series(timestamptz, timestamptz, interval) function which returns a set of timestamptz.
Date LastDay

Category:SQL
by Scott Bailey 'Artacus'
Often when working with dates, we either need to get the first day of the month or the last day of the month. Getting the first day is easy and can be done with date_trunc.
 SELECT date_trunc('MONTH', dtCol)::date;
But getting the last day is not so straight forward. Users coming from Oracle will recognize this one.
CREATE OR REPLACE FUNCTION last_day(date)
RETURNS date AS
$$
 SELECT (date_trunc('MONTH', $1) + INTERVAL '1 MONTH - 1 day')::date;
$$ LANGUAGE 'sql' IMMUTABLE STRICT;
== Note ==
This snippet was borrowed from the Chronos Temporal Extensions project. Chronos is a complete toolkit for working with temporal data in Postgres and Oracle. I'll post some of the more general functions here. (Since I'm the author, I guess that's alright.)
Date WeekOfMonth

Category:SQL
by Scott Bailey 'Artacus'
When scheduling recurring events it is often necessary to get the week of month. For instance, Thanksgiving is always the 4th Thursday in November or the local PostgreSQL Users Group meeting is the last Saturday of every month.
Getting the week of month from the beginning of the month is easy.
 SELECT to_char(dtCol, 'W');
But getting the second to last Tuesday of March is more difficult. Here we're going to need the last_day() function.
CREATE OR REPLACE FUNCTION week_of_month(
 p_date DATE,
 p_direction INT -- DEFAULT 1 -- for 8.4 and above
) RETURNS INT AS
$$
 SELECT CASE WHEN $2 >= 0 THEN
 CEIL(EXTRACT(DAY FROM $1) / 7)::int
 ELSE 
 0 - CEIL(
 (EXTRACT(DAY FROM last_day($1)) - EXTRACT(DAY FROM $1) + 1) / 7
 )::int
 END
$$ LANGUAGE 'sql' IMMUTABLE;
-- for 8.3 and below (no default params)
CREATE OR REPLACE FUNCTION week_of_month(
 p_date DATE
) RETURNS INT AS
$$
 RETURN week_of_month($1, 1);
$$ LANGUAGE IMMUTABLE STRICT;
== Usage ==
-- Find Thanksgiving and Black Friday for next few years
SELECT cal_date, to_char(cal_date, 'Dy') dow
FROM info_calendar c
WHERE cal_date BETWEEN current_date AND '2012-12-01'
 AND EXTRACT(MONTH FROM cal_date) = 11 
 AND week_of_month(cal_date) = 4
 AND EXTRACT(DOW FROM cal_date) IN (4,5);
 cal_date dow 
 ----------- ------ 
 11/26/2009 Thu 
 11/27/2009 Fri 
 11/25/2010 Thu 
 11/26/2010 Fri 
 11/24/2011 Thu 
 11/25/2011 Fri 
 11/22/2012 Thu 
 11/23/2012 Fri 
SELECT c.cal_date, week_of_month(cal_date,1),
 week_of_month(cal_date, -1), to_char(cal_date, 'Dy') dow
FROM info_calendar c
WHERE c.cal_date BETWEEN '2009-01-01' AND last_day('2009-01-15');
 cal_date week_of_month week_of_month dow 
 ----------- ---------------- ---------------- ------ 
 1/1/2009 1 -5 Thu 
 1/2/2009 1 -5 Fri 
 1/3/2009 1 -5 Sat 
 1/4/2009 1 -4 Sun 
 1/5/2009 1 -4 Mon 
 1/6/2009 1 -4 Tue 
 1/7/2009 1 -4 Wed 
 1/8/2009 2 -4 Thu 
 1/9/2009 2 -4 Fri 
 1/10/2009 2 -4 Sat 
 1/11/2009 2 -3 Sun 
 1/12/2009 2 -3 Mon 
 1/13/2009 2 -3 Tue 
 1/14/2009 2 -3 Wed 
 1/15/2009 3 -3 Thu 
 1/16/2009 3 -3 Fri 
 1/17/2009 3 -3 Sat 
 1/18/2009 3 -2 Sun 
 1/19/2009 3 -2 Mon 
 1/20/2009 3 -2 Tue 
 1/21/2009 3 -2 Wed 
 1/22/2009 4 -2 Thu 
 1/23/2009 4 -2 Fri 
 1/24/2009 4 -2 Sat 
 1/25/2009 4 -1 Sun 
 1/26/2009 4 -1 Mon 
 1/27/2009 4 -1 Tue 
 1/28/2009 4 -1 Wed 
 1/29/2009 5 -1 Thu 
 1/30/2009 5 -1 Fri 
 1/31/2009 5 -1 Sat 
== Note ==
This snippet was borrowed from the Chronos Temporal Extensions project. Chronos is a complete toolkit for working with temporal data in Postgres and Oracle. I'll post some of the more general functions here. (Since I'm the author, I guess that's alright.)
DbForge Data Compare for PostgreSQL

== About ==
dbForge Data Compare for PostgreSQL is a tool that makes table data comparison and synchronization nearly effortless. It is designed to help you quickly detect differences in table data, review and analyze them, and generate scripts to synchronize the content of source and target databases.
== Key Features: ==
Explore the differences between two databases 
* The clean UI and intuitive wizards make it easy to review and analyze comparison results.
* You can customize the viewing and management of differences to your liking and select what objects are to be shown in the results.
Compare tables with different structures 
* Data Compare automatically maps the objects that you want to compare: tables, views, columns, and schemas. 
* You can modify the default mapping to map tables with different names and structures.
 
Compare custom queries 
* You can compare an actual table with a custom query execution result.
* A WHERE clause can be specified to exclude unwanted rows from the comparison.
Generate comparison reports 
* Data Compare helps you create comprehensive reports that showcase the differences in your data.
* Comparison reports can be generated in CSV, XLS, and HTML.
Synchronize table data fully or partially 
* You can use the grid with the comparison results to select the data that must be synchronized to the target database.
* A handy wizard will help you configure the output and options.
* A sync script will be generated in a split second. You can execute it immediately or save it to a file.
 
Automate data synchronization 
* You can use Windows Task Scheduler to create and manage synchronization tasks that your computer will run automatically at the specified time.
Run Data Compare on different operating systems 
* The product is available on Windows, Linux, and macOS; the latter two options are enabled via a special compatibility solution called CodeWeavers CrossOver.
Learn more
dbForge Data Compare for PostgreSQL comes with a free 30-day trial; feel free to download it here.
To learn more about Data Compare, please this page.
DbForge Schema Compare for Redshift/PostgreSQL

== About ==
dbForge Schema Compare for PostgreSQL (also fully compatible with Amazon Redshift) is a tool for easy and effective comparison and synchronization of database structure differences. With its help, you can identify and review differences in database schemas and generate SQL scripts to synchronize source and target databases.
== Key features: ==
Compare schemas and analyze comparison results
* Filter, group, and sort objects in results
* View differences in DDL for each object pair
* Preview schema update script for each object
* Generate detailed comparison reports
Deploy comparison results to target databases
* Generate deployment scripts for review or synchronization purposes
* Migrate schema differences (individual, selected, or all)
* Run dependency checks to script objects in the correct order
* Get warnings on possible issues before synchronization
* Resolve sync issues automatically
Supported databases
* Amazon Redshift
* PostgreSQL (limited)
* Amazon RDS for PostgreSQL (limited)
* Azure PostgreSQL (limited)
Supported objects
* Schemas
* Tables
* Views
* Procedures
* Functions
* Comments
* Materialized views
Additionally, you can compare and synchronize pre-object security permissions as well as PL/pgSQL and Python code.
Use Schema Compare on Windows, Linux, and macOS
Schema Compare is available on Windows, Linux, and macOS; to use it on the latter two platforms, you need to download and install a special compatibility solution called CodeWeavers CrossOver.
Learn more
dbForge Schema Compare for PostgreSQL is a completely free product; feel free to download it here.
To learn more about Schema Compare, please visit this page.
DBT-2

==DBT-2==
Current source may be checked out from:
 git clone git://osdldbt.git.sourceforge.net/gitroot/osdldbt/dbt2
Note that the current version doesn't `make` correctly if more than one database is installed on your system. Patches welcome. :)
==User Guide==
===Installing PostgreSQL===
The OSDL-DBT-2 test kit was originally ported to work with PostgreSQL 7.3. This doc is being updated for the 8.4beta2 version of Pg. Current source code for PostgreSQL can be downloaded from http://www.postgresql.org
Before running the configure script for PostgreSQL, alter src/include/pg_config_manual.h so that INDEX_MAX_KEYS = 64.
For a standard install:
 ./configure --prefix=<installation dir>
 make
 make install
Check ./configure --help and the PostgreSQL documentation for other configuration options.
DO NOT run initdb or start the postmaster at this point. Our script will create the database and start the database engine for you.
===Installing the DBT-2 Test Kit===
The latest stable version of the kit can be found on PostgreSQL's git repo at:
 git clone git://osdldbt.git.sourceforge.net/gitroot/osdldbt/dbt2
Follow the instructions in INSTALL. Check the README(s) included with the source for information specific to your environment.
Things to check if you are having problems building:
* is pg_config in your path? (e.g. /usr/local/pgsql/bin)
===Building the Database===
====Sizing====
====Creating the Database====
====Backing Up & Restoring the Database====
===Running the DBT-2 Test Kit===
====Finding & Interpreting the Results====
====Customize Your Tests====
== Additional resources ==
* How to use dbt-2 slides
* How to use dbt-2 video
* Sample walkthrough (parts outdated)
* Sample report
* MySQL dbt-2 sample
Category:Benchmarking
DBT-5

dbt-5 is a benchmarking program testing an OLTP workload simulating the activities of a brokerage firm. It is a fair usage implementation of the TPC's TPC-E Benchmark specification.
It was developed by Rilson Nascimento, having Mark Wong as mentor, as a project in Google Summer of Code 2006.
dbt-5 code is available from the project's git repo.
Information about the test:
* Digesting an open-source fair-use TPC-E implementation
* Notes about TPC-E (from IBM)
DDL Triggers

==DDL Triggers==
This page is meant to coordinate work on DDL triggers.
===Use cases===
* Enforce business logic
** Example: Restrict table names to certain rules (CREATE TABLE trigger)
* Auditing
** Example: Need to know when somebody has dropped a table
* Replication
** Slony, Bucardo, etc. could replicate DDL statements automatically
===Issues===
* Use of the existing hook
** Need to support people who cannot use the hook (e.g. PgAdmin)
* Current utility function is recursive: triggers should only fire on first call
* What to export? Start simple with:
** type of object
** OID of object
** name of object
** action
* Use nodeToString or nodeToSql?
* Returning the original string?
* Syntax of the call
* How to store in a system table (map action to function)
Category:SQL
Deleting duplicates

A frequent question in IRC is how to delete rows that are duplicates over a set of columns, keeping only the one with the lowest ID.
This query does that for all rows of tablename having the same column1, column2, and column3.
DELETE FROM tablename
WHERE id IN (
 SELECT
 id
 FROM (
 SELECT
 id,
 row_number() OVER w as rnum
 FROM tablename
 WINDOW w AS (
 PARTITION BY column1, column2, column3
 ORDER BY id
 )
 ) t
WHERE t.rnum > 1);
Sometimes a timestamptz field is used instead of an ID field.
Deutsch

== User Dokumentation in Deutsch ==
=== PostgreSQL Marketing ===
Fragen, Anleitungen und Dokumente rund um das PostgreSQL Marketing
in Deutschland findet Ihr unter:
PostgreSQL Marketing im deutschsprachigen Raum
=== deutschsprachige Präsentationen ===
* FrOSCon 2012
* PGConf.DE 2011
* FrOSCon 2011
=== Externe Webseiten ===
* deutsches PostgreSQL Forum
=== Deutsche Hilfetexte ===
* FAQ-Sammlung im deutschen PostgreSQL Forum (z.B. Installation unter Windows)
* Offizielle FAQ
!
Development information

__NOTOC__
This area includes developer-targeted documentation regarding aspects of PostgreSQL development. Please visit the developer area of the PostgreSQL website for more general information about the development of PostgreSQL. You can find most developers in #postgresql on Libera. A list of IRC nick names with their respective real world names can be found here.
==PostgreSQL - Active Development==
==Development Process==
* Todo list
* Unofficial Todo Detail
* Submitting a Patch
* Reviewing a Patch
* Round-robin Patch Review
* CommitFest Checklist
* Committing with Git
New Contributors should start by reading "So, you want to be a developer?".
== Developer Resources ==
* Developer FAQ
* Regression test authoring
* HOWTO Alpha and Beta Test PostgreSQL
* Working with Git
* Running pgindent on non-core code or development code
* Working with Eclipse
* Fixing shift/reduce conflicts in Bison
* Procedural Language Matrix
* Feature Matrix
* PostgreSQL Coding
* Development docs
* Project Hosting
* Exposing PostgreSQL Internals with UDFs (2010)
== CommitFests ==
* CommitFest Site - Lists all past, in progress, and open/future commitfests
* Open CommitFest - New patch submissions go here
* In Progress CommitFest - Patches to review are here
== Roadmaps and Projects ==
* PostgreSQL11 Roadmap
* PostgreSQL10 Roadmap
* Development projects - links to individual projects
== Past Developer Meeting Notes ==
* PgCon 2024 Developer Meeting
* FOSDEM/PGDay 2024 Developer Meeting
* PgCon 2023 Developer Meeting
* FOSDEM/PGDay 2023 Developer Meeting
* PgCon 2020 Developer Meeting
* FOSDEM/PGDay 2020 Developer Meeting
* PgCon 2019 Developer Meeting
* PgCon 2018 Developer Meeting
* PgConf.Asia 2016 Developer Meeting
** PGConf.ASIA2016 Developer Unconference
* PgCon 2016 Developer Meeting
** PgCon 2016 Developer Unconference
* FOSDEM/PGDay 2016 Developer Meeting
* PgCon 2015 Developer Meeting
** PgCon 2015 Developer Unconference
* PgCon 2015 Developer Meeting
* PgCon 2014 Developer Meeting
* PgCon 2013 Developer Meeting
* PgCon 2012 Developer Meeting
* PgCon 2011 Developer Meeting
* PgCon 2010 Developer Meeting
* PgCon 2009 Developer Meeting
* PgCon 2008 Developer Meeting
==PostgreSQL Past Development==
* PostgreSQL 9.3 Open Items
* PostgreSQL 9.3 Development Plan
* PostgreSQL 9.2 Open Items
* PostgreSQL 9.2 Development Plan
* PostgreSQL 9.1 Open Items
* PostgreSQL 9.1 Development Plan
* PostgreSQL 9.0 Open Items
* PostgreSQL 9.0 Alpha Release Feature List
* PostgreSQL 8.4
Category:CommitFest