<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.postgresql.org/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.postgresql.org/index.php?title=Special:Contributions&amp;feed=atom&amp;target=Gsmith</id>
		<title>PostgreSQL wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.postgresql.org/index.php?title=Special:Contributions&amp;feed=atom&amp;target=Gsmith"/>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Special:Contributions/Gsmith"/>
		<updated>2013-05-19T11:50:51Z</updated>
		<subtitle>From PostgreSQL wiki</subtitle>
		<generator>MediaWiki 1.15.5-2squeeze5</generator>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Development_information</id>
		<title>Development information</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Development_information"/>
				<updated>2013-05-19T05:35:45Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Eclipse documentation doesn't just cover cvs now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This area includes developer-targeted documentation regarding aspects of PostgreSQL development.  Please visit the [http://www.postgresql.org/developer developer area] of the PostgreSQL website for more general information about the development of PostgreSQL.  You can find most developers in [irc://irc.freenode.net/postgresql #postgresql on freenode]. A list of IRC nick names with their respective real world names can be found [[IRC2RWNames | here]].&lt;br /&gt;
&lt;br /&gt;
==PostgreSQL 9.3 - Active Development==&lt;br /&gt;
* [[PostgreSQL 9.3 Development Plan]]&lt;br /&gt;
* [[PostgreSQL 9.3 Open Items]]&lt;br /&gt;
&lt;br /&gt;
==Development Process==&lt;br /&gt;
* [[Todo|Todo list]]&lt;br /&gt;
* [[Todo:Contents|Unofficial Todo Detail]]&lt;br /&gt;
* [[Submitting a Patch]]&lt;br /&gt;
* [[Reviewing a Patch]]&lt;br /&gt;
* [[RRReviewers|Round-robin Patch Review]]&lt;br /&gt;
* [[Running a CommitFest]]&lt;br /&gt;
* [[Committing with Git]]&lt;br /&gt;
&lt;br /&gt;
== Developer Resources ==&lt;br /&gt;
* [[Developer FAQ]]&lt;br /&gt;
* [[Regression test authoring]]&lt;br /&gt;
* [[HowToBetaTest|HOWTO Alpha and Beta Test PostgreSQL]]&lt;br /&gt;
* [[Working with Git]]&lt;br /&gt;
* [[Working with CVS]] (obsolete)&lt;br /&gt;
* [[Working with Eclipse]]&lt;br /&gt;
* [[Fixing shift/reduce conflicts in Bison]]&lt;br /&gt;
* [[PL Matrix|Procedural Language Matrix]]&lt;br /&gt;
* [http://www.postgresql.org/about/featurematrix Feature Matrix]&lt;br /&gt;
* [http://www.postgresql.org/developer/coding PostgreSQL Coding]&lt;br /&gt;
* [http://developer.postgresql.org/pgdocs/postgres/index.html Development docs] (updated every 5 minutes)&lt;br /&gt;
* [[Project Hosting]]&lt;br /&gt;
* [http://www.pgcon.org/2010/schedule/attachments/142_HackingWithUDFs.pdf Exposing PostgreSQL Internals with UDFs (2010)]&lt;br /&gt;
&lt;br /&gt;
== Projects and Planning ==&lt;br /&gt;
* [http://commitfest.postgresql.org/action/commitfest_view/open Open CommitFest] - New patch submissions for 9.3&lt;br /&gt;
* [https://commitfest.postgresql.org/ CommitFest]&lt;br /&gt;
* [[PostgreSQL 8.4]]&lt;br /&gt;
* [[PgCon 2012 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2011 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2010 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2009 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2008 Developer Meeting]]&lt;br /&gt;
* [[Development projects]] - links to individual projects&lt;br /&gt;
&lt;br /&gt;
==PostgreSQL Past Development==&lt;br /&gt;
* [[PostgreSQL 9.2 Open Items]]&lt;br /&gt;
* [[PostgreSQL 9.2 Development Plan]]&lt;br /&gt;
* [[PostgreSQL 9.1 Open Items]]&lt;br /&gt;
* [[PostgreSQL 9.1 Development Plan]]&lt;br /&gt;
* [[PostgreSQL 9.0 Open Items]]&lt;br /&gt;
* [[85AlphaFeatures|PostgreSQL 9.0 Alpha Release Feature List]]&lt;br /&gt;
&lt;br /&gt;
[[Category:CommitFest]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Working_with_Eclipse</id>
		<title>Working with Eclipse</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Working_with_Eclipse"/>
				<updated>2013-05-19T05:34:55Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Intro to adding include files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Developing with Eclipse ==&lt;br /&gt;
&lt;br /&gt;
This page explains how to get quickly started if you want to use Eclipse to develop PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
Used software for this manual:&amp;lt;br/&amp;gt;&lt;br /&gt;
''OS: Ubuntu 8.4&amp;lt;br/&amp;gt;&lt;br /&gt;
Editor: Eclipse Helios&amp;lt;br/&amp;gt;&lt;br /&gt;
Versioning: CVS''&lt;br /&gt;
&lt;br /&gt;
The manual has been tested on an Ubuntu Live Version to make sure that no required Software is already installed. &amp;lt;br/&amp;gt;&lt;br /&gt;
'''!!Important: An internet connection is required'''&amp;lt;br/&amp;gt;&lt;br /&gt;
(Remark: If you haven’t installed Ubuntu yet, we recommend the following Link: http://www.ubuntu.com/desktop/get-ubuntu/download )&lt;br /&gt;
&lt;br /&gt;
== Install version control software ==&lt;br /&gt;
&lt;br /&gt;
The preferred way to get PostgreSQL source code is to use the git version control software.  This tutorial will also cover using the older cvs program.  You only need one program, git or cvs, not both.&lt;br /&gt;
&lt;br /&gt;
=== Install git ===&lt;br /&gt;
&lt;br /&gt;
Start Ubuntu Software Center:  &amp;lt;br/&amp;gt;&lt;br /&gt;
''Applications » Ubuntu Software Center''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
To install git you should go to the magnifier on the right top side of the application, and enter '''&amp;quot;git&amp;quot;'''. From the results choose '''&amp;quot;fast, scalable, distributed revision control&amp;quot;''' and click on the '''Install''' button (if git is not already installed).&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install CVS ===&lt;br /&gt;
&lt;br /&gt;
Start Ubuntu Software Center:  &amp;lt;br/&amp;gt;&lt;br /&gt;
''Applications » Ubuntu Software Center''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:03_Open_SW_Center.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
To install CVS you should go to the magnifier on the right top side of the application, and enter '''&amp;quot;cvs&amp;quot;'''. From the results choose '''&amp;quot;Concurrent Versions System&amp;quot;''' and click on the '''Install''' button (if CVS is not already installed).&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:04_Install_CVS.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open terminal ==&lt;br /&gt;
&lt;br /&gt;
Through ''Applications » Accessories » Terminal'' you can open a new terminal:&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:01_Open_Terminal.png]]&lt;br /&gt;
&lt;br /&gt;
== Install PostgreSQL source code   ===&lt;br /&gt;
&lt;br /&gt;
Now you can download the latest version of the source code, so you can edit it locally in your computer.  Again you need to follow one of the cvs or git instruction sets, but not both.&lt;br /&gt;
&lt;br /&gt;
=== Download with git ===&lt;br /&gt;
&lt;br /&gt;
In the previous terminal, if you haven’t closed it (otherwise repeat step '''1. Open terminal''', and don’t close it until the end of the installation), you can make a copy with the following commands:&lt;br /&gt;
&lt;br /&gt;
     mkdir project&lt;br /&gt;
     cd project&lt;br /&gt;
     clone git://git.postgresql.org/git/postgresql.git&lt;br /&gt;
     mv postgres pgsql&lt;br /&gt;
&lt;br /&gt;
You can find more detailed information about setting up your own repository at [[Working with git]].  The cloned directory here is renamed to &amp;quot;pgsql&amp;quot; to match the cvs examples below.  You can leave it as postgres instead, and just modify the rest of the examples below to use that name.&lt;br /&gt;
&lt;br /&gt;
=== Download PostgreSQL source code - CVS ===&lt;br /&gt;
&lt;br /&gt;
In our example the CVSROOT is '''''pgrepo''''' (you can choose also an other name), and is located under Home&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command mkdir creates a new folder ('''pgrepo''') and makes a new environment variable that links to this folder:&lt;br /&gt;
       mkdir pgrepo&lt;br /&gt;
       export CVSROOT=$HOME/pgrepo&lt;br /&gt;
&lt;br /&gt;
The next command downloads with ''rsync'' the source code. This can take several minutes:&lt;br /&gt;
       rsync --progress -avzCH --delete anoncvs.postgresql.org::pgsql-cvs $CVSROOT&lt;br /&gt;
&lt;br /&gt;
[[Image:02_Download_repository.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Copy with CVS  ===&lt;br /&gt;
&lt;br /&gt;
With '''CVS''' (Concurrent Version Control) you can make a versioned copy of the folder '''pgrepo'''.  &lt;br /&gt;
&lt;br /&gt;
=== Use CVS ===&lt;br /&gt;
&lt;br /&gt;
In the previous terminal, if you haven’t closed it (otherwise repeat step '''1. Open terminal''', and don’t close it until the end of the installation), you can make a copy with the following commands:&lt;br /&gt;
&lt;br /&gt;
     mkdir project&lt;br /&gt;
     cd project&lt;br /&gt;
     cvs co pgsql&lt;br /&gt;
&lt;br /&gt;
'''Warning:''' Execute these commands one layer above pgrepo, for instance in Home in our example!&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:05_checkout_project.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You can find more detailed information about setting up your own repository here [[Working with CVS]].&lt;br /&gt;
&lt;br /&gt;
== Configure source code  ==&lt;br /&gt;
&lt;br /&gt;
=== Install components with Software-Center ===&lt;br /&gt;
&lt;br /&gt;
You need the following Software, and you can download them through Software Center (''Applications » Ubuntu Software Center''):&lt;br /&gt;
&lt;br /&gt;
''libreadline5-dev''&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:06_Download_readline.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
''zlib1g-dev''&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:07_Dowload_zlib.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
''bison (YACC)''&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:08_Dowload_bison.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
''flex''&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:09_Download_flex.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You simply have to type the names of the software in the search area, and install them. This is the list of the required Software:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. ''libreadline5-dev'', 2. ''zlib1g-dev'', 3. ''bison (YACC)'', 4.  ''flex''&lt;br /&gt;
&lt;br /&gt;
=== Configure in the terminal ===&lt;br /&gt;
&lt;br /&gt;
Switch back to the terminal and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
     cd pgsql&lt;br /&gt;
     ./configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug&lt;br /&gt;
&lt;br /&gt;
[[Image:10_Configure.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Download Eclipse  ==&lt;br /&gt;
&lt;br /&gt;
=== Install JDK for Eclipse ===&lt;br /&gt;
&lt;br /&gt;
To see the PostgreSQL source code in an organized manner we will install Eclipse on the computer. &amp;lt;br/&amp;gt;&lt;br /&gt;
(Remark: You can use any other development tool also, but this manual explains the usage with Eclipse).&lt;br /&gt;
&lt;br /&gt;
First of all you need the ''&amp;quot;OpenJDK Java 6 Runtime&amp;quot;'' for Eclipse, which you can also download in the Software-Center. &amp;lt;br/&amp;gt;&lt;br /&gt;
Start Software Center Center (''Applications » Ubuntu Software Center'') or switch to the opened window and search for java. Choose ''&amp;quot;OpenJDK Java 6 Runtime”'' and click '''Install'''.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:11_Download_JDK.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Eclipse ===&lt;br /&gt;
&lt;br /&gt;
You can download Eclipse from the following link: http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliosr&lt;br /&gt;
&lt;br /&gt;
It’s important that you choose a '''Helios Version''', which supports''' C/C++'''. Open the Folder in your file browser, where the tar file is. In this example: ''ubuntu » Downloads''.&lt;br /&gt;
&lt;br /&gt;
[[Image:12_Downloaded_eclispe.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extract and start ===&lt;br /&gt;
&lt;br /&gt;
Right click on the Package and choose ''&amp;quot;Extract Here&amp;quot;'' from the menu.&lt;br /&gt;
&lt;br /&gt;
[[Image:13_Extract_eclipse.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Now enter the extracted Folder and double-click the file &amp;quot;eclipse&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:14_Launch_eclispe.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up Workspace ===&lt;br /&gt;
&lt;br /&gt;
You should set up a workspace, where the software stores your projects:&lt;br /&gt;
&lt;br /&gt;
After starting the program you will be prompted to select a folder for your workspace. We will choose the recommended path, but you can change it if you browse for an other folder. If you have chosen your Folder click '''''&amp;quot;OK&amp;quot;'''''.&lt;br /&gt;
&lt;br /&gt;
[[Image:15_Worspace.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The program ===&lt;br /&gt;
&lt;br /&gt;
Now you see the welcome-page of Eclipse, where you can choose tutorials, if you are not familiar with Eclipse. To continue the manual choose the arrow on the right to open your Workbench (the defaults layout of the program). &lt;br /&gt;
&lt;br /&gt;
[[Image:16_Workbech.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will import the PostgreSQL code in this workbench.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:17_Layout.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
&lt;br /&gt;
In this step we will import the project. Select in the left top of the program ''&amp;quot;File  » Import &amp;quot;'' &lt;br /&gt;
&lt;br /&gt;
[[Image:18_Import.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the new window select ''&amp;quot;C/C++  »  Existing Code as Makefile Project&amp;quot;'' and click the '''''&amp;quot;next&amp;quot;''''' button:&lt;br /&gt;
&lt;br /&gt;
[[Image:19_Makefileproject.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In the next window click browse, and choose the '''pgsql''' folder.&lt;br /&gt;
''&amp;quot;Language&amp;quot;'' is '''&amp;quot;C&amp;quot;''' and ''&amp;quot;Toolchain for Indexer Settings&amp;quot;'' select '''&amp;quot;Linux GCC&amp;quot;'''. At the end click '''finish'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:20_Import_finish.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Make&amp;quot;'' will start automatically (this can take several minutes). If every components work well you should have the following message in you console: &amp;lt;br/&amp;gt;&lt;br /&gt;
'''''&amp;quot;All of PostgreSQL successfully made, Ready to install&amp;quot;'''''&amp;lt;br/&amp;gt;&lt;br /&gt;
Furthermore you can see the Project '''&amp;quot;pgsql&amp;quot;''' on the left side of your workbench in the project explorer view.&lt;br /&gt;
&lt;br /&gt;
[[Image:21_Make.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding make targets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Open the Make Target view ===&lt;br /&gt;
&lt;br /&gt;
If this you can’t find this view, simply click on the Button in the left bottom to add the.&lt;br /&gt;
&lt;br /&gt;
[[Image:35_Add_view.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:22_Make_target.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add Target ===&lt;br /&gt;
&lt;br /&gt;
In the ''Make-Target-view'' right click on the project name and select ''&amp;quot;New&amp;quot;''. In the new window ''&amp;quot;Create Make Target&amp;quot;'' type at ''&amp;quot;Target name:&amp;quot;'' '''&amp;quot;install”''' and click '''&amp;quot;OK'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:23_Make_install.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this was successful in the ''Make-Target-view'' at the end of the list a green dot appears with the label install. Double-click this, so you start the installation of PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
[[Image:24_Launch_install.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the installation was successful in the console you can read:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''''“PostgreSQL installation complete&amp;quot;.'''''&lt;br /&gt;
&lt;br /&gt;
[[Image:25_Installed.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Launch initdb in the terminal ==&lt;br /&gt;
&lt;br /&gt;
Switch back to the terminal and change to the path ''&amp;quot;ubuntu/project/pgsql&amp;quot;''. Before starting initdb you should set some environment variables. &lt;br /&gt;
&lt;br /&gt;
      export PATH=$HOME/project/bin:$PATH&lt;br /&gt;
      export PGDATA=DemoDir&lt;br /&gt;
      initdb&lt;br /&gt;
&lt;br /&gt;
[[Image:26_initdb.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Run Configurations in Eclipse ==&lt;br /&gt;
&lt;br /&gt;
Switch back to Eclipse. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Select the Project Explorer view. If you can’t see it, add it with the button in the left bottom.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In the Project Explorer view right click on the Projektname (pgsql), and select &amp;quot;Run As » Run Configurations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:27_Run_as.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In this Window you can add a configuration:&lt;br /&gt;
&lt;br /&gt;
[[Image:28_new_launch_configuration.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Double-click ''&amp;quot;C/C++ Application&amp;quot;'' so a subfolder is created with the name ''&amp;quot;pgsql-Default&amp;quot;''. Now fill in the form on the right side. At ''&amp;quot;C/C++ Application:&amp;quot;'' the path: '''&amp;quot;src/backend/postgres&amp;quot;''' and project should be: '''&amp;quot;pgsql&amp;quot;'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:29_main.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to the tab ''&amp;quot;Arguments&amp;quot;''. At ''&amp;quot;Program arguments&amp;quot;'' type the arguments  '''&amp;quot;-D DemoDir&amp;quot;''' and click the '''&amp;quot;Apply&amp;quot;''' button. Click '''&amp;quot;Run&amp;quot;''' to start the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:30_arguments.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see following logs in your console:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''LOG: database system was shut down at (current date and time) UTC&amp;lt;br/&amp;gt;'''&lt;br /&gt;
'''LOG: database system is ready to accept connections&amp;lt;br/&amp;gt;'''&lt;br /&gt;
'''LOG: autovacuum launcher started&amp;lt;br/&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
[[Image:31_DB_feedback.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That means, the installation was successful and the server is running!&lt;br /&gt;
&lt;br /&gt;
== Add include files ==&lt;br /&gt;
&lt;br /&gt;
When looking at source code files, you will see compiler errors saying that include files were not found.  To fix this, you need to add and include directory to properties.  From the menus, choose Project/Properties/ C/C++ General / Paths and Symbols/Includes.  Add an Include directory.  Click on Workspace.  Choose &amp;lt;project&amp;gt;/src/include and hit enter.  Allow an index rebuild.&lt;br /&gt;
&lt;br /&gt;
== Debugging PostgreSQL from Eclipse ==&lt;br /&gt;
# Make sure gdb is installed on your machine&lt;br /&gt;
# Right click on the project in the Project Explorer window and select 'Debug As -&amp;gt; C/C++ Application'&amp;lt;br&amp;gt;[[Image:elipse_pg_debug1.png|Debug in Eclipse]]&lt;br /&gt;
# Select 'postgres' as the binary to execute&amp;lt;br&amp;gt;[[Image:elipse_pg_debug2.png|Debug in Eclipse]]&lt;br /&gt;
# If you don't have PGDATA set in the environment Eclipse is running in, you can tune the command line arguments in Run/Debug Configurations so that Postgres can start properly&amp;lt;br&amp;gt;[[Image:elipse_pg_debug3.png|Debug in Eclipse]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tip: You can do a 'make install' and make your arguments points to that installed directory.&lt;br /&gt;
&lt;br /&gt;
== Debugging with child processes ==&lt;br /&gt;
&lt;br /&gt;
When you start debugging process by using the project default, it can only debug the postmaster process.  When clients connect to the database, the postmaster process forks child processes, each of which is actually postgres backend process responsible for the response to the client.  You might want gdb to be able to access the forked processes too.  Here's how to set that up:&lt;br /&gt;
&lt;br /&gt;
# Debug Perspective =&amp;gt; Run =&amp;gt; Debug Configuration&lt;br /&gt;
# On left side of menu you can see &amp;quot;C/C++ Attach to Application&amp;quot;&lt;br /&gt;
# Right click on &amp;quot;C/C++ Attach to Application&amp;quot; and create new debug configuration,&lt;br /&gt;
# Set Project,  Build Configuration as &amp;quot;Use Active&amp;quot; , C/C++ Application as &amp;quot;postgres&amp;quot; executable path,&lt;br /&gt;
# Start postmaster &amp;amp; one instant of postgresql client (for creating one new postgres),&lt;br /&gt;
# Click on Debug which will show current process list,&lt;br /&gt;
# Select forked &amp;quot;postgres&amp;quot; process you want to debug&lt;br /&gt;
# Put breakpoint in your function,&lt;br /&gt;
&lt;br /&gt;
== Create and open Database ==&lt;br /&gt;
&lt;br /&gt;
To see, that the installation is completely working you can do the followings to test the database.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Switch to the terminal, and change to the path ''&amp;quot;ubuntu/project/pgsql&amp;quot;''. Execute the command:&lt;br /&gt;
      psql -l &lt;br /&gt;
This will list you all available database.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
To create your own database simply type the following:&lt;br /&gt;
    createdb DemoDB&lt;br /&gt;
&lt;br /&gt;
If you execute the list-database again (psql -l) you can see your database, &amp;quot;DemoDB&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:32_List_DBs.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You can login to your database with:&lt;br /&gt;
    psql DemoDB&lt;br /&gt;
&lt;br /&gt;
[[Image:33_enter_DB.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Now you can create tables, relationships and much more. You can fully access your database. To exit your database type: &lt;br /&gt;
   /q&lt;br /&gt;
&lt;br /&gt;
== Terminate the program ==&lt;br /&gt;
The server is available until you click on the red rectangle in the console of Eclipse. &amp;lt;br/&amp;gt;&lt;br /&gt;
If the stop was successful you will see the following log in the console:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''LOG: received smart shutdown request'''&lt;br /&gt;
&lt;br /&gt;
[[Image:34_DB_terminate.png]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Working_with_Eclipse</id>
		<title>Working with Eclipse</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Working_with_Eclipse"/>
				<updated>2013-05-19T05:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add in a basic git workflow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Developing with Eclipse ==&lt;br /&gt;
&lt;br /&gt;
This page explains how to get quickly started if you want to use Eclipse to develop PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
Used software for this manual:&amp;lt;br/&amp;gt;&lt;br /&gt;
''OS: Ubuntu 8.4&amp;lt;br/&amp;gt;&lt;br /&gt;
Editor: Eclipse Helios&amp;lt;br/&amp;gt;&lt;br /&gt;
Versioning: CVS''&lt;br /&gt;
&lt;br /&gt;
The manual has been tested on an Ubuntu Live Version to make sure that no required Software is already installed. &amp;lt;br/&amp;gt;&lt;br /&gt;
'''!!Important: An internet connection is required'''&amp;lt;br/&amp;gt;&lt;br /&gt;
(Remark: If you haven’t installed Ubuntu yet, we recommend the following Link: http://www.ubuntu.com/desktop/get-ubuntu/download )&lt;br /&gt;
&lt;br /&gt;
== Install version control software ==&lt;br /&gt;
&lt;br /&gt;
The preferred way to get PostgreSQL source code is to use the git version control software.  This tutorial will also cover using the older cvs program.  You only need one program, git or cvs, not both.&lt;br /&gt;
&lt;br /&gt;
=== Install git ===&lt;br /&gt;
&lt;br /&gt;
Start Ubuntu Software Center:  &amp;lt;br/&amp;gt;&lt;br /&gt;
''Applications » Ubuntu Software Center''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
To install git you should go to the magnifier on the right top side of the application, and enter '''&amp;quot;git&amp;quot;'''. From the results choose '''&amp;quot;fast, scalable, distributed revision control&amp;quot;''' and click on the '''Install''' button (if git is not already installed).&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install CVS ===&lt;br /&gt;
&lt;br /&gt;
Start Ubuntu Software Center:  &amp;lt;br/&amp;gt;&lt;br /&gt;
''Applications » Ubuntu Software Center''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:03_Open_SW_Center.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
To install CVS you should go to the magnifier on the right top side of the application, and enter '''&amp;quot;cvs&amp;quot;'''. From the results choose '''&amp;quot;Concurrent Versions System&amp;quot;''' and click on the '''Install''' button (if CVS is not already installed).&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:04_Install_CVS.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open terminal ==&lt;br /&gt;
&lt;br /&gt;
Through ''Applications » Accessories » Terminal'' you can open a new terminal:&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:01_Open_Terminal.png]]&lt;br /&gt;
&lt;br /&gt;
== Install PostgreSQL source code   ===&lt;br /&gt;
&lt;br /&gt;
Now you can download the latest version of the source code, so you can edit it locally in your computer.  Again you need to follow one of the cvs or git instruction sets, but not both.&lt;br /&gt;
&lt;br /&gt;
=== Download with git ===&lt;br /&gt;
&lt;br /&gt;
In the previous terminal, if you haven’t closed it (otherwise repeat step '''1. Open terminal''', and don’t close it until the end of the installation), you can make a copy with the following commands:&lt;br /&gt;
&lt;br /&gt;
     mkdir project&lt;br /&gt;
     cd project&lt;br /&gt;
     clone git://git.postgresql.org/git/postgresql.git&lt;br /&gt;
     mv postgres pgsql&lt;br /&gt;
&lt;br /&gt;
You can find more detailed information about setting up your own repository at [[Working with git]].  The cloned directory here is renamed to &amp;quot;pgsql&amp;quot; to match the cvs examples below.  You can leave it as postgres instead, and just modify the rest of the examples below to use that name.&lt;br /&gt;
&lt;br /&gt;
=== Download PostgreSQL source code - cvs ===&lt;br /&gt;
&lt;br /&gt;
In our example the CVSROOT is '''''pgrepo''''' (you can choose also an other name), and is located under Home&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command mkdir creates a new folder ('''pgrepo''') and makes a new environment variable that links to this folder:&lt;br /&gt;
       mkdir pgrepo&lt;br /&gt;
       export CVSROOT=$HOME/pgrepo&lt;br /&gt;
&lt;br /&gt;
The next command downloads with ''rsync'' the source code. This can take several minutes:&lt;br /&gt;
       rsync --progress -avzCH --delete anoncvs.postgresql.org::pgsql-cvs $CVSROOT&lt;br /&gt;
&lt;br /&gt;
[[Image:02_Download_repository.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Copy with CVS  ===&lt;br /&gt;
&lt;br /&gt;
With '''CVS''' (Concurrent Version Control) you can make a versioned copy of the folder '''pgrepo'''.  &lt;br /&gt;
&lt;br /&gt;
=== Use CVS ===&lt;br /&gt;
&lt;br /&gt;
In the previous terminal, if you haven’t closed it (otherwise repeat step '''1. Open terminal''', and don’t close it until the end of the installation), you can make a copy with the following commands:&lt;br /&gt;
&lt;br /&gt;
     mkdir project&lt;br /&gt;
     cd project&lt;br /&gt;
     cvs co pgsql&lt;br /&gt;
&lt;br /&gt;
'''Warning:''' Execute these commands one layer above pgrepo, for instance in Home in our example!&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:05_checkout_project.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You can find more detailed information about setting up your own repository here [[Working with CVS]].&lt;br /&gt;
&lt;br /&gt;
== Configure source code  ==&lt;br /&gt;
&lt;br /&gt;
=== Install components with Software-Center ===&lt;br /&gt;
&lt;br /&gt;
You need the following Software, and you can download them through Software Center (''Applications » Ubuntu Software Center''):&lt;br /&gt;
&lt;br /&gt;
''libreadline5-dev''&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:06_Download_readline.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
''zlib1g-dev''&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:07_Dowload_zlib.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
''bison (YACC)''&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:08_Dowload_bison.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
''flex''&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:09_Download_flex.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You simply have to type the names of the software in the search area, and install them. This is the list of the required Software:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. ''libreadline5-dev'', 2. ''zlib1g-dev'', 3. ''bison (YACC)'', 4.  ''flex''&lt;br /&gt;
&lt;br /&gt;
=== Configure in the terminal ===&lt;br /&gt;
&lt;br /&gt;
Switch back to the terminal and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
     cd pgsql&lt;br /&gt;
     ./configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug&lt;br /&gt;
&lt;br /&gt;
[[Image:10_Configure.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Download Eclipse  ==&lt;br /&gt;
&lt;br /&gt;
=== Install JDK for Eclipse ===&lt;br /&gt;
&lt;br /&gt;
To see the PostgreSQL source code in an organized manner we will install Eclipse on the computer. &amp;lt;br/&amp;gt;&lt;br /&gt;
(Remark: You can use any other development tool also, but this manual explains the usage with Eclipse).&lt;br /&gt;
&lt;br /&gt;
First of all you need the ''&amp;quot;OpenJDK Java 6 Runtime&amp;quot;'' for Eclipse, which you can also download in the Software-Center. &amp;lt;br/&amp;gt;&lt;br /&gt;
Start Software Center Center (''Applications » Ubuntu Software Center'') or switch to the opened window and search for java. Choose ''&amp;quot;OpenJDK Java 6 Runtime”'' and click '''Install'''.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:11_Download_JDK.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Eclipse ===&lt;br /&gt;
&lt;br /&gt;
You can download Eclipse from the following link: http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliosr&lt;br /&gt;
&lt;br /&gt;
It’s important that you choose a '''Helios Version''', which supports''' C/C++'''. Open the Folder in your file browser, where the tar file is. In this example: ''ubuntu » Downloads''.&lt;br /&gt;
&lt;br /&gt;
[[Image:12_Downloaded_eclispe.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extract and start ===&lt;br /&gt;
&lt;br /&gt;
Right click on the Package and choose ''&amp;quot;Extract Here&amp;quot;'' from the menu.&lt;br /&gt;
&lt;br /&gt;
[[Image:13_Extract_eclipse.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Now enter the extracted Folder and double-click the file &amp;quot;eclipse&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:14_Launch_eclispe.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up Workspace ===&lt;br /&gt;
&lt;br /&gt;
You should set up a workspace, where the software stores your projects:&lt;br /&gt;
&lt;br /&gt;
After starting the program you will be prompted to select a folder for your workspace. We will choose the recommended path, but you can change it if you browse for an other folder. If you have chosen your Folder click '''''&amp;quot;OK&amp;quot;'''''.&lt;br /&gt;
&lt;br /&gt;
[[Image:15_Worspace.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The program ===&lt;br /&gt;
&lt;br /&gt;
Now you see the welcome-page of Eclipse, where you can choose tutorials, if you are not familiar with Eclipse. To continue the manual choose the arrow on the right to open your Workbench (the defaults layout of the program). &lt;br /&gt;
&lt;br /&gt;
[[Image:16_Workbech.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will import the PostgreSQL code in this workbench.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:17_Layout.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
&lt;br /&gt;
In this step we will import the project. Select in the left top of the program ''&amp;quot;File  » Import &amp;quot;'' &lt;br /&gt;
&lt;br /&gt;
[[Image:18_Import.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the new window select ''&amp;quot;C/C++  »  Existing Code as Makefile Project&amp;quot;'' and click the '''''&amp;quot;next&amp;quot;''''' button:&lt;br /&gt;
&lt;br /&gt;
[[Image:19_Makefileproject.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In the next window click browse, and choose the '''pgsql''' folder.&lt;br /&gt;
''&amp;quot;Language&amp;quot;'' is '''&amp;quot;C&amp;quot;''' and ''&amp;quot;Toolchain for Indexer Settings&amp;quot;'' select '''&amp;quot;Linux GCC&amp;quot;'''. At the end click '''finish'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:20_Import_finish.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Make&amp;quot;'' will start automatically (this can take several minutes). If every components work well you should have the following message in you console: &amp;lt;br/&amp;gt;&lt;br /&gt;
'''''&amp;quot;All of PostgreSQL successfully made, Ready to install&amp;quot;'''''&amp;lt;br/&amp;gt;&lt;br /&gt;
Furthermore you can see the Project '''&amp;quot;pgsql&amp;quot;''' on the left side of your workbench in the project explorer view.&lt;br /&gt;
&lt;br /&gt;
[[Image:21_Make.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding make targets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Open the Make Target view ===&lt;br /&gt;
&lt;br /&gt;
If this you can’t find this view, simply click on the Button in the left bottom to add the.&lt;br /&gt;
&lt;br /&gt;
[[Image:35_Add_view.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:22_Make_target.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add Target ===&lt;br /&gt;
&lt;br /&gt;
In the ''Make-Target-view'' right click on the project name and select ''&amp;quot;New&amp;quot;''. In the new window ''&amp;quot;Create Make Target&amp;quot;'' type at ''&amp;quot;Target name:&amp;quot;'' '''&amp;quot;install”''' and click '''&amp;quot;OK'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:23_Make_install.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this was successful in the ''Make-Target-view'' at the end of the list a green dot appears with the label install. Double-click this, so you start the installation of PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
[[Image:24_Launch_install.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the installation was successful in the console you can read:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''''“PostgreSQL installation complete&amp;quot;.'''''&lt;br /&gt;
&lt;br /&gt;
[[Image:25_Installed.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Launch initdb in the terminal ==&lt;br /&gt;
&lt;br /&gt;
Switch back to the terminal and change to the path ''&amp;quot;ubuntu/project/pgsql&amp;quot;''. Before starting initdb you should set some environment variables. &lt;br /&gt;
&lt;br /&gt;
      export PATH=$HOME/project/bin:$PATH&lt;br /&gt;
      export PGDATA=DemoDir&lt;br /&gt;
      initdb&lt;br /&gt;
&lt;br /&gt;
[[Image:26_initdb.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Run Configurations in Eclipse ==&lt;br /&gt;
&lt;br /&gt;
Switch back to Eclipse. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Select the Project Explorer view. If you can’t see it, add it with the button in the left bottom.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In the Project Explorer view right click on the Projektname (pgsql), and select &amp;quot;Run As » Run Configurations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:27_Run_as.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In this Window you can add a configuration:&lt;br /&gt;
&lt;br /&gt;
[[Image:28_new_launch_configuration.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Double-click ''&amp;quot;C/C++ Application&amp;quot;'' so a subfolder is created with the name ''&amp;quot;pgsql-Default&amp;quot;''. Now fill in the form on the right side. At ''&amp;quot;C/C++ Application:&amp;quot;'' the path: '''&amp;quot;src/backend/postgres&amp;quot;''' and project should be: '''&amp;quot;pgsql&amp;quot;'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:29_main.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch to the tab ''&amp;quot;Arguments&amp;quot;''. At ''&amp;quot;Program arguments&amp;quot;'' type the arguments  '''&amp;quot;-D DemoDir&amp;quot;''' and click the '''&amp;quot;Apply&amp;quot;''' button. Click '''&amp;quot;Run&amp;quot;''' to start the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:30_arguments.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see following logs in your console:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''LOG: database system was shut down at (current date and time) UTC&amp;lt;br/&amp;gt;'''&lt;br /&gt;
'''LOG: database system is ready to accept connections&amp;lt;br/&amp;gt;'''&lt;br /&gt;
'''LOG: autovacuum launcher started&amp;lt;br/&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
[[Image:31_DB_feedback.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That means, the installation was successful and the server is running!&lt;br /&gt;
&lt;br /&gt;
== Debugging PostgreSQL from Eclipse ==&lt;br /&gt;
# Make sure gdb is installed on your machine&lt;br /&gt;
# Right click on the project in the Project Explorer window and select 'Debug As -&amp;gt; C/C++ Application'&amp;lt;br&amp;gt;[[Image:elipse_pg_debug1.png|Debug in Eclipse]]&lt;br /&gt;
# Select 'postgres' as the binary to execute&amp;lt;br&amp;gt;[[Image:elipse_pg_debug2.png|Debug in Eclipse]]&lt;br /&gt;
# If you don't have PGDATA set in the environment Eclipse is running in, you can tune the command line arguments in Run/Debug Configurations so that Postgres can start properly&amp;lt;br&amp;gt;[[Image:elipse_pg_debug3.png|Debug in Eclipse]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tip: You can do a 'make install' and make your arguments points to that installed directory.&lt;br /&gt;
&lt;br /&gt;
== Debugging with child processes ==&lt;br /&gt;
&lt;br /&gt;
When you start debugging process by using the project default, it can only debug the postmaster process.  When clients connect to the database, the postmaster process forks child processes, each of which is actually postgres backend process responsible for the response to the client.  You might want gdb to be able to access the forked processes too.  Here's how to set that up:&lt;br /&gt;
&lt;br /&gt;
# Debug Perspective =&amp;gt; Run =&amp;gt; Debug Configuration&lt;br /&gt;
# On left side of menu you can see &amp;quot;C/C++ Attach to Application&amp;quot;&lt;br /&gt;
# Right click on &amp;quot;C/C++ Attach to Application&amp;quot; and create new debug configuration,&lt;br /&gt;
# Set Project,  Build Configuration as &amp;quot;Use Active&amp;quot; , C/C++ Application as &amp;quot;postgres&amp;quot; executable path,&lt;br /&gt;
# Start postmaster &amp;amp; one instant of postgresql client (for creating one new postgres),&lt;br /&gt;
# Click on Debug which will show current process list,&lt;br /&gt;
# Select forked &amp;quot;postgres&amp;quot; process you want to debug&lt;br /&gt;
# Put breakpoint in your function,&lt;br /&gt;
&lt;br /&gt;
== Create and open Database ==&lt;br /&gt;
&lt;br /&gt;
To see, that the installation is completely working you can do the followings to test the database.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Switch to the terminal, and change to the path ''&amp;quot;ubuntu/project/pgsql&amp;quot;''. Execute the command:&lt;br /&gt;
      psql -l &lt;br /&gt;
This will list you all available database.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
To create your own database simply type the following:&lt;br /&gt;
    createdb DemoDB&lt;br /&gt;
&lt;br /&gt;
If you execute the list-database again (psql -l) you can see your database, &amp;quot;DemoDB&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:32_List_DBs.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You can login to your database with:&lt;br /&gt;
    psql DemoDB&lt;br /&gt;
&lt;br /&gt;
[[Image:33_enter_DB.png]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Now you can create tables, relationships and much more. You can fully access your database. To exit your database type: &lt;br /&gt;
   /q&lt;br /&gt;
&lt;br /&gt;
== Terminate the program ==&lt;br /&gt;
The server is available until you click on the red rectangle in the console of Eclipse. &amp;lt;br/&amp;gt;&lt;br /&gt;
If the stop was successful you will see the following log in the console:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''LOG: received smart shutdown request'''&lt;br /&gt;
&lt;br /&gt;
[[Image:34_DB_terminate.png]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/User:Gsmith</id>
		<title>User:Gsmith</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/User:Gsmith"/>
				<updated>2013-04-30T21:11:44Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Update my profile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Greg Smith is a consultant for for [http://www.2ndquadrant.com 2ndQuadrant], regular hacker of new features starting with [http://www.postgresql.org/docs/8.3/static/release-8-3.html PostgreSQL 8.3], and the author of [http://www.packtpub.com/postgresql-90-high-performance/book PostgreSQL 9.0 High Performance].  His blog and current articles can be found at [http://highperfpostgres.com/ High Performance PostgreSQL].&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Submitting_a_Patch</id>
		<title>Submitting a Patch</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Submitting_a_Patch"/>
				<updated>2013-04-30T20:51:22Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Link to the PostgreSQL license and clarify it's not quite standard BSD or MIT.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Initial patch design ==&lt;br /&gt;
&lt;br /&gt;
If you have a trivial patch that serves an obvious need, you may be able to write the patch and submit it directly to the [http://archives.postgresql.org/pgsql-hackers/ pgsql-hackers] mailing list without having its design reviewed first.  But in general, a non-trivial change should be discussed (potentially before the code is even written) on the [http://archives.postgresql.org/pgsql-hackers/ pgsql-hackers] list before being submitted as a patch.&lt;br /&gt;
&lt;br /&gt;
For general coding style guidelines, see the [[Developer FAQ]] and the [http://developer.postgresql.org/pgdocs/postgres/source.html PostgreSQL Coding Conventions].&lt;br /&gt;
&lt;br /&gt;
=== Design your interface first ===&lt;br /&gt;
&lt;br /&gt;
Ask yourself these questions: &lt;br /&gt;
&lt;br /&gt;
* Will the user interact with this new feature? if so, how? &lt;br /&gt;
* What is the syntax? Have ideas, and the ability to defend technical decisions you believe strongly in.&lt;br /&gt;
* What are the exact semantics/behaviors?&lt;br /&gt;
* Are there any backward compatibility issues? &lt;br /&gt;
* Get community buy-in at this level of detail before you start coding. But not necessarily consensus.&lt;br /&gt;
* Write an opening paragraph to your email to the -hackers list that answers these questions:&lt;br /&gt;
**This is the kind of problem I'm trying to solve&lt;br /&gt;
**This is what it is doing right now&lt;br /&gt;
**This is what it will do.&lt;br /&gt;
&lt;br /&gt;
Mostly, get someone from the community involved in your ideas as early as possible so that you can even get half-baked ideas vetted early, rather than creating something in a vacuum.  Similarly, it's easier to make progress and keep patches focused if you concentrate on the smallest portion of the idea you can execute perfectly.  Resist the temptation to build a giant patch all at once, as those are much less likely to be reviewed usefully and therefore committed.  You should take a look at how your patch will eventually be [[Reviewing a Patch|reviewed]], so you can make sure that review is likely to succeed.&lt;br /&gt;
&lt;br /&gt;
=== Save us the trouble of reformatting your code ===&lt;br /&gt;
&lt;br /&gt;
Please read [http://developer.postgresql.org/pgdocs/postgres/source.html PostgreSQL Coding Conventions]. Also, follow the style of the adjacent code!  [http://archives.postgresql.org/pgsql-hackers/2009-08/msg01001.php Suggestions from Tom] clarify some of the trickier situations you might run into.  [[Creating Clean Patches]] provides a walkthrough of how to do self-review and improvement of your patches to fix code formatting issues.&lt;br /&gt;
&lt;br /&gt;
Naming things is important, and when in doubt, ask someone else to help you with names. We tend to use [http://en.wikipedia.org/wiki/CamelCase CamelCase] or underscores: thisStyleIsOkay or this_is_okay_too.&lt;br /&gt;
&lt;br /&gt;
Generally, try to blend in with the surrounding code. Do not use #ifdef's to enable your changes. Comments are for clarification and to explain the ''why'' question, not for delineating your code from the surroundings nor to re-state what the code is doing.&lt;br /&gt;
&lt;br /&gt;
Please remove any spurious whitespace.  ''git diff --color'' makes them stand out like a sore thumb, in red.&lt;br /&gt;
&lt;br /&gt;
== Patch submission==&lt;br /&gt;
&lt;br /&gt;
Once you believe your patch is complete, please read through the complete patch that you will be sending to the mailing list.  Consider what format the patch is in (should be either context or unified) and if it's easy to read.  Ensure that the patch didn't mistakenly include unintended changes (such as whitespace changes, test code, #ifdef 0'd out blocks, etc).  The patch should then be submitted via e-mail to the [http://archives.postgresql.org/pgsql-hackers/ pgsql-hackers] mailing list.  At that time, or after you wait for initial feedback, you should also add it to the page for the next [https://commitfest.postgresql.org/ CommitFest].  &lt;br /&gt;
&lt;br /&gt;
Normally changes should be submitted as a single patch that includes every file touched.  If the patch is large and can be logically separated into distinct and separately commit-able sections for easier review, with a clear order they get applied in described when applicable, that can be more straightforward for reviewers to work with for more complicated patches. Patches must be in a format which provides context (eg: [http://en.wikipedia.org/wiki/Diff#Context_format Context Diff]); 'normal' or 'plain' diff formats are not acceptable.  Ideally, patch authors should choose the context (diff -c) format or unified (diff -u) format based on which format makes their patch easier to read. See [[Working_with_Git#Context_diffs_with_Git|Working with git]] and [[Creating Clean Patches]] for ways to do this well. [http://petereisentraut.blogspot.com/2009/09/how-to-submit-patch-by-email.html How to submit a patch by email] for more details about mailing in patches.  If you're a new submitter, the suggestion there about using your judgment on patch formatting is not a recommended practice however--you should be using the standard context  diff format.&lt;br /&gt;
 &lt;br /&gt;
Please note that PostgreSQL uses a BSD/MIT-style license for its code. By posting a patch to the public PostgreSQL mailing lists, you are giving the PostgreSQL Global Development Group the non-revocable right to distribute your patch under the [http://www.postgresql.org/about/licence/ PostgreSQL license].&lt;br /&gt;
&lt;br /&gt;
Please include all of the following information with each patch submitted&lt;br /&gt;
&lt;br /&gt;
* Project name.&lt;br /&gt;
* Uniquely identifiable file name, so we can tell difference between your v1 and v24.&lt;br /&gt;
* What the patch does in a short paragraph.&lt;br /&gt;
* Whether the patch is for discussion or for application (see WIP notes below)&lt;br /&gt;
* Which branch the patch is against (ordinarily this will be ''master'').  For more on branches in PostgreSQL, see [[Working_with_Git#Using_Back_Branches|Using Back Branches]].&lt;br /&gt;
* Whether it compiles and tests successfully, so we know nothing obvious is broken.&lt;br /&gt;
* Whether it contains any platform-specific items and if so, has it been tested on other platforms.&lt;br /&gt;
* Confirm that the patch includes [[Regression test authoring|regression tests]] to check the new feature actually works as described.&lt;br /&gt;
* Include documentation on how to use the new feature, including examples.  See the [http://www.postgresql.org/docs/current/static/docguide.html documentation documentation] for more information.&lt;br /&gt;
* Describe the effect your patch has on performance, if any.  &lt;br /&gt;
* Try to include a few lines about why you chose to do things particular ways, rather than let your reviewer guess what was happening. This can be done as code comments, but it might also be an additional reviewers' guide, or additions to a README file in one of the code directories.&lt;br /&gt;
* If your patch addresses a [[Todo]] item, please give the name of the Todo item in your email.  This is so that the reviewers will know that the item needs to be marked as done if your patch is applied.&lt;br /&gt;
&lt;br /&gt;
It is helpful for early patches, ones not intended to be of commit quality, to be labeled clearly as such so that the appropriate style of review is done.  The abbreviation WIP (&amp;quot;Work in Progress&amp;quot;) is the standard shorthand to attach to patches intended for review not as a commit candidate, but for design feedback.  Labeling your patch as a WIP on your e-mail subject line and on the matching description in the CF application will advise reviewers to focus more on the general approach, rather than on things like coding style that can normally be ignored in the early portion of a patch's lifecycle.&lt;br /&gt;
&lt;br /&gt;
=== Reasons your patch might be returned ===&lt;br /&gt;
&lt;br /&gt;
Submitting the patch is just the first step towards getting it committed. Very few patches are committed exactly as originally submitted, even those submitted by experienced professional developers. For any non-trivial patch you should plan for at least 3 versions before final acceptance.&lt;br /&gt;
&lt;br /&gt;
There are a few common reasons patches are returned without getting the review consideration the submitter was hoping for:&lt;br /&gt;
&lt;br /&gt;
* '''The fastest way to get your patch rejected is to make unrelated changes'''.  Reformatting lines that haven't changed, changing unrelated comments you felt were poorly worded, touching code not necessary to your change, etc. Each patch should have the minimum set of changes required to work robustly.  If you do not follow the code formatting suggestions above, expect your patch to be returned to you with the feedback of &amp;quot;follow the code conventions&amp;quot;, quite likely without any other review.&lt;br /&gt;
&lt;br /&gt;
* '''Consider how the patch would be reviewed'''.  The things a reviewer will evaluate are listed in [[Reviewing a Patch]].  You should look at this list and consider if you will pass it before submission.  We recommend that new code contributors first spend time doing review, so that you will already be familiar with this list and process.  The review guidelines are used because they work; doing your own self-review before submitting your patch is recommended.&lt;br /&gt;
&lt;br /&gt;
* '''Performance gain is claimed without test case'''.  Performance patches are fun to write but hard to validate.  If the patch is intended to improve performance, it's a good idea to include some reproducible tests to demonstrate the improvement.  If a reviewer cannot duplicate your claimed performance improvement in a short period of time, it's very likely your patch will be returned.  Do not expect that a reviewer is going to find your performance feature so interesting that they will build an entire test suite to prove it works.  You should have done that as part of patch validation, and included the necessary framework for testing with the submission.&lt;br /&gt;
&lt;br /&gt;
* '''Did not include documentation or regression tests'''.  Any patch without these two items is automatically considered a WIP one--you might get review of your patch, but do not expect it to be committed.  See [[Regression test authoring]] for more information about how to write these tests.  Documenting the design at a high level in your submission e-mail is also recommended.&lt;br /&gt;
&lt;br /&gt;
* '''Failed to address earlier criticisms of this design'''.  Many patches try to do things that have been tried or considered before, where the earlier discussion found a problem with the obvious approach.  Not saying how your new submission addresses those issues suggests you have the same problems.  The [[Todo|todo list]] is a good source for finding past discussion of ideas for patches.&lt;br /&gt;
&lt;br /&gt;
The objective of all of these suggested items is to ensure that the reviewer's time is not wasted. You spent time writing the code, but that does '''not''' mean you can demand time, energy and interest from a reviewer. Follow these guidelines and become familiar with the review process.  Make it easy on yourself and others so that your patch is accepted quickly, easily and with good humor on all sides.&lt;br /&gt;
&lt;br /&gt;
The presentation [http://www.pgcon.org/2011/schedule/events/303.en.html How To Get Your PostgreSQL Patch Accepted] provides some additional suggestions for how to submit a patch that will be considered more seriously.&lt;br /&gt;
&lt;br /&gt;
=== Submission timing ===&lt;br /&gt;
&lt;br /&gt;
To improve the odds of the right discussion of your patch or idea happening, pay attention to what the community work cycle is.  If for example you send in a brand new idea in the beta phase, don't be surprised if no one is paying attention because they are focused on release work.  Come back when the beta is done, please!&lt;br /&gt;
&lt;br /&gt;
PostgreSQL development is organized with periodic [[CommitFest|CommitFests]], which are periods where new development halts in order to focus on patch review and committing.  It's best if you can avoid sending in a new patch during the occasional weeks when there is an active CommitFest; you can check the schedule via the [https://commitfest.postgresql.org/ CommitFest application].  If your schedule doesn't allow waiting until an active CommitFest is over, you should explicitly label your submission as intended for the next CommitFest, not the current one, so that it's clear it's not intended to be part of the active review process.&lt;br /&gt;
&lt;br /&gt;
== Patch review and commit ==&lt;br /&gt;
&lt;br /&gt;
There's basically three different workflows a patch can follow after it's been submitted that lead to it being commited:&lt;br /&gt;
&lt;br /&gt;
Workflow A:&lt;br /&gt;
# You post patch to pgsql-hackers&lt;br /&gt;
# A committer picks it up immediately and commits it.&lt;br /&gt;
&lt;br /&gt;
Workflow B:&lt;br /&gt;
# You post a patch to pgsql-hackers&lt;br /&gt;
# You add the patch to the [http://commitfest.postgresql.org/action/commitfest_view/open open commitfest] queue&lt;br /&gt;
# A committer picks up the patch from the queue, and commits it&lt;br /&gt;
&lt;br /&gt;
Workflow C:&lt;br /&gt;
# You post a patch to pgsql-hackers&lt;br /&gt;
# Bruce adds the patch to a list of unapplied patches&lt;br /&gt;
# At the beginning of the next commit fest, Alvaro (with the help from others, I hope) goes through the list, and adds the patch to the [http://commitfest.postgresql.org/action/commitfest_view/open open commitfest] queue&lt;br /&gt;
# A [[Committers|committer]] picks up the patch from the queue, and commits it&lt;br /&gt;
&lt;br /&gt;
At any of these stages, your patch might instead be rejected for technical, style, or other reasons.  These rejections will normally come with feedback on whether an improved version of that patch would be more acceptable.  In those cases, you should consider updating your patch based on that feedback and re-submit.&lt;br /&gt;
&lt;br /&gt;
== Followup on submissions ==&lt;br /&gt;
&lt;br /&gt;
=== How do you get someone to respond to you? ===&lt;br /&gt;
&lt;br /&gt;
You've sent an email to -hackers and no one has responded. What do you do?&lt;br /&gt;
&lt;br /&gt;
* Make sure you've added your patch to the [http://commitfest.postgresql.org/action/commitfest_view/open open commitfest] queue.&lt;br /&gt;
* Start out by reviewing a patch or responding to email on the lists. Even if it is unrelated to what you're doing.&lt;br /&gt;
* Start with submitting a patch that is small and uncontroversial to help them understand you, and to get you familiar with the overall process.&lt;br /&gt;
* People are more willing to listen and work with someone who is already contributing.&lt;br /&gt;
* Also, in our community -- if no one objects, then there is implicit approval. Within reason!&lt;br /&gt;
&lt;br /&gt;
Participating in community is a process, not a single event.&lt;br /&gt;
&lt;br /&gt;
=== Submitting patch updates ===&lt;br /&gt;
&lt;br /&gt;
When submitting a new version of a previously submitted patch, you should do a few additional things:&lt;br /&gt;
&lt;br /&gt;
* Uniquely identify the new version, usually done via an incremented suffix on the name of the patch.  First review would be ''mypatch-v1.patch'', second ''mypatch-v2.patch'', etc.  Using the &amp;quot;.patch&amp;quot; extension allows some reviewers to more easily read it in their code editor.&lt;br /&gt;
&lt;br /&gt;
* Make sure it's easy to find any earlier discussion of the patch.  Don't expect that everyone will still be able to find previous submissions on their own.  Either fully duplicate the information about the patch from your original messages, or provide a clear link to the earlier message via the [http://archives.postgresql.org/pgsql-hackers/ archives].  Note that you can link to your earlier post using the e-mail message ID of what you sent earlier, perhaps by checking your sent e-mail for it.  That type of link is preferred because links to the archive by message number might sometimes get renumbered.  See [[Template:MessageLink]] for more details.&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PostgreSQL_9.3_Development_Plan</id>
		<title>PostgreSQL 9.3 Development Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PostgreSQL_9.3_Development_Plan"/>
				<updated>2012-11-16T07:13:32Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Fix wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The timeline for the PostgreSQL 9.3 development cycle was initially planned at the [[PgCon 2012 Developer Meeting]].  The schedule is based on the [[PostgreSQL 9.2 Development Plan|9.2 timeline]] moved forward one year, with some optimizations based on developer feedback.&lt;br /&gt;
&lt;br /&gt;
* June 1, 2012: branch off 9.2, committing into head/trunk/master for 9.3 can begin.&lt;br /&gt;
* June 15, 2012 - July 15, 2012: [https://commitfest.postgresql.org/action/commitfest_view?id=14 commit fest 1].  Primarily for contributors who are not involved in preparing the 9.2 release.&lt;br /&gt;
* September 15, 2012 - October 15, 2012: [https://commitfest.postgresql.org/action/commitfest_view?id=15 commit fest 2]&lt;br /&gt;
* November 15, 2012 - December 15, 2012: [https://commitfest.postgresql.org/action/commitfest_view?id=16 commit fest 3]&lt;br /&gt;
** Dec 8-15 Final feature planning week&lt;br /&gt;
* January 15, 2013 - February 15, 2013: [https://commitfest.postgresql.org/action/commitfest_view?id=17 commit fest 4]&lt;br /&gt;
** Final Triage: Feb 1–7 &lt;br /&gt;
* Around February 20, 2013: 9.3 alpha release&lt;br /&gt;
* Possibly more alpha releases&lt;br /&gt;
* Beta releases&lt;br /&gt;
* Release candidates&lt;br /&gt;
* Release&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL 9.3]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PostgreSQL_9.3_Development_Plan</id>
		<title>PostgreSQL 9.3 Development Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PostgreSQL_9.3_Development_Plan"/>
				<updated>2012-11-16T07:12:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Update dates for 9.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The timeline for the PostgreSQL 9.3 development cycle was initially planned at the [[PgCon 2012 Developer Meeting]].  The schedule is based on the [[PostgreSQL 9.2 Development Plan|9.2 timeline]] moved forward one year, with some optimizations from on developer feedback.&lt;br /&gt;
&lt;br /&gt;
* June 1, 2012: branch off 9.2, committing into head/trunk/master for 9.3 can begin.&lt;br /&gt;
* June 15, 2012 - July 15, 2012: [https://commitfest.postgresql.org/action/commitfest_view?id=14 commit fest 1].  Primarily for contributors who are not involved in preparing the 9.2 release.&lt;br /&gt;
* September 15, 2012 - October 15, 2012: [https://commitfest.postgresql.org/action/commitfest_view?id=15 commit fest 2]&lt;br /&gt;
* November 15, 2012 - December 15, 2012: [https://commitfest.postgresql.org/action/commitfest_view?id=16 commit fest 3]&lt;br /&gt;
** Dec 8-15 Final feature planning week&lt;br /&gt;
* January 15, 2013 - February 15, 2013: [https://commitfest.postgresql.org/action/commitfest_view?id=17 commit fest 4]&lt;br /&gt;
** Final Triage: Feb 1–7 &lt;br /&gt;
* Around February 20, 2013: 9.3 alpha release&lt;br /&gt;
* Possibly more alpha releases&lt;br /&gt;
* Beta releases&lt;br /&gt;
* Release candidates&lt;br /&gt;
* Release&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL 9.3]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Development_information</id>
		<title>Development information</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Development_information"/>
				<updated>2012-11-16T06:28:36Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Update to show 9.3 is active&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This area includes developer-targeted documentation regarding aspects of PostgreSQL development.  Please visit the [http://www.postgresql.org/developer developer area] of the PostgreSQL website for more general information about the development of PostgreSQL.  You can find most developers in [irc://irc.freenode.net/postgresql #postgresql on freenode]. A list of IRC nick names with their respective real world names can be found [[IRC2RWNames | here]].&lt;br /&gt;
&lt;br /&gt;
==PostgreSQL 9.3 - Active Development==&lt;br /&gt;
* [[PostgreSQL 9.3 Development Plan]]&lt;br /&gt;
* [[PostgreSQL 9.3 Open Items]]&lt;br /&gt;
&lt;br /&gt;
==Development Process==&lt;br /&gt;
* [[Todo|Todo list]]&lt;br /&gt;
* [[Todo:Contents|Unofficial Todo Detail]]&lt;br /&gt;
* [[Submitting a Patch]]&lt;br /&gt;
* [[Reviewing a Patch]]&lt;br /&gt;
* [[RRReviewers|Round-robin Patch Review]]&lt;br /&gt;
* [[Running a CommitFest]]&lt;br /&gt;
* [[Committing with Git]]&lt;br /&gt;
&lt;br /&gt;
== Developer Resources ==&lt;br /&gt;
* [[Developer FAQ]]&lt;br /&gt;
* [[Regression test authoring]]&lt;br /&gt;
* [[HowToBetaTest|HOWTO Alpha and Beta Test PostgreSQL]]&lt;br /&gt;
* [[Working with Git]]&lt;br /&gt;
* [[Working with CVS]] (obsolete)&lt;br /&gt;
* [[Working with Eclipse]] (using CVS)&lt;br /&gt;
* [[Fixing shift/reduce conflicts in Bison]]&lt;br /&gt;
* [[PL Matrix|Procedural Language Matrix]]&lt;br /&gt;
* [http://www.postgresql.org/about/featurematrix Feature Matrix]&lt;br /&gt;
* [http://www.postgresql.org/developer/coding PostgreSQL Coding]&lt;br /&gt;
* [http://developer.postgresql.org/pgdocs/postgres/index.html Development docs] (updated every 5 minutes)&lt;br /&gt;
* [[Project Hosting]]&lt;br /&gt;
* [http://www.pgcon.org/2010/schedule/attachments/142_HackingWithUDFs.pdf Exposing PostgreSQL Internals with UDFs (2010)]&lt;br /&gt;
&lt;br /&gt;
== Projects and Planning ==&lt;br /&gt;
* [http://commitfest.postgresql.org/action/commitfest_view/open Open CommitFest] - New patch submissions for 9.3&lt;br /&gt;
* [https://commitfest.postgresql.org/ CommitFest]&lt;br /&gt;
* [[PostgreSQL 8.4]]&lt;br /&gt;
* [[PgCon 2012 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2011 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2010 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2009 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2008 Developer Meeting]]&lt;br /&gt;
* [[Development projects]] - links to individual projects&lt;br /&gt;
&lt;br /&gt;
==PostgreSQL Past Development==&lt;br /&gt;
* [[PostgreSQL 9.2 Open Items]]&lt;br /&gt;
* [[PostgreSQL 9.2 Development Plan]]&lt;br /&gt;
* [[PostgreSQL 9.1 Open Items]]&lt;br /&gt;
* [[PostgreSQL 9.1 Development Plan]]&lt;br /&gt;
* [[PostgreSQL 9.0 Open Items]]&lt;br /&gt;
* [[85AlphaFeatures|PostgreSQL 9.0 Alpha Release Feature List]]&lt;br /&gt;
&lt;br /&gt;
[[Category:CommitFest]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PostgreSQL_9.3_Development_Plan</id>
		<title>PostgreSQL 9.3 Development Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PostgreSQL_9.3_Development_Plan"/>
				<updated>2012-11-16T06:27:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Create 9.3 plan based on 9.2 plan plus developer meeting notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The timeline for the PostgreSQL 9.3 development cycle was initially planned at the [[PgCon 2012 Developer Meeting]].  The schedule is based on the [[PostgreSQL 9.2 Development Plan|9.2 timeline]] moved forward one year, with some optimizations from on developer feedback.&lt;br /&gt;
&lt;br /&gt;
* June 1, 2012: branch off 9.2, committing into head/trunk/master for 9.3 can begin.&lt;br /&gt;
* June 15, 2011 - July 15, 2011: [https://commitfest.postgresql.org/action/commitfest_view?id=14 commit fest 1].  Primarily for contributors who are not involved in preparing the 9.2 release.&lt;br /&gt;
* September 15, 2011 - October 15, 2011: [https://commitfest.postgresql.org/action/commitfest_view?id=15 commit fest 2]&lt;br /&gt;
* November 15, 2011 - December 15, 2011: [https://commitfest.postgresql.org/action/commitfest_view?id=16 commit fest 3]&lt;br /&gt;
** Dec 8-15 Final feature planning week&lt;br /&gt;
* January 15, 2012 - February 15, 2012: [https://commitfest.postgresql.org/action/commitfest_view?id=17 commit fest 4]&lt;br /&gt;
** Final Triage: Feb 1–7 &lt;br /&gt;
* Around February 20, 2012: 9.2alpha release&lt;br /&gt;
* Followed by possibly more alpha releases&lt;br /&gt;
* Beta&lt;br /&gt;
* Release candidates&lt;br /&gt;
* Release&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL 9.3]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PostgreSQL_9.3_Open_Items</id>
		<title>PostgreSQL 9.3 Open Items</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PostgreSQL_9.3_Open_Items"/>
				<updated>2012-11-16T06:19:13Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Created 9.3 open items page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Planning ==&lt;br /&gt;
See the [[PostgreSQL 9.3 Development Plan]].&lt;br /&gt;
&lt;br /&gt;
== Blockers for 9.3 ==&lt;br /&gt;
&lt;br /&gt;
== Not Blockers for 9.3 ==&lt;br /&gt;
&lt;br /&gt;
== Meta-Issues ==&lt;br /&gt;
&lt;br /&gt;
== Resolved Issues ==&lt;br /&gt;
&lt;br /&gt;
== Long-term Issues ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL 9.3]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Postgres_Open_2012</id>
		<title>Postgres Open 2012</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Postgres_Open_2012"/>
				<updated>2012-11-01T16:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add link to &amp;quot;Query Logging and Workload Analysis&amp;quot; talk&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides for talks will be linked here!&lt;br /&gt;
&lt;br /&gt;
== Monday September 17 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.postgresql.org/wiki/File:Pg_security_20120917.odp PostgreSQL AuthN / AuthZ]&lt;br /&gt;
* [https://wiki.postgresql.org/images/8/86/PostgreSQL_on_ZFS.pdf PostgreSQL on ZFS]&lt;br /&gt;
&lt;br /&gt;
== Tuesday September 18 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.postgresql.org/images/7/73/Range-types-pgopen-2012.pdf Range Types in PostgreSQL 9.2 - Your Life Will Never Be the Same]&lt;br /&gt;
* [[Media:PGXC_Scalability_PGOpen2012.pdf|Scaling out by distributing and replicating data in Postgres-XC]]&lt;br /&gt;
* PostgreSQL When It's Not Your Job&lt;br /&gt;
&lt;br /&gt;
* [http://tapoueh.org/images/fotolog.pdf Large Scale MySQL Migration to PostgreSQL]&lt;br /&gt;
* Choosing a logical replication system: Slony vs Bucardo&lt;br /&gt;
* Temporal Database Demo&lt;br /&gt;
&lt;br /&gt;
* [http://www.setspace.com/~jmscott/pgopen-2012-ams-talk.pdf 12 Calm Years of PostgreSQL in Critical Messaging]&lt;br /&gt;
* [https://speakerdeck.com/u/jacobian/p/the-first-postsql-database PostgreSQL in the cloud: Theory and Practice]&lt;br /&gt;
* [http://www.hagander.net/talks/Backup%20strategies.pdf PostgreSQL Backup Strategies]&lt;br /&gt;
&lt;br /&gt;
* This Is PostGIS&lt;br /&gt;
* [http://plv8-pgopen.herokuapp.com Embracing the Web with JSON and PLV8]&lt;br /&gt;
* How Akiban Implemented a New Database Compatible with the PostgreSQL Protocol&lt;br /&gt;
&lt;br /&gt;
* [[Media:Ha_postgres.pdf|High Availability with PostgreSQL and Pacemaker]]&lt;br /&gt;
* [[Media:Logging_pgopen_withnotes.pdf|Logging: Not Just for Lumberjacks]]&lt;br /&gt;
* [http://stuff.coffeecode.net/2012/pgopen_fulltext/pgsql-fulltext-intro.html Full-text search - seek and ye shall find]&lt;br /&gt;
&lt;br /&gt;
=== Lightning Talks ===&lt;br /&gt;
&lt;br /&gt;
[http://keithf4.com/sites/keithf4.com/files/pgjobmon_pgopen2012.pdf I wonder if my function works? (pg_jobmon)]&lt;br /&gt;
&lt;br /&gt;
== Wednesday September 19 ==&lt;br /&gt;
&lt;br /&gt;
* [http://pgexperts.com/document.html?id=54 Super Jumbo Deluxe], plus [http://pgexperts.com/presentations.html more presentations here]&lt;br /&gt;
* [[Media:OO_approach.pdf|An object oriented approach to data driven software development]]&lt;br /&gt;
* TransLattice Elastic Database Architecture Deep Dive&lt;br /&gt;
&lt;br /&gt;
* [http://www.pateldenish.com/2012/04/deploying-maximum-ha-architecture-with-postgresql.html Deploying maximum HA architecture with Postgres] , for pg_reorg [http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=p90xyourdatabase-13010796913746-phpapp02&amp;amp;stripped_title=p90-x-your-database p90x talk]&lt;br /&gt;
* [https://docs.google.com/presentation/pub?id=1xKixOq3NP0OjQyXpL46woSDel-LzXxtbjDVOJX-holw&amp;amp;start=false&amp;amp;loop=false Scaling Postgres with some help from Redis]&lt;br /&gt;
* Retail DDL&lt;br /&gt;
* [http://2ndquadrant.com/media/cms_page_media/59/BeyondQueryLogging.pdf Query Logging and Workload Analysis] (link is to updated version titled &amp;quot;Beyond Query Logging&amp;quot;)&lt;br /&gt;
* [[Media:Postgres-xc-sharednothing-pgopen2012.pdf|A Shared-nothing cluster system: Postgres-XC]]&lt;br /&gt;
* [http://jkshah.blogspot.com/2012/09/pgopen-2012-dvdstore-benchmark-and.html DVDStore Benchmark and PostgreSQL]&lt;br /&gt;
&lt;br /&gt;
* Performance Improvements in PostgreSQL 9.2&lt;br /&gt;
* [http://2ndquadrant.com/media/cms_page_media/59/CommitBatching.pdf A Batch of Commit Batching]&lt;br /&gt;
* [http://momjian.us/main/presentations/features.html#cte Programming the SQL Way with Common Table Expressions]&lt;br /&gt;
&lt;br /&gt;
* [https://speakerdeck.com/u/randommood/p/postgres-is-the-new-default Postgres is the new default – how we transitioned our platform at Engine Yard and why you should too]&lt;br /&gt;
* Leveraging PLV8 in Javascript-heavy Web Applications&lt;br /&gt;
* [http://keithf4.com/sites/keithf4.com/files/pgextractor_pgopen2012.pdf PG Extractor - A smarter pg_dump]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Postgres_Open_2012</id>
		<title>Postgres Open 2012</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Postgres_Open_2012"/>
				<updated>2012-10-09T18:40:47Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add Commit Batching talk slides&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides for talks will be linked here!&lt;br /&gt;
&lt;br /&gt;
== Monday September 17 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.postgresql.org/wiki/File:Pg_security_20120917.odp PostgreSQL AuthN / AuthZ]&lt;br /&gt;
&lt;br /&gt;
== Tuesday September 18 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.postgresql.org/images/7/73/Range-types-pgopen-2012.pdf Range Types in PostgreSQL 9.2 - Your Life Will Never Be the Same]&lt;br /&gt;
* Scaling out by distributing and replicating data in Postgres-XC&lt;br /&gt;
* PostgreSQL When It's Not Your Job&lt;br /&gt;
&lt;br /&gt;
* [http://tapoueh.org/images/fotolog.pdf Large Scale MySQL Migration to PostgreSQL]&lt;br /&gt;
* Choosing a logical replication system: Slony vs Bucardo&lt;br /&gt;
* Temporal Database Demo&lt;br /&gt;
&lt;br /&gt;
* [http://www.setspace.com/~jmscott/pgopen-2012-ams-talk.pdf 12 Calm Years of PostgreSQL in Critical Messaging]&lt;br /&gt;
* [https://speakerdeck.com/u/jacobian/p/the-first-postsql-database PostgreSQL in the cloud: Theory and Practice]&lt;br /&gt;
* [http://www.hagander.net/talks/Backup%20strategies.pdf PostgreSQL Backup Strategies]&lt;br /&gt;
&lt;br /&gt;
* This Is PostGIS&lt;br /&gt;
* [http://plv8-pgopen.herokuapp.com Embracing the Web with JSON and PLV8]&lt;br /&gt;
* How Akiban Implemented a New Database Compatible with the PostgreSQL Protocol&lt;br /&gt;
&lt;br /&gt;
* [[Media:Ha_postgres.pdf|High Availability with PostgreSQL and Pacemaker]]&lt;br /&gt;
* [[Media:Logging_pgopen_withnotes.pdf|Logging: Not Just for Lumberjacks]]&lt;br /&gt;
* [http://stuff.coffeecode.net/2012/pgopen_fulltext/pgsql-fulltext-intro.html Full-text search - seek and ye shall find]&lt;br /&gt;
&lt;br /&gt;
=== Lightning Talks ===&lt;br /&gt;
&lt;br /&gt;
[http://keithf4.com/sites/keithf4.com/files/pgjobmon_pgopen2012.pdf I wonder if my function works? (pg_jobmon)]&lt;br /&gt;
&lt;br /&gt;
== Wednesday September 19 ==&lt;br /&gt;
&lt;br /&gt;
* [http://pgexperts.com/document.html?id=54 Super Jumbo Deluxe], plus [http://pgexperts.com/presentations.html more presentations here]&lt;br /&gt;
* [[Media:OO_approach.pdf|An object oriented approach to data driven software development]]&lt;br /&gt;
* TransLattice Elastic Database Architecture Deep Dive&lt;br /&gt;
&lt;br /&gt;
* [http://www.pateldenish.com/2012/04/deploying-maximum-ha-architecture-with-postgresql.html Deploying maximum HA architecture with Postgres] , for pg_reorg [http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=p90xyourdatabase-13010796913746-phpapp02&amp;amp;stripped_title=p90-x-your-database p90x talk]&lt;br /&gt;
* [https://docs.google.com/presentation/pub?id=1xKixOq3NP0OjQyXpL46woSDel-LzXxtbjDVOJX-holw&amp;amp;start=false&amp;amp;loop=false Scaling Postgres with some help from Redis]&lt;br /&gt;
* Retail DDL&lt;br /&gt;
&lt;br /&gt;
* Query Logging and Workload Analysis&lt;br /&gt;
* A Shared-nothing cluster system: Postgres-XC&lt;br /&gt;
* [http://jkshah.blogspot.com/2012/09/pgopen-2012-dvdstore-benchmark-and.html DVDStore Benchmark and PostgreSQL]&lt;br /&gt;
&lt;br /&gt;
* Performance Improvements in PostgreSQL 9.2&lt;br /&gt;
* [[Media:CommitBatching.pdf|A Batch of Commit Batching]]&lt;br /&gt;
* [http://momjian.us/main/presentations/features.html#cte Programming the SQL Way with Common Table Expressions]&lt;br /&gt;
&lt;br /&gt;
* [https://speakerdeck.com/u/randommood/p/postgres-is-the-new-default Postgres is the new default – how we transitioned our platform at Engine Yard and why you should too]&lt;br /&gt;
* Leveraging PLV8 in Javascript-heavy Web Applications&lt;br /&gt;
* [http://keithf4.com/sites/keithf4.com/files/pgextractor_pgopen2012.pdf PG Extractor - A smarter pg_dump]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting</id>
		<title>PgCon 2012 Developer Meeting</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting"/>
				<updated>2012-05-16T16:16:32Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add what developers want section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A meeting of the most active PostgreSQL developers is being planned for Wednesday 16th May, 2012 near the University of Ottawa, prior to pgCon 2012. In order to keep the numbers manageable, this meeting is '''by invitation only'''. Unfortunately it is quite possible that we've overlooked important code developers during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org). &lt;br /&gt;
&lt;br /&gt;
Please note that this year the attendee numbers have been cut to try to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.2 release cycle. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies, unlike in previous years.&lt;br /&gt;
&lt;br /&gt;
This is a PostgreSQL Community event. Room and refreshments/food sponsored by EnterpriseDB. Other companies sponsored attendance for their developers.&lt;br /&gt;
 &lt;br /&gt;
== Time &amp;amp; Location ==&lt;br /&gt;
&lt;br /&gt;
The meeting will be from 8:30AM to 5PM, and will be in the &amp;quot;Red Experience&amp;quot; room at:&lt;br /&gt;
&lt;br /&gt;
 Novotel Ottawa&lt;br /&gt;
 33 Nicholas Street&lt;br /&gt;
 Ottawa&lt;br /&gt;
 Ontario&lt;br /&gt;
 K1N 9M7&lt;br /&gt;
 &lt;br /&gt;
Food and drink will be provided throughout the day, including breakfast from 8AM.&lt;br /&gt;
&lt;br /&gt;
[http://maps.google.ca/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=novotel+ottawa&amp;amp;aq=&amp;amp;sll=49.891235,-97.15369&amp;amp;sspn=36.237851,79.013672&amp;amp;ie=UTF8&amp;amp;hq=novotel+ottawa&amp;amp;hnear=&amp;amp;ll=45.421528,-75.683699&amp;amp;spn=0.036869,0.077162&amp;amp;z=14&amp;amp;iwloc=A&amp;amp;layer=c&amp;amp;cbll=45.425741,-75.689638&amp;amp;panoid=Z4FUGnkZkdHAOkIxyjjS9Q&amp;amp;cbp=12,25.83,,0,-0.6 View on Google Maps]&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
&lt;br /&gt;
The following people have RSVPed to the meeting (in alphabetical order, by surname):&lt;br /&gt;
&lt;br /&gt;
* Oleg Bartunov&lt;br /&gt;
* Josh Berkus (Secretary)&lt;br /&gt;
* Jeff Davis&lt;br /&gt;
* Andrew Dunstan&lt;br /&gt;
* Dimitri Fontaine&lt;br /&gt;
* Stephen Frost&lt;br /&gt;
* Peter Geoghegan&lt;br /&gt;
* Kevin Grittner&lt;br /&gt;
* Robert Haas&lt;br /&gt;
* Magnus Hagander&lt;br /&gt;
* Shigeru Hanada&lt;br /&gt;
* Hitoshi Harada&lt;br /&gt;
* KaiGai Kohei&lt;br /&gt;
* Tom Lane&lt;br /&gt;
* Noah Misch&lt;br /&gt;
* Bruce Momjian&lt;br /&gt;
* Dave Page (Chair)&lt;br /&gt;
* Simon Riggs&lt;br /&gt;
* Teodor Sigaev&lt;br /&gt;
* Greg Smith&lt;br /&gt;
&lt;br /&gt;
== Proposed Agenda Items ==&lt;br /&gt;
&lt;br /&gt;
Please list proposed agenda items here:&lt;br /&gt;
&lt;br /&gt;
* Agree CommitFest schedule for 9.3 (Strawman from Simon)&lt;br /&gt;
** CF1 June 15, 2012 - 1 month&lt;br /&gt;
** CF2 Sep 15, 2012 - 1 month&lt;br /&gt;
** CF3 Nov 15, 2012 - 1 month&lt;br /&gt;
** CF4 Jan 15, 2013 - 2 months&lt;br /&gt;
* Queuing [Dimitri, Kevin]&lt;br /&gt;
** Description: efficient and transactional queuing is a very common need for application using databases, and could help implementing some internal features&lt;br /&gt;
** Goals: get an agreement that core is the right place where to solve that problem, and what parts of it we want in core exactly&lt;br /&gt;
* Materialized views [Kevin]&lt;br /&gt;
** Description: Declarative materialized views are a frequently requested feature, but means many things to many people.  It's not likely that an initial implementation will address everything.  We need a base set of functionality on which to build.&lt;br /&gt;
** Goals: Reach consensus on what a minimum feature set for commit would be.&lt;br /&gt;
* Partitioning and Segment Exclusion [Dimitri]&lt;br /&gt;
** Description: to solve partitioning, we need to agree on a global approach&lt;br /&gt;
** Goals: agreeing on SE as a basis for better partitioning, having a &amp;quot;GO&amp;quot; on working on SE&lt;br /&gt;
* MERGE: Challenges and priorities [Peter G]&lt;br /&gt;
** Description: Implementing the MERGE statement for 9.3. It is envisaged specifically as an atomic &amp;quot;upsert&amp;quot; operation.&lt;br /&gt;
** Goals: To get buy-in on various aspects of the feature's development, and, ideally, to secure reviewer resources or other support. Because of the complexity of the feature, early interest from reviewers is preferable.&lt;br /&gt;
* Row-level Access Control and SELinux [KaiGai]&lt;br /&gt;
** Security label on user tables&lt;br /&gt;
** Dynamic expandable enum data types&lt;br /&gt;
** Enforcement of triggers by extension&lt;br /&gt;
* Enhancement of FDW at v9.3 [KaiGai]&lt;br /&gt;
** Writable foreign tables&lt;br /&gt;
** Stuffs to be pushed down (Join, Aggregate, Sort, ...)&lt;br /&gt;
** Inheritance of foreign/regular tables&lt;br /&gt;
** Constraint (PK/FK) &amp;amp; Trigger support.&lt;br /&gt;
* Type registry [Andrew]&lt;br /&gt;
** Provide for known OIDs for non-builtin types, and possibly for their IO functions too&lt;br /&gt;
** Would make it possible to write code in core or in extension X that handles a type defined in extension Y.&lt;br /&gt;
* Ending CommitFests in a timely fashion, especially the last one.  Avoiding a crush of massive feature patches at the end of the cycle.  Handling big patches that aren't quite ready yet.  Getting more people to help with patch review. [Robert]&lt;br /&gt;
* What Developers Want [Josh]&lt;br /&gt;
** Description: a top-5 list of features and obstacles to developer adoption of PostgreSQL (with slides)&lt;br /&gt;
** Goal: to set priorities for some features aimed at application users&lt;br /&gt;
* In-Place Upgrades &amp;amp; Checksums [Greg Smith, Simon]&lt;br /&gt;
** Description:  Revisit in-place upgrades of the page format, now that pg_upgrade is available and multiple checksum implementations needing it have been proposed.&lt;br /&gt;
** Goal:  Nail down some incremental milestones for 9.3 development to aim at.&lt;br /&gt;
* Autonomous Transactions [Simon]&lt;br /&gt;
** Overview of idea, relationship to stored procedures&lt;br /&gt;
** Feedback, buy-in and/or alternatives&lt;br /&gt;
* Parallel Query [Bruce Momjian]&lt;br /&gt;
** Hope to get buy-in for what parallel operations we are hoping to add in upcoming releases&lt;br /&gt;
* Report from Clustering Meeting [Josh] (10 min)&lt;br /&gt;
** Description: to summarize the discussions of the cluster-hackers meeting from the previous day&lt;br /&gt;
** Goal: inter-team synchronization.  Possibly, decisions requested on specific in-core features.&lt;br /&gt;
* Double Write Buffers [Simon]&lt;br /&gt;
** Is anyone committing to do that for 9.3?&lt;br /&gt;
&lt;br /&gt;
* Goals, priorities, and resources for 9.3 [All]&lt;br /&gt;
** For roadmap and planning purposes, set expectations and coordinate work schedules for 9.3.  Confirm who is doing what, identify interested reviewers at start, and check for gaps.&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Time&lt;br /&gt;
!Item&lt;br /&gt;
!Presenter&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:00&lt;br /&gt;
|Breakfast&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:30 - 08:45&lt;br /&gt;
|Welcome and introductions&lt;br /&gt;
|Dave Page&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|08:45 - 09:15&lt;br /&gt;
|Autonomous transactions&lt;br /&gt;
|Simon Riggs&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|09:15 - 09:40&lt;br /&gt;
|[[Queuing]]&lt;br /&gt;
|Dimitri Fontaine/Kevin Grittner&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|09:40 - 09:50&lt;br /&gt;
|Report from the Clustering Meeting&lt;br /&gt;
|Josh Berkus&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|09:50 - 10:10&lt;br /&gt;
|Type registry&lt;br /&gt;
|Andrew Dunstan&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10:10 - 10:30&lt;br /&gt;
|Access control and SELinux&lt;br /&gt;
|KaiGai Kohei&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|10:30 - 10:45&lt;br /&gt;
|Coffee break&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10:45 - 11:15&lt;br /&gt;
|Enhancement of FDWs in 9.3&lt;br /&gt;
|KaiGai Kohei&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|11:15 - 11:30&lt;br /&gt;
|What developers want&lt;br /&gt;
|Josh Berkus&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|11:30 - 12:00&lt;br /&gt;
|Parallel Query&lt;br /&gt;
|Bruce Momjian&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|12:00 - 12:30&lt;br /&gt;
|MERGE: Challenges and priorities&lt;br /&gt;
|Peter Geoghegan&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|12:30 - 13:30&lt;br /&gt;
|Lunch	&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|13:30 - 14:00&lt;br /&gt;
|Materialised views&lt;br /&gt;
|Kevin Grittner&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14:00 - 14:20&lt;br /&gt;
|In place upgrades and checksums&lt;br /&gt;
|Simon Riggs/Greg Smith&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14:20 - 14:45&lt;br /&gt;
|Partitioning and segment exclusion&lt;br /&gt;
|Dimitri Fontaine&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14:45 - 15:00&lt;br /&gt;
|Commitfest Schedule&lt;br /&gt;
|All&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|15:00 - 15:15&lt;br /&gt;
|Tea break&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|15:15 - 15:40&lt;br /&gt;
|Commitfest management&lt;br /&gt;
|Robert Haas&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|15:40 - 16:45&lt;br /&gt;
|Goals, priorities, and resources for 9.3&lt;br /&gt;
|All&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|16:45 - 17:00&lt;br /&gt;
|Any other business/group photo&lt;br /&gt;
|Dave Page&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|17:00&lt;br /&gt;
|Finish&lt;br /&gt;
|	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Minutes==&lt;br /&gt;
&lt;br /&gt;
== 2012 Developer Meeting Minutes ==&lt;br /&gt;
&lt;br /&gt;
Started with introductions.&lt;br /&gt;
&lt;br /&gt;
=== Autonomous Transactions ===&lt;br /&gt;
&lt;br /&gt;
Simon brought this to get some feedback on the idea.  Autonomous transactions (ATX) are a transaction inside a transaction ... a new top-level transaction.  In Oracle, it's not just one new transaction, it's a whole new context which can submit multiple new transactions.  There is no connection between parent and child transactions, which can result in new types of deadlocks.&lt;br /&gt;
&lt;br /&gt;
Each new transaction context would allocate a new pg_exec from a pg_proc call.  Implementation is straightforwards, just have to handle locking.  Allows us to implement stored procedures in an interesting way.  If we treat a stored procedure as an autonomous transaction, then this solves some problems.  We can put COMMIT&amp;lt; ROLLBACK, other things in stored procedures.  &lt;br /&gt;
&lt;br /&gt;
Tom suggested that ATX don't need to conflict with parent transaction locks.  Noah pointed out some issues with that.  We'd need to have a switch for Stored Procedures in order to indicate they are autonomous, like using CREATE STORED PROCEDURE.  We'd be using an additional client slot for each ATX, which could be a problem.  Oracle's limit on ATX is 70 per connection, which seems like a lot.  Maybe we should try to hold them all to a single session like it was a subtransaction.   Not sure if we can do this, Simons will need to take a look at is.&lt;br /&gt;
&lt;br /&gt;
ATX also need to eventually be able to run utility commands, like VACUUM and CREATE INDEX CONCURRENTLY.  &lt;br /&gt;
&lt;br /&gt;
=== Queueing ===&lt;br /&gt;
&lt;br /&gt;
Ultimately the materialized views will need some kind of queueing.  Once we have queueing in core, it could be generally useful.  CLUSTER CONCURRENTLY would need it, or application queues will need queueing structure.  We might want to have it exposed at the SQL level.  You put things in the queue, and at commit, others can see it.  LISTEN/NOTIFY is sort of a queue, but is only one item and vanishes if you're not listening.&lt;br /&gt;
&lt;br /&gt;
Like a table, but access semantics are different.  Would need logged/unlogged queues.  Some discussion about how queues are different from tables.  Haas wondered about whether what we need for interal queues are the same as what users need for user-visible queues.&lt;br /&gt;
&lt;br /&gt;
Queue-tables also need different performance characteristics.    We don't need queues so much as we need deferred action.  We also need background processes which wake up and check the queue.  Queues could be built on top of tables.  Discussion about uses, designs for queues ensued.&lt;br /&gt;
&lt;br /&gt;
We need a really clear design spec for how queues would work.  There are specific performance improvements we want for queueing, but they're likely to be just improvements on table performance.  The idea is to have a generalized API instead of reinventing a bunch of times.&lt;br /&gt;
&lt;br /&gt;
Next steps is to collect use cases. [[Queueing|Kevin &amp;amp; Dimitri will collect use cases on a wiki page]], to design an API.  Performance optimization needs to look at access pattern.  Simon pointed out that this works similar to fact tables where you want to move stuff forward constantly. Users might not use queues as pure FIFO.&lt;br /&gt;
&lt;br /&gt;
Unlinking segments works for deleting from the beginning of a table but indexes could be a problem.  Block numbers could be a practical problem, we might need wraparound, or reset-to-zero.&lt;br /&gt;
&lt;br /&gt;
=== Report on Clustering Meeting ===&lt;br /&gt;
&lt;br /&gt;
See [[PgCon2012CanadaClusterSummit|minutes]].&lt;br /&gt;
&lt;br /&gt;
=== Type Registry ===&lt;br /&gt;
&lt;br /&gt;
WIP idea.  Hstores aren't build in, so they get an arbitrary OID, which causes issues with writing generic code.  Looking up they type name is expensive.  It would be nice to have a registry for types where people writing extensions are allocated an OID.  Andrew gave example of hacking Postgres to support upgrading from the optional JSON type in 9.1 to the built-in type in 9.2.&lt;br /&gt;
&lt;br /&gt;
We need to expose the pg_upgrade stuff as well, set_binary_upgrade.  Should we use something other than and OID?  We need the OIDs for upgrade and for drivers.  Driver identicalness isn't the same as pg_upgradability, so we might want two different switches for that.  Maybe we should have a new OID if you change the storage of a type?&lt;br /&gt;
&lt;br /&gt;
What's the criterion for allocating an OID?  We'll need some kind of judgement.  We'll also need to block off the OID reserved space into sections.  People generally found this to be a good idea.  Andrew will create a wiki page and follow-up.  We could just do this for contrib, but that's not really a good idea.&lt;br /&gt;
&lt;br /&gt;
We could have CREATE TYPE ... WITH OID = ###, for base types only.  The folks who want it for ENUM etc. are just replication/clustering authors.  There was discussion of other approaches to handling these problems.  Users will create types with OIDs which conflict.&lt;br /&gt;
&lt;br /&gt;
=== Access Control and SE-Linux ===&lt;br /&gt;
&lt;br /&gt;
Several components: to add security around user tables.  Second, to add additional conditions around user queries.  Third, a condition around new tuples which are inserted.  Fourth, we should have ENUMs to represent user-defined security labels.  Did some performance testing on the last part, having labels as OIDs was much faster and closer to non-SE performance.&lt;br /&gt;
&lt;br /&gt;
There's concurrency issues around seeing new labels -- we'd have a huge issue with inserting the labels into the system table.  Creating a new label could be a downtime event; we can have a utility command, and we can require users to create a new label first manually.   But what happens if the new label isn't there?   Should error just like a constraint.&lt;br /&gt;
&lt;br /&gt;
Is there a way to query SE-linux to get all of the security labels?  That's hard, because it's four fields.  The last field is an issue for prediction.  There's a lot of value in having row-level security be completely type-agnosic; we just have a string and we don't care what's in it.&lt;br /&gt;
&lt;br /&gt;
An SE Label consists of: user, row field, type field, and (something inaudible).  That last part is a kind of bitmap.  Do we actually need that part, though?    What's multi-category security, will we support that?  How many different labels would you have on a specific table?&lt;br /&gt;
&lt;br /&gt;
The idea of row-level security is to force quals on people.  Currently it's not transparent.  The discussion on labels needs to continue elsewhere.&lt;br /&gt;
&lt;br /&gt;
Also we need to address FK and PK implementation for security labels.&lt;br /&gt;
&lt;br /&gt;
=== What Developers want ===&lt;br /&gt;
&lt;br /&gt;
PostgreSQL is becoming the default for many web applications like Ruby and Django.  But there are plenty of users complaints.  They don't show up on the PostgreSQL mailing lists.  The developer complaints are on stackoverflow, forums for virtual hosting companies, and application specific lists like ORM/framework layers.&lt;br /&gt;
&lt;br /&gt;
Two categories of developer comments:  blockers that cause to use another tool, and enhancers that would expand the market into new areas.  Many of these are available features, but they seem to hard to use.&lt;br /&gt;
&lt;br /&gt;
==== Blockers ====&lt;br /&gt;
&lt;br /&gt;
1.  Installation onto developer laptops (Windows / OS X)&lt;br /&gt;
* Re-installs problematic in Windows&lt;br /&gt;
* Reinstall of Redis is the competitor here, it is a closer to a true one-click installer.&lt;br /&gt;
* People use Redis because it's &amp;quot;easy to install&amp;quot;, while PostgreSQL ran into one of multiple problems (reported on lists like pgsql-general)&lt;br /&gt;
* postgres.app is aiming at simplifying things for Mac developers, is in beta&lt;br /&gt;
* Kevin:  also seen issues with Rails + Rake, lots of questions on Stackoverflow.&lt;br /&gt;
2.  Complexity of configuring PostgreSQL, i.e. postgresql.conf&lt;br /&gt;
* Shared memory issues on the Mac&lt;br /&gt;
** Could use POSIX shared memory instead Sys V&lt;br /&gt;
* Need a configuration generator and hints for settings that are set incorrectly&lt;br /&gt;
**Example:  need to increase size of the transaction log with pg_xlog having X GB of space.  Math to determine settings like checkpoint_segements given a GB target is complicated.&lt;br /&gt;
3.  Better analysis and troubleshooting&lt;br /&gt;
* Expose everything via SQL, i.e. autovacuum ; no parsing logs.&lt;br /&gt;
* EXPLAIN needs to be easier to understand, suggest what needs to be done when planner mistakes are made.&lt;br /&gt;
* Freeze a stable query plan needed for some apps.&lt;br /&gt;
4.  Easier to understand replication&lt;br /&gt;
* External projects that try to help are often less maintained/robust/documented than core&lt;br /&gt;
* Same thing is true for pooling projects&lt;br /&gt;
5. Better pg_upgrade&lt;br /&gt;
* More trustworthy&lt;br /&gt;
* Handle version upgrades across large clusters&lt;br /&gt;
* Deliver on &amp;lt;5 minutes promise.  Can take a long time for statistics ANALYZE.  Needs to save/restore that instead.&lt;br /&gt;
6. MERGE UPSERT&lt;br /&gt;
&lt;br /&gt;
=== Enabling features to broaden userbase ===&lt;br /&gt;
&lt;br /&gt;
1. Finish JSON support&lt;br /&gt;
* Most popular new feature on news sites LWN etc. since 9.0 replication&lt;br /&gt;
* Some people want simple document storage like NoSQL, but with PostgreSQl reliability&lt;br /&gt;
* Needs indexing performance improvements&lt;br /&gt;
* More extract from JSON features&lt;br /&gt;
* Schemaless PostgreSQL is possible with JSON or hstore, but it's not obvious that's true.&lt;br /&gt;
2.  Better extensions&lt;br /&gt;
* Packaging for popular extensions on popular &lt;br /&gt;
* Extensions should follow replication; move .so to standby?  Lots of resistance to that idea.&lt;br /&gt;
* Better visibility of extensions, and extension aggregators like PGXN.&lt;br /&gt;
3.  Client language queries&lt;br /&gt;
* Straight from, say, Python to a parse tree&lt;br /&gt;
* SQL Server/.Net does move in this direction for C#&lt;br /&gt;
* Competition here is the non-relational databases&lt;br /&gt;
4.  Built-in sharding&lt;br /&gt;
* PL/Proxy:  must find it, minimal docs, questions around support situation&lt;br /&gt;
* Target user base here doesn't like SQL or functions much either&lt;br /&gt;
* Base on writable FDW?&lt;br /&gt;
* Borrow ideas from notable sharded PostgreSQL deployments?&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting</id>
		<title>PgCon 2012 Developer Meeting</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting"/>
				<updated>2012-05-10T03:29:25Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Rearrange to put longer &amp;quot;Goals..&amp;quot; section at end&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A meeting of the most active PostgreSQL developers is being planned for Wednesday 16th May, 2012 near the University of Ottawa, prior to pgCon 2012. In order to keep the numbers manageable, this meeting is '''by invitation only'''. Unfortunately it is quite possible that we've overlooked important code developers during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org). &lt;br /&gt;
&lt;br /&gt;
Please note that this year the attendee numbers have been cut to try to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.2 release cycle. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies, unlike in previous years.&lt;br /&gt;
&lt;br /&gt;
This is a PostgreSQL Community event. Room and refreshments/food sponsored by EnterpriseDB. Other companies sponsored attendance for their developers.&lt;br /&gt;
 &lt;br /&gt;
== Time &amp;amp; Location ==&lt;br /&gt;
&lt;br /&gt;
The meeting will be from 9AM to 5PM, and will be in the &amp;quot;Red Experience&amp;quot; room at:&lt;br /&gt;
&lt;br /&gt;
 Novotel Ottawa&lt;br /&gt;
 33 Nicholas Street&lt;br /&gt;
 Ottawa&lt;br /&gt;
 Ontario&lt;br /&gt;
 K1N 9M7&lt;br /&gt;
 &lt;br /&gt;
Food and drink will be provided throughout the day, including breakfast from 8AM.&lt;br /&gt;
&lt;br /&gt;
[http://maps.google.ca/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=novotel+ottawa&amp;amp;aq=&amp;amp;sll=49.891235,-97.15369&amp;amp;sspn=36.237851,79.013672&amp;amp;ie=UTF8&amp;amp;hq=novotel+ottawa&amp;amp;hnear=&amp;amp;ll=45.421528,-75.683699&amp;amp;spn=0.036869,0.077162&amp;amp;z=14&amp;amp;iwloc=A&amp;amp;layer=c&amp;amp;cbll=45.425741,-75.689638&amp;amp;panoid=Z4FUGnkZkdHAOkIxyjjS9Q&amp;amp;cbp=12,25.83,,0,-0.6 View on Google Maps]&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
&lt;br /&gt;
The following people have RSVPed to the meeting (in alphabetical order, by surname):&lt;br /&gt;
&lt;br /&gt;
* Oleg Bartunov&lt;br /&gt;
* Josh Berkus (Secretary)&lt;br /&gt;
* Jeff Davis&lt;br /&gt;
* Andrew Dunstan&lt;br /&gt;
* Dimitri Fontaine&lt;br /&gt;
* Stephen Frost&lt;br /&gt;
* Peter Geoghegan&lt;br /&gt;
* Kevin Grittner&lt;br /&gt;
* Robert Haas&lt;br /&gt;
* Magnus Hagander&lt;br /&gt;
* Shigeru Hanada&lt;br /&gt;
* Hitoshi Harada&lt;br /&gt;
* KaiGai Kohei&lt;br /&gt;
* Tom Lane&lt;br /&gt;
* Noah Misch&lt;br /&gt;
* Bruce Momjian&lt;br /&gt;
* Dave Page (Chair)&lt;br /&gt;
* Simon Riggs&lt;br /&gt;
* Teodor Sigaev&lt;br /&gt;
* Greg Smith&lt;br /&gt;
&lt;br /&gt;
== Proposed Agenda Items ==&lt;br /&gt;
&lt;br /&gt;
Please list proposed agenda items here:&lt;br /&gt;
&lt;br /&gt;
* Agree CommitFest schedule for 9.3 (Strawman from Simon)&lt;br /&gt;
** CF1 June 15, 2012 - 1 month&lt;br /&gt;
** CF2 Sep 15, 2012 - 1 month&lt;br /&gt;
** CF3 Nov 15, 2012 - 1 month&lt;br /&gt;
** CF4 Jan 15, 2013 - 2 months&lt;br /&gt;
* Queuing [Dimitri, Kevin]&lt;br /&gt;
** Description: efficient and transactional queuing is a very common need for application using databases, and could help implementing some internal features&lt;br /&gt;
** Goals: get an agreement that core is the right place where to solve that problem, and what parts of it we want in core exactly&lt;br /&gt;
* Materialized views [Kevin]&lt;br /&gt;
** Description: Declarative materialized views are a frequently requested feature, but means many things to many people.  It's not likely that an initial implementation will address everything.  We need a base set of functionality on which to build.&lt;br /&gt;
** Goals: Reach consensus on what a minimum feature set for commit would be.&lt;br /&gt;
* Partitioning and Segment Exclusion [Dimitri]&lt;br /&gt;
** Description: to solve partitioning, we need to agree on a global approach&lt;br /&gt;
** Goals: agreeing on SE as a basis for better partitioning, having a &amp;quot;GO&amp;quot; on working on SE&lt;br /&gt;
* MERGE: Challenges and priorities [Peter G]&lt;br /&gt;
** Description: Implementing the MERGE statement for 9.3. It is envisaged specifically as an atomic &amp;quot;upsert&amp;quot; operation.&lt;br /&gt;
** Goals: To get buy-in on various aspects of the feature's development, and, ideally, to secure reviewer resources or other support. Because of the complexity of the feature, early interest from reviewers is preferable.&lt;br /&gt;
* Row-level Access Control and SELinux [KaiGai]&lt;br /&gt;
** Security label on user tables&lt;br /&gt;
** Dynamic expandable enum data types&lt;br /&gt;
** Enforcement of triggers by extension&lt;br /&gt;
* Enhancement of FDW at v9.3 [KaiGai]&lt;br /&gt;
** Writable foreign tables&lt;br /&gt;
** Stuffs to be pushed down (Join, Aggregate, Sort, ...)&lt;br /&gt;
** Inheritance of foreign/regular tables&lt;br /&gt;
** Constraint (PK/FK) &amp;amp; Trigger support.&lt;br /&gt;
* Type registry [Andrew]&lt;br /&gt;
** Provide for known OIDs for non-builtin types, and possibly for their IO functions too&lt;br /&gt;
** Would make it possible to write code in core or in extension X that handles a type defined in extension Y.&lt;br /&gt;
* Ending CommitFests in a timely fashion, especially the last one.  Avoiding a crush of massive feature patches at the end of the cycle.  Handling big patches that aren't quite ready yet.  Getting more people to help with patch review. [Robert]&lt;br /&gt;
* What Developers Want [Josh]&lt;br /&gt;
** Description: a top-5 list of features and obstacles to developer adoption of PostgreSQL (with slides)&lt;br /&gt;
** Goal: to set priorities for some features aimed at application users&lt;br /&gt;
* In-Place Upgrades &amp;amp; Checksums [Greg Smith, Simon]&lt;br /&gt;
** Description:  Revisit in-place upgrades of the page format, now that pg_upgrade is available and multiple checksum implementations needing it have been proposed.&lt;br /&gt;
** Goal:  Nail down some incremental milestones for 9.3 development to aim at.&lt;br /&gt;
* Autonomous Transactions [Simon]&lt;br /&gt;
** Overview of idea, relationship to stored procedures&lt;br /&gt;
** Feedback, buy-in and/or alternatives&lt;br /&gt;
* Parallel Query [Bruce Momjian]&lt;br /&gt;
** Hope to get buy-in for what parallel operations we are hoping to add in upcoming releases&lt;br /&gt;
* Report from Clustering Meeting [Josh] (10 min)&lt;br /&gt;
** Description: to summarize the discussions of the cluster-hackers meeting from the previous day&lt;br /&gt;
** Goal: inter-team synchronization.  Possibly, decisions requested on specific in-core features.&lt;br /&gt;
* Double Write Buffers [Simon]&lt;br /&gt;
** Is anyone committing to do that for 9.3?&lt;br /&gt;
&lt;br /&gt;
* Goals, priorities, and resources for 9.3 [All]&lt;br /&gt;
** For roadmap and planning purposes, set expectations and coordinate work schedules for 9.3.  Confirm who is doing what, identify interested reviewers at start, and check for gaps.&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Time&lt;br /&gt;
!Item&lt;br /&gt;
!Presenter&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:00&lt;br /&gt;
|Breakfast&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:30 - 08:45&lt;br /&gt;
|Welcome and introductions&lt;br /&gt;
|Dave Page&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|08:45 - 09:15&lt;br /&gt;
|Autonomous transactions&lt;br /&gt;
|Simon Riggs&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|09:15 - 09:40&lt;br /&gt;
|Queuing&lt;br /&gt;
|Dimitri Fontaine/Kevin Grittner&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|09:40 - 09:50&lt;br /&gt;
|Report from the Clustering Meeting&lt;br /&gt;
|Josh Berkus&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|09:50 - 10:10&lt;br /&gt;
|Type registry&lt;br /&gt;
|Andrew Dunstan&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10:10 - 10:30&lt;br /&gt;
|Access control and SELinux&lt;br /&gt;
|KaiGai Kohei&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|10:30 - 10:45&lt;br /&gt;
|Coffee break&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10:45 - 11:15&lt;br /&gt;
|Enhancement of FDWs in 9.3&lt;br /&gt;
|KaiGai Kohei&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|11:15 - 11:30&lt;br /&gt;
|What developers want&lt;br /&gt;
|Josh Berkus&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|11:30 - 12:00&lt;br /&gt;
|Parallel Query&lt;br /&gt;
|Bruce Momjian&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|12:00 - 12:30&lt;br /&gt;
|MERGE: Challenges and priorities&lt;br /&gt;
|Peter Geoghegan&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|12:30 - 13:30&lt;br /&gt;
|Lunch	&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|13:30 - 14:00&lt;br /&gt;
|Materialised views&lt;br /&gt;
|Kevin Grittner&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14:00 - 14:20&lt;br /&gt;
|In place upgrades and checksums&lt;br /&gt;
|Simon Riggs/Greg Smith&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14:20 - 14:45&lt;br /&gt;
|Partitioning and segment exclusion&lt;br /&gt;
|Dimitri Fontaine&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14:45 - 15:00&lt;br /&gt;
|Commitfest Schedule&lt;br /&gt;
|All&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|15:00 - 15:15&lt;br /&gt;
|Tea break&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|15:15 - 15:40&lt;br /&gt;
|Commitfest management&lt;br /&gt;
|Robert Haas&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|15:40 - 16:45&lt;br /&gt;
|Goals, priorities, and resources for 9.3&lt;br /&gt;
|All&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|16:45 - 17:00&lt;br /&gt;
|Any other business/group photo&lt;br /&gt;
|Dave Page&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|17:00&lt;br /&gt;
|Finish&lt;br /&gt;
|	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Minutes==&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting</id>
		<title>PgCon 2012 Developer Meeting</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting"/>
				<updated>2012-05-04T21:50:25Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add description/goal to upgrade discussion proposal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A meeting of the most active PostgreSQL developers is being planned for Wednesday 16th May, 2012 near the University of Ottawa, prior to pgCon 2012. In order to keep the numbers manageable, this meeting is '''by invitation only'''. Unfortunately it is quite possible that we've overlooked important code developers during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org). &lt;br /&gt;
&lt;br /&gt;
Please note that this year the attendee numbers have been cut to try to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.2 release cycle. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies, unlike in previous years.&lt;br /&gt;
&lt;br /&gt;
This is a PostgreSQL Community event. Room and refreshments/food sponsored by EnterpriseDB. Other companies sponsored attendance for their developers.&lt;br /&gt;
 &lt;br /&gt;
== Time &amp;amp; Location ==&lt;br /&gt;
&lt;br /&gt;
The meeting will be from 9AM to 5PM, and will be in the &amp;quot;Red Experience&amp;quot; room at:&lt;br /&gt;
&lt;br /&gt;
 Novotel Ottawa&lt;br /&gt;
 33 Nicholas Street&lt;br /&gt;
 Ottawa&lt;br /&gt;
 Ontario&lt;br /&gt;
 K1N 9M7&lt;br /&gt;
 &lt;br /&gt;
Food and drink will be provided throughout the day, including breakfast from 8AM.&lt;br /&gt;
&lt;br /&gt;
[http://maps.google.ca/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=novotel+ottawa&amp;amp;aq=&amp;amp;sll=49.891235,-97.15369&amp;amp;sspn=36.237851,79.013672&amp;amp;ie=UTF8&amp;amp;hq=novotel+ottawa&amp;amp;hnear=&amp;amp;ll=45.421528,-75.683699&amp;amp;spn=0.036869,0.077162&amp;amp;z=14&amp;amp;iwloc=A&amp;amp;layer=c&amp;amp;cbll=45.425741,-75.689638&amp;amp;panoid=Z4FUGnkZkdHAOkIxyjjS9Q&amp;amp;cbp=12,25.83,,0,-0.6 View on Google Maps]&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
&lt;br /&gt;
The following people have RSVPed to the meeting (in alphabetical order, by surname):&lt;br /&gt;
&lt;br /&gt;
* Oleg Bartunov&lt;br /&gt;
* Josh Berkus (Secretary)&lt;br /&gt;
* Jeff Davis&lt;br /&gt;
* Andrew Dunstan&lt;br /&gt;
* Dimitri Fontaine&lt;br /&gt;
* Stephen Frost&lt;br /&gt;
* Peter Geoghegan&lt;br /&gt;
* Kevin Grittner&lt;br /&gt;
* Robert Haas&lt;br /&gt;
* Magnus Hagander&lt;br /&gt;
* Shigeru Hanada&lt;br /&gt;
* Hitoshi Harada&lt;br /&gt;
* KaiGai Kohei&lt;br /&gt;
* Tom Lane&lt;br /&gt;
* Noah Misch&lt;br /&gt;
* Bruce Momjian&lt;br /&gt;
* Dave Page (Chair)&lt;br /&gt;
* Simon Riggs&lt;br /&gt;
* Teodor Sigaev&lt;br /&gt;
* Greg Smith&lt;br /&gt;
&lt;br /&gt;
== Proposed Agenda Items ==&lt;br /&gt;
&lt;br /&gt;
Please list proposed agenda items here:&lt;br /&gt;
&lt;br /&gt;
* Priorities for 9.3 [All]&lt;br /&gt;
** Description: discuss what people are working on and what's likely to be in 9.3.&lt;br /&gt;
** Goals: set expectations and coordinate work schedules for 9.3.&lt;br /&gt;
* Queuing [Dimitri, Kevin]&lt;br /&gt;
* Materialized views [Dimitri, Kevin]&lt;br /&gt;
* Partitioning and Segment Exclusion [Dimitri]&lt;br /&gt;
* The MERGE statement: Challenges and priorities [Peter G]&lt;br /&gt;
* Row-level Access Control and SELinux [KaiGai]&lt;br /&gt;
** Security label on user tables&lt;br /&gt;
** Dynamic expandable enum data types&lt;br /&gt;
** Enforcement of triggers by extension&lt;br /&gt;
* Enhancement of FDW at v9.3 [KaiGai]&lt;br /&gt;
** Writable foreign tables&lt;br /&gt;
** Stuffs to be pushed down (Join, Aggregate, Sort, ...)&lt;br /&gt;
** Inheritance of foreign/regular tables&lt;br /&gt;
** Constraint (PK/FK) &amp;amp; Trigger support.&lt;br /&gt;
* Ending CommitFests in a timely fashion, especially the last one.  Avoiding a crush of massive feature patches at the end of the cycle.  Handling big patches that aren't quite ready yet.  Getting more people to help with patch review. [Robert]&lt;br /&gt;
* What Developers Want [Josh]&lt;br /&gt;
** Description: a top-5 list of features and obstacles to developer adoption of PostgreSQL (with slides)&lt;br /&gt;
** Goal: to set priorities for some features aimed at application users&lt;br /&gt;
* In-Place Upgrades &amp;amp; Checksums [Greg Smith, Simon]&lt;br /&gt;
** Description:  Revisit in-place upgrades of the page format, now that pg_upgrade is available and multiple checksum implementations needing it have been proposed.&lt;br /&gt;
** Goal:  Nail down some incremental milestones for 9.3 development to aim at.&lt;br /&gt;
* Autonomous Subtransactions [Simon]&lt;br /&gt;
* Parallel Query [Bruce Momjian]&lt;br /&gt;
* Report from Clustering Meeting [Josh] (10 min)&lt;br /&gt;
** Description: to summarize the discussions of the cluster-hackers meeting from the previous day&lt;br /&gt;
** Goal: inter-team synchronization.  Possibly, decisions requested on specific in-core features.&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Time&lt;br /&gt;
!Item&lt;br /&gt;
!Presenter&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:00&lt;br /&gt;
|Breakfast&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:45 - 09:00&lt;br /&gt;
|Welcome and introductions&lt;br /&gt;
|Dave Page&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|10:30 - 10:45&lt;br /&gt;
|Coffee break&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|12:30 - 13:30&lt;br /&gt;
|Lunch	&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|15:00 - 15:15&lt;br /&gt;
|Tea break&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|16:45 - 17:00&lt;br /&gt;
|Any other business/group photo&lt;br /&gt;
|Dave Page&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|17:00&lt;br /&gt;
|Finish&lt;br /&gt;
|	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Minutes==&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PgCon2012CanadaClusterSummit</id>
		<title>PgCon2012CanadaClusterSummit</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PgCon2012CanadaClusterSummit"/>
				<updated>2012-04-27T18:24:34Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Added Greg Smith&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 3rd Postgres Cluster Hackers Summit, pgCon 2012 =&lt;br /&gt;
&lt;br /&gt;
== Time and Place ==&lt;br /&gt;
&lt;br /&gt;
Tuesday, May 15th, 10am to 5pm&lt;br /&gt;
&lt;br /&gt;
Conference room at the University of Ottawa, room TBA&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
Draft agenda follows.  Please let me know of any contributions/changes to the agenda you have:&lt;br /&gt;
&lt;br /&gt;
=== Project Reports: 5 minutes from each project ===&lt;br /&gt;
&lt;br /&gt;
* Hot Standby/Binary Replication -- Simon&lt;br /&gt;
* pgPoolII -- Tatsuo&lt;br /&gt;
* PostgresXC -- Koichi&lt;br /&gt;
* Slony -- Steve or Chris&lt;br /&gt;
* Stado -- Jim&lt;br /&gt;
&lt;br /&gt;
=== Technical Issues of common interest ===&lt;br /&gt;
* SSI in cluster/replication - Koichi, Kevin&lt;br /&gt;
* Parser export - Koichi, Tatsuo&lt;br /&gt;
* Managing consistent views of data - Koichi&lt;br /&gt;
* Fault detection and handling - Koichi&lt;br /&gt;
* Node addition/removal - Koichi&lt;br /&gt;
* Configuration and operation - Koichi&lt;br /&gt;
* Cursor in replication/multi master - Koichi&lt;br /&gt;
* Command Triggers - Dimitri&lt;br /&gt;
* Detecting database change caused by triggers and cascade operations - Tatsuo&lt;br /&gt;
* Bi-Directional Replication - Simon&lt;br /&gt;
&lt;br /&gt;
The Cluster Summit will be from 10am to 5pm, with a break for lunch, which will be provided, sponsored by NTT.&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
&lt;br /&gt;
# Koichi Suzuki, Postgres-XC&lt;br /&gt;
# Álvaro Herrera, Mammoth, Postgres-XC&lt;br /&gt;
# Jim Mlodgenski, Stado&lt;br /&gt;
# Mason Sharp, Stado, Postgres-XC&lt;br /&gt;
# Dimitri Fontaine, Slony, Londiste, Bucardo&lt;br /&gt;
# Christopher Browne, Slony&lt;br /&gt;
# Steve Singer, Slony&lt;br /&gt;
# Kevin Grittner, SSI&lt;br /&gt;
# Simon Riggs, Binary Replication&lt;br /&gt;
# Michael Paquier, Postgres-XC&lt;br /&gt;
# Ashutosh Bapat, Postgres-XC&lt;br /&gt;
# Tatsuo Ishii, pgPool&lt;br /&gt;
# Kaori Inaba, pgPool&lt;br /&gt;
# Daichi Matsusaka, pgPool&lt;br /&gt;
# Guillaume Lelarge&lt;br /&gt;
# David Wheeler&lt;br /&gt;
# Josh Berkus, moderator&lt;br /&gt;
# Tetsuo Sakata, Postgres-XC&lt;br /&gt;
# Ahsan Hadi, Postgres-XC&lt;br /&gt;
# Andres Freund, Bi-Directional Replication&lt;br /&gt;
# Greg Smith, Bi-Directional Replication&lt;br /&gt;
&lt;br /&gt;
=== Joining the Meeting ===&lt;br /&gt;
&lt;br /&gt;
If you will be able to attend, please email Josh ([mailto:josh@agliodbs.com josh@agliodbs.com]) with the following:&lt;br /&gt;
&lt;br /&gt;
* Your Name&lt;br /&gt;
* Project(s) you work on&lt;br /&gt;
* If you will be giving a Project Report&lt;br /&gt;
* If you have additions to the agenda&lt;br /&gt;
* Special dietary needs for lunch, if any&lt;br /&gt;
* If you need travel assistance&lt;br /&gt;
&lt;br /&gt;
Note that the availability of travel funding is not guaranteed; I can just agree to request it.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PgCon2012CanadaInCoreReplicationMeeting</id>
		<title>PgCon2012CanadaInCoreReplicationMeeting</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PgCon2012CanadaInCoreReplicationMeeting"/>
				<updated>2012-04-27T13:33:12Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Going to this meeting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= PostgreSQL In-Core Replication meeting, pgCon 2012 =&lt;br /&gt;
&lt;br /&gt;
== Time and Place ==&lt;br /&gt;
&lt;br /&gt;
Wednesday, May 16th, 6pm to 10pm&lt;br /&gt;
&lt;br /&gt;
Ottawa somewhere, room TBA&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
Draft agenda follows.  Please let me know of any contributions/changes to the agenda you have:&lt;br /&gt;
&lt;br /&gt;
# Discussion of Multi-Master Theory (Simon)&lt;br /&gt;
# Demonstration of prototypes (Andres)&lt;br /&gt;
# Performance comparisons&lt;br /&gt;
# My use case (Keaton)&lt;br /&gt;
# Social Media use case (Simon)&lt;br /&gt;
&lt;br /&gt;
Broad and general discussion throughout. Notes and actions will be taken. Volunteers for tasks welcome.&lt;br /&gt;
&lt;br /&gt;
The meeting will be from 6pm to 10pm, with various forms of food and possibly a drink or two, sponsored by 2ndQuadrant.&lt;br /&gt;
&lt;br /&gt;
== Attendees (alphabetical) ==&lt;br /&gt;
&lt;br /&gt;
* Keaton Adams&lt;br /&gt;
* Josh Berkus (prefer vegetarian)&lt;br /&gt;
* David Fetter&lt;br /&gt;
* Dimitri Fontaine&lt;br /&gt;
* Andres Freund&lt;br /&gt;
* Jim Mlodgenski&lt;br /&gt;
* Jim Nasby (plus guest)&lt;br /&gt;
* Simon Riggs&lt;br /&gt;
* Greg Smith&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Meeting limit about 20-25 people&lt;br /&gt;
&lt;br /&gt;
=== Joining the Meeting ===&lt;br /&gt;
&lt;br /&gt;
If you will be able to attend, please email Simon ([mailto:simon@2ndQuadrant.com simon@2ndQuadrant.com]) with the following:&lt;br /&gt;
&lt;br /&gt;
* Your Name&lt;br /&gt;
* What pizza topping you like&lt;br /&gt;
&lt;br /&gt;
and please come armed with detailed information about your future replication requirements.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting</id>
		<title>PgCon 2012 Developer Meeting</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting"/>
				<updated>2012-04-25T19:09:39Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Topic suggestions from Greg and Simon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A meeting of the most active PostgreSQL developers is being planned for Wednesday 16th May, 2012 near the University of Ottawa, prior to pgCon 2012. In order to keep the numbers manageable, this meeting is '''by invitation only'''. Unfortunately it is quite possible that we've overlooked important code developers during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org). &lt;br /&gt;
&lt;br /&gt;
Please note that this year the attendee numbers have been cut to try to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.2 release cycle. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies, unlike in previous years.&lt;br /&gt;
&lt;br /&gt;
This is a PostgreSQL Community event. Room and refreshments/food sponsored by EnterpriseDB. Other companies sponsored attendance for their developers.&lt;br /&gt;
 &lt;br /&gt;
== Time &amp;amp; Location ==&lt;br /&gt;
&lt;br /&gt;
The meeting will be from 9AM to 5PM, and will be in the &amp;quot;Red Experience&amp;quot; room at:&lt;br /&gt;
&lt;br /&gt;
 Novotel Ottawa&lt;br /&gt;
 33 Nicholas Street&lt;br /&gt;
 Ottawa&lt;br /&gt;
 Ontario&lt;br /&gt;
 K1N 9M7&lt;br /&gt;
 &lt;br /&gt;
Food and drink will be provided throughout the day, including breakfast from 8AM.&lt;br /&gt;
&lt;br /&gt;
[http://maps.google.ca/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=novotel+ottawa&amp;amp;aq=&amp;amp;sll=49.891235,-97.15369&amp;amp;sspn=36.237851,79.013672&amp;amp;ie=UTF8&amp;amp;hq=novotel+ottawa&amp;amp;hnear=&amp;amp;ll=45.421528,-75.683699&amp;amp;spn=0.036869,0.077162&amp;amp;z=14&amp;amp;iwloc=A&amp;amp;layer=c&amp;amp;cbll=45.425741,-75.689638&amp;amp;panoid=Z4FUGnkZkdHAOkIxyjjS9Q&amp;amp;cbp=12,25.83,,0,-0.6 View on Google Maps]&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
&lt;br /&gt;
The following people have RSVPed to the meeting (in alphabetical order, by surname):&lt;br /&gt;
&lt;br /&gt;
* Oleg Bartunov&lt;br /&gt;
* Josh Berkus (Secretary)&lt;br /&gt;
* Jeff Davis&lt;br /&gt;
* Andrew Dunstan&lt;br /&gt;
* Dimitri Fontaine&lt;br /&gt;
* Stephen Frost&lt;br /&gt;
* Peter Geoghegan&lt;br /&gt;
* Kevin Grittner&lt;br /&gt;
* Robert Haas&lt;br /&gt;
* Magnus Hagander&lt;br /&gt;
* Shigeru Hanada&lt;br /&gt;
* Hitoshi Harada&lt;br /&gt;
* KaiGai Kohei&lt;br /&gt;
* Tom Lane&lt;br /&gt;
* Noah Misch&lt;br /&gt;
* Bruce Momjian&lt;br /&gt;
* Dave Page (Chair)&lt;br /&gt;
* Simon Riggs&lt;br /&gt;
* Teodor Sigaev&lt;br /&gt;
* Greg Smith&lt;br /&gt;
&lt;br /&gt;
== Proposed Agenda Items ==&lt;br /&gt;
&lt;br /&gt;
Please list proposed agenda items here:&lt;br /&gt;
&lt;br /&gt;
* Queuing [Dimitri, Kevin]&lt;br /&gt;
* Materialized views [Dimitri, Kevin]&lt;br /&gt;
* Partitioning and Segment Exclusion [Dimitri]&lt;br /&gt;
* The MERGE statement: Challenges, priorities and implementation [Peter G]&lt;br /&gt;
* Row-level Access Control and SELinux [KaiGai]&lt;br /&gt;
** Security label on user tables&lt;br /&gt;
** Dynamic expandable enum data types&lt;br /&gt;
** Enforcement of triggers by extension&lt;br /&gt;
* Enhancement of FDW at v9.3 [KaiGai]&lt;br /&gt;
** Writable foreign tables&lt;br /&gt;
** Stuffs to be pushed down (Join, Aggregate, Sort, ...)&lt;br /&gt;
** Inheritance of foreign/regular tables&lt;br /&gt;
** Constraint (PK/FK) &amp;amp; Trigger support.&lt;br /&gt;
* Ending CommitFests in a timely fashion, especially the last one.  Avoiding a crush of massive feature patches at the end of the cycle.  Handling big patches that aren't quite ready yet.  Getting more people to help with patch review. [Robert]&lt;br /&gt;
* What Developers Want [Josh]&lt;br /&gt;
** a top-5 list of features and obstacles to developer adoption of PostgreSQL (with slides)&lt;br /&gt;
* In-Place Upgrades &amp;amp; Checksums [Greg Smith, Simon]&lt;br /&gt;
* Future of In-Core Replication [Simon]&lt;br /&gt;
* Autonomous Subtransactions [Simon]&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Time&lt;br /&gt;
!Item&lt;br /&gt;
!Presenter&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:00&lt;br /&gt;
|Breakfast&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:45 - 09:00&lt;br /&gt;
|Welcome and introductions&lt;br /&gt;
|Dave Page&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|10:30 - 10:45&lt;br /&gt;
|Coffee break&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|12:30 - 13:30&lt;br /&gt;
|Lunch	&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|15:00 - 15:15&lt;br /&gt;
|Tea break&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|16:45 - 17:00&lt;br /&gt;
|Any other business/group photo&lt;br /&gt;
|Dave Page&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|17:00&lt;br /&gt;
|Finish&lt;br /&gt;
|	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Minutes==&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Streaming_Replication</id>
		<title>Streaming Replication</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Streaming_Replication"/>
				<updated>2012-04-03T23:12:32Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Reroute users away from this developer page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Streaming Replication''' (SR) provides the capability to continuously ship and&lt;br /&gt;
apply the [http://www.postgresql.org/docs/current/static/wal.html WAL XLOG] records to some number of standby servers in order to keep them current.&lt;br /&gt;
&lt;br /&gt;
This feature was added to PostgreSQL 9.0.  The discussion below is a developer oriented one that contains some out of data information.  Users of this feature should use the documentation for the feature or a setup tutorial instead:&lt;br /&gt;
&lt;br /&gt;
* [[Binary Replication Tutorial]] provides an introduction to using this replication feature.&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/static/warm-standby.html 9.0 Replication Documentation]&lt;br /&gt;
* [http://www.postgresql.org/docs/9.0/static/warm-standby.html 9.1 Replication Documentation]&lt;br /&gt;
&lt;br /&gt;
= Project =&lt;br /&gt;
SR was developed for inclusion in PostgreSQL 9.0 by NTT OSS Center. The lead developer is [mailto:masao.fujii@gmail.com Masao Fujii].  [http://www.pgcon.org/2008/schedule/events/76.en.html Synchronous Log Shipping Replication Presentation] introduces the early design of the feature.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
== Users Overview ==&lt;br /&gt;
* '''Log-shipping'''&lt;br /&gt;
** XLOG records generated in the primary are periodically shipped to the standby via the network.&lt;br /&gt;
** In the existing warm standby, only records in a filled file are shipped, what's referred to as file-based log-shipping.  In SR, XLOG records in partially-filled XLOG file are shipped too, implementing record-based log-shipping.  This means the window for data loss in SR is usually smaller than in warm standby, unless the warm standby was also configured for record-based shipping (which is complicated to setup).&lt;br /&gt;
** The content of XLOG files written to the standby are exactly the same as those on the primary. XLOG files shipped can be used for a normal recovery and PITR.&lt;br /&gt;
* '''Multiple standbys'''&lt;br /&gt;
** More than one standby can establish a connection to the primary for SR. XLOG records are concurrently shipped to all these standbys. The delay/death of a standby does not harm log-shipping to other standbys.&lt;br /&gt;
** The maximum number of standbys can be specified as a GUC variable.&lt;br /&gt;
* '''Continuous recovery'''&lt;br /&gt;
** The standby continuously replays XLOG records shipped without using pg_standby.&lt;br /&gt;
** XLOG records shipped are replayed as soon as possible without waiting until XLOG file has been filled. The combination of [[Hot Standby]] and SR would make the latest data inserted into the primary visible in the standby almost immediately.&lt;br /&gt;
** The standby periodically removes old XLOG files which are no longer needed for recovery, to prevent excessive disk usage.&lt;br /&gt;
* '''Setup'''&lt;br /&gt;
** The start of log-shipping does not interfere with any query processing on the primary.&lt;br /&gt;
** The standby can be started in various conditions.&lt;br /&gt;
*** If there are XLOG files in archive directory and restore_command is supplied, at first those files are replayed. Then the standby requests XLOG records following the last applied one to the primary. This prevents XLOG files already present in the standby from being shipped again. Similarly, XLOG files in pg_xlog are also replayed before starting log-shipping.&lt;br /&gt;
*** If there is no XLOG files on the standby, the standby requests XLOG records following the starting XLOG location of recovery (the redo starting location).&lt;br /&gt;
* '''Connection settings and authentication'''&lt;br /&gt;
** A user can configure the same settings as a normal connection to a connection for SR (e.g., keepalive, pg_hba.conf).&lt;br /&gt;
* '''Activation'''&lt;br /&gt;
** The standby can keep waiting for activation as long as a user likes. This prevents the standby from being automatically brought up by failure of recovery or network outage.&lt;br /&gt;
* '''Progress report'''&lt;br /&gt;
** The primary and standby report the progress of log-shipping in PS display.&lt;br /&gt;
* '''Graceful shutdown'''&lt;br /&gt;
** When smart/fast shutdown is requested, the primary waits to exit until XLOG records have been sent to the standby, up to the shutdown checkpoint record.&lt;br /&gt;
&lt;br /&gt;
== Restrictions ==&lt;br /&gt;
* '''Synchronous log-shipping'''&lt;br /&gt;
** Currently SR supports only asynchronous log-shipping. The commit command might return a &amp;quot;success&amp;quot; to a client before the corresponding XLOG records are shipped to the standby.&lt;br /&gt;
* '''Replication beyond timeline'''&lt;br /&gt;
** A user has to get a fresh backup whenever making the old standby catch up.&lt;br /&gt;
* '''Clustering'''&lt;br /&gt;
** Postgres doesn't provide any clustering feature.&lt;br /&gt;
&lt;br /&gt;
== How to Use ==&lt;br /&gt;
* '''1.''' Install postgres in the primary and standby server as usual.  This requires only ''configure'', ''make'' and ''make install''.&lt;br /&gt;
* '''2.''' Create the initial database cluster in the primary server as usual, using ''initdb''.&lt;br /&gt;
* '''3.''' Set up connections and authentication so that the standby server can successfully connect to the ''replication'' pseudo-database on the primary.&lt;br /&gt;
 $ $EDITOR postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 listen_addresses = '192.168.0.10'&lt;br /&gt;
 &lt;br /&gt;
 $ $EDITOR pg_hba.conf&lt;br /&gt;
 &lt;br /&gt;
 # The standby server must have superuser access privileges.&lt;br /&gt;
 host  replication  postgres  192.168.0.20/22  trust&lt;br /&gt;
* '''4.''' Set up the streaming replication related parameters on the primary server.&lt;br /&gt;
 $ $EDITOR postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 # To enable read-only queries on a standby server, wal_level must be set to&lt;br /&gt;
 # &amp;quot;hot_standby&amp;quot;. But you can choose &amp;quot;archive&amp;quot; if you never connect to the&lt;br /&gt;
 # server in standby mode.&lt;br /&gt;
 wal_level = hot_standby&lt;br /&gt;
 &lt;br /&gt;
 # Set the maximum number of concurrent connections from the standby servers.&lt;br /&gt;
 max_wal_senders = 5&lt;br /&gt;
 &lt;br /&gt;
 # To prevent the primary server from removing the WAL segments required for&lt;br /&gt;
 # the standby server before shipping them, set the minimum number of segments&lt;br /&gt;
 # retained in the pg_xlog directory. At least wal_keep_segments should be&lt;br /&gt;
 # larger than the number of segments generated between the beginning of&lt;br /&gt;
 # online-backup and the startup of streaming replication. If you enable WAL&lt;br /&gt;
 # archiving to an archive directory accessible from the standby, this may&lt;br /&gt;
 # not be necessary.&lt;br /&gt;
 wal_keep_segments = 32&lt;br /&gt;
 &lt;br /&gt;
 # Enable WAL archiving on the primary to an archive directory accessible from&lt;br /&gt;
 # the standby. If wal_keep_segments is a high enough number to retain the WAL&lt;br /&gt;
 # segments required for the standby server, this is not necessary.&lt;br /&gt;
 archive_mode    = on&lt;br /&gt;
 archive_command = 'cp %p /path_to/archive/%f'&lt;br /&gt;
* '''5.''' Start postgres on the primary server.&lt;br /&gt;
* '''6.''' Make a base backup by copying the primary server's data directory to the standby server.&lt;br /&gt;
 $ psql -c &amp;quot;SELECT pg_start_backup('label', true)&amp;quot;&lt;br /&gt;
 $ rsync -a ${PGDATA}/ standby:/srv/pgsql/standby/ --exclude postmaster.pid&lt;br /&gt;
 $ psql -c &amp;quot;SELECT pg_stop_backup()&amp;quot;&lt;br /&gt;
* '''7.''' Set up replication-related parameters, connections and authentication in the standby server like the primary, so that the standby might work as a primary after failover.&lt;br /&gt;
* '''8.''' Enable read-only queries on the standby server. But if wal_level is ''archive'' on the primary, leave hot_standby unchanged (i.e., off).&lt;br /&gt;
 $ $EDITOR postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 hot_standby = on&lt;br /&gt;
* '''9.''' Create a recovery command file in the standby server; the following parameters are required for streaming replication.&lt;br /&gt;
 $ $EDITOR recovery.conf&lt;br /&gt;
 # Note that recovery.conf must be in $PGDATA directory.&lt;br /&gt;
 &lt;br /&gt;
 # Specifies whether to start the server as a standby. In streaming replication,&lt;br /&gt;
 # this parameter must to be set to on.&lt;br /&gt;
 standby_mode          = 'on'&lt;br /&gt;
 &lt;br /&gt;
 # Specifies a connection string which is used for the standby server to connect&lt;br /&gt;
 # with the primary.&lt;br /&gt;
 primary_conninfo      = 'host=192.168.0.10 port=5432 user=postgres'&lt;br /&gt;
 &lt;br /&gt;
 # Specifies a trigger file whose presence should cause streaming replication to&lt;br /&gt;
 # end (i.e., failover).&lt;br /&gt;
 trigger_file = '/path_to/trigger'&lt;br /&gt;
 &lt;br /&gt;
 # Specifies a command to load archive segments from the WAL archive. If&lt;br /&gt;
 # wal_keep_segments is a high enough number to retain the WAL segments&lt;br /&gt;
 # required for the standby server, this may not be necessary. But&lt;br /&gt;
 # a large workload can cause segments to be recycled before the standby&lt;br /&gt;
 # is fully synchronized, requiring you to start again from a new base backup.&lt;br /&gt;
 restore_command = 'cp /path_to/archive/%f &amp;quot;%p&amp;quot;'&lt;br /&gt;
* '''10.''' Start postgres in the standby server. It will start streaming replication.&lt;br /&gt;
* '''11.''' You can calculate the replication lag by comparing the current WAL write location on the primary with the last WAL location received/replayed by the standby. They can be retrieved using ''pg_current_xlog_location'' on the primary and the ''pg_last_xlog_receive_location''/''pg_last_xlog_replay_location'' on the standby, respectively.&lt;br /&gt;
 $ psql -c &amp;quot;SELECT pg_current_xlog_location()&amp;quot; -h192.168.0.10 (primary host)&lt;br /&gt;
  pg_current_xlog_location &lt;br /&gt;
 --------------------------&lt;br /&gt;
  0/2000000&lt;br /&gt;
 (1 row)&lt;br /&gt;
 &lt;br /&gt;
 $ psql -c &amp;quot;select pg_last_xlog_receive_location()&amp;quot; -h192.168.0.20 (standby host)&lt;br /&gt;
  pg_last_xlog_receive_location &lt;br /&gt;
 -------------------------------&lt;br /&gt;
  0/2000000&lt;br /&gt;
 (1 row)&lt;br /&gt;
 &lt;br /&gt;
 $ psql -c &amp;quot;select pg_last_xlog_replay_location()&amp;quot; -h192.168.0.20 (standby host)&lt;br /&gt;
  pg_last_xlog_replay_location &lt;br /&gt;
 ------------------------------&lt;br /&gt;
  0/2000000&lt;br /&gt;
 (1 row)&lt;br /&gt;
* '''12.''' You can also check the progress of streaming replication by using ''ps'' command.&lt;br /&gt;
 # The displayed LSNs indicate the byte position that the standby server has&lt;br /&gt;
 # written up to in the xlogs.&lt;br /&gt;
 [primary] $ ps -ef | grep sender&lt;br /&gt;
 postgres  6879  6831  0 10:31 ?        00:00:00 postgres: wal sender process postgres 127.0.0.1(44663) streaming 0/2000000&lt;br /&gt;
 &lt;br /&gt;
 [standby] $ ps -ef | grep receiver&lt;br /&gt;
 postgres  6878  6872  1 10:31 ?        00:00:01 postgres: wal receiver process   streaming 0/2000000&lt;br /&gt;
* How to do failover&lt;br /&gt;
** Create the trigger file in the standby after the primary fails.&lt;br /&gt;
* How to stop the primary or the standby server&lt;br /&gt;
** Shut down it as usual (''pg_ctl stop'').&lt;br /&gt;
* How to restart streaming replication after failover&lt;br /&gt;
** Repeat the operations from '''6th'''; making a fresh backup, some configurations and starting the original primary as the standby. The primary server doesn't need to be stopped during these operations.&lt;br /&gt;
* How to restart streaming replication after the standby fails&lt;br /&gt;
** Restart postgres in the standby server after eliminating the cause of failure.&lt;br /&gt;
* How to disconnect the standby from the primary&lt;br /&gt;
** Create the trigger file in the standby while the primary is running. Then the standby would be brought up.&lt;br /&gt;
* How to re-synchronize the stand-alone standby after isolation&lt;br /&gt;
** Shut down the standby as usual. And repeat the operations from '''6th'''.&lt;br /&gt;
&lt;br /&gt;
= Todo =&lt;br /&gt;
== v9.0 ==&lt;br /&gt;
&lt;br /&gt;
Moved to [[PostgreSQL_9.0_Open_Items]]&lt;br /&gt;
&lt;br /&gt;
=== Committed ===&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01455.php Retrying from archive and some refactoring around Read/FetchRecord().] - [http://archives.postgresql.org/pgsql-committers/2010-01/msg00395.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg02601.php SR wrongly treats the WAL-boundary.] - [http://archives.postgresql.org/pgsql-committers/2010-01/msg00396.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01715.php Adjust SR for some later changes about wal-skipping.] - [http://archives.postgresql.org/pgsql-committers/2010-01/msg00399.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00024.php VACUUM FULL unexpectedly writes an XLOG UNLOGGED record.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00038.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01754.php Add a message type header.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00037.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01536.php Documentation: Add a new &amp;quot;Replication&amp;quot; chapter.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00115.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00350.php Failed assertion during recovery of partial WAL file.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00124.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00712.php A PANIC error might occur in the standby because of a partially-filled archived WAL file.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00137.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00330.php Improve the standby messages.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00140.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01672.php pq_getbyte_if_available() is not working because the win32 socket emulation layer simply wasn't designed to deal with non-blocking sockets.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00198.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01488.php Walsender might emit unfit messages.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00239.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01236.php Streaming replication on win32, still broken.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00270.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00992.php Create new section for recovery.conf.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00295.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01824.php Assertion failure in walreceiver.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00356.php commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01717.php Forbid a startup of walsender during recovery, and emit a suitable message? Or allow walsender to be started also during recovery?] - [http://archives.postgresql.org/message-id/20100316090955.9A5107541D0@cvs.postgresql.org commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01003.php How do we clean down the archive without using pg_standby?] - [http://archives.postgresql.org/message-id/20100318091718.BC14D7541D0@cvs.postgresql.org commit]&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01510.php File-based log shipping without pg_standby doesn't replay the WAL files in pg_xlog.] - [http://archives.postgresql.org/pgsql-committers/2010-03/msg00356.php commit]&lt;br /&gt;
&lt;br /&gt;
== v9.1 ==&lt;br /&gt;
=== Synchronization capability ===&lt;br /&gt;
* Introduce the replication mode which can control how long transaction commit waits for replication before the commit command returns a &amp;quot;success&amp;quot; to a client. The valid modes are ''async'', ''recv'' and ''fsync''.&lt;br /&gt;
** ''async'' doesn't make transaction commit wait for replication, i.e., asynchronous replication.&lt;br /&gt;
** ''recv'' or ''fsync'' makes transaction commit wait for XLOG to be received or fsynced by the standby, respectively.&lt;br /&gt;
** (''apply'' makes transaction commit wait for XLOG to be replayed by the standby. This mode will be supported in v9.2 or later)&lt;br /&gt;
** The replication mode is specified in recovery.conf of the standby as well as other parameters for replication.&lt;br /&gt;
*** The startup process reads the replication mode from recovery.conf and shares it to walreceiver via new shared-memory variable.&lt;br /&gt;
*** Walreceiver also shares it to walsender by using the replication handshake message (existing protocol needs to be extended).&lt;br /&gt;
** Based on the replication mode, walreceiver sends the reply meaning that replication is done up to the specified location to the primary.&lt;br /&gt;
*** In async, walreceiver doesn't need to send any reply other than end-of-replication message.&lt;br /&gt;
*** In recv or fsync, walreceiver sends the reply just after receiving or flushing XLOG, respectively.&lt;br /&gt;
*** New message type for the reply needs to be defined. The reply is sent as CopyData message.&lt;br /&gt;
** Walreceiver writes all the outstanding XLOG to disk before shutting down.&lt;br /&gt;
** Walsender receives the reply from the standby, updates the location of the last record replicated, and announces completion of replication.&lt;br /&gt;
*** New shared-memory variable to keep that location is required.&lt;br /&gt;
** When processing the commit command, backend waits for XLOG to be replicated to only the standbys which are in the recv or fsync replication mode.&lt;br /&gt;
*** Also smart shutdown waits for XLOG of shutdown checkpoint to be replicated.&lt;br /&gt;
* Required optimization&lt;br /&gt;
** Walsender should send outstanding XLOG without waiting wal_sender_delay.&lt;br /&gt;
*** When processing the commit command, backend signals walsender to send outstanding XLOG immediately.&lt;br /&gt;
** Backend should exit the wait loop as soon as the reply arrives at the primary.&lt;br /&gt;
*** When receiving the reply, walsender signals backends to get up from the sleep and determine whether to exit the wait loop by checking the location of the last XLOG replicated.&lt;br /&gt;
*** Only backends waiting for XLOG to be replicated up to the location contained in the reply are sent the signal.&lt;br /&gt;
** Walsender waits for the signal from backends and the reply from the standby at the same time, by using select/poll.&lt;br /&gt;
** Walsender reads XLOG from not only disk but also shared memory (wal buffers).&lt;br /&gt;
** Walreceiver should flush XLOG file only when XLOG file is switched or the related page is flushed.&lt;br /&gt;
*** When startup process or bgwriter flushes the buffer page, it checks whether the related XLOG has already been flushed via shared memory (location of the last XLOG flushed).&lt;br /&gt;
*** It flushes the buffer page, if XLOG file has already been flushed.&lt;br /&gt;
*** It signals walreceiver to flush XLOG file immediately and waits for the flush to complete, if XLOG file has not been flushed yet.&lt;br /&gt;
** While the standby is catching up with the primary, those servers should ignore the replication mode and perform asynchronous replication.&lt;br /&gt;
*** After those servers have almost gotten into synchronization, they perform replication based on the specified replication mode.&lt;br /&gt;
*** New replication states like 'catching-up', 'sync', etc need to be defined, and the state machine for them is required on both servers.&lt;br /&gt;
*** Current replication state can be monitored on both servers via SQL.&lt;br /&gt;
* Required timeout&lt;br /&gt;
** Add new parameter replication_timeout which is the maximum time to wait until XLOG is replicated to the standby.&lt;br /&gt;
** Add new parameter (replication_timeout_action) to specify the reaction to replication_timeout.&lt;br /&gt;
&lt;br /&gt;
== Future release ==&lt;br /&gt;
* '''Synchronization capability'''&lt;br /&gt;
** Introduce the synchronization mode which can control how long transaction commit waits for replication before the commit command returns a &amp;quot;success&amp;quot; to a client. The valid modes are ''async'', ''recv'', ''fsync'' and ''apply''.&lt;br /&gt;
*** ''async'' doesn't make transaction commit wait for replication, i.e., asynchronous replication.&lt;br /&gt;
*** ''recv'', ''fsync'' and ''apply'' makes transaction commit wait for XLOG records to be received, fsynced and applied on the standby, respectively.&lt;br /&gt;
** Change walsender to be able to read XLOG from not only the disk but also shared memory.&lt;br /&gt;
** Add new parameter replication_timeout which is the maximum time to wait until XLOG records are replicated to the standby.&lt;br /&gt;
** Add new parameter (replication_timeout_action) to specify the reaction to replication_timeout.&lt;br /&gt;
* '''Monitoring'''&lt;br /&gt;
** Provide the capability to check the progress and gap of streaming replication via one query. A collaboration of HS and SR is necessary to provide that capability on the standby side.&lt;br /&gt;
** Provide the capability to check if the specified repliation is in progress via a query. Also more detailed status information might be necessary, e.g, the standby is catching up now, has already gotten into sync, and so on.&lt;br /&gt;
** Change the stats collector to collect the statistics information about replication, e.g., average delay of replication time.&lt;br /&gt;
** Develop the tool to calculate the latest XLOG position from XLOG files. This is necessary to check the gap of replication after the server fails.&lt;br /&gt;
** Also develop the tool to extract the user-readable contents from XLOG files. This is necessary to see the contents of the gap, and manually restore them.&lt;br /&gt;
* '''Easy to Use'''&lt;br /&gt;
** Introduce the parameters like:&lt;br /&gt;
*** replication_halt_timeout - replication will halt if no data has been sent for this much time.&lt;br /&gt;
*** replication_halt_segments - replication will halt if number of WAL files in pg_xlog exceeds this threshold.&lt;br /&gt;
*** These parameters allow us to avoid disk overflow.&lt;br /&gt;
** Add new feature which transfers also base backup via the direct connection between the primary and the standby.&lt;br /&gt;
** Add new hooks like walsender_hook and walreceiver_hook to cooperate with the add-on program for compression like pglesslog.&lt;br /&gt;
** Provide a graceful termination of replication via a query on the primary. On the standby, a trigger file mechanism already provides that capability.&lt;br /&gt;
** Support replication beyond timeline. The timeline history files need to be shipped from the primary to the standby.&lt;br /&gt;
* '''Robustness'''&lt;br /&gt;
** Support keepalive in libpq. This is useful for a client and the standby to detect a failure of the primary immediately.&lt;br /&gt;
** [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01536.php New privilege for replication.]&lt;br /&gt;
*** Currently superuser privilege is required when the standby connects to the primary. But there is the complaint that we should add new privilege for replication and use it instead of superuser because current approach is not good for security.&lt;br /&gt;
* '''Miscellaneous'''&lt;br /&gt;
** Standalone walreceiver tool, which connects to the primary, continuously receives and writes XLOG records, independently from postgres server.&lt;br /&gt;
** Cascade streaming replication. Allow walsender to send XLOG to another standby during recovery.&lt;br /&gt;
** WAL archiving during recovery.&lt;br /&gt;
&lt;br /&gt;
[[Category:Replication]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial</id>
		<title>Binary Replication Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial"/>
				<updated>2012-04-03T23:11:21Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Link to full documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the new PostgreSQL 9 replication and standby databases guide. This new set of features implements possibly the longest awaited functionality in PostgreSQL's history.  As a result, a lot of people are going to be trying to deploy standby databases for the first time, and find the process rather unintuitive.   This guide is here to help.&lt;br /&gt;
&lt;br /&gt;
'''Work in progress: only 40% complete'''&lt;br /&gt;
&lt;br /&gt;
= 5 Minutes to Simple Replication =&lt;br /&gt;
&lt;br /&gt;
This is the easiest way to set up replication between a master and standby. It requires shutting down the master; other methods are detailed later in this guide.&lt;br /&gt;
&lt;br /&gt;
What we're going to do is shut down the master and copy the files we need over to the slave server, creating a cloned copy of the master.  Because the master is shut down, we don't have to worry about changes being made to it.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
You must have the right setup to make this work:&lt;br /&gt;
&lt;br /&gt;
* 2 servers with similar operating systems (e.g both Linux 64-bit).&lt;br /&gt;
* The same release of PostgreSQL 9.0 installed on both servers.&lt;br /&gt;
* PostgreSQL superuser shell access on both servers.&lt;br /&gt;
* Knowledge of how to start, stop and reload Postgres.&lt;br /&gt;
* PostgreSQL 9.0 running on Server1.&lt;br /&gt;
* A database created and loaded on Server1.&lt;br /&gt;
* A postgres user or root user who has network &lt;br /&gt;
&lt;br /&gt;
See the full documentation for more information:&lt;br /&gt;
&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/static/warm-standby.html 9.0 Replication Documentation]&lt;br /&gt;
* [http://www.postgresql.org/docs/9.0/static/warm-standby.html 9.1 Replication Documentation]&lt;br /&gt;
&lt;br /&gt;
== Binary Replication in 6 Steps ==&lt;br /&gt;
&lt;br /&gt;
This 6-step guide, and all of the examples in this tutorial, assume that you have a master server at 192.168.0.1 and a standby server at 192.168.0.2 and that your database and its configuration files are installed at /var/lib/postgresql/data.  Replace those with whatever your actual server addresses and directories are.&lt;br /&gt;
&lt;br /&gt;
1. Edit postgresql.conf on the master to turn on streaming replication. Change these settings:&lt;br /&gt;
&lt;br /&gt;
  listen_address = '*'&lt;br /&gt;
  wal_level = hot_standby&lt;br /&gt;
  max_wal_senders = 3&lt;br /&gt;
&lt;br /&gt;
2. Edit pg_hba.conf on the master in order to let the standby connect. &lt;br /&gt;
&lt;br /&gt;
  host  replication   all   192.168.0.2/32      trust&lt;br /&gt;
&lt;br /&gt;
3. Edit recovery.conf and postgresql.conf on the standby to start up replication and hot standby.  First, in postgresql.conf, change this line:&lt;br /&gt;
&lt;br /&gt;
  hot_standby = on&lt;br /&gt;
&lt;br /&gt;
Then create a file in the standby's '''data directory''' (which is often the same directory as postgresql.conf and pg_hba.conf, except on some Linux distributions such as Debian and Ubuntu), called recovery.conf, with the following lines:&lt;br /&gt;
&lt;br /&gt;
  standby_mode = 'on'&lt;br /&gt;
  primary_conninfo = 'host=192.168.0.1'&lt;br /&gt;
&lt;br /&gt;
4. Shutdown the master and copy the files.  You want to copy most but not all files between the two servers, excluding the configuration files and the pg_xlog directory.  An example rsync script would be:&lt;br /&gt;
&lt;br /&gt;
  rsync -av --exclude pg_xlog --exclude postgresql.conf data/* 192.168.0.2:/var/lib/postgresql/data/&lt;br /&gt;
&lt;br /&gt;
5. Start the standby first, so that they can't get out of sync. (Messages will be logged about not being able to connect to the primary server, that's OK.)&lt;br /&gt;
&lt;br /&gt;
6. Start the master.&lt;br /&gt;
 &lt;br /&gt;
'''Is taking down the master for long enough to copy the files too long?'''  Then you need the 10-minute version.&lt;br /&gt;
&lt;br /&gt;
== Starting Replication with only a Quick Master Restart ==&lt;br /&gt;
&lt;br /&gt;
What we're going to do this time is similar to what we did before, cloning the database by copying the files from the master to the slave server.  However, because the database is only going to be shut down for a short period of time, long enough to activate the changes in the configuration file, after we've copied the data files we will need to copy additional files so that the slave will be an up-to-date copy of the master.  &lt;br /&gt;
&lt;br /&gt;
So, we will tell the master we're running a backup, copy the data files (not quite the same set of files as before), tell the master the backup is complete, then copy the WAL files in the pg_xlog directory so that when the slave comes up it can make all the changes that were committed to the master database after the backup was started.&lt;br /&gt;
&lt;br /&gt;
First, start with the same prerequisites as above.&lt;br /&gt;
&lt;br /&gt;
1. Set the postgresql.conf variables the same in step (1) as above.&lt;br /&gt;
&lt;br /&gt;
2. Don't close the file yet.  You'll need to set two other variables.  The first is checkpoint_segments, which increases the size of your write-ahead-log (WAL).  Unless you've already done so, you're going to need to increase this, which is usually a good idea for performance anyway.  You want it to be big enough to not get used up in 15 or 20 minutes.  If you don't have a clear idea of that, here's some reasonable values, based on how busy and how large your database is.  Also, these logs will take up disk space, so make sure that you have enough available - space requirements are below.&lt;br /&gt;
  &lt;br /&gt;
  checkpoint_segments = 8    &lt;br /&gt;
  wal_keep_segments = 8 &lt;br /&gt;
  # light load       500MB&lt;br /&gt;
&lt;br /&gt;
  checkpoint_segments = 16&lt;br /&gt;
  wal_keep_segments = 32&lt;br /&gt;
  # moderately busy  1.5GB  &lt;br /&gt;
&lt;br /&gt;
  checkpoint_segments = 64&lt;br /&gt;
  wal_keep_segments = 128&lt;br /&gt;
  # busy server      5GB&lt;br /&gt;
&lt;br /&gt;
You don't ''have'' to increase checkpoint_segments in order to increase wal_keep_segments, but it's generally a good idea.  Now save the file.  &lt;br /&gt;
&lt;br /&gt;
3. Edit pg_hba.conf as in (2) in the &amp;quot;Six Steps&amp;quot; above.&lt;br /&gt;
&lt;br /&gt;
4. Now you need to restart the master.  Given the interruption in service, you should probably plan this ahead. &lt;br /&gt;
&lt;br /&gt;
5. Edit postgresql.conf and recovery.conf on the standby as in (3) above.&lt;br /&gt;
&lt;br /&gt;
6. Now, we're going to need to copy the files from the master and start the standby.  Unlike in the 6-step version, this needs to be done quickly or the standby will fail to sync and you'll need to try again.  First step, you need to tell the master you're starting a backup (see below for a more detailed explanation of this).  Log in to psql as the database superuser.&lt;br /&gt;
&lt;br /&gt;
  psql -U postgres&lt;br /&gt;
  # select pg_start_backup('clone',true);&lt;br /&gt;
&lt;br /&gt;
Note that the string you use as a backup label doesn't matter; use any string you want.&lt;br /&gt;
&lt;br /&gt;
7. Now, quickly copy all the database files.  This rsync is slightly different from the 6-step version:&lt;br /&gt;
&lt;br /&gt;
   rsync -av --exclude pg_xlog --exclude postgresql.conf --exclude postgresql.pid \ &lt;br /&gt;
      data/*  192.168.0.2:/var/lib/postgresql/data/&lt;br /&gt;
&lt;br /&gt;
8. As soon as that's done you need to stop the backup on the master:&lt;br /&gt;
  &lt;br /&gt;
   # select pg_stop_backup();&lt;br /&gt;
&lt;br /&gt;
9. As soon as that completes, you need to quickly copy the WAL files from the master to the standby.&lt;br /&gt;
&lt;br /&gt;
   rsync -av data/pg_xlog 192.168.0.2:/var/lib/postgresql/data/&lt;br /&gt;
&lt;br /&gt;
10. Now, start the standby.&lt;br /&gt;
&lt;br /&gt;
If you've done this quickly enough, then the standby should catch up with the master and you should be replicating. If not, you'll get this message:&lt;br /&gt;
&lt;br /&gt;
... which means you need to try again, possibly with checkpoint_segments and wal_keep_segments higher.  If that still doesn't work, you're going to need to use the even more complex archiving method described below.&lt;br /&gt;
&lt;br /&gt;
Now, the rest of the guide will explain how to deal with more complex situations, such as archive logs, handling security, and maintaining availability, failover and standby promotion.&lt;br /&gt;
&lt;br /&gt;
= Introduction to Binary Replication =&lt;br /&gt;
&lt;br /&gt;
Binary replication is also called &amp;quot;Hot Standby&amp;quot; and &amp;quot;Streaming Replication&amp;quot; which are two separate, but complimentary, features of PostgreSQL 9.0 and later.  Here's some general information about how they work and what they are for.&lt;br /&gt;
&lt;br /&gt;
== What Can You Do With Binary Replication? ==&lt;br /&gt;
&lt;br /&gt;
* Have a simple and complete replica of your production database, preventing all but a couple seconds of data loss even under catastrophic circumstances.&lt;br /&gt;
* Load-balance between your read/write master server and multiple read-only servers.&lt;br /&gt;
* Run reporting or other long-running queries on a replica server, taking them off your main transaction-processing server.&lt;br /&gt;
* Replicate all DDL, including table and index changes, and even creating new databases.&lt;br /&gt;
* Replicate a hosted multi-tenant database, making no specific requirements for primary keys or database changes of your users.&lt;br /&gt;
&lt;br /&gt;
== What Can't You Do With Binary Replication? ==&lt;br /&gt;
&lt;br /&gt;
* Replicate a specific table, schema, or database.  Binary replication is the entire Postgres instance (or &amp;quot;cluster&amp;quot;).&lt;br /&gt;
* Multi-master replication.  Multi-master binary replication is probably technically impossible.&lt;br /&gt;
* Replicate between different versions of PostgreSQL, or between different platforms.&lt;br /&gt;
* Set up replication without administration rights on the server.  Sorry, working on it.&lt;br /&gt;
* Replicate data synchronously, guaranteeing zero data loss.  But ... this is coming in PostgreSQL 9.1.&lt;br /&gt;
&lt;br /&gt;
For the reasons above, we expect that Slony-I, Londiste, Bucardo, pgPool2 and other systems will continue to be used.&lt;br /&gt;
&lt;br /&gt;
== Transaction Logs and Log Shipping ==&lt;br /&gt;
&lt;br /&gt;
Users who are already familiar with the PostgreSQL transaction log and warm standby can skip this section.&lt;br /&gt;
&lt;br /&gt;
An individual &amp;quot;instance&amp;quot;, &amp;quot;server&amp;quot;, or (confusingly) &amp;quot;cluster&amp;quot; of PostgreSQL (hereafter Server) consists of a single postmaster server process connected to a single initialized PostgreSQL data directory (PGDATA), which in turn contains several databases.  Each running Server has a transaction log, located in the PGDATA/pg_xlog directory.  This transaction log consists of binary snapshots of data, written to record synchronously each change to all databases' data, in case of unexpected shutdown of the database server (such as in a power failure).  This ensures that data is not corrupted and no completed transaction is lost.&lt;br /&gt;
&lt;br /&gt;
You can also use this log to allow a copy of the original database to replicate changes made to a master database.  This was first implemented with the PITR feature in PostgreSQL 8.0, and is known as &amp;quot;log shipping&amp;quot;.   Log shipping is required for most forms of binary replication.&lt;br /&gt;
&lt;br /&gt;
This log consists of 16MB segments full of new data pages (8K segments) of the database, and not of SQL statements.  For this reason there is no before and after auditing possible via this log, as you cannot know exactly what has changed. Also, the log is treated as a buffer, being deleted as it is no longer needed for crash recovery. More importantly, the data page format of the log means that log segments can only be applied to a database which is binary-identical to the database which created the log.  &lt;br /&gt;
&lt;br /&gt;
== PITR, Warm Standby, Hot Standby, and Streaming Replication ==&lt;br /&gt;
&lt;br /&gt;
For the rest of this tutorial, we will refer to the active read-write instance of the Server which generates transaction logs as the &amp;quot;Master&amp;quot; and the passive, read-only or offline instance (or instances) of the Server which receives transaction logs as the &amp;quot;Standby&amp;quot; (or &amp;quot;Standbys&amp;quot;).  The term Master/Standby is equivalent to other terminology which may be used in the database industry, such as Master/Slave, Primary/Secondary or Primary/Replica.&lt;br /&gt;
&lt;br /&gt;
=== PITR ===&lt;br /&gt;
&lt;br /&gt;
In Point-In-Time Recovery (PITR), transaction logs are copied and saved to storage until needed.  Then, when needed, the Standby server can be &amp;quot;brought up&amp;quot; (made active) and transaction logs applied, either stopping when they run out or at a prior point indicated by the administrator.  PITR has been available since PostgreSQL version 8.0, and as such will not be documented here.&lt;br /&gt;
&lt;br /&gt;
PITR is primarily used for database forensics and recovery.  It is also useful when you need to back up a very large database, as it effectively supports incremental backups, which pg_dump does not.&lt;br /&gt;
&lt;br /&gt;
=== Warm Standby ===&lt;br /&gt;
&lt;br /&gt;
In Warm Standby, transaction logs are copied from the Master and applied to the Standby immediately after they are received, or at a short delay. The Standby is offline (in &amp;quot;recovery mode&amp;quot;) and not available for any query workload. This allows the Standby to be brought up to full operation very quickly.  Warm Standby has been available since version 8.3, and will not be fully documented here.&lt;br /&gt;
&lt;br /&gt;
Warm Standby requires Log Shipping.  It is primary used for database failover.&lt;br /&gt;
&lt;br /&gt;
=== Hot Standby ===&lt;br /&gt;
&lt;br /&gt;
Hot Standby is identical to Warm Standby, except that the Standby is available to run read-only queries.  This offers all of the advantages of Warm Standby, plus the ability to distribute some business workload to the Standby server(s).  Hot Standby by itself requires Log Shipping.&lt;br /&gt;
&lt;br /&gt;
Hot Standby is used both for database failover, and can also be used for load-balancing.  In contrast to Streaming Replication, it places no load on the master (except for disk space requirements) and is thus theoretically infinitely scalable.  A WAL archive could be distributed to dozens or hundreds of servers via network storage.  The WAL files could also easily be copied over a poor quality network connection, or by SFTP.&lt;br /&gt;
&lt;br /&gt;
However, since Hot Standby replicates by shipping 16MB logs, it is at best minutes behind and sometimes more than that.  This can be problematic both from a failover and a load-balancing perspective.&lt;br /&gt;
&lt;br /&gt;
=== Streaming Replication ===&lt;br /&gt;
&lt;br /&gt;
Streaming Replication improves either Warm Standby or Hot Standby by opening a network connection between the Standby and the Master database, instead of copying 16MB log files. This allows data changes to be copied over the network almost immediately on completion on the Master.  &lt;br /&gt;
&lt;br /&gt;
In Streaming Replication, the master and the standby have special processes called the walsender and walreceiver which transmit modified data pages over a network port.  This requires one fairly busy connection per standby, imposing an incremental load on the master for each additional standby.  Still, the load is quite low and a single master should be able to support multiple standbys easily.&lt;br /&gt;
&lt;br /&gt;
Streaming replication does not require log shipping in normal operation.  It may, however, require log shipping to start replication, and can utilize log shipping in order to catch up standbys which fall behind.&lt;br /&gt;
&lt;br /&gt;
= How to Replicate =&lt;br /&gt;
&lt;br /&gt;
== Cloning a Live Database ==&lt;br /&gt;
&lt;br /&gt;
If your workload doesn't allow you to take the master down (and whose does?), things get a bit more complicated.  You need to somehow take a &amp;quot;coherent snapshot&amp;quot; of the master, so that you don't have an inconsistent or corrupt database on the standby.  Now, in some cases this can be done via filesystem snapshotting tools or similar tricks, but as that approach is tricky and platform-dependant, we're not going to cover it here.&lt;br /&gt;
&lt;br /&gt;
Instead, we're going to cover the built-in method, which involves keeping a log of all changes applied to the database which happen during the copying process.  The steps are essentially the same, regardless of whether you're planning to use just hot standby, streaming replication, or both. There are two parts:&lt;br /&gt;
&lt;br /&gt;
* Cloning the database files&lt;br /&gt;
* Copying the archive logs&lt;br /&gt;
&lt;br /&gt;
Unintuitive as it is, the latter needs to be set up first, so we're going to start with that.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Archiving On The Master ==&lt;br /&gt;
&lt;br /&gt;
Archiving is the process of making an extra copy of each WAL file as it is completed.  These log files then need to somehow be accessed by the standby.  There are three basic ways to handle this, and you should decide in advance what method you're going to use:&lt;br /&gt;
&lt;br /&gt;
# Manually&lt;br /&gt;
# Automatic file copying from master to standby using rsync or simiar&lt;br /&gt;
# Writing them to a common shared network file location&lt;br /&gt;
&lt;br /&gt;
The first method is only appropriate if you're archiving logs only to jump-start streaming replication, and you have a fairly low-traffic database or the ability to stop all writes.  The third method is probably the easiest to manage if you have an appropriate network share; it can even be used to support multiple standbys with some extra thought and scripting.  All of these methods will be explained below.&lt;br /&gt;
&lt;br /&gt;
This needs to be turned on on the master, which if it's never been done before may require a restart (sorry, working on it), and will certainly require a reload.  You'll need to set the following parameters:&lt;br /&gt;
&lt;br /&gt;
   wal_level = hot_standby&lt;br /&gt;
   archive_mode = on&lt;br /&gt;
   archive_command = 'some command'&lt;br /&gt;
&lt;br /&gt;
What archive command you use depends on which archiving approach you are taking, of course.  Here are three examples of commands you might use.  Note that you will need to create the &amp;quot;archive&amp;quot; directories.&lt;br /&gt;
&lt;br /&gt;
# Manual: cp -f %p /var/lib/postgresql/data/archive/%f &amp;lt;/dev/null&lt;br /&gt;
# Automatic Copy: rsync -a %p 192.168.0.2:/var/lib/pgsql/data/archive/%f&lt;br /&gt;
# Network Share: cp -f %p /shares/walarchive/archive/%f &amp;lt;/dev/null&lt;br /&gt;
&lt;br /&gt;
In these commands, %p is replace by postgres at invocation time with the full path and name of the WAL file, and %f with the name of the file alone.  There are more escapes and parameters dealing with WAL archiving which will be detailed later in the tutorial.  Note that, in real production, you are unlikely to want to use any commands as simple as the above.  In general, you will want to have archive_command call an executable script which traps errors and can be disabled.  Examples of such scripts are available in this tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, if archive_mode was originally &amp;quot;off&amp;quot; or if you had to change wal_level, you're going to need to restart the master (sorry, this will be fixed in a later version).  If you just needed to change the archive_command, however, only a reload is required.&lt;br /&gt;
&lt;br /&gt;
Once you've restarted or reloaded, check the master's logs to make sure archiving is working.  If it's failing, the master will complain extensively.  You might also check that archive log files are being created; run the command &amp;quot;SELECT pg_switch_xlog();&amp;quot; as the superuser to force a new log to be written.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Archiving on the Standby ==&lt;br /&gt;
&lt;br /&gt;
The standby needs to be configured to consume logs.  This is simpler than the master's setup, and doesn't really change no matter what archive copying strategy you're using.&lt;br /&gt;
&lt;br /&gt;
== Recovery.conf ==&lt;br /&gt;
&lt;br /&gt;
On the standby, replication configuration is controlled through a file called, for historical reasons, recovery.conf.  If this file is present in PostgreSQL's data directory when PostgreSQL is started, that server will assume it is a standby and attempt to obey it.  Generally, there is an example file installed with the other PostgreSQL shared docs.  However, that example file covers all of the various replication options at once, so it's often simpler to write your own file, from scratch.  Any change to recovery.conf requires a restart of the standby.&lt;br /&gt;
&lt;br /&gt;
In recovery.conf, you need to add a command to copy the archived WAL files to the standby's on pg_xlog directory.  This is the mirror image of the archive_command on the master.  Generally, a simple cp command is sufficient:&lt;br /&gt;
&lt;br /&gt;
  restore_command = 'cp -f /var/lib/postgresql/data/archive/%f %p &amp;lt;/dev/null'&lt;br /&gt;
  restore_command = 'cp -f /shares/walarchive/%f %p &amp;lt;/dev/null'&lt;br /&gt;
&lt;br /&gt;
Again, you might want to use a simple shell script which traps error messages, and, importantly, deletes archive files which are no longer needed. If you will be doing only hot standby and not using streaming replication, you probably want to compile the pg_standby binary provided in PostgreSQL's additional modules or &amp;quot;contrib&amp;quot;, and use it instead:&lt;br /&gt;
&lt;br /&gt;
  restore_command = 'pg_standby /shares/walarchive/%f %p %r'&lt;br /&gt;
&lt;br /&gt;
More detail on pg_standby is in its documentation.&lt;br /&gt;
&lt;br /&gt;
== Cloning a Snapshot of the Master ==&lt;br /&gt;
&lt;br /&gt;
Once you have archiving working, you're ready to clone the master database.  At this point, it's a simple process:&lt;br /&gt;
&lt;br /&gt;
# As superuser, issue the command &amp;quot;SELECT pg_start_backup('backup');&amp;quot; on the master.&lt;br /&gt;
# Copy all of the database files to the standby.&lt;br /&gt;
# Start the standby database.&lt;br /&gt;
# Issue the command &amp;quot;SELECT pg_stop_backup();&amp;quot; on the master.&lt;br /&gt;
&lt;br /&gt;
Of course, each of those steps deserves a little more elaboration.  pg_start_backup and pg_stop_backup are special commands you issue on the master in order to create, hold open, and close, a &amp;quot;snapshot&amp;quot; which is how we make sure your copy of the database is not inconsistent.  They also write special files to the archive log which tell the standby when it has a complete snapshot.&lt;br /&gt;
&lt;br /&gt;
If you are using the &amp;quot;manual&amp;quot; method of synching the archive logs, immediately after step 4 you need to do one last rsync or copy of the archive logs to the standby.&lt;br /&gt;
&lt;br /&gt;
When you're done with the cloning, you should see output similar to the below:&lt;br /&gt;
&lt;br /&gt;
This means that you're up and replicating, and should now be able to run queries on the standby.&lt;br /&gt;
&lt;br /&gt;
== Failing Over To The Standby ==&lt;br /&gt;
&lt;br /&gt;
Of course, one of the major reasons to have a standby is in case something (planned or unplanned) causes the master server to shut down.  Then you want to &amp;quot;fail over&amp;quot;, or stop replication and change the standby to a full read-write master.&lt;br /&gt;
&lt;br /&gt;
The recommended method is the same regardless of the type of replication or standby: via &amp;quot;trigger file&amp;quot;.  First, you need to set a configuration option in recovery.conf on the standby:&lt;br /&gt;
  &lt;br /&gt;
  trigger_file = '/var/lib/postgresql/data/failover'&lt;br /&gt;
&lt;br /&gt;
Then, when it's time to fail over, you just create an empty file with that name, such as by using the &amp;quot;touch&amp;quot; command.  The standby will notice the file, attempt to apply any remaining WAL records or files it has received, and then switch to read-write or &amp;quot;master&amp;quot; mode.  When this happens, you will see a message like this in the Postgres log:&lt;br /&gt;
&lt;br /&gt;
PostgreSQL will also rename the recovery.conf file to recovery.done in order to prevent having the new master fail on restart.  For this reason, the recovery.conf file should be owned by the same user which the server runs as (usually &amp;quot;postgres&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The alternative to using a trigger file is to failover manually, by deleting or renaming the recovery.conf file and restarting the standby.  This method is inferior because it requires a restart which would interrupt any read-only connections to the standby currently in use.&lt;br /&gt;
&lt;br /&gt;
In a high-availability system, the above activity should be managed automatically in order to avoid downtime.  PostgreSQL itself supplies no tools to do this, but numerous third-party utilities such as &amp;quot;Linux heartbeat&amp;quot; are compatible with PostgreSQL replication.&lt;br /&gt;
&lt;br /&gt;
It's important to prevent the original master from restarting after failover, lest you end up with a &amp;quot;split brain&amp;quot; problem and data loss.  There is a substantial body of literature on this, and third-party tools, so we won't discuss them here at this time.&lt;br /&gt;
&lt;br /&gt;
== Load Balancing ==&lt;br /&gt;
&lt;br /&gt;
== Managing Archive Logs ==&lt;br /&gt;
&lt;br /&gt;
== Tuning and Configuration of Binary Replication ==&lt;br /&gt;
&lt;br /&gt;
== Monitoring Replication ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Replication]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Homebrew</id>
		<title>Homebrew</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Homebrew"/>
				<updated>2012-04-03T22:35:46Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Link to Lion issue fixing docs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://mxcl.github.com/homebrew/ Homebrew] is a package manager for Mac OS X that builds software from its source code.  It includes a version of PostgreSQL packaged by what it refers to as a formula.  This type of installation might be preferred by people who are comfortable using the command line to install programs, such as software developers.&lt;br /&gt;
&lt;br /&gt;
Notes on Homebrew:&lt;br /&gt;
&lt;br /&gt;
* [http://russbrooks.com/2010/11/25/install-postgresql-9-on-os-x Install PostgreSQL 9 on OS X] (2010-11-25) - Easy install using Homebrew package manager.&lt;br /&gt;
* [http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/ Brew Install Postgresql on OS X Lion] - Resolving conflicts with the built-in PostgreSQL libraries shipping with OS X 10.7 'Lion'&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2012-04/msg00010.php Discussion comparing Homebrew and EDB OS X installers]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Homebrew</id>
		<title>Homebrew</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Homebrew"/>
				<updated>2012-04-03T22:18:45Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Typo fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://mxcl.github.com/homebrew/ Homebrew] is a package manager for Mac OS X that builds software from its source code.  It includes a version of PostgreSQL packaged by what it refers to as a formula.  This type of installation might be preferred by people who are comfortable using the command line to install programs, such as software developers.&lt;br /&gt;
&lt;br /&gt;
Notes on Homebrew:&lt;br /&gt;
&lt;br /&gt;
* [http://russbrooks.com/2010/11/25/install-postgresql-9-on-os-x Install PostgreSQL 9 on OS X] (2010-11-25) - Easy install using Homebrew package manager.&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2012-04/msg00010.php Discussion comparing Homebrew and EDB OS X installers]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Homebrew</id>
		<title>Homebrew</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Homebrew"/>
				<updated>2012-04-03T22:01:54Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;New page on Homebrew package manager&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://mxcl.github.com/homebrew/ Homebrew] is a package manager for Mac OS X that builds software from its source code.  It includes a version of PostgreSQL packaged by what it refers to as a recipe.  This type of installation might be preferred by people who are comfortable using the command line to install programs, such as software developers.&lt;br /&gt;
&lt;br /&gt;
Notes on Homebrew:&lt;br /&gt;
&lt;br /&gt;
* [http://russbrooks.com/2010/11/25/install-postgresql-9-on-os-x Install PostgreSQL 9 on OS X] (2010-11-25) - Easy install using Homebrew package manager.&lt;br /&gt;
* [http://archives.postgresql.org/pgsql-hackers/2012-04/msg00010.php Discussion comparing Homebrew and EDB OS X installers]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PgCon2012CanadaClusterSummit</id>
		<title>PgCon2012CanadaClusterSummit</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PgCon2012CanadaClusterSummit"/>
				<updated>2012-02-29T06:04:14Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Fixed bullet formatting, clickable e-mail address&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 3rd Postgres Cluster Hackers Summit, pgCon 2012 ==&lt;br /&gt;
&lt;br /&gt;
== Time and Place ==&lt;br /&gt;
&lt;br /&gt;
Tuesday, May 15th, 10am to 5pm&lt;br /&gt;
&lt;br /&gt;
Conference room at the University of Ottawa, room TBA&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
Draft agenda follows.  Please let me know of any contributions/changes to the agenda you have:&lt;br /&gt;
&lt;br /&gt;
=== Project Reports: 5 minutes from each project ===&lt;br /&gt;
* Hot Standby/Binary Replication -- Peter or Simon&lt;br /&gt;
* pgPoolII -- Tatsuo&lt;br /&gt;
* PostgresXC -- Koichi&lt;br /&gt;
* Slony -- Steve or Jan&lt;br /&gt;
* Your Project Here&lt;br /&gt;
&lt;br /&gt;
=== Technical Issues of common interest ===&lt;br /&gt;
* SSI in cluster/replication&lt;br /&gt;
* Parser export&lt;br /&gt;
* Managing consistent views of data&lt;br /&gt;
* Fault detection and handling&lt;br /&gt;
* Node addition/removal&lt;br /&gt;
* Configuration and operation&lt;br /&gt;
* Cursor in replication/multi master&lt;br /&gt;
* Your Issue Here&lt;br /&gt;
&lt;br /&gt;
The Cluster Summit will be from 10am to 5pm, with a break for lunch, which will be provided, sponsored by NTT.&lt;br /&gt;
&lt;br /&gt;
If you will be able to attend, please email Josh ([mailto:josh@agliodbs.com josh@agliodbs.com]) with the following:&lt;br /&gt;
&lt;br /&gt;
* Your Name&lt;br /&gt;
* Project(s) you work on&lt;br /&gt;
* If you will be giving a Project Report&lt;br /&gt;
* If you have additions to the agenda&lt;br /&gt;
* Special dietary needs for lunch, if any&lt;br /&gt;
* If you need travel assistance&lt;br /&gt;
&lt;br /&gt;
Note that the availability of travel funding is not guaranteed; I can just agree to request it.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting</id>
		<title>PgCon 2012 Developer Meeting</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting"/>
				<updated>2012-02-20T20:48:22Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add myself to the developer's meeting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A meeting of the most active PostgreSQL developers is being planned for Wednesday 16th May, 2012 near the University of Ottawa, prior to pgCon 2012. In order to keep the numbers manageable, this meeting is '''by invitation only'''. Unfortunately it is quite possible that we've overlooked important code developers during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org). &lt;br /&gt;
&lt;br /&gt;
Please note that this year the attendee numbers have been cut to try to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.2 release cycle. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies, unlike in previous years.&lt;br /&gt;
&lt;br /&gt;
This is a PostgreSQL Community event. Room and refreshments/food sponsored by EnterpriseDB. Other companies sponsored attendance for their developers.&lt;br /&gt;
 &lt;br /&gt;
== Time &amp;amp; Location ==&lt;br /&gt;
&lt;br /&gt;
The meeting will be from 9AM to 5PM, and will be in the &amp;quot;Red Experience&amp;quot; room at:&lt;br /&gt;
&lt;br /&gt;
 Novotel Ottawa&lt;br /&gt;
 33 Nicholas Street&lt;br /&gt;
 Ottawa&lt;br /&gt;
 Ontario&lt;br /&gt;
 K1N 9M7&lt;br /&gt;
 &lt;br /&gt;
Food and drink will be provided throughout the day, including breakfast from 8AM.&lt;br /&gt;
&lt;br /&gt;
[http://maps.google.ca/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=novotel+ottawa&amp;amp;aq=&amp;amp;sll=49.891235,-97.15369&amp;amp;sspn=36.237851,79.013672&amp;amp;ie=UTF8&amp;amp;hq=novotel+ottawa&amp;amp;hnear=&amp;amp;ll=45.421528,-75.683699&amp;amp;spn=0.036869,0.077162&amp;amp;z=14&amp;amp;iwloc=A&amp;amp;layer=c&amp;amp;cbll=45.425741,-75.689638&amp;amp;panoid=Z4FUGnkZkdHAOkIxyjjS9Q&amp;amp;cbp=12,25.83,,0,-0.6 View on Google Maps]&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
&lt;br /&gt;
The following people have RSVPed to the meeting (in alphabetical order, by surname):&lt;br /&gt;
&lt;br /&gt;
* Oleg Bartunov&lt;br /&gt;
* Josh Berkus (Secretary)&lt;br /&gt;
* Dimitri Fontaine&lt;br /&gt;
* Peter Geoghegan&lt;br /&gt;
* Magnus Hagander&lt;br /&gt;
* Dave Page (Chair)&lt;br /&gt;
* Teodor Sigaev&lt;br /&gt;
* Greg Smith&lt;br /&gt;
&lt;br /&gt;
== Proposed Agenda Items ==&lt;br /&gt;
&lt;br /&gt;
Please list proposed agenda items here:&lt;br /&gt;
&lt;br /&gt;
* Write Scalability (Scale up, scale out) [Dimitri]&lt;br /&gt;
* Queuing [Dimitri]&lt;br /&gt;
* Materialized views [Dimitri]&lt;br /&gt;
* Partitioning and Segment Exclusion [Dimitri]&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Time&lt;br /&gt;
!Item&lt;br /&gt;
!Presenter&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:00&lt;br /&gt;
|Breakfast&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|08:45 - 09:00&lt;br /&gt;
|Welcome and introductions&lt;br /&gt;
|Dave Page&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|10:30 - 10:45&lt;br /&gt;
|Coffee break&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|12:30 - 13:30&lt;br /&gt;
|Lunch	&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|15:00 - 15:15&lt;br /&gt;
|Tea break&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|16:45 - 17:00&lt;br /&gt;
|Any other business/group photo&lt;br /&gt;
|Dave Page&lt;br /&gt;
|- style=&amp;quot;font-style:italic;background-color:lightgray;&amp;quot;&lt;br /&gt;
|17:00&lt;br /&gt;
|Finish&lt;br /&gt;
|	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Minutes==&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Detailed_installation_guides</id>
		<title>Detailed installation guides</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Detailed_installation_guides"/>
				<updated>2012-01-10T22:18:32Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Link to official Debian page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Any UNIX-Like Platform ==&lt;br /&gt;
&lt;br /&gt;
* [[Manual Setup at the Command Line]]&lt;br /&gt;
&lt;br /&gt;
== General Linux ==&lt;br /&gt;
&lt;br /&gt;
* Gentoo: [http://www.gentoo.org/doc/en/postgres-howto.xml PostgreSQL Guide] (2007-04-25)&lt;br /&gt;
* Linux: [http://www.designmagick.com/article/2/Starting-Out/Installing-PostgreSQL Installing Apache, PostgreSQL, and PHP on Linux] by Chris Smith (2006-02-07)&lt;br /&gt;
* [[PostgreSQL and SELinux]]&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/PostgreSQL_Tutorials Installation of Postgres Plus Standard Server v8.3 Tutorial for Linux]&lt;br /&gt;
&lt;br /&gt;
=== Debian/Ubuntu Linux ===&lt;br /&gt;
&lt;br /&gt;
Debian based installs have a somewhat unique design that allows multiple database clusters to be managed independently.  This allows running both multiple database instances as well as multiple versions more easily than other packaging schemes.&lt;br /&gt;
&lt;br /&gt;
*[http://wiki.debian.org/PostgreSql Debian PostgreSQL Wiki].  As pointed out there, really detailed documentation is available on the server at ''/usr/share/doc/postgresql-common/README.Debian.gz'' ; you should copy this file to another directory and run ''gunzip README.Debian.gz'' if you'd like a readable version.&lt;br /&gt;
*[http://www.stuartellis.eu/articles/postgresql-setup/ Using PostgreSQL on Debian and Ubuntu] (2009)&lt;br /&gt;
*[http://russbrooks.com/2009/5/25/install-ubuntu-9-04-server-edition-rails-php-passenger-postgresql-and-mysql Install Ubuntu 9.04 Server Edition, Rails, PHP, Passenger, PostgreSQL, and MySQL] - the &amp;quot;database&amp;quot; section here is a concise guide to the standard PostgreSQL installation work most systems need to password-protected remote access, and it also covers installing the server side tools for pgAdmin (2009-05-25)&lt;br /&gt;
*[http://hocuspokus.net/2008/05/install-postgresql-on-ubuntu-804 Install PostgreSQL on Ubuntu 8.04] (2008-05-14)&lt;br /&gt;
*[http://www.ubuntugeek.com/howto-setup-database-server-with-postgresql-and-pgadmin3.html Howto setup Database Server With postgresql and pgadmin3] (has a nice intro to general postgresql.conf/pg_hba.conf info applicable to all distributions)&lt;br /&gt;
*[http://www.debianhelp.co.uk/postgresql.htm PostgreSQL Database Server Configuration in Debian]&lt;br /&gt;
*[http://www.elsn.org/main/postgresql/ Using the PostgreSQL Database Server]&lt;br /&gt;
*[http://www.progsoc.org/~wildfire/notes/postgresql-cluster.html postgresql clustering and Debian]&lt;br /&gt;
*[http://debian-user.blogspot.com/2008/02/upgrading-to-postgresql-83-in-debian.html Upgrading to PostgreSQL 8.3 in Debian from 7.4]&lt;br /&gt;
&lt;br /&gt;
=== RedHat/Fedora/CentOS ===&lt;br /&gt;
* [[YUM Installation]]&lt;br /&gt;
* [[PostgreSQL on RedHat Linux]]&lt;br /&gt;
&lt;br /&gt;
== FreeBSD ==&lt;br /&gt;
* FreeBSD: [http://www.b1c1l1.com/blog/2011/01/01/upgrading-postgresql-on-freebsd/ Upgrading PostgreSQL on FreeBSD] (2011-01-01)&lt;br /&gt;
* FreeBSD: [http://jasonk2600.wordpress.com/2010/01/11/installing-postgresql-on-freebsd/ Installing PostgreSQL on FreeBSD] (2010-01-11)&lt;br /&gt;
* FreeBSD: [http://www.freebsddiary.org/postgresql.php PostgreSQL Installation on FreeBSD] (2002-08-24)&lt;br /&gt;
* FreeBSD: [http://www.freebsddiary.org/postgresql-perl.php PostgreSQL and Perl on FreeBSD] (2000-12-26)&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
* MacOS X: [http://russbrooks.com/2010/11/25/install-postgresql-9-on-os-x Install PostgreSQL 9 on OS X] (2010-11-25) - Easy install using Homebrew package manager.&lt;br /&gt;
* MacOS X: [http://facility9.com/2010/02/15/installing-postgresql-on-mac-os-x Installing PostgreSQL on Mac OS X (an alternative guide using EnterpriseDB) by Jeremiah Peschka] (2010-02-15)&lt;br /&gt;
* MacOS X: [http://www.macdevcenter.com/pub/a/mac/2002/06/07/postgresql.html PostgreSQL on MacOS X (another alternative guide) by Michael Brewer] (2002-07-06)&lt;br /&gt;
* MacOS X: [http://developer.apple.com/internet/opensource/postgres.html PostgreSQL on Mac OS X]&lt;br /&gt;
&lt;br /&gt;
== Solaris ==&lt;br /&gt;
&lt;br /&gt;
* Solaris 10: [[:Image:pg_8.2.1_deployment_v1.0.pdf|PostgreSQL 8.2.1 on Solaris 10 – Deployment Guidelines]] by Chris Drawater (2007-01-15)&lt;br /&gt;
* Solaris 10: [http://www.holindis.co.uk/ Related documents for J2EE, Tomcat, and Oracle migrations] by Chris Drawater (2007-01-15)&lt;br /&gt;
* [[:Image:Pg81onsolaris10.pdf|PostgreSQL 8.1 on Solaris 10 - Deployment Guidelines]] (160KB - PDF)&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
[[Running &amp;amp; Installing PostgreSQL On Native Windows]]&lt;br /&gt;
&lt;br /&gt;
== Alternative to manual installation ==&lt;br /&gt;
&lt;br /&gt;
Some users may prefer to skip manual installation by using a pre-integrated [[TurnKey PostgreSQL | PostgreSQL software appliance]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Administration]][[Category:Install]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Project_Hosting</id>
		<title>Project Hosting</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Project_Hosting"/>
				<updated>2012-01-10T21:41:54Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Added bitbucket to the options list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PostgreSQL provides several way to integrate with [http://www.postgresql.org/docs/9.0/interactive/external-projects.html External Projects], both inside and outside of the core database itself.  The PostgreSQL Development Group (PGDG) provides some resources toward hosting PostgreSQL projects.&lt;br /&gt;
&lt;br /&gt;
The current home for many PostgreSQL projects is [http://pgfoundry.org/ PgFoundry], a free resource provided by the PGDG.  PgFoundry provides projects with a full set of resources, including version control, mailing lists with archives, and bug tracking.  The only source code management (SCM) repository type supported is CVS.  Because many projects want more modern SCM options, some existing and new projects have instead hosted their resources at other places.  An upgrade to PgFoundry is not expected, and the PGDG is exploring a plan to eventually shut the site down.  New projects should consider an alternative hosting site.&lt;br /&gt;
&lt;br /&gt;
Some add-on projects are considered critical to PostgreSQL adoption.  One such category are drivers for popular programming languages that are not shipped with the database itself (JDBC, ODBC, others).  Critical projects can request space on [http://git.postgresql.org git.postgresql.org] along with a [http://www.postgresql.org/community/lists/ mailing list].&lt;br /&gt;
&lt;br /&gt;
[https://github.com/ github] is a popular site for hosting projects using the git SCM.  It provides some basic project tools such as an issue tracker.  There is a [https://github.com/postgres-mirror PostgreSQL mirror at github] you can fork to easily create patches against the database source code.  github doesn't provide a good way to provide project documentation, source releases (AKA tarballs), or any sort of mailing list for the project.  Some projects have combined github for the main project hosting with [http://groups.google.com Google groups] to provide an archived mailing list.&lt;br /&gt;
&lt;br /&gt;
Other sites that are possible places to host a PostgreSQL related project at include:&lt;br /&gt;
* [http://sourceforge.net/ sourceforge]&lt;br /&gt;
* [http://code.google.com/ Google code]&lt;br /&gt;
* [https://launchpad.net/ Launchpad]&lt;br /&gt;
* [https://bitbucket.org/ bitbucket]&lt;br /&gt;
&lt;br /&gt;
Each of these sites has a different mix of features it supports.  Support for the preferred SCM of the developer is often the first thing considered, since some of these sites only support one of them.  For example, github only handles git, and Launchpad only supports Bazaar.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Pgfoundry</id>
		<title>Pgfoundry</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Pgfoundry"/>
				<updated>2012-01-10T21:33:59Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Link to Project Hosting page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''pgfoundry.org''' is a website hosting various Postgres-related software projects. It is the successor to [[gborg]], and runs using [http://gforge.org GForge], an open source collaborative software development tool.&lt;br /&gt;
&lt;br /&gt;
Web site: [http://pgfoundry.org pgfoundry.org]&lt;br /&gt;
&lt;br /&gt;
See [[Project Hosting]] for more information about what pgfoundry provides, and alternatives to it.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Events</id>
		<title>Events</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Events"/>
				<updated>2011-12-19T19:38:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Added Postgres Open 2012&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PostgreSQL Events ==&lt;br /&gt;
&lt;br /&gt;
Most PostgreSQL-specific events are tracked on the [http://www.postgresql.org/about/eventarchive PostgreSQL Events] page.  This is a listing of events at which we expect, or would like to have, a PostgreSQL presence.  Please keep the events in order by starting date and follow the existing examples.  Please also tag the events with the MediaWiki &amp;quot;PostgreSQL Events&amp;quot; category. If you are going to be organizing a PostgreSQL booth, please adhere to [[BoothPolicies]]. PostgreSQL Europe conference coordination [[PGUG EU Conference Coordination|is here]]. Conference for China user group [[Pg_envent_cn| is here]].&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|- style=&amp;quot;background:Khaki;&amp;quot;&lt;br /&gt;
'''Upcoming PostgreSQL Events Listing'''&lt;br /&gt;
| '''Event''' || '''Web Page''' || '''Date''' || '''Country''' || '''City''' || '''Activities'''&lt;br /&gt;
|-&lt;br /&gt;
| [[FOSDEM 2012]] || [http://www.fosdem.org/2012/ FOSDEM '12] || February 04-05, 2011 || Belgium || Brussels || Booth, Devroom&lt;br /&gt;
|-&lt;br /&gt;
| PGWest 2012 || [https://www.postgresqlconference.org/ PostgreSQL West 2012] || June 26-29, 2012 || USA || Denver, CO || Training, Talks&lt;br /&gt;
|-&lt;br /&gt;
| PGOpen 2012 || [http://postgresopen.org Postgres Open 2012] || September 16-19, 2012 || USA || Chicago, IL || Training, Talks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|- style=&amp;quot;background:Khaki;&amp;quot;&lt;br /&gt;
'''Previous PostgreSQL Events Listing'''&lt;br /&gt;
| '''Event''' || '''Web Page''' || '''Date''' || '''Country''' || '''City''' || '''Activities'''&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL Conference Germany 2011 || [http://2011.pgconf.de/ PGConf.DE 2011]|| Nov 11, 2011 || Germany || Oberhausen || [[German-Speaking PostgreSQL Conference 2011|Talks]]&lt;br /&gt;
|-&lt;br /&gt;
| PGBR2011 || [http://pgbr.postgresql.org.br/ PGBR2011] || Nov 3-4, 2011 || Brazil || São Paulo || Tutorials, Talks, Booth&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL Conference Europe 2011 || [http://2011.pgconf.eu/ PGConf.EU 2011] || October 18-21, 2011 || The Netherlands || Amsterdam || Training, [[PostgreSQL Conference Europe Talks 2011|Talks]]&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL Conference West 2011 || [http://www.postgresqlconference.org/ #PgWest 2011] || September 27-30, 2011 || San Jose || California || Training, Talks, Booth&lt;br /&gt;
|-&lt;br /&gt;
| Postgres Open || [http://postgresopen.org/2011/home/ Postgres Open 2011] || Sep 14-16, 2011 || USA || Chicago || [[Postgres Open Talks 2011]]&lt;br /&gt;
|-&lt;br /&gt;
| PGDay Porto Alegre || [http://www.postgresql.org.br/eventos/2011/pgday/rs PGDay Porto Alegre] || August 19, 2011 || Brazil || Porto Alegre || Talks, Booths&lt;br /&gt;
|-&lt;br /&gt;
| FrOSCon || [http://www.froscon.de/ FrOSCon 2011]|| August 20-21, 2011 || Germany || St. Augustin || Talks, Booth&lt;br /&gt;
|-&lt;br /&gt;
| Pg Conf Colombia || [http://www.pgconf.org Pg Conf Colombia 2011]|| August 4-5, 2011 || Colombia || Bucaramanga ||&lt;br /&gt;
|-&lt;br /&gt;
| PgDay at OSCON 2011 || [http://pugs.postgresql.org/node/1663 PgDay at OSCON 2011] || July 24, 2011 || USA || Portland, OR || Talks, party&lt;br /&gt;
|-&lt;br /&gt;
| 2011 China PostgreSQL User conference ||[http://wiki.postgresql.org/wiki/Pgconchina2011 2011 China PostgreSQL User conference] || July 16-17, 2011 || China || GUANGZHOU ||Talks,Tutorial&lt;br /&gt;
|-&lt;br /&gt;
| PGCon 2011 || [http://www.pgcon.org/2011/ PGCon 2011] || May 17-20, 2011 || Canada || Ottawa || Talks, Training&lt;br /&gt;
|-&lt;br /&gt;
| PGEast 2011 || [https://www.postgresqlconference.org/ PGWest] || March 22-25, 2011 || USA || New York, NY || Talks, Training&lt;br /&gt;
|-&lt;br /&gt;
| PostgresSQL Conference 2011 Japan || || February 25-26, 2011 || Tokyo || Japan ||&lt;br /&gt;
|-&lt;br /&gt;
| [[FOSDEM, Brussels 2011]] || [http://www.fosdem.org/2011/ FOSDEM '11] || February 05-06, 2011 || Belgium || Brussels || Booth, Devroom&lt;br /&gt;
|-&lt;br /&gt;
| [[PGDAY-Latino, La Habana 2011]] || [http://postgresql.uci.cu/news/19 PGDAY-Latino '11] || February 01-05, 2011 || Cuba || La Habana || Talks, Workshop&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [[Events/2010 | 2010 events]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [[Events/2009 | 2009 events]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [[Events/2008 | 2008 events]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [[Events/2007 | 2007 events]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://conferences.oreillynet.com/ O'Reilly conferences]&lt;br /&gt;
* [http://opencheese.com/2007/10/14/open-source-events-2008/ &amp;quot;Open Source and Linux events in 2008&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL Events]]&lt;br /&gt;
[[Category:Advocacy]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Events</id>
		<title>Events</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Events"/>
				<updated>2011-12-19T19:32:55Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add PGWest 2012&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PostgreSQL Events ==&lt;br /&gt;
&lt;br /&gt;
Most PostgreSQL-specific events are tracked on the [http://www.postgresql.org/about/eventarchive PostgreSQL Events] page.  This is a listing of events at which we expect, or would like to have, a PostgreSQL presence.  Please keep the events in order by starting date and follow the existing examples.  Please also tag the events with the MediaWiki &amp;quot;PostgreSQL Events&amp;quot; category. If you are going to be organizing a PostgreSQL booth, please adhere to [[BoothPolicies]]. PostgreSQL Europe conference coordination [[PGUG EU Conference Coordination|is here]]. Conference for China user group [[Pg_envent_cn| is here]].&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|- style=&amp;quot;background:Khaki;&amp;quot;&lt;br /&gt;
'''Upcoming PostgreSQL Events Listing'''&lt;br /&gt;
| '''Event''' || '''Web Page''' || '''Date''' || '''Country''' || '''City''' || '''Activities'''&lt;br /&gt;
|-&lt;br /&gt;
| [[FOSDEM 2012]] || [http://www.fosdem.org/2012/ FOSDEM '12] || February 04-05, 2011 || Belgium || Brussels || Booth, Devroom&lt;br /&gt;
|-&lt;br /&gt;
| PGWest 2012 || [https://www.postgresqlconference.org/ PostgreSQL West 2012] || June 26-29, 2012 || USA || Denver, CO || Training, Talks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|- style=&amp;quot;background:Khaki;&amp;quot;&lt;br /&gt;
'''Previous PostgreSQL Events Listing'''&lt;br /&gt;
| '''Event''' || '''Web Page''' || '''Date''' || '''Country''' || '''City''' || '''Activities'''&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL Conference Germany 2011 || [http://2011.pgconf.de/ PGConf.DE 2011]|| Nov 11, 2011 || Germany || Oberhausen || [[German-Speaking PostgreSQL Conference 2011|Talks]]&lt;br /&gt;
|-&lt;br /&gt;
| PGBR2011 || [http://pgbr.postgresql.org.br/ PGBR2011] || Nov 3-4, 2011 || Brazil || São Paulo || Tutorials, Talks, Booth&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL Conference Europe 2011 || [http://2011.pgconf.eu/ PGConf.EU 2011] || October 18-21, 2011 || The Netherlands || Amsterdam || Training, [[PostgreSQL Conference Europe Talks 2011|Talks]]&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL Conference West 2011 || [http://www.postgresqlconference.org/ #PgWest 2011] || September 27-30, 2011 || San Jose || California || Training, Talks, Booth&lt;br /&gt;
|-&lt;br /&gt;
| Postgres Open || [http://postgresopen.org/2011/home/ Postgres Open 2011] || Sep 14-16, 2011 || USA || Chicago || [[Postgres Open Talks 2011]]&lt;br /&gt;
|-&lt;br /&gt;
| PGDay Porto Alegre || [http://www.postgresql.org.br/eventos/2011/pgday/rs PGDay Porto Alegre] || August 19, 2011 || Brazil || Porto Alegre || Talks, Booths&lt;br /&gt;
|-&lt;br /&gt;
| FrOSCon || [http://www.froscon.de/ FrOSCon 2011]|| August 20-21, 2011 || Germany || St. Augustin || Talks, Booth&lt;br /&gt;
|-&lt;br /&gt;
| Pg Conf Colombia || [http://www.pgconf.org Pg Conf Colombia 2011]|| August 4-5, 2011 || Colombia || Bucaramanga ||&lt;br /&gt;
|-&lt;br /&gt;
| PgDay at OSCON 2011 || [http://pugs.postgresql.org/node/1663 PgDay at OSCON 2011] || July 24, 2011 || USA || Portland, OR || Talks, party&lt;br /&gt;
|-&lt;br /&gt;
| 2011 China PostgreSQL User conference ||[http://wiki.postgresql.org/wiki/Pgconchina2011 2011 China PostgreSQL User conference] || July 16-17, 2011 || China || GUANGZHOU ||Talks,Tutorial&lt;br /&gt;
|-&lt;br /&gt;
| PGCon 2011 || [http://www.pgcon.org/2011/ PGCon 2011] || May 17-20, 2011 || Canada || Ottawa || Talks, Training&lt;br /&gt;
|-&lt;br /&gt;
| PGEast 2011 || [https://www.postgresqlconference.org/ PGWest] || March 22-25, 2011 || USA || New York, NY || Talks, Training&lt;br /&gt;
|-&lt;br /&gt;
| PostgresSQL Conference 2011 Japan || || February 25-26, 2011 || Tokyo || Japan ||&lt;br /&gt;
|-&lt;br /&gt;
| [[FOSDEM, Brussels 2011]] || [http://www.fosdem.org/2011/ FOSDEM '11] || February 05-06, 2011 || Belgium || Brussels || Booth, Devroom&lt;br /&gt;
|-&lt;br /&gt;
| [[PGDAY-Latino, La Habana 2011]] || [http://postgresql.uci.cu/news/19 PGDAY-Latino '11] || February 01-05, 2011 || Cuba || La Habana || Talks, Workshop&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [[Events/2010 | 2010 events]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [[Events/2009 | 2009 events]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [[Events/2008 | 2008 events]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [[Events/2007 | 2007 events]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://conferences.oreillynet.com/ O'Reilly conferences]&lt;br /&gt;
* [http://opencheese.com/2007/10/14/open-source-events-2008/ &amp;quot;Open Source and Linux events in 2008&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL Events]]&lt;br /&gt;
[[Category:Advocacy]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Archives_Policy</id>
		<title>Archives Policy</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Archives_Policy"/>
				<updated>2011-12-16T14:11:04Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Added &amp;quot;E-Mail Disclaimers and Licensing&amp;quot; section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PostgreSQL [http://www.postgresql.org/community/lists mailing lists] are archived at [http://archives.postgresql.org archives.postgresql.org]. This site is intended to provide an accurate representation of the activity on the lists, and as such '''will not''' be modified.&lt;br /&gt;
&lt;br /&gt;
== Why won't you remove my post? ==&lt;br /&gt;
&lt;br /&gt;
There are a number of reasons why we will not remove or modify messages in the archives:&lt;br /&gt;
&lt;br /&gt;
* We want the archives to accurately represent the history of our public mailing lists.&lt;br /&gt;
* Messages posted to our mailing lists are archived by other organisations outside of our control both directly, and via our Usenet gateway. Removing a message from our archives would only be the tip of the iceberg.&lt;br /&gt;
* Due to the way the archives are stored and occasionally regenerated from archived mailbox files, there is no way to permanently modify a message.&lt;br /&gt;
* Removing a message breaks the numbering system used to access subsequent messages which will break any links on websites or other list messages.&lt;br /&gt;
* We have limited volunteer resources to run the project (and no non-volunteer resources) and would prefer to use those resources to produce a great DBMS than rewrite history.&lt;br /&gt;
&lt;br /&gt;
== E-Mail Disclaimers and Licensing ==&lt;br /&gt;
&lt;br /&gt;
Some companies or organization add footers to outgoing e-mail messages with that group's e-mail policies, such as this simple example:&lt;br /&gt;
&lt;br /&gt;
* This e-mail is confidential and only for use by the intended recipient.&lt;br /&gt;
&lt;br /&gt;
These disclaimers are incompatible with sending messages to the PostgreSQL mailing lists.  When the mailing list is the &amp;quot;intended recipient&amp;quot;, that includes all of its current subscribers and the archives.  These archives are public, archived, and searchable; they cannot be made confidential.&lt;br /&gt;
&lt;br /&gt;
By choosing to send messages to a PostgreSQL mailing list, you are implicitly granting your permission for that message to be archived in that fashion, regardless of any e-mail disclaimer it might have.  And source code submissions to mailing lists such as ''pgsql-hackers'' are considered submissions to the PostgreSQL project, falling under the project's [http://www.postgresql.org/about/licence/ PostgreSQL license].  Please make sure you have permission to share information with these lists before sending your message.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Reliable_Writes</id>
		<title>Reliable Writes</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Reliable_Writes"/>
				<updated>2011-12-01T09:59:09Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Updated to mention Intel 710 drives&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Databases have many levels of read and write caches they use.  There's the database's own dedicated memory (shared_buffers), the operating system cache, potentially a disk controller cache (typical on a RAID card), and caches on each individual hard drive.  PostgreSQL expects some of these caches to work effectively in order to obtain good performance.  But periodically, the database issues a synchronous write request:  requesting that something must be committed to disk before the database can proceed.  If any of those writes say they are successful to the database, but the data is not really safe, database corruption can be expected if there is a server crash for any reason.  Software bug, power outage, UPS failure, accidentally unplugging the server, any of these things can lead to a corrupted database that will not start normally if your system has unsafe writes.&lt;br /&gt;
&lt;br /&gt;
There is a good diagram of how all these levels of caching fit together at [http://momjian.us/main/writings/pgsql/hw_selection.pdf  Database Hardware Selection Guidelines] (PDF, Bruce Momjian)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
This page lists articles about this topic that include a mix of theory and practical recommendations about how to setup a reliable system that doesn't have this sort of problem after a crash:&lt;br /&gt;
&lt;br /&gt;
* [http://www.postgresql.org/docs/current/static/wal-reliability.html Reliability]:  from the official documentation&lt;br /&gt;
* [https://www.packtpub.com/sites/default/files/0301OS-Chapter-2-Database-Hardware.pdf Database Hardware] (PDF):  Chapter on general hardware selection, introduces write-back vs. write-through caching terminology and notes about issues with SSD writes. (Greg Smith)&lt;br /&gt;
* [https://www.packtpub.com/article/server-configuration-tuning-postgresql Server Configuration Tuning]:  lists things to be aware of when setting wal_sync_method, as well as warnings about settings changes that can make your server unsafe--fsync, full_page_writes, and synchronous_commit  (Greg Smith)&lt;br /&gt;
* [http://www.westnet.com/~gsmith/content/postgresql/TuningPGWAL.htm Tuning PostgreSQL WAL Synchronization]:  background about the topic of drives that handle writes unsafely and how this impacts PostgreSQL writes. (Greg Smith)&lt;br /&gt;
&lt;br /&gt;
== Known problem hardware ==&lt;br /&gt;
&lt;br /&gt;
* The first and second generation Intel SSD drives such as the Intel X25-E will write unsafely, and this behavior is impossible to fix without serious impact to both the speed and longevity of the drive.  See [http://www.mysqlperformanceblog.com/2009/03/02/ssd-xfs-lvm-fsync-write-cache-barrier-and-lost-transactions/ SSD, XFS, LVM, fsync, write cache, barrier and lost transactions] (Vadim Tkachenko) for an introduction.  Their consumer drives such as the X-25-M G2 have been reported to be [http://evanjones.ca/intel-ssd-durability.html even worse] (Evan Jones).  The 3rd generation Intel 320 and 710 series drives do not have any of these problems, having added a capacitor to provide battery-backup for flushing the drive cache when power drops.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Advocacy</id>
		<title>Advocacy</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Advocacy"/>
				<updated>2011-11-25T15:28:54Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Link to Projects Using page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__* [[Events|Upcoming events &amp;amp; conferences]]&lt;br /&gt;
* [[AdvocacyGuides|Guides to promoting PostgreSQL]]&lt;br /&gt;
* [[:Category:Software Ports|Software Ports]]:  Getting PostgreSQL support into applications&lt;br /&gt;
* [[Advocacy/Better|Things Advocacy could be doing better]]&lt;br /&gt;
* [[Postgres| Postgres - Changing the name]]:  Requirements and issues&lt;br /&gt;
&lt;br /&gt;
===PostgreSQL Booths - Conference/Event===&lt;br /&gt;
* [[BoothCheckList|Booth Preparation Checklist]]&lt;br /&gt;
* Organizing [[BoothVols|Booth Volunteers]]&lt;br /&gt;
* [[HowToBooth|How To Booth]] for both Booth Bunnies and Organizers&lt;br /&gt;
* [[BoothDocs|Booth Related Documents]] List&lt;br /&gt;
&lt;br /&gt;
=== Branding Resources===&lt;br /&gt;
* [[Identity Guidelines]], [[Color Palette]]&lt;br /&gt;
* [[Logo]], [[Buttons]], [[Banners]]&lt;br /&gt;
* [[Posters]], [[Rollups]]&lt;br /&gt;
* [[Flyers]], [[Brochures]]&lt;br /&gt;
* [[Surveys]]&lt;br /&gt;
* [http://pgfoundry.org/docman/?group_id=1000089 PgFoundry's Graphic Project]&lt;br /&gt;
* [[Marketing Blurbs]]&lt;br /&gt;
&lt;br /&gt;
===New release management===&lt;br /&gt;
* [[ReleasePrep|Tasks to do before announcing a release]]&lt;br /&gt;
* [[MajorReleaseTimeline|Major Release Timeline]]&lt;br /&gt;
* [[HowToTranslate|HOWTO Translate The Release]]&lt;br /&gt;
* [[PostgreSQL 8.4]] - History of last completed release&lt;br /&gt;
* [[PostgreSQL 9.0 Press Coverage]]&lt;br /&gt;
&lt;br /&gt;
===Work in Progress===&lt;br /&gt;
* [[UserGroupOperatingManual|PUG Operating Manual]]&lt;br /&gt;
* [[:Category:Advocacy WIP|Advocacy WIP]]&lt;br /&gt;
* [[PgDayManual|Advice on running a PgDay]]&lt;br /&gt;
* [[Short Topic Books]]&lt;br /&gt;
* [[CodeSprint2008|Code Sprint Session at Pg Conference West 2008]]&lt;br /&gt;
* [[Open Source Projects Using PostgreSQL]]&lt;br /&gt;
&lt;br /&gt;
===Other Resources===&lt;br /&gt;
* Education [[Curriculum Development]]&lt;br /&gt;
* [[YourPostgreSQLAddress|Your @postgresql.org e-mail address]]&lt;br /&gt;
* [[HowToRC|How to be a Regional Contact]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Advocacy]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Open_Source_Projects_Using_PostgreSQL</id>
		<title>Open Source Projects Using PostgreSQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Open_Source_Projects_Using_PostgreSQL"/>
				<updated>2011-11-25T15:23:21Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;moved OpenSource Projects Using PostgreSQL to Open Source Projects Using PostgreSQL:&amp;amp;#32;Eliminate inconsistent CamelCase title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PostgreSQL exclusively ==&lt;br /&gt;
&lt;br /&gt;
* FusionForge&lt;br /&gt;
* Launchpad&lt;br /&gt;
* [http://www.ledgersmb.org LedgerSMB]&lt;br /&gt;
* OpenERP&lt;br /&gt;
* OpenNMS&lt;br /&gt;
* xTuple PostBooks&lt;br /&gt;
&lt;br /&gt;
== Using PostgreSQL as default ==&lt;br /&gt;
&lt;br /&gt;
* JasperReports Server&lt;br /&gt;
* OpenStreetMap&lt;br /&gt;
&lt;br /&gt;
== Using PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
* Alfresco&lt;br /&gt;
* Asterisk&lt;br /&gt;
* Bacula&lt;br /&gt;
* Bugzilla&lt;br /&gt;
* Django&lt;br /&gt;
* Dovecot&lt;br /&gt;
* Exim&lt;br /&gt;
* Icinga&lt;br /&gt;
* OTRS&lt;br /&gt;
* Postfix&lt;br /&gt;
* Redmine&lt;br /&gt;
* RT&lt;br /&gt;
* Trac&lt;br /&gt;
* Zabbix&lt;br /&gt;
&lt;br /&gt;
[[Category:Software Ports]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/OpenSource_Projects_Using_PostgreSQL</id>
		<title>OpenSource Projects Using PostgreSQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/OpenSource_Projects_Using_PostgreSQL"/>
				<updated>2011-11-25T15:23:21Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;moved OpenSource Projects Using PostgreSQL to Open Source Projects Using PostgreSQL:&amp;amp;#32;Eliminate inconsistent CamelCase title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Open Source Projects Using PostgreSQL]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Open_Source_Projects_Using_PostgreSQL</id>
		<title>Open Source Projects Using PostgreSQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Open_Source_Projects_Using_PostgreSQL"/>
				<updated>2011-11-25T15:22:17Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Reformat into sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PostgreSQL exclusively ==&lt;br /&gt;
&lt;br /&gt;
* FusionForge&lt;br /&gt;
* Launchpad&lt;br /&gt;
* [http://www.ledgersmb.org LedgerSMB]&lt;br /&gt;
* OpenERP&lt;br /&gt;
* OpenNMS&lt;br /&gt;
* xTuple PostBooks&lt;br /&gt;
&lt;br /&gt;
== Using PostgreSQL as default ==&lt;br /&gt;
&lt;br /&gt;
* JasperReports Server&lt;br /&gt;
* OpenStreetMap&lt;br /&gt;
&lt;br /&gt;
== Using PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
* Alfresco&lt;br /&gt;
* Asterisk&lt;br /&gt;
* Bacula&lt;br /&gt;
* Bugzilla&lt;br /&gt;
* Django&lt;br /&gt;
* Dovecot&lt;br /&gt;
* Exim&lt;br /&gt;
* Icinga&lt;br /&gt;
* OTRS&lt;br /&gt;
* Postfix&lt;br /&gt;
* Redmine&lt;br /&gt;
* RT&lt;br /&gt;
* Trac&lt;br /&gt;
* Zabbix&lt;br /&gt;
&lt;br /&gt;
[[Category:Software Ports]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Open_Source_Projects_Using_PostgreSQL</id>
		<title>Open Source Projects Using PostgreSQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Open_Source_Projects_Using_PostgreSQL"/>
				<updated>2011-11-25T15:18:52Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add Software Ports category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of Open Source projects which can be used with PostgresSQL:&lt;br /&gt;
&lt;br /&gt;
Using PostgreSQL exclusively:&lt;br /&gt;
&lt;br /&gt;
* FusionForge&lt;br /&gt;
* Launchpad&lt;br /&gt;
* [http://www.ledgersmb.org LedgerSMB]&lt;br /&gt;
* OpenERP&lt;br /&gt;
* OpenNMS&lt;br /&gt;
* xTuple PostBooks&lt;br /&gt;
&lt;br /&gt;
Using PostgreSQL as default:&lt;br /&gt;
&lt;br /&gt;
* JasperReports Server&lt;br /&gt;
* OpenStreetMap&lt;br /&gt;
&lt;br /&gt;
Using PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
* Alfresco&lt;br /&gt;
* Asterisk&lt;br /&gt;
* Bacula&lt;br /&gt;
* Bugzilla&lt;br /&gt;
* Django&lt;br /&gt;
* Dovecot&lt;br /&gt;
* Exim&lt;br /&gt;
* Icinga&lt;br /&gt;
* OTRS&lt;br /&gt;
* Postfix&lt;br /&gt;
* Redmine&lt;br /&gt;
* RT&lt;br /&gt;
* Trac&lt;br /&gt;
* Zabbix&lt;br /&gt;
&lt;br /&gt;
[[Category:Software Ports]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Development_information</id>
		<title>Development information</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Development_information"/>
				<updated>2011-11-14T17:04:00Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Switch to listing 9.2 as active work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This area includes developer-targeted documentation regarding aspects of PostgreSQL development.  Please visit the [http://www.postgresql.org/developer developer area] of the PostgreSQL website for more general information about the development of PostgreSQL.  You can find most developers in [irc://irc.freenode.net/postgresql #postgresql on freenode]. A list of IRC nick names with their respective real world names can be found [[IRC2RWNames | here]].&lt;br /&gt;
&lt;br /&gt;
==PostgreSQL 9.2 - Active Development==&lt;br /&gt;
* [[PostgreSQL 9.2 Development Plan]]&lt;br /&gt;
* [[PostgreSQL 9.2 Open Items]]&lt;br /&gt;
&lt;br /&gt;
==Development Process==&lt;br /&gt;
* [[Todo|Todo list]]&lt;br /&gt;
* [[Todo:Contents|Unofficial Todo Detail]]&lt;br /&gt;
* [[Submitting a Patch]]&lt;br /&gt;
* [[Reviewing a Patch]]&lt;br /&gt;
* [[RRReviewers|Round-robin Patch Review]]&lt;br /&gt;
* [[Running a CommitFest]]&lt;br /&gt;
* [[Committing with Git]]&lt;br /&gt;
&lt;br /&gt;
== Developer Resources ==&lt;br /&gt;
* [[Developer FAQ]]&lt;br /&gt;
* [[Regression test authoring]]&lt;br /&gt;
* [[HowToBetaTest|HOWTO Alpha and Beta Test PostgreSQL]]&lt;br /&gt;
* [[Working with Git]]&lt;br /&gt;
* [[Working with CVS]] (obsolete)&lt;br /&gt;
* [[Working with Eclipse]] (using CVS)&lt;br /&gt;
* [[Fixing shift/reduce conflicts in Bison]]&lt;br /&gt;
* [[PL Matrix|Procedural Language Matrix]]&lt;br /&gt;
* [http://www.postgresql.org/about/featurematrix Feature Matrix]&lt;br /&gt;
* [http://www.postgresql.org/developer/coding PostgreSQL Coding]&lt;br /&gt;
* [http://developer.postgresql.org/pgdocs/postgres/index.html Development docs] (updated every 5 minutes)&lt;br /&gt;
* [[Project Hosting]]&lt;br /&gt;
&lt;br /&gt;
== Projects and Planning ==&lt;br /&gt;
* [http://commitfest.postgresql.org/action/commitfest_view/open Open CommitFest] - New patch submissions for 9.2&lt;br /&gt;
* [https://commitfest.postgresql.org/ CommitFest]&lt;br /&gt;
* [[PostgreSQL 8.4]]&lt;br /&gt;
* [[PgCon 2011 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2010 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2009 Developer Meeting]]&lt;br /&gt;
* [[PgCon 2008 Developer Meeting]]&lt;br /&gt;
* [[Development projects]] - links to individual projects&lt;br /&gt;
&lt;br /&gt;
==PostgreSQL Past Development==&lt;br /&gt;
* [[PostgreSQL 9.1 Open Items]]&lt;br /&gt;
* [[PostgreSQL 9.1 Development Plan]]&lt;br /&gt;
* [[PostgreSQL 9.0 Open Items]]&lt;br /&gt;
* [[85AlphaFeatures|PostgreSQL 9.0 Alpha Release Feature List]]&lt;br /&gt;
&lt;br /&gt;
[[Category:CommitFest]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Planet_PostgreSQL</id>
		<title>Planet PostgreSQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Planet_PostgreSQL"/>
				<updated>2011-11-10T21:42:03Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Protected &amp;quot;Planet PostgreSQL&amp;quot;: Locking because it's a policy page ([edit=sysop] (indefinite) [move=sysop] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://planet.postgresql.org/ Planet PostgreSQL] is a blog aggregation service run by the PostgreSQL community.  In addition to the main Planet site, entries are published (&amp;quot;syndicated&amp;quot;) to the [http://www.postgresql.org/ postgresql.org] site as well.&lt;br /&gt;
&lt;br /&gt;
== Planet PostgreSQL Policy ==&lt;br /&gt;
&lt;br /&gt;
The following simple rules cover the blogs being listed on Planet PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
* All blogs should be about PostgreSQL or closely related technologies. If you want to blog about other things as well, please put your PostgreSQL specific posts in a separate category/tag/label, and use the feed for this category only for Planet PostgreSQL.&lt;br /&gt;
* All topics related to PostgreSQL are of course appreciated - both technical and non-technical.&lt;br /&gt;
* All posts should be in English. If you want to blog in other languages, please put your PostgreSQL specific posts in a separate category/tag/label, and use the feed for this category only for Planet PostgreSQL.&lt;br /&gt;
* All blogs should be identified by the posters name. A nickname is allowed to be used in combination with this, but blogs without names are not allowed.&lt;br /&gt;
* Avoid inflammatory comments in syndicated posts. Personal attacks are not permitted.&lt;br /&gt;
* Publishing of advertising in the syndicated part of your blog is not permitted&lt;br /&gt;
&lt;br /&gt;
Violating these rules will cause your blog to be removed from Planet PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
== Planet PostgreSQL FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== How can I remove a bad entry from the feed? ===&lt;br /&gt;
&lt;br /&gt;
It's possible to login to the administration interface and hide an individual entry.  If you realize you've made a mistake and done something like accidentally posting incorrectly tagged content, removing it on your own is recommended.&lt;br /&gt;
&lt;br /&gt;
=== What are the right URLs to use for a labeled feed from [http://www.blogger.com blogger.com]? ===&lt;br /&gt;
&lt;br /&gt;
Assuming your blog is named &amp;quot;blogname&amp;quot; and you've tagged a subset of your posts with the &amp;quot;postgresql&amp;quot; label, the correct URLs to input to the Planet code are:&lt;br /&gt;
&lt;br /&gt;
* Feedurl:  http://blogname.blogspot.com/search/label/postgresql&lt;br /&gt;
* Blogurl:  http://blogname.blogspot.com/feeds/posts/default/-/postgresql &lt;br /&gt;
&lt;br /&gt;
You can confirm those URLs display a suitable copy of your feed via a web browser before submitting them.&lt;br /&gt;
&lt;br /&gt;
=== Are commercial posts allowed? ===&lt;br /&gt;
&lt;br /&gt;
Informative entries that mention commercial products are normally permissible, as long as the main entry is relevant to the PostgreSQL community.  But the policy specifically prohibits publication of advertising in the portion of a blog that is syndicated to the Planet feed.  It's recommended that blogs that may contain ads tag them appropriately, to provide a feed to the Planet without those entries included.&lt;br /&gt;
&lt;br /&gt;
=== What constitutes an advertisement? ===&lt;br /&gt;
&lt;br /&gt;
The primary test here is whether the information provided would be of some use even to people who have no interest in the commercial product mentioned.  Consider what your entry would look like if all references to the product were removed.  If there's no useful PostgreSQL content left after doing that, that post is an ad.&lt;br /&gt;
&lt;br /&gt;
You can find a blog entry giving a more detailed opinion from one of the moderators about this subject at [http://blog.2ndquadrant.com/en/2011/06/planetary-alignment.html Planetary alignment].  That commentary is not part of the official policy.&lt;br /&gt;
&lt;br /&gt;
=== What happens to blogs that violate the site policies? ===&lt;br /&gt;
&lt;br /&gt;
A first violation of the advertising policy will result in the blog entry with the ad being removed, and a warning e-mail sent to the listed owner of the blog.&lt;br /&gt;
&lt;br /&gt;
A second violation will resulting in the blog being removed from the Planet PostgreSQL feed.  After a two month suspension period, the blog owner can submit their blog address--or a new feed URL better tagged to filter out advertisements--for reconsideration.&lt;br /&gt;
&lt;br /&gt;
A third violation in any year will result in a full 12 month suspension of the blog from Planet PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
=== Who makes the moderation decisions about the Planet content allowed? ===&lt;br /&gt;
&lt;br /&gt;
Site maintenance and moderation duty is done by a small team of volunteer moderators, primarily made up of [http://www.postgresql.org/community/contributors/ PostgreSQL contributors] from various companies who are familiar with the [[Policies|policies]] of the PostgreSQL community.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PostgreSQL_on_RedHat_Linux</id>
		<title>PostgreSQL on RedHat Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PostgreSQL_on_RedHat_Linux"/>
				<updated>2011-11-08T23:48:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Notes on Fedora 16 changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have the packages already installed on your server, RedHat installation can be as easy as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
service postgresql start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In older versions you'll automatically get a call to '''service postgresql initdb''' the first time you do this that will create the database cluster; in recent versions you'll need to do that yourself before the above.&lt;br /&gt;
&lt;br /&gt;
You can turn on and off whether PostgreSQL starts at boot like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
chkconfig postgresql on/off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default network configuration that RedHat initdb specifies uses the 'ident' mechanism for controlling access to the database, which is often not what people want.  See [[Client Authentication]] for more information.&lt;br /&gt;
&lt;br /&gt;
RedHat defaults to creating the database in /var/lib/pgsql/data.  If you want to change that, or otherwise want to adjust the parameters uses when PostgreSQL is started, you can do that by editing /etc/sysconfig/pgsql/postgresql and putting changes into there.  This is a standard shell script file included into the environment; here is a sample with the default parameters, you can pick just the lines from here you want to change and put new values there:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
PGDATA=/var/lib/pgsql/data&lt;br /&gt;
PGPORT=5432&lt;br /&gt;
PGLOG=/var/lib/pgsql/pgstartup.log&lt;br /&gt;
PGOPTS=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PGOPTS can be used to set random other options; it is added to the end of the command line used to run the postmaster daemon.  But note that any configuration parameters set this way cannot be changed on-the-fly while the postmaster is running.  It's usually better to set custom values in postgresql.conf.&lt;br /&gt;
&lt;br /&gt;
Also, if you want to change PGDATA from the default, be aware that the default SELinux configuration in recent Red Hat releases will prevent the postmaster daemon from writing anywhere except /var/lib/pgsql/data.  You'll need to change the SELinux setup or at least relabel directory security contexts to put it someplace else.  See [[PostgreSQL and SELinux]] for links to more information.&lt;br /&gt;
&lt;br /&gt;
* [[RPM Installation]] by Devrim GÜNDÜZ &amp;amp; Lamar Owen&lt;br /&gt;
* [http://yum.pgsqlrpms.org/ PostgreSQL RPM Building Project - Yum Repository]&lt;br /&gt;
* [http://www.postgresonline.com/journal/index.php?/archives/45-An-Almost-Idiots-Guide-to-PostgreSQL-YUM.html An Almost Idiot's Guide to PostgreSQL YUM] and subsequent [http://www.postgresonline.com/journal/index.php?/archives/60-YUM-2-Almost-Idiots-Guide-to-upgrade-from-PostgreSQL-8.3.1-to-8.3.3.html 8.3.1 to 8.3.3 upgrade] and subsequent [http://www.postgresonline.com/journal/index.php?/archives/144-An-almost-idiots-guide-to-Install-and-Upgrade-to-PostgreSQL-8.4-with-Yum.html Upgrade/Install PostgreSQL 8.4 with Yum].&lt;br /&gt;
* [http://www.westnet.com/~gsmith/content/postgresql/pgrpm.htm Installing the PostgreSQL 8.2 RPMs on RHEL 5/CentOS 5] by Greg Smith&lt;br /&gt;
* [http://www.phpbuilder.com/columns/kevin20010314.php3 Getting Started with PostgreSQL on Redhat 7.0] by Kevin Kemp&lt;br /&gt;
* [[RPM Packaging]]&lt;br /&gt;
&lt;br /&gt;
== Recent Fedora versions ==&lt;br /&gt;
&lt;br /&gt;
Starting in Fedora 16, the configuration of the server has been changed relative to the above.  See the [http://docs.fedoraproject.org/en-US/Fedora/16/html/Release_Notes/sect-Release_Notes-Changes_for_Sysadmin.html release notes] for details.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/FrOSCon_2009</id>
		<title>FrOSCon 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/FrOSCon_2009"/>
				<updated>2011-11-03T13:12:48Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Remove redundant braces from link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FrOSCon 2009 =&lt;br /&gt;
&lt;br /&gt;
The German PostgreSQL User Group attended the [http://www.froscon.org FrOSCon 2009] in St. Augustin, Germany, near Cologne. On Sunday we had our own devroom.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Devroom Details ==&lt;br /&gt;
&lt;br /&gt;
* '''When:''' Sunday, August 23, 2009&lt;br /&gt;
** 10:00am to 3:00pm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Devroom Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Time&lt;br /&gt;
!Talk&lt;br /&gt;
!Speaker&lt;br /&gt;
!Company&lt;br /&gt;
|-&lt;br /&gt;
| 10:00&lt;br /&gt;
| PostgreSQL &amp;amp; Performance&lt;br /&gt;
| Michael Renner&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:00&lt;br /&gt;
| [[Media:Pg-8.4_Andreas_Scherbaum.pdf|Was gibt es neues in PostgreSQL 8.4]]&lt;br /&gt;
| Andreas Scherbaum&lt;br /&gt;
| Andreas Scherbaum&lt;br /&gt;
|-&lt;br /&gt;
| 12:00&lt;br /&gt;
| [[Media:Froscon09_pg_en_Stefan_Kaltenbrunner.pdf|postgresql.org - Die Projektinfrastruktur]]&lt;br /&gt;
| Stefan Kaltenbrunner&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 13:00&lt;br /&gt;
| Testing Postgres with pgTap&lt;br /&gt;
| Rolf Schaufelberger&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ab 14:00&lt;br /&gt;
| Lightning Talk: [[Media:Tophosting_lightning_Stefan_Kaltenbrunner.pdf|mandantenfähige ISP Hosting Plattform]]&lt;br /&gt;
| Stefan Kaltenbrunner&lt;br /&gt;
| conova communications GmbH&lt;br /&gt;
|-&lt;br /&gt;
| ab 14:00&lt;br /&gt;
| Lightning Talk: geizhals.at&lt;br /&gt;
| Michael Renner&lt;br /&gt;
| Preisvergleich Internet Services GmbH&lt;br /&gt;
|-&lt;br /&gt;
| ab 14:00&lt;br /&gt;
| Lightning Talk: Faseroptische Systeme&lt;br /&gt;
| Marek Swierzy + Andreas Scherbaum&lt;br /&gt;
| OSSCAD GmbH &amp;amp; Co. KG&lt;br /&gt;
|-&lt;br /&gt;
| ab 14:00&lt;br /&gt;
| Lightning Talk: [[Media: Pg-in-debian.org_Peter_Palfrader.pdf|PostgreSQL im Debian Projekt]]&lt;br /&gt;
| Peter Palfrader&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ab 14:00&lt;br /&gt;
| Lightning Talk: [[Media:Neue_Usergroup_Webseite_Bjoern_Haeuser.pdf|die neue Usergroup Webseite]]&lt;br /&gt;
| Björn Häuser&lt;br /&gt;
| imos GmbH&lt;br /&gt;
|-&lt;br /&gt;
| ab 14:00&lt;br /&gt;
| Lightning Talk: [[Media:Lightning_talks_FrOSCon_2009_ChristianHofstaedtler_PuppetCM.pdf|Configuration Management using Puppet]]&lt;br /&gt;
| Christian Hofstädtler&lt;br /&gt;
| Inqnet GmbH&lt;br /&gt;
|-&lt;br /&gt;
| ab 14:00&lt;br /&gt;
| Lightning Talk: [[Media:Lightning_talks_FrOSCon_2009_Andreas_Scherbaum.pdf|Uniturm.de]]&lt;br /&gt;
| Andreas Scherbaum&lt;br /&gt;
| Andreas Scherbaum IT-Services&lt;br /&gt;
|-&lt;br /&gt;
| ab 14:00&lt;br /&gt;
| Lightning Talk: [[Media:Lightning_talks_FrOSCon_2009_Andreas_Scherbaum.pdf|urbanite.de]]&lt;br /&gt;
| Andreas Scherbaum&lt;br /&gt;
| Andreas Scherbaum IT-Services&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL Events]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/PostgreSQL_Conference_Europe_Talks_2011</id>
		<title>PostgreSQL Conference Europe Talks 2011</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/PostgreSQL_Conference_Europe_Talks_2011"/>
				<updated>2011-10-26T16:49:45Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add links to my talks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= PostgreSQL Conference Europe 2011 Talks =&lt;br /&gt;
&lt;br /&gt;
== Talks: Wednesday 19th October, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Ams 1 ===&lt;br /&gt;
* [[Media:Mohan_PGCon_Keynote_10-19-2011.pdf|Ram Mohan Keynote: Afilias Winning Bet on Open Source]]&lt;br /&gt;
* [http://www.oslandia.com/files/1646fd60f9b0a4558d1e256cf3264572/pgconfeu2011_vincent_picavet_postgis.pdf Vincent Picavet - Geo in your database : Postgis]&lt;br /&gt;
* Heralding the Death of nosql — Will Leinweber, Heroku — http://pgeu-plv8.herokuapp.com&lt;br /&gt;
* [http://scanningpages.wordpress.com/?attachment_id=420| Slony Troubleshooting - Steve Singer, Afilias ]&lt;br /&gt;
&lt;br /&gt;
=== Ams 2 ===&lt;br /&gt;
* [http://www.mgrid.net/blogs/mgrid-at-pgdayeu-2011 Yeb Havinga: Introducing ISO-21090 Healthcare Datatypes]&lt;br /&gt;
* [http://ora2pg.darold.net/ora2pg-best-practices.pdf Gilles Darold: Best practices with Ora2Pg]&lt;br /&gt;
&lt;br /&gt;
=== Ams 3 ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.hagander.net/talks/PostgreSQL%209.1%20-%20What's%20new.pdf Magnus Hagander, PostgreSQL 9.1 - What's New]&lt;br /&gt;
* [[Media:Ciolli-window-2011.pdf|Gianni Ciolli, Look Out The Window Functions (and free your SQL)]]&lt;br /&gt;
** plus four 2D heat diffusion movies, with different starting scenarios: [http://vimeo.com/30797130 a hot point],&lt;br /&gt;
** [http://vimeo.com/30797509 a hot segment],&lt;br /&gt;
** [http://vimeo.com/30797715 a hot square] and&lt;br /&gt;
** [http://vimeo.com/30797797 a cold square].&lt;br /&gt;
* [http://momjian.us/main/presentations/internals.html#optimizer Explaining the Postgres Query Optimizer]&lt;br /&gt;
* [http://www.2ndquadrant.com/static/2quad/media/pdfs/talks/SyncRepDurability.pdf Simon Riggs and Greg Smith:  Synchronous Replication and Durability Tuning]&lt;br /&gt;
* [[Media:Smartgrid_for_the_datacenter_web.pdf|Stefan Kaltenbrunner, A smartgrid for the datacenter]]&lt;br /&gt;
&lt;br /&gt;
== Talks: Thursday 20th October, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Ams 1 ===&lt;br /&gt;
&lt;br /&gt;
* [[Media:slony1-2.1_londiste3.pdf|Cédric Villemain: londiste 3 et slony 2.1 ]]&lt;br /&gt;
&lt;br /&gt;
* A Postgres Service (Peter van Hardenberg, Heroku) http://pgconfeu11-service.herokuapp.com/&lt;br /&gt;
&lt;br /&gt;
* [[Media:SSI-PGConfEU2011.pdf|Heikki Linnakangas: Serializable Snapshot Isolation ]]&lt;br /&gt;
&lt;br /&gt;
* [[Media:Fast_GiST_index_build.pdf|Alexander Korotkov: Fast GiST index build ]]&lt;br /&gt;
&lt;br /&gt;
* [[Media:pgconf2011.eu-berg-pgapt.pdf|Christoph Berg: Connecting the Debian and PostgreSQL worlds ]]&lt;br /&gt;
&lt;br /&gt;
=== Ams 2 ===&lt;br /&gt;
* [[Media:using-extensions.pdf|Dimitri Fontaine: Extensions are good for business logic]]&lt;br /&gt;
* Exposing the Power of Postgres to Ruby — Will Leinweber, Heroku — http://pgeu-ruby.herokuapp.com&lt;br /&gt;
* [http://wiki.postgresql.org/images/e/e6/Django-extensions.pdf Jonathan S. Katz: Writing Django Extensions for PostgreSQL]&lt;br /&gt;
* [[Media:Pgconf-2011-mysql-to-pg-print.pdf|Andreas 'ads' Scherbaum: Port databases from MySQL to PostgreSQL]]&lt;br /&gt;
&lt;br /&gt;
=== Ams 3 ===&lt;br /&gt;
* [http://www.2ndquadrant.com/static/2quad/media/pdfs/talks/ImprovingVACUUMSuction.pdf Greg Smith:  Improving VACUUM Suction]&lt;br /&gt;
* [[Media:Ciolli-debug-wcte-2011.pdf|Gianni Ciolli, Debug complex SQL queries with writable CTEs]]&lt;br /&gt;
* [[Media:pgconfeu_stats.odp|Guillaume Lelarge, What use are the statistics views?]]&lt;br /&gt;
* Lightning talk: [[Media:Ciolli-waiting-for-the-barman-2011.pdf|Gabriele Bartolini and Gianni Ciolli, waiting for (the) BaRMan]]&lt;br /&gt;
&lt;br /&gt;
== Talks: Friday 21st October, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Ams 1 ===&lt;br /&gt;
* Reliable Databases in The Cloud with WAL-E (redux) - Dan Farina, Heroku - http://wal-e-pgeu2011.herokuapp.com/&lt;br /&gt;
* [http://wiki.postgresql.org/images/4/46/Knn.pdf Jonathan S. Katz: Accelerating Local Search With PostgreSQL 9.1]&lt;br /&gt;
&lt;br /&gt;
=== Ams 2 ===&lt;br /&gt;
&lt;br /&gt;
* [http://bunsen.credativ.com/~mme/2011/PGConf_EU.pdf Michael Meskes: Mission Impossible?]&lt;br /&gt;
&lt;br /&gt;
=== Ams 3 ===&lt;br /&gt;
* [http://www.2ndquadrant.com/static/2quad/media/pdfs/talks/bottom-up-benchmarking-2011.pdf Greg Smith:  Bottom-Up Database Benchmarking]&lt;br /&gt;
* [http://www.hagander.net/talks/The%20PostgreSQL%20Replication%20Protocol%20pgopen.pdf Magnus Hagander: The PostgreSQL Replication Protocol, Tools and Opportunities]&lt;br /&gt;
* [http://wiki.postgresql.org/images/f/fa/Pg-eu-2011-closing-keynote.pdf Bruce Momjian: Closing Keynote]&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL Europe]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Postgres_Open_Talks_2011</id>
		<title>Postgres Open Talks 2011</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Postgres_Open_Talks_2011"/>
				<updated>2011-10-26T15:40:45Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add split second part to Django talk&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Postgres Open Talks 2011 =&lt;br /&gt;
&lt;br /&gt;
Slides and links from [http://www.postgresopen.org/2011/ Postgres Open 2011]. Videos are being released to the [http://www.youtube.com/user/tcation Technocation channel] and there is a [http://www.youtube.com/playlist?list=PLAA2EB0319CDE0A0B playlist] of them all.&lt;br /&gt;
&lt;br /&gt;
== Tutorials: Wednesday September 14, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Mayfair Room ===&lt;br /&gt;
* [http://bunsen.credativ.com/~jco/2011/migrating.pdf Migration to PostgreSQL - preparation and methodology]&lt;br /&gt;
* [http://www.scribd.com/doc/65304692/Scaling-With-SkyTools Scaling With Skytools]&lt;br /&gt;
&lt;br /&gt;
=== Governor's Suite ===&lt;br /&gt;
* [http://momjian.us/main/writings/pgsql/administration.pdf Mastering PostgreSQL Administration]&lt;br /&gt;
&lt;br /&gt;
== Sessions: Thursday September 15, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Cotillion Room ===&lt;br /&gt;
* [http://www.pgexperts.com/document.html?id=53 Keynote: The next 25 years]&lt;br /&gt;
* [http://www.2ndquadrant.com/static/2quad/media/pdfs/talks/char11/FastRepmgrScaling.pdf Fast Read Scaling with repmgr] - [http://www.youtube.com/watch?v=Cb0qNFmVTe0 Video]&lt;br /&gt;
* [[Media:Nvram_fun_profit.pdf|NVRAM for Fun and Profit]] - [http://www.youtube.com/watch?v=WstoaATaVsY Video]&lt;br /&gt;
* [http://portal.sliderocket.com/vmware/PGOpen2011_VirtEnv Running PostgreSQL on Virtualized Environments] - [http://www.youtube.com/watch?v=MGB2ewT5w-A Video]&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/File:Pg_query_analysis_20110914.odp Identifying Slow Queries and Fixing Them Slides] - [http://www.youtube.com/watch?v=w6zOkxU9uRY Video]&lt;br /&gt;
* [http://www.hagander.net/talks/The%20PostgreSQL%20Replication%20Protocol%20pgopen.pdf The PostgreSQL replication protocol]&lt;br /&gt;
* [http://www.2ndquadrant.com/static/2quad/media/pdfs/talks/SyncRepDurability.pdf Synchronous Replication and Durability Tuning] - [http://www.youtube.com/watch?v=XL7j8hTd6R8 Video]&lt;br /&gt;
&lt;br /&gt;
=== Mayfair Room ===&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/File:PEM_Breifing.tar.gz Introducing Postgres Enterprise Manager] - [http://www.youtube.com/watch?v=jmKzDH4APxM Video]&lt;br /&gt;
* [http://joshwilliams.name/talks/monitoring/ Monitoring the Heck out of Your Database] - [http://www.youtube.com/watch?v=z7ypB0P1B30 Video]&lt;br /&gt;
* [http://www.slideshare.net/DBNess/honey-i-shrunk-the-database-9273383 Honey, I Shrunk the Database] - [http://www.youtube.com/watch?v=ohe9gDLBhjk Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/0/0b/Postgresql_django_extensions.pdf Writing Django Extensions for PostgreSQL] - [http://www.youtube.com/watch?v=4YZtxmmsD2o Video], [http://www.youtube.com/watch?v=aNnlY8unSQk Part 2]&lt;br /&gt;
* [http://wiki.postgresql.org/images/8/8e/Logging.odp Logging - Not Just for Lumberjacks] (speaker notes included) - [http://www.youtube.com/watch?v=OVE1j5RyJ5A Video]&lt;br /&gt;
* PL/Java Tutorial - [http://www.youtube.com/watch?v=5iRqqvT1qSE Video]&lt;br /&gt;
=== Governors' Suite ===&lt;br /&gt;
&lt;br /&gt;
* [http://heroku-postgres-talk.heroku.com/ Heroku Postgres]&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/File:Why_you_should_not_move_away_from_Oracle.pdf Why you should NOT move away from Oracle]&lt;br /&gt;
* [http://bunsen.credativ.com/~mme/2011/Postgres_Open.pdf Mission impossible? Can I replace my most important databases with PostgreSQL?] - [http://www.youtube.com/watch?v=otCfbGApoBc Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/0/0c/BillingSystemForTELCO_technical.pdf Billing System for a TELCO based on PostgreSQL]&lt;br /&gt;
* [[media:HP_Postgres_Insight_RS.pdf|HP Performs Large-scale Deployment of Postgres with its Remote Support Software]] - [http://www.youtube.com/watch?v=0TzraoszmCA Video]&lt;br /&gt;
* [http://www.pgexperts.com/presentations.html PostgreSQL 9.1 Grand Tour] - [http://www.youtube.com/watch?v=XsHCU6R7ato Video]&lt;br /&gt;
&lt;br /&gt;
=== Michigan Demos ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.enterprisedb.com/resources-community/webcasts-podcasts-videos/webcasts/postgres-cloud-introduction-postgres-plus-clou Postgres In the Cloud: an Introduction to Postgres Plus Cloud Server]&lt;br /&gt;
&lt;br /&gt;
== Sessions: Friday September 16, 2011 == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cotillion Room ===&lt;br /&gt;
&lt;br /&gt;
* VMWare Keynote - [http://www.youtube.com/watch?v=DTX3-gQ6uuI Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/d/d3/Unlogged_Tables_Postgres_Open.odp Unlogged Tables] - [http://www.youtube.com/watch?v=uM0E4Qag_PU Video]&lt;br /&gt;
* [http://momjian.us/main/writings/pgsql/locking.pdf  Unlocking the Postgres Lock Manager] - [http://www.youtube.com/watch?v=s3ee0nuDDqs Video]&lt;br /&gt;
* [http://www.percona.com/redir/files/presentations/POSTGRESOPEN2011-Measuring-Scalability-and-Performance-With-TCP.pdf Measuring Scalability and Performance With TCP] - [http://www.youtube.com/watch?v=FS7Zq1w7SDo Video]&lt;br /&gt;
* [http://bucardo.org/slides/b5_multi_master/ Bucardo Replication] - [http://www.youtube.com/watch?v=mGu1WB5q30E Video]&lt;br /&gt;
* [http://michael.otacoo.com/wp-content/uploads/2011/09/20110916_pgopen_xc.pdf  Postgres-XC] - [http://www.youtube.com/watch?v=ya6WvkH4fLM Video]&lt;br /&gt;
&lt;br /&gt;
=== Mayfair Room ===&lt;br /&gt;
* [http://wiki.postgresql.org/images/7/79/Accelerating_Local_Search_PostgreSQL_91.pdf Accelerating Local Search With PostgreSQL 9.1] - [http://www.youtube.com/watch?v=N-MD08QqGEM Video]&lt;br /&gt;
* Managing Databases in a DevOps Environment - [http://www.youtube.com/watch?v=XE69W7gc3n0 Video]&lt;br /&gt;
* [http://bunsen.credativ.com/~jco/2011/plr-PostgresOpen-2011.pdf PL/R -- The Fast Path to Advanced Analytics]&lt;br /&gt;
* [http://wiki.postgresql.org/images/8/8a/Serializable-transactions-are-here.odp True Serializable Transactions Are Here!] - [http://www.youtube.com/watch?v=wb6ULamJI9E Video]&lt;br /&gt;
&lt;br /&gt;
=== Michigan Room ===&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.postgresql.org/images/7/7c/Development_Funding.pdf Get Your Preferred Feature Developed!] - [http://www.youtube.com/watch?v=EIneFazMNx0 Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/0/0e/Center_of_your_dataverse.pdf PostgreSQL at the centre of your dataverse] - [http://www.youtube.com/watch?v=quR5_x2WnzI Video]&lt;br /&gt;
* [http://htsql.org/talks/20110916.html Advanced Query Construction with HTSQL] - [http://www.youtube.com/watch?v=t7hW41pI67s Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/5/56/Database_sing.pdf We write the code that makes the database sing] - [http://www.youtube.com/watch?v=7OkxAWWPyHc Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/f/fa/Slony_Versus_Developers.pdf Slony Versus Developers] - [http://www.youtube.com/watch?v=e6P_Mvoznb8 Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/7/7f/Adam-lowry-postgresopen2011.pdf Postgres at Urban Airship] - [http://www.youtube.com/watch?v=ueAslPfEU6o Video]&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL Events]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Postgres_Open_Talks_2011</id>
		<title>Postgres Open Talks 2011</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Postgres_Open_Talks_2011"/>
				<updated>2011-10-26T15:36:24Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add more video links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Postgres Open Talks 2011 =&lt;br /&gt;
&lt;br /&gt;
Slides and links from [http://www.postgresopen.org/2011/ Postgres Open 2011]. Videos are being released to the [http://www.youtube.com/user/tcation Technocation channel] and there is a [http://www.youtube.com/playlist?list=PLAA2EB0319CDE0A0B playlist] of them all.&lt;br /&gt;
&lt;br /&gt;
== Tutorials: Wednesday September 14, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Mayfair Room ===&lt;br /&gt;
* [http://bunsen.credativ.com/~jco/2011/migrating.pdf Migration to PostgreSQL - preparation and methodology]&lt;br /&gt;
* [http://www.scribd.com/doc/65304692/Scaling-With-SkyTools Scaling With Skytools]&lt;br /&gt;
&lt;br /&gt;
=== Governor's Suite ===&lt;br /&gt;
* [http://momjian.us/main/writings/pgsql/administration.pdf Mastering PostgreSQL Administration]&lt;br /&gt;
&lt;br /&gt;
== Sessions: Thursday September 15, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Cotillion Room ===&lt;br /&gt;
* [http://www.pgexperts.com/document.html?id=53 Keynote: The next 25 years]&lt;br /&gt;
* [http://www.2ndquadrant.com/static/2quad/media/pdfs/talks/char11/FastRepmgrScaling.pdf Fast Read Scaling with repmgr] - [http://www.youtube.com/watch?v=Cb0qNFmVTe0 Video]&lt;br /&gt;
* [[Media:Nvram_fun_profit.pdf|NVRAM for Fun and Profit]] - [http://www.youtube.com/watch?v=WstoaATaVsY Video]&lt;br /&gt;
* [http://portal.sliderocket.com/vmware/PGOpen2011_VirtEnv Running PostgreSQL on Virtualized Environments] - [http://www.youtube.com/watch?v=MGB2ewT5w-A Video]&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/File:Pg_query_analysis_20110914.odp Identifying Slow Queries and Fixing Them Slides] - [http://www.youtube.com/watch?v=w6zOkxU9uRY Video]&lt;br /&gt;
* [http://www.hagander.net/talks/The%20PostgreSQL%20Replication%20Protocol%20pgopen.pdf The PostgreSQL replication protocol]&lt;br /&gt;
* [http://www.2ndquadrant.com/static/2quad/media/pdfs/talks/SyncRepDurability.pdf Synchronous Replication and Durability Tuning] - [http://www.youtube.com/watch?v=XL7j8hTd6R8 Video]&lt;br /&gt;
&lt;br /&gt;
=== Mayfair Room ===&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/File:PEM_Breifing.tar.gz Introducing Postgres Enterprise Manager] - [http://www.youtube.com/watch?v=jmKzDH4APxM Video]&lt;br /&gt;
* [http://joshwilliams.name/talks/monitoring/ Monitoring the Heck out of Your Database] - [http://www.youtube.com/watch?v=z7ypB0P1B30 Video]&lt;br /&gt;
* [http://www.slideshare.net/DBNess/honey-i-shrunk-the-database-9273383 Honey, I Shrunk the Database] - [http://www.youtube.com/watch?v=ohe9gDLBhjk Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/0/0b/Postgresql_django_extensions.pdf Writing Django Extensions for PostgreSQL] - [http://www.youtube.com/watch?v=4YZtxmmsD2o Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/8/8e/Logging.odp Logging - Not Just for Lumberjacks] (speaker notes included) - [http://www.youtube.com/watch?v=OVE1j5RyJ5A Video]&lt;br /&gt;
* PL/Java Tutorial - [http://www.youtube.com/watch?v=5iRqqvT1qSE Video]&lt;br /&gt;
=== Governors' Suite ===&lt;br /&gt;
&lt;br /&gt;
* [http://heroku-postgres-talk.heroku.com/ Heroku Postgres]&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/File:Why_you_should_not_move_away_from_Oracle.pdf Why you should NOT move away from Oracle]&lt;br /&gt;
* [http://bunsen.credativ.com/~mme/2011/Postgres_Open.pdf Mission impossible? Can I replace my most important databases with PostgreSQL?] - [http://www.youtube.com/watch?v=otCfbGApoBc Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/0/0c/BillingSystemForTELCO_technical.pdf Billing System for a TELCO based on PostgreSQL]&lt;br /&gt;
* [[media:HP_Postgres_Insight_RS.pdf|HP Performs Large-scale Deployment of Postgres with its Remote Support Software]] - [http://www.youtube.com/watch?v=0TzraoszmCA Video]&lt;br /&gt;
* [http://www.pgexperts.com/presentations.html PostgreSQL 9.1 Grand Tour] - [http://www.youtube.com/watch?v=XsHCU6R7ato Video]&lt;br /&gt;
&lt;br /&gt;
=== Michigan Demos ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.enterprisedb.com/resources-community/webcasts-podcasts-videos/webcasts/postgres-cloud-introduction-postgres-plus-clou Postgres In the Cloud: an Introduction to Postgres Plus Cloud Server]&lt;br /&gt;
&lt;br /&gt;
== Sessions: Friday September 16, 2011 == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cotillion Room ===&lt;br /&gt;
&lt;br /&gt;
* VMWare Keynote - [http://www.youtube.com/watch?v=DTX3-gQ6uuI Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/d/d3/Unlogged_Tables_Postgres_Open.odp Unlogged Tables] - [http://www.youtube.com/watch?v=uM0E4Qag_PU Video]&lt;br /&gt;
* [http://momjian.us/main/writings/pgsql/locking.pdf  Unlocking the Postgres Lock Manager] - [http://www.youtube.com/watch?v=s3ee0nuDDqs Video]&lt;br /&gt;
* [http://www.percona.com/redir/files/presentations/POSTGRESOPEN2011-Measuring-Scalability-and-Performance-With-TCP.pdf Measuring Scalability and Performance With TCP] - [http://www.youtube.com/watch?v=FS7Zq1w7SDo Video]&lt;br /&gt;
* [http://bucardo.org/slides/b5_multi_master/ Bucardo Replication] - [http://www.youtube.com/watch?v=mGu1WB5q30E Video]&lt;br /&gt;
* [http://michael.otacoo.com/wp-content/uploads/2011/09/20110916_pgopen_xc.pdf  Postgres-XC] - [http://www.youtube.com/watch?v=ya6WvkH4fLM Video]&lt;br /&gt;
&lt;br /&gt;
=== Mayfair Room ===&lt;br /&gt;
* [http://wiki.postgresql.org/images/7/79/Accelerating_Local_Search_PostgreSQL_91.pdf Accelerating Local Search With PostgreSQL 9.1] - [http://www.youtube.com/watch?v=N-MD08QqGEM Video]&lt;br /&gt;
* Managing Databases in a DevOps Environment - [http://www.youtube.com/watch?v=XE69W7gc3n0 Video]&lt;br /&gt;
* [http://bunsen.credativ.com/~jco/2011/plr-PostgresOpen-2011.pdf PL/R -- The Fast Path to Advanced Analytics]&lt;br /&gt;
* [http://wiki.postgresql.org/images/8/8a/Serializable-transactions-are-here.odp True Serializable Transactions Are Here!] - [http://www.youtube.com/watch?v=wb6ULamJI9E Video]&lt;br /&gt;
&lt;br /&gt;
=== Michigan Room ===&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.postgresql.org/images/7/7c/Development_Funding.pdf Get Your Preferred Feature Developed!] - [http://www.youtube.com/watch?v=EIneFazMNx0 Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/0/0e/Center_of_your_dataverse.pdf PostgreSQL at the centre of your dataverse] - [http://www.youtube.com/watch?v=quR5_x2WnzI Video]&lt;br /&gt;
* [http://htsql.org/talks/20110916.html Advanced Query Construction with HTSQL] - [http://www.youtube.com/watch?v=t7hW41pI67s Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/5/56/Database_sing.pdf We write the code that makes the database sing] - [http://www.youtube.com/watch?v=7OkxAWWPyHc Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/f/fa/Slony_Versus_Developers.pdf Slony Versus Developers] - [http://www.youtube.com/watch?v=e6P_Mvoznb8 Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/7/7f/Adam-lowry-postgresopen2011.pdf Postgres at Urban Airship] - [http://www.youtube.com/watch?v=ueAslPfEU6o Video]&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL Events]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Postgres_Open_Talks_2011</id>
		<title>Postgres Open Talks 2011</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Postgres_Open_Talks_2011"/>
				<updated>2011-10-26T15:15:41Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Added Postgres Open slide links, video, normalize formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Postgres Open Talks 2011 =&lt;br /&gt;
&lt;br /&gt;
Slides and links from [http://www.postgresopen.org/2011/ Postgres Open 2011]. Videos are being released to the [http://www.youtube.com/user/tcation Technocation channel].&lt;br /&gt;
&lt;br /&gt;
== Tutorials: Wednesday September 14, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Mayfair Room ===&lt;br /&gt;
* [http://bunsen.credativ.com/~jco/2011/migrating.pdf Migration to PostgreSQL - preparation and methodology]&lt;br /&gt;
* [http://www.scribd.com/doc/65304692/Scaling-With-SkyTools Scaling With Skytools]&lt;br /&gt;
&lt;br /&gt;
=== Governor's Suite ===&lt;br /&gt;
* [http://momjian.us/main/writings/pgsql/administration.pdf Mastering PostgreSQL Administration]&lt;br /&gt;
&lt;br /&gt;
== Sessions: Thursday September 15, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Cotillion Room ===&lt;br /&gt;
* [http://www.pgexperts.com/document.html?id=53 Keynote: The next 25 years]&lt;br /&gt;
* [http://www.2ndquadrant.com/static/2quad/media/pdfs/talks/char11/FastRepmgrScaling.pdf Fast Read Scaling with repmgr] - [http://www.youtube.com/watch?v=Cb0qNFmVTe0 Video]&lt;br /&gt;
* [[Media:Nvram_fun_profit.pdf|NVRAM for Fun and Profit]]&lt;br /&gt;
* [http://portal.sliderocket.com/vmware/PGOpen2011_VirtEnv Running PostgreSQL on Virtualized Environments]&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/File:Pg_query_analysis_20110914.odp Identifying Slow Queries and Fixing Them Slides]&lt;br /&gt;
* [http://www.hagander.net/talks/The%20PostgreSQL%20Replication%20Protocol%20pgopen.pdf The PostgreSQL replication protocol]&lt;br /&gt;
* [http://www.2ndquadrant.com/static/2quad/media/pdfs/talks/SyncRepDurability.pdf Synchronous Replication and Durability Tuning] - [http://www.youtube.com/watch?v=XL7j8hTd6R8 Video]&lt;br /&gt;
&lt;br /&gt;
=== Mayfair Room ===&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/File:PEM_Breifing.tar.gz Introducing Postgres Enterprise Manager]&lt;br /&gt;
* [http://joshwilliams.name/talks/monitoring/ Monitoring the Heck out of Your Database]&lt;br /&gt;
* [http://www.slideshare.net/DBNess/honey-i-shrunk-the-database-9273383 Honey, I Shrunk the Database]&lt;br /&gt;
* [http://wiki.postgresql.org/images/0/0b/Postgresql_django_extensions.pdf Writing Django Extensions for PostgreSQL]&lt;br /&gt;
* [http://wiki.postgresql.org/images/8/8e/Logging.odp Logging - Not Just for Lumberjacks] (speaker notes included)&lt;br /&gt;
* [http://www.pgexperts.com/presentations.html PostgreSQL 9.1 Grand Tour] - [http://www.youtube.com/watch?v=XsHCU6R7ato Video]&lt;br /&gt;
&lt;br /&gt;
=== Governors' Suite ===&lt;br /&gt;
&lt;br /&gt;
* [http://heroku-postgres-talk.heroku.com/ Heroku Postgres]&lt;br /&gt;
* [http://wiki.postgresql.org/wiki/File:Why_you_should_not_move_away_from_Oracle.pdf Why you should NOT move away from Oracle]&lt;br /&gt;
* [http://bunsen.credativ.com/~mme/2011/Postgres_Open.pdf Mission impossible? Can I replace my most important databases with PostgreSQL?] - [http://www.youtube.com/watch?v=otCfbGApoBc Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/0/0c/BillingSystemForTELCO_technical.pdf Billing System for a TELCO based on PostgreSQL - technical description]&lt;br /&gt;
* [[media:HP_Postgres_Insight_RS.pdf|HP Performs Large-scale Deployment of Postgres with its Remote Support Software]] - [http://www.youtube.com/watch?v=0TzraoszmCA Video]&lt;br /&gt;
&lt;br /&gt;
=== Michigan Demos ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.enterprisedb.com/resources-community/webcasts-podcasts-videos/webcasts/postgres-cloud-introduction-postgres-plus-clou Postgres In the Cloud: an Introduction to Postgres Plus Cloud Server]&lt;br /&gt;
&lt;br /&gt;
== Sessions: Friday September 16, 2011 == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cotillion Room ===&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.postgresql.org/images/d/d3/Unlogged_Tables_Postgres_Open.odp Unlogged Tables]&lt;br /&gt;
* [http://momjian.us/main/writings/pgsql/locking.pdf  Unlocking the Postgres Lock Manager]&lt;br /&gt;
* [http://www.percona.com/redir/files/presentations/POSTGRESOPEN2011-Measuring-Scalability-and-Performance-With-TCP.pdf Measuring Scalability and Performance With TCP]&lt;br /&gt;
* [http://bucardo.org/slides/b5_multi_master/ Bucardo Replication]&lt;br /&gt;
* [http://michael.otacoo.com/wp-content/uploads/2011/09/20110916_pgopen_xc.pdf  Postgres-XC]&lt;br /&gt;
&lt;br /&gt;
=== Mayfair Room ===&lt;br /&gt;
* [http://wiki.postgresql.org/images/7/79/Accelerating_Local_Search_PostgreSQL_91.pdf Accelerating Local Search With PostgreSQL 9.1]&lt;br /&gt;
* [http://bunsen.credativ.com/~jco/2011/plr-PostgresOpen-2011.pdf PL/R -- The Fast Path to Advanced Analytics]&lt;br /&gt;
* [http://wiki.postgresql.org/images/8/8a/Serializable-transactions-are-here.odp True Serializable Transactions Are Here!]&lt;br /&gt;
&lt;br /&gt;
=== Michigan Room ===&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.postgresql.org/images/7/7c/Development_Funding.pdf Get Your Preferred Feature Developed!] - [http://www.youtube.com/watch?v=EIneFazMNx0 Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/0/0e/Center_of_your_dataverse.pdf PostgreSQL at the centre of your dataverse] - [http://www.youtube.com/watch?v=quR5_x2WnzI Video]&lt;br /&gt;
* [http://htsql.org/talks/20110916.html Advanced Query Construction with HTSQL]&lt;br /&gt;
* [http://wiki.postgresql.org/images/5/56/Database_sing.pdf We write the code that makes the database sing] - [http://www.youtube.com/watch?v=7OkxAWWPyHc Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/f/fa/Slony_Versus_Developers.pdf Slony Versus Developers] - [http://www.youtube.com/watch?v=e6P_Mvoznb8 Video]&lt;br /&gt;
* [http://wiki.postgresql.org/images/7/7f/Adam-lowry-postgresopen2011.pdf Postgres at Urban Airship] - [http://www.youtube.com/watch?v=ueAslPfEU6o Video]&lt;br /&gt;
&lt;br /&gt;
[[Category:PostgreSQL Events]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Planet_PostgreSQL</id>
		<title>Planet PostgreSQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Planet_PostgreSQL"/>
				<updated>2011-09-06T19:42:06Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Add in existing policy, other improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://planet.postgresql.org/ Planet PostgreSQL] is a blog aggregation service run by the PostgreSQL community.  In addition to the main Planet site, entries are published (&amp;quot;syndicated&amp;quot;) to the [http://www.postgresql.org/ postgresql.org] site as well.&lt;br /&gt;
&lt;br /&gt;
== Planet PostgreSQL Policy ==&lt;br /&gt;
&lt;br /&gt;
The following simple rules cover the blogs being listed on Planet PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
* All blogs should be about PostgreSQL or closely related technologies. If you want to blog about other things as well, please put your PostgreSQL specific posts in a separate category/tag/label, and use the feed for this category only for Planet PostgreSQL.&lt;br /&gt;
* All topics related to PostgreSQL are of course appreciated - both technical and non-technical.&lt;br /&gt;
* All posts should be in English. If you want to blog in other languages, please put your PostgreSQL specific posts in a separate category/tag/label, and use the feed for this category only for Planet PostgreSQL.&lt;br /&gt;
* All blogs should be identified by the posters name. A nickname is allowed to be used in combination with this, but blogs without names are not allowed.&lt;br /&gt;
* Avoid inflammatory comments in syndicated posts. Personal attacks are not permitted.&lt;br /&gt;
* Publishing of advertising in the syndicated part of your blog is not permitted&lt;br /&gt;
&lt;br /&gt;
Violating these rules will cause your blog to be removed from Planet PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
== Planet PostgreSQL FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== How can I remove a bad entry from the feed? ===&lt;br /&gt;
&lt;br /&gt;
It's possible to login to the administration interface and hide an individual entry.  If you realize you've made a mistake and done something like accidentally posting incorrectly tagged content, removing it on your own is recommended.&lt;br /&gt;
&lt;br /&gt;
=== What are the right URLs to use for a labeled feed from [http://www.blogger.com blogger.com]? ===&lt;br /&gt;
&lt;br /&gt;
Assuming your blog is named &amp;quot;blogname&amp;quot; and you've tagged a subset of your posts with the &amp;quot;postgresql&amp;quot; label, the correct URLs to input to the Planet code are:&lt;br /&gt;
&lt;br /&gt;
* Feedurl:  http://blogname.blogspot.com/search/label/postgresql&lt;br /&gt;
* Blogurl:  http://blogname.blogspot.com/feeds/posts/default/-/postgresql &lt;br /&gt;
&lt;br /&gt;
You can confirm those URLs display a suitable copy of your feed via a web browser before submitting them.&lt;br /&gt;
&lt;br /&gt;
=== Are commercial posts allowed? ===&lt;br /&gt;
&lt;br /&gt;
Informative entries that mention commercial products are normally permissible, as long as the main entry is relevant to the PostgreSQL community.  But the policy specifically prohibits publication of advertising in the portion of a blog that is syndicated to the Planet feed.  It's recommended that blogs that may contain ads tag them appropriately, to provide a feed to the Planet without those entries included.&lt;br /&gt;
&lt;br /&gt;
=== What constitutes an advertisement? ===&lt;br /&gt;
&lt;br /&gt;
The primary test here is whether the information provided would be of some use even to people who have no interest in the commercial product mentioned.  Consider what your entry would look like if all references to the product were removed.  If there's no useful PostgreSQL content left after doing that, that post is an ad.&lt;br /&gt;
&lt;br /&gt;
You can find a blog entry giving a more detailed opinion from of one moderator about this subject at [http://blog.2ndquadrant.com/en/2011/06/planetary-alignment.html Planetary alignment].  That commentary is not part of the official policy.&lt;br /&gt;
&lt;br /&gt;
=== What happens to blogs that violate the site policies? ===&lt;br /&gt;
&lt;br /&gt;
A first violation of the advertising policy will result in the blog entry with the ad being removed, and a warning e-mail sent to the listed owner of the blog.&lt;br /&gt;
&lt;br /&gt;
A second violation will resulting in the blog being removed from the Planet PostgreSQL feed.  After a two month suspension period, the blog owner can submit their blog address--or a new feed URL better tagged to filter out advertisements--for reconsideration.&lt;br /&gt;
&lt;br /&gt;
A third violation in any year will result in a full 12 month suspension of the blog from Planet PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
=== Who makes the moderation decisions about the Planet content allowed? ===&lt;br /&gt;
&lt;br /&gt;
Site maintenance and moderation duty is done by a small team of volunteer moderators, primarily made up of [http://www.postgresql.org/community/contributors/ PostgreSQL contributors] from various companies who are familiar with the [[Policies|policies]] of the PostgreSQL community.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Planet_PostgreSQL</id>
		<title>Planet PostgreSQL</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Planet_PostgreSQL"/>
				<updated>2011-09-06T19:21:14Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Created page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://planet.postgresql.org/ Planet PostgreSQL] is a blog aggregation service run by the PostgreSQL community.  In addition to the main Planet site, entries are published to the [http://www.postgresql.org/ postgresql.org] site as well.&lt;br /&gt;
&lt;br /&gt;
== Planet PostgreSQL FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== How can I remove a bad entry from the feed? ===&lt;br /&gt;
&lt;br /&gt;
It's possible to login to the administration interface and hide an individual entry.  If you realize you've made a mistake and done something like accidentally posting incorrectly tagged content, removing it on your own is recommended.&lt;br /&gt;
&lt;br /&gt;
=== What are the right URLs to use for a labeled feed from [http://www.blogger.com blogger.com]? ===&lt;br /&gt;
&lt;br /&gt;
Assuming your blog is named &amp;quot;blogname&amp;quot; and you've tagged a subset of your posts with the &amp;quot;postgresql&amp;quot; label, the correct URLs to input to the Planet code are:&lt;br /&gt;
&lt;br /&gt;
* Feedurl:  http://blogname.blogspot.com/search/label/postgresql&lt;br /&gt;
* Blogurl:  http://blogname.blogspot.com/feeds/posts/default/-/postgresql &lt;br /&gt;
&lt;br /&gt;
You can confirm those URLs display a suitable copy of your feed via a web browser before submitting them.&lt;br /&gt;
&lt;br /&gt;
=== Are commercial posts allowed? ===&lt;br /&gt;
&lt;br /&gt;
Planet PostgreSQL is a blog aggregation site aimed at readers who want both technical and non-technical information about PostgreSQL and closely related technologies.  Informative entries that mention commercial products are normally permissible, as long as the main entry is relevant to the PostgreSQL community.  But the policy at http://planet.postgresql.org/policy.html specifically prohibits publication of advertising in the portion of a blog that is syndicated to the Planet feed.  It's recommended that blogs that may contain ads tag them appropriately, and provide a feed to the Planet without those entries included.&lt;br /&gt;
&lt;br /&gt;
=== What happens to blogs that violate the site policies? ===&lt;br /&gt;
&lt;br /&gt;
A first violation of the advertising policy will result in the blog entry with the ad being removed, and a warning e-mail sent to the listed owner of the blog.&lt;br /&gt;
&lt;br /&gt;
A second violation will resulting in the blog being removed from the Planet PostgreSQL feed.  After a two month suspension period, the blog owner can submit their blog address--or a new feed URL better tagged to filter out advertisements--for reconsideration.&lt;br /&gt;
&lt;br /&gt;
A third violation in any year will result in a full 12 month suspension of the blog from Planet PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
=== Who makes the moderation decisions about the Planet content allowed? ===&lt;br /&gt;
&lt;br /&gt;
Site maintenance and moderation duty is done by a small team of volunteer moderators, primarily made up of [http://www.postgresql.org/community/contributors/ PostgreSQL contributors] from various companies who are familiar with the [[Policies|policies]] of the PostgreSQL community.&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/91releasedraft</id>
		<title>91releasedraft</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/91releasedraft"/>
				<updated>2011-08-26T06:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Minor cleanup to extended release, to match top edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Email Release Text ==&lt;br /&gt;
&lt;br /&gt;
The PostgreSQL Global Development Group announces the release of PostgreSQL 9.1.  This latest version of the leading open source database offers innovative technology, unmatched extensibility, and new features such as synchronous replication, K-Nearest Neighbor indexing, and foreign data wrappers.  &lt;br /&gt;
&lt;br /&gt;
“PostgreSQL 9.1 provides some of the most advanced enterprise capabilities of any open source database, and is backed by a vibrant and innovative community with proven customer success.  PostgreSQL is well positioned for building and running applications in the cloud,” said Charles Fan, Sr. VP R&amp;amp;D, VMware.&lt;br /&gt;
&lt;br /&gt;
Responding to Users&lt;br /&gt;
&lt;br /&gt;
Version 9.1 delivers several features which users have been requesting for years, removing roadblocks to deploying new or ported applications on PostgreSQL.  These include:&lt;br /&gt;
&lt;br /&gt;
* Synchronous Replication: enable high-availability with consistency across multiple servers&lt;br /&gt;
* Per-Column Collations: support linguistically-correct sorting per database, table or column.&lt;br /&gt;
* Unlogged Tables: greatly improves performance for ephemeral data&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Heroku runs the largest PostgreSQL database-as-a-service in the world,&amp;quot; said James Lindenbaum, Heroku co-founder. &amp;quot;The release of synchronous data replication with 9.1 provides our customers with innovative new ways of protecting mission-critical data, and validates PostgreSQL as one of the fastest-moving datastores available.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Advancing the State of the Art&lt;br /&gt;
&lt;br /&gt;
Our community of contributors is innovating with cutting-edge features, including ones new to the entire database industry.  Some of the new features that are only available on PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
* K-Nearest-Neighbor Indexing: index on &amp;quot;distance&amp;quot; for faster location and text-search queries&lt;br /&gt;
* Serializable Snapshot Isolation: keeps concurrent transactions consistent without blocking, using &amp;quot;true serializability&amp;quot;&lt;br /&gt;
* Writeable Common Table Expressions: execute complex multi-stage data updates in a single query&lt;br /&gt;
* Security-Enhanced Postgres: deploy military-grade security and Mandatory Access Control&lt;br /&gt;
&lt;br /&gt;
&amp;quot;OpenERP has always relied on the enterprise-class features of PostgreSQL to provide a fast, reliable and scalable foundation for the Business Applications supporting our customers' operations every day. Data integrity in highly concurrent and transactional contexts is a critical topic for us, and we're very enthusiastic about the new Serializable Snapshot Isolation of PosgtreSQL 9.1!&amp;quot;  said Olivier Dony, OpenERP Community Manager.&lt;br /&gt;
&lt;br /&gt;
Extending the Database Engine&lt;br /&gt;
&lt;br /&gt;
PostgreSQL's extensibility enables users to add new functionality to a running production database, and use them for tasks no other database system can perform.  Version 9.1 adds critical new extensibility features, including:&lt;br /&gt;
&lt;br /&gt;
* Foreign Table Wrappers: attach and query other databases from PostgreSQL&lt;br /&gt;
* Extensions: easily create, load, and manage new database features&lt;br /&gt;
&lt;br /&gt;
All of the above features, and more, are detailed on the What's New In 9.1 wiki page, as well as our release notes.  &lt;br /&gt;
&lt;br /&gt;
In PostgreSQL's 25th year of database development, our community continues to introduce new innovations with every annual release.  Download version 9.1 now and experience the most advanced open source database system in the world.&lt;br /&gt;
&lt;br /&gt;
== Extended Release ==&lt;br /&gt;
&lt;br /&gt;
=== Details of New Features ===&lt;br /&gt;
&lt;br /&gt;
'''Responding to Users'''&lt;br /&gt;
&lt;br /&gt;
Version 9.1 delivers several features which users have been requesting for years, removing roadblocks to deploying new or ported applications on PostgreSQL.  These include:&lt;br /&gt;
&lt;br /&gt;
* '''Synchronous Replication for Clustering:''' Enable high-availability with consistency across multiple nodes, by deploying PostgreSQL clusters using synchronous replication. Synchronous replication supports &amp;quot;2-safe replication&amp;quot; which ensures transactions have been confirmed by a standby server in addition to the master. Synchronous replication improves reliability over other techniques, and data loss will be limited to events where both the primary and standby servers crash at the same time.&lt;br /&gt;
&lt;br /&gt;
* '''Per-column Collations for Multi-lingual Databases:''' Our robust and standards-compliant multi-encoding support now allows users to set the collation for strings on a single column.  This permits true multi-lingual databases, where each text column is a different language, and indexes and sorts correctly for that language.&lt;br /&gt;
&lt;br /&gt;
* '''Unlogged Tables to Improve Performance:''' When performance is more important than durability, unlogged tables provide a way to improve performance while keeping the data managed within PostgreSQL. Removing logging reduces I/O overhead, yielding performance improvements up to 10 times faster when compared to logged tables. Scenarios expected to leverage unlogged tables include web session data, real time logging, ETL and temporary/intermediate tables for functions.&lt;br /&gt;
&lt;br /&gt;
'''Advancing the State of the Art'''&lt;br /&gt;
&lt;br /&gt;
Our community is innovating, delivering cutting-edge features which are new to the database industry.  Some of these features are only available on PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
* '''Powerful Similarity Searches with K-Nearest-Neighbor (KNN) Indexing:''' Create new applications using PostgreSQL KNN-GiST indexes, which provide innovative indexing to avoid expensive table scans. KNN enhances PostgreSQL's query capabilities by using mathematical &amp;quot;distance&amp;quot; for indexing and searches. These indexes can be used to enhance common text searches, text-similarity searches, geospatial location comparisons and other queries. Example searches that took 2 seconds without the index returned in 20 ms with this feature. Text search indexes can be also now be configured to provide indexing support for LIKE '%string%' queries without changing any SQL.  PostgreSQL is among the first database systems to have KNN.&lt;br /&gt;
&lt;br /&gt;
* '''Serializable Snapshot Isolation:''' allows users to enforce arbitrarily complex user-defined business rules within the database without blocking, by automatically detecting live race conditions in your SQL transactions at runtime.  This feature currently exists only in PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
* '''Writeable Common Table Expressions (wCTE):''' Supports the relational integrity of your data by allowing you to update multiple, cascading, related records in a single statement.  By using the results of one query to execute another query, you can update recursively, hierarchically, across foreign keys, or even more creatively.  PostgreSQL provides the most complete and flexible implementation of this SQL feature available.&lt;br /&gt;
&lt;br /&gt;
* '''Security-Enhanced Postgres (SE-Postgres):''' Deploy military-grade security and mandatory access control with full-integration support for Security-Enhanced Linux (SE-Linux). SE-Linux is a NSA project that modifies the Linux kernel with security-related functions.  It has been endorsed by and included with major Linux distributions including, but not limited to, Red Hat, CentOS, Debian and Ubuntu.  PostgreSQL is the only database system which has tight integration with SE-Linux.&lt;br /&gt;
&lt;br /&gt;
'''Extending the Database Engine'''&lt;br /&gt;
&lt;br /&gt;
PostgreSQL's extensibility enables users to add new functionality to a running production database, and use them for tasks no other database system can perform. Version 9.1 adds critical new extensibility features, including: &lt;br /&gt;
&lt;br /&gt;
* Foreign Data Wrappers (FDW): as part of our standards-compliant SQL/MED support for querying data outside the PostgreSQL database, FDWs allow users to create &amp;quot;drivers&amp;quot; and attach external data sources, which can be used as read-only tables.  FDWs make PostgreSQL a powerful tool for enterprise data integration, and they make migration easier.  FDWs initially available from the community include comma-separated-value (CSV) files, Oracle, MySQL, CouchDB, and Twitter sources.  And many more are expected in the near future. &lt;br /&gt;
&lt;br /&gt;
* Extensions: while PostgreSQL has always been extensible, now users can easily create, load, upgrade, and manage any of dozens of database extensions using the EXTENSION database object.  The new site PGXN.org offers a repository for contributing and downloading extensions.&lt;br /&gt;
&lt;br /&gt;
=== 25th Anniversary ===&lt;br /&gt;
&lt;br /&gt;
The POSTGRES project was inaugurated at the University of California, Berkeley, in June 1986 with the publication of the original POSTGRES desing by Lawrence A. Rowe and Michael R. Stonebraker.  In the 25 years since then, POSTGRES became an open source project, converted to using SQL, changed its name to PostgreSQL, and became one of the leading relational databases in the world.  &lt;br /&gt;
&lt;br /&gt;
There have been 23 releases of POSTGRES and PostgreSQL, including version 9.1.  PostgreSQL is the only major SQL database system to have consistent, featureful releases every year.&lt;br /&gt;
&lt;br /&gt;
=== Full Text of Quotes ===&lt;br /&gt;
&lt;br /&gt;
“PostgreSQL 9.1 provides some of the most advanced enterprise capabilities of any open source database, and is backed by a vibrant and innovative community with proven customer success.  PostgreSQL is well positioned for building and running applications in the cloud,” said Charles Fan, Sr. VP R&amp;amp;D, VMware.&lt;br /&gt;
&lt;br /&gt;
About VMWare: VMware (NYSE:VMW), the global leader in virtualization and cloud infrastructure, delivers customer-proven solutions that accelerate IT by reducing complexity and enabling more flexible, agile service delivery. VMware enables enterprises to adopt a cloud model that addresses their unique business challenges. VMware’s approach accelerates the transition to cloud computing while preserving existing investments and improving security and control. With more than 250,000 customers and 25,000 partners, VMware solutions help organizations of all sizes lower costs, increase business agility and ensure freedom of choice.  Contact: prinquiries@vmware.com or phone +1 (650) 427-2485&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Heroku runs the largest PostgreSQL database-as-a-service in the world,&amp;quot; said James Lindenbaum, Heroku co-founder. &amp;quot;The release of synchronous data replication with 9.1 provides our customers with innovative new ways of protecting mission-critical data, and validates PostgreSQL as one of the fastest-moving datastores available.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
About Heroku: Heroku provides a platform as a service (PAAS) for building, deploying, and running cloud apps using Ruby. The architecture of our platform includes tools for deployment and management, a runtime for scalability, fault tolerance, and an add-ons system for extending the capabilities of our platform. Contact: Jill Ratkevic (jill@blackswansmedia.com)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;OpenERP has always relied on the enterprise-class features of PostgreSQL to provide a fast, reliable and scalable foundation for the Business Applications supporting our customers' operations every day. Data integrity in highly concurrent and transactional contexts is a critical topic for us, and we're very enthusiastic about the new Serializable Snapshot Isolation of PosgtreSQL 9.1! Synchronous replication and more performance optimizations are two other reasons we are looking forward to the next release of PostgreSQL, truly the epitome of Open Source software,&amp;quot; said Olivier Dony, OpenERP Community Manager.&lt;br /&gt;
&lt;br /&gt;
About OpenERP: OpenERP is an open source comprehensive suite of business applications including Sales, CRM, Project management, Warehouse management, Manufacturing, Accounting and Human Resources. OpenERP has separate client and server components. XML-RPC interfaces are available.  OpenERP was founded by CEO Fabien Pinckaers in 2005. Fabien's vision was that Open Source provided a better way to meet customers' expectations.  Contact: info@openerp.com&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/91releasedraft</id>
		<title>91releasedraft</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/91releasedraft"/>
				<updated>2011-08-26T06:10:36Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Wording tweaks to release notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Email Release Text ==&lt;br /&gt;
&lt;br /&gt;
The PostgreSQL Global Development Group announces the release of PostgreSQL 9.1.  This latest version of the leading open source database offers innovative technology, unmatched extensibility, and new features such as synchronous replication, K-Nearest Neighbor indexing, and foreign data wrappers.  &lt;br /&gt;
&lt;br /&gt;
“PostgreSQL 9.1 provides some of the most advanced enterprise capabilities of any open source database, and is backed by a vibrant and innovative community with proven customer success.  PostgreSQL is well positioned for building and running applications in the cloud,” said Charles Fan, Sr. VP R&amp;amp;D, VMware.&lt;br /&gt;
&lt;br /&gt;
Responding to Users&lt;br /&gt;
&lt;br /&gt;
Version 9.1 delivers several features which users have been requesting for years, removing roadblocks to deploying new or ported applications on PostgreSQL.  These include:&lt;br /&gt;
&lt;br /&gt;
* Synchronous Replication: enable high-availability with consistency across multiple servers&lt;br /&gt;
* Per-Column Collations: support linguistically-correct sorting per database, table or column.&lt;br /&gt;
* Unlogged Tables: greatly improves performance for ephemeral data&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Heroku runs the largest PostgreSQL database-as-a-service in the world,&amp;quot; said James Lindenbaum, Heroku co-founder. &amp;quot;The release of synchronous data replication with 9.1 provides our customers with innovative new ways of protecting mission-critical data, and validates PostgreSQL as one of the fastest-moving datastores available.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Advancing the State of the Art&lt;br /&gt;
&lt;br /&gt;
Our community of contributors is innovating with cutting-edge features, including ones new to the entire database industry.  Some of the new features that are only available on PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
* K-Nearest-Neighbor Indexing: index on &amp;quot;distance&amp;quot; for faster location and text-search queries&lt;br /&gt;
* Serializable Snapshot Isolation: keeps concurrent transactions consistent without blocking, using &amp;quot;true serializability&amp;quot;&lt;br /&gt;
* Writeable Common Table Expressions: execute complex multi-stage data updates in a single query&lt;br /&gt;
* Security-Enhanced Postgres: deploy military-grade security and Mandatory Access Control&lt;br /&gt;
&lt;br /&gt;
&amp;quot;OpenERP has always relied on the enterprise-class features of PostgreSQL to provide a fast, reliable and scalable foundation for the Business Applications supporting our customers' operations every day. Data integrity in highly concurrent and transactional contexts is a critical topic for us, and we're very enthusiastic about the new Serializable Snapshot Isolation of PosgtreSQL 9.1!&amp;quot;  said Olivier Dony, OpenERP Community Manager.&lt;br /&gt;
&lt;br /&gt;
Extending the Database Engine&lt;br /&gt;
&lt;br /&gt;
PostgreSQL's extensibility enables users to add new functionality to a running production database, and use them for tasks no other database system can perform.  Version 9.1 adds critical new extensibility features, including:&lt;br /&gt;
&lt;br /&gt;
* Foreign Table Wrappers: attach and query other databases from PostgreSQL&lt;br /&gt;
* Extensions: easily create, load, and manage new database features&lt;br /&gt;
&lt;br /&gt;
All of the above features, and more, are detailed on the What's New In 9.1 wiki page, as well as our release notes.  &lt;br /&gt;
&lt;br /&gt;
In PostgreSQL's 25th year of database development, our community continues to introduce new innovations with every annual release.  Download version 9.1 now and experience the most advanced open source database system in the world.&lt;br /&gt;
&lt;br /&gt;
== Extended Release ==&lt;br /&gt;
&lt;br /&gt;
=== Details of New Features ===&lt;br /&gt;
&lt;br /&gt;
'''Responding to Users'''&lt;br /&gt;
&lt;br /&gt;
Version 9.1 delivers several features which users have been requesting for years, removing roadblocks to deploying new or ported applications on PostgreSQL.  These include:&lt;br /&gt;
&lt;br /&gt;
* '''Synchronous Replication for Clustering:''' Enable high-availability with consistency by deploying PostgreSQL clusters using synchronous replication. Synchronous replication supports &amp;quot;2-safe replication&amp;quot; which ensures transactions have been confirmed by the standby server. Synchronous replication improves reliability over other techniques and data loss will be limited to events where both the primary and standby servers crash at the same time.&lt;br /&gt;
&lt;br /&gt;
* '''Per-column Collations for Multi-lingual Databases:''' Our robust and standards-compliant multi-encoding support now allows users to set the collation for strings on a single column.  This permits true multi-lingual databases, where each text column is a different language, and indexes and sorts correctly for that language.&lt;br /&gt;
&lt;br /&gt;
* '''Unlogged Tables to Improve Performance:''' When performance is more important than durability, unlogged tables provide a way to improve performance while keeping the data managed within PostgreSQL. Removing logging reduces I/O overhead, yielding performance improvements up to 10 times faster when compared to logged tables. Scenarios where our users are looking to leverage unlogged tables include web session data, real time logging, ETL and temporary/intermediate tables for functions.&lt;br /&gt;
&lt;br /&gt;
'''Advancing the State of the Art'''&lt;br /&gt;
&lt;br /&gt;
Our community is innovating, delivering cutting-edge features which are new to the database industry.  Some of these features are only available on PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
* '''Powerful Similarity Searches with K-Nearest-Neighbor (KNN) Indexing:''' Create new applications using PostgreSQL KNN-GiST indexes which provide innovative indexing to avoid expensive table scans. KNN enhances PostgreSQL's query capabilities by using mathematical &amp;quot;distance&amp;quot; for indexing and searches. These indexes can be used to enhance common text searches, text-similarity searches, geospatial comparisons and other queries. Example searches that took 2 seconds without the index returned in 20 ms with the feature. The indexes can be also be configured to provide indexing support for LIKE '%string%' queries without changing any SQL.  PostgreSQL is among the first database systems to have KNN.&lt;br /&gt;
&lt;br /&gt;
* '''Serializable Snapshot Isolation:''' allows users to enforce arbitrarily complex user-defined business rules within the database without blocking, by automatically detecting live race conditions in your SQL transactions at runtime.  This feature currently exists only in PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
* '''Writeable Common Table Expressions (wCTE):''' Supports the relational integrity of your data by allowing you to update multiple, cascading, related records in a single statement.  By using the results of one query to execute another query, you can update recursively, hierarchically, across foreign keys, or even more creatively.  We have the most complete and flexible implementation of this SQL feature.&lt;br /&gt;
&lt;br /&gt;
* '''Security-Enhanced Postgres (SE-Postgres):''' Deploy military-grade security and mandatory access control with full-integration support for Security-Enhanced Linux (SE-Linux). SE-Linux is a NSA project that modifies the Linux kernel with security-related functions that has been endorsed by and included with major Linux distributions including, but not limited to, Red Hat, CentOS, Debian and Ubuntu.  PostgreSQL is the only database system which has tight integration with SE-Linux.&lt;br /&gt;
&lt;br /&gt;
'''Extending the Database Engine'''&lt;br /&gt;
&lt;br /&gt;
PostgreSQL's extensibility enables users in adding new functionality to the database at runtime and using PostgreSQL for tasks no other database system can perform.  Version 9.1 adds critical new extensibility features, including:&lt;br /&gt;
&lt;br /&gt;
* Foreign Data Wrappers (FDW): as part of our standards-compliant SQL/MED support for querying data outside the PostgreSQL database, FDWs allow users to create &amp;quot;drivers&amp;quot; and attach external data sources, which can be used as read-only tables.  FDWs make PostgreSQL a powerful tool for enterprise data integration and make migration easier.  FDWs initially available from the community include comma-separated-value (CSV) files, Oracle, MySQL, CouchDB, and Twitter, and many more are expected in the near future. &lt;br /&gt;
&lt;br /&gt;
* Extensions: while PostgreSQL has always been extensible, now users can easily create, load, upgrade, and manage any of dozens of database extensions using the EXTENSION database object.  The new site PGXN.org offers a repository for contributing and downloading extensions.&lt;br /&gt;
&lt;br /&gt;
=== 25th Anniversary ===&lt;br /&gt;
&lt;br /&gt;
The POSTGRES project was inaugurated at the University of California, Berkeley, in June 1986 with the publication of the original POSTGRES desing by Lawrence A. Rowe and Michael R. Stonebraker.  In the 25 years since then, POSTGRES became an open source project, converted to using SQL, changed its name to PostgreSQL, and became one of the leading relational databases in the world.  &lt;br /&gt;
&lt;br /&gt;
There have been 23 releases of POSTGRES and PostgreSQL, including version 9.1.  PostgreSQL is the only major SQL database system to have consistent, featureful releases every year.&lt;br /&gt;
&lt;br /&gt;
=== Full Text of Quotes ===&lt;br /&gt;
&lt;br /&gt;
“PostgreSQL 9.1 provides some of the most advanced enterprise capabilities of any open source database, and is backed by a vibrant and innovative community with proven customer success.  PostgreSQL is well positioned for building and running applications in the cloud,” said Charles Fan, Sr. VP R&amp;amp;D, VMware.&lt;br /&gt;
&lt;br /&gt;
About VMWare: VMware (NYSE:VMW), the global leader in virtualization and cloud infrastructure, delivers customer-proven solutions that accelerate IT by reducing complexity and enabling more flexible, agile service delivery. VMware enables enterprises to adopt a cloud model that addresses their unique business challenges. VMware’s approach accelerates the transition to cloud computing while preserving existing investments and improving security and control. With more than 250,000 customers and 25,000 partners, VMware solutions help organizations of all sizes lower costs, increase business agility and ensure freedom of choice.  Contact: prinquiries@vmware.com or phone +1 (650) 427-2485&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Heroku runs the largest PostgreSQL database-as-a-service in the world,&amp;quot; said James Lindenbaum, Heroku co-founder. &amp;quot;The release of synchronous data replication with 9.1 provides our customers with innovative new ways of protecting mission-critical data, and validates PostgreSQL as one of the fastest-moving datastores available.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
About Heroku: Heroku provides a platform as a service (PAAS) for building, deploying, and running cloud apps using Ruby. The architecture of our platform includes tools for deployment and management, a runtime for scalability, fault tolerance, and an add-ons system for extending the capabilities of our platform. Contact: Jill Ratkevic (jill@blackswansmedia.com)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;OpenERP has always relied on the enterprise-class features of PostgreSQL to provide a fast, reliable and scalable foundation for the Business Applications supporting our customers' operations every day. Data integrity in highly concurrent and transactional contexts is a critical topic for us, and we're very enthusiastic about the new Serializable Snapshot Isolation of PosgtreSQL 9.1! Synchronous replication and more performance optimizations are two other reasons we are looking forward to the next release of PostgreSQL, truly the epitome of Open Source software,&amp;quot; said Olivier Dony, OpenERP Community Manager.&lt;br /&gt;
&lt;br /&gt;
About OpenERP: OpenERP is an open source comprehensive suite of business applications including Sales, CRM, Project management, Warehouse management, Manufacturing, Accounting and Human Resources. OpenERP has separate client and server components. XML-RPC interfaces are available.  OpenERP was founded by CEO Fabien Pinckaers in 2005. Fabien's vision was that Open Source provided a better way to meet customers' expectations.  Contact: info@openerp.com&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Statement_Playback</id>
		<title>Statement Playback</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Statement_Playback"/>
				<updated>2011-08-02T15:51:13Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Links to tsung tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One way to construct a test workload for purposes such as load testing and benchmarking is to record statements executed against a source server, then play them back against the test system.  There are a few tools available for this purpose compatible with PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
== tsung ==&lt;br /&gt;
&lt;br /&gt;
Project home page:  http://tsung.erlang-projects.org/&lt;br /&gt;
&lt;br /&gt;
Tsung implements a multi-threaded model that tracks which transactions each query belonged to and runs them with the same concurrency as the original.&lt;br /&gt;
&lt;br /&gt;
Tsung also comes with a recorder which is a PostgreSQL proxy.  You can connect it to your server, connect your client to it, and let it record a session at a time.  Then in the configuration you get to choose how many of each sessions you want to mix.&lt;br /&gt;
&lt;br /&gt;
Note that Tsung is not really designed to replay logs.  It's designed for artificial workload generation, so it's very limited in the number of sessions it can replay ... not more than 200 or so.  Depending on your real workload, this may be an insurmountable obstacle.&lt;br /&gt;
&lt;br /&gt;
Tsung tutorial on load-testing Postgresql servers:&lt;br /&gt;
*[http://freeyourtech.wordpress.com/2008/07/11/load-testing-a-postgresql-server-with-tsung/ Load-testing a Postgresql server with Tsung]&lt;br /&gt;
*[http://freeyourtech.wordpress.com/2008/09/23/pgtsung-app-specific-testing-methodology/ pgTsung: app-specific testing methodology]&lt;br /&gt;
*[http://freeyourtech.wordpress.com/2008/10/29/pgtsung-stage-1/ pgTsung: stage 1]&lt;br /&gt;
*[http://freeyourtech.wordpress.com/2008/11/30/pgtsung-stage-2/ pgTsung: stage 2]&lt;br /&gt;
&lt;br /&gt;
== playr ==&lt;br /&gt;
&lt;br /&gt;
Project home page:  http://github.com/myYearbook/playr&lt;br /&gt;
&lt;br /&gt;
Designed to identify potential issues resulting from software or hardware upgrades on myYearbook.com's high-volume databases, Playr is able test an&lt;br /&gt;
entire application and provide the administrator with a report detailing the performance and error-related divergence of a Postgres configuration from the production workload. This sounds good, but how does it work? Playr works by capturing your production database workload, analyzing it, and processing it into a set of binary capture files. Once the workload capture and processing has been completed, replay can be performed using one or more driver systems. By using the binary capture files, Playr is able to recreate the production workload exactly; all concurrency, timing, and commit ordering remain identical to production.&lt;br /&gt;
&lt;br /&gt;
Playr is not designed to work with lesser hardware than the machine&lt;br /&gt;
where the log files were originally taken from. It is not designed to&lt;br /&gt;
be a benchmark application in the traditional sense. If the new&lt;br /&gt;
hardware can not keep up with the timing, Playr will give up its&lt;br /&gt;
stress test and let you know that it fell behind.&lt;br /&gt;
&lt;br /&gt;
== pgreplay ==&lt;br /&gt;
&lt;br /&gt;
Project home page: http://pgreplay.projects.postgresql.org/&lt;br /&gt;
&lt;br /&gt;
pgreplay reads a PostgreSQL log file (*not* a WAL file), extracts the SQL statements and executes them in the same order and relative time against a PostgreSQL database cluster.  This makes it straightforward to capture the data needed to drive it from a production server.  pgreplay is single-threaded, but uses asynchronous query processing, so multiple connections can be handled simultaneously.  pgreplay will use as many connections as the original run did, and&lt;br /&gt;
query order and timing are retained.    If the execution of statements gets behind schedule, warning messages are issued that indicate that the server cannot handle the load in a timely fashion.  The idea is to replay a real-world database workload as exactly as possible.&lt;br /&gt;
&lt;br /&gt;
Features:&lt;br /&gt;
* Should compile and run on any platform that PostgreSQL supports&lt;br /&gt;
* Can replay the workload at different speeds&lt;br /&gt;
* Can parse &amp;quot;stderr&amp;quot; and &amp;quot;csvlog&amp;quot; log files&lt;br /&gt;
* Can save workload to replay in &amp;quot;replay file&amp;quot; for reuse&lt;br /&gt;
&lt;br /&gt;
Limitations:&lt;br /&gt;
* Statements that are not logged, such as COPY, will not be played back.&lt;br /&gt;
&lt;br /&gt;
[[Category:Performance]] [[Category:Benchmarking]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	<entry>
		<id>http://wiki.postgresql.org/wiki/Policies</id>
		<title>Policies</title>
		<link rel="alternate" type="text/html" href="http://wiki.postgresql.org/wiki/Policies"/>
				<updated>2011-06-27T19:34:06Z</updated>
		
		<summary type="html">&lt;p&gt;Gsmith:&amp;#32;Linked to Planet PostgreSQL policy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contains draft and approved policies of the PostgreSQL project regarding web, infrastructure, mailing lists, and more.&lt;br /&gt;
&lt;br /&gt;
* Approval Policies&lt;br /&gt;
** [[NewsEventsApproval|News and Events Approval Policies]]&lt;br /&gt;
** [[ProfessionalApproval|Professional Services and Hosting Approval Policies]]&lt;br /&gt;
** [http://planet.postgresql.org/policy.html Planet PostgreSQL policy]&lt;br /&gt;
* [[ContributorListings|Contributor Listings]]&lt;br /&gt;
* [[BoothPolicies|PostgreSQL.Org Booth policy for tradeshows]]&lt;br /&gt;
* [[ReleasePrep|Release Preparation]]&lt;br /&gt;
* [[ProjectName|On the Project Name]]&lt;br /&gt;
* [[SponsorShip|Fundraising Group]]&lt;br /&gt;
* [[Sponsoring|Being a Sponsor]]&lt;br /&gt;
* [[Archives Policy]]&lt;br /&gt;
* [[Trademark Policy]]&lt;br /&gt;
* [[PostgreSQL Release Support Policy]]&lt;/div&gt;</summary>
		<author><name>Gsmith</name></author>	</entry>

	</feed>