diff --git a/Formula/postgres-xc.rb b/Formula/postgres-xc.rb
new file mode 100644
index 00000000000..c130ebea030
--- /dev/null
+++ b/Formula/postgres-xc.rb
@@ -0,0 +1,325 @@
+require 'formula'
+
+class X86_64_Architecture < Requirement
+ fatal true
+
+ def message; <<-EOS.undent
+ Your system appears to run on a 32-bit architecture.
+ Postgres-XC only supports 64-bit architectures, sorry.
+ EOS
+ end
+ def satisfied?
+ MacOS.prefer_64_bit?
+ end
+end
+
+class PostgresXc < Formula
+ homepage 'http://postgres-xc.sourceforge.net/'
+ url 'http://sourceforge.net/projects/postgres-xc/files/Version_1.0/pgxc-v1.0.1.tar.gz'
+ sha1 '350277d7b32e54baffdd52fa98bac6b14f088c6d'
+
+ depends_on X86_64_Architecture.new
+ depends_on 'readline'
+ depends_on 'libxml2' if MacOS.version == :leopard # Leopard libxml is too old
+ depends_on 'ossp-uuid' unless build.include? 'without-ossp-uuid'
+
+ conflicts_with 'postgresql',
+ :because => 'postgres-xc and postgresql install the same binaries.'
+
+ option 'without-ossp-uuid', 'Build without OSSP uuid'
+ option 'no-python', 'Build without Python support'
+ option 'no-perl', 'Build without Perl support'
+ option 'enable-dtrace', 'Build with DTrace support'
+
+ fails_with :clang do
+ build 211
+ cause 'Miscompilation resulting in segfault on queries'
+ end
+
+ # Fix PL/Python build: https://github.com/mxcl/homebrew/issues/11162
+ # Fix uuid-ossp build issues: http://archives.postgresql.org/pgsql-general/2012-07/msg00654.php
+ def patches
+ DATA
+ end
+
+ def install
+ ENV.libxml2 if MacOS.version >= :snow_leopard
+
+ args = ["--disable-debug",
+ "--prefix=#{prefix}",
+ "--datadir=#{share}/#{name}",
+ "--docdir=#{doc}",
+ "--enable-thread-safety",
+ "--with-bonjour",
+ "--with-gssapi",
+ "--with-krb5",
+ "--with-openssl",
+ "--with-libxml",
+ "--with-libxslt"]
+
+ args << "--with-ossp-uuid" unless build.include? 'without-ossp-uuid'
+ args << "--with-python" unless build.include? 'no-python'
+ args << "--with-perl" unless build.include? 'no-perl'
+ args << "--enable-dtrace" if build.include? 'enable-dtrace'
+ args << "ARCHFLAGS='-arch x86_64'"
+
+ unless build.include? 'without-ossp-uuid'
+ ENV.append 'CFLAGS', `uuid-config --cflags`.strip
+ ENV.append 'LDFLAGS', `uuid-config --ldflags`.strip
+ ENV.append 'LIBS', `uuid-config --libs`.strip
+ end
+
+ check_python_arch unless build.include? 'no-python'
+
+ system "./configure", *args
+ system "make install-world"
+
+ plist_path('gtm').write gtm_startup_plist('gtm')
+ plist_path('gtm').chmod 0644
+ plist_path('gtm_proxy').write gtm_proxy_startup_plist('gtm_proxy')
+ plist_path('gtm_proxy').chmod 0644
+ plist_path('coord').write coordinator_startup_plist('coord')
+ plist_path('coord').chmod 0644
+ plist_path('datanode').write datanode_startup_plist('datanode')
+ plist_path('datanode').chmod 0644
+
+ mkpath var+'postgres-xc' # Create data directory
+ end
+
+ def check_python_arch
+ # On 64-bit systems, we need to look for a 32-bit Framework Python.
+ # The configure script prefers this Python version, and if it doesn't
+ # have 64-bit support then linking will fail.
+ framework_python = Pathname.new "/Library/Frameworks/Python.framework/Versions/Current/Python"
+ return unless framework_python.exist?
+ unless (archs_for_command framework_python).include? :x86_64
+ opoo "Detected a framework Python that does not have 64-bit support in:"
+ puts <<-EOS.undent
+ #{framework_python}
+
+ The configure script seems to prefer this version of Python over any others,
+ so you may experience linker problems as described in:
+ http://osdir.com/ml/pgsql-general/2009-09/msg00160.html
+
+ To fix this issue, you may need to either delete the version of Python
+ shown above, or move it out of the way before brewing PostgreSQL.
+
+ Note that a framework Python in /Library/Frameworks/Python.framework is
+ the "MacPython" version, and not the system-provided version which is in:
+ /System/Library/Frameworks/Python.framework
+ EOS
+ end
+ end
+
+ def caveats; <<-EOS.undent
+ To get started with Postgres-XC, read the documents at
+ http://sourceforge.net/projects/postgres-xc/files/Publication/
+ http://postgres-xc.sourceforge.net/docs/1_0/tutorial-start.html
+
+ For a first cluster, you may start with a single GTM (Global Transaction Manager),
+ a pair of Data Nodes and a single Coordinator, all on the same machine:
+
+ initgtm -Z gtm -D #{var}/postgres-xc/gtm
+ initdb -D #{var}/postgres-xc/datanode1 --nodename datanode1
+ initdb -D #{var}/postgres-xc/datanode2 --nodename datanode2
+ initdb -D #{var}/postgres-xc/coord --nodename coord
+
+ Then edit:
+
+ #{var}/postgres-xc/datanode1/postgresql.conf
+ #{var}/postgres-xc/datanode2/postgresql.conf
+
+ and change the port to 15432 and 15433, respectively.
+
+ Then, launch the nodes and connect to the coordinator:
+
+ gtm -D #{var}/postgres-xc/gtm -l #{var}/postgres-xc/gtm/server.log &
+ postgres -i -X -D #{var}/postgres-xc/datanode1 -r #{var}/postgres-xc/datanode1/server.log &
+ postgres -i -X -D #{var}/postgres-xc/datanode2 -r #{var}/postgres-xc/datanode2/server.log &
+ postgres -i -C -D #{var}/postgres-xc/coord -r #{var}/postgres-xc/coord/server.log &
+ psql postgres
+ create node datanode1 with (type='datanode', port=15432);
+ create node datanode2 with (type='datanode', port=15433);
+ select * from pgxc_node;
+ select pgxc_pool_reload();
+
+ To shutdown everything, kill the processes in reverse order:
+
+ kill -SIGTERM `head -1 #{var}/postgres-xc/coord/postmaster.pid`
+ kill -SIGTERM `head -1 #{var}/postgres-xc/datanode1/postmaster.pid`
+ kill -SIGTERM `head -1 #{var}/postgres-xc/datanode2/postmaster.pid`
+ kill -SIGTERM `head -1 #{var}/postgres-xc/gtm/gtm.pid`
+
+ If you get the following error:
+ FATAL: could not create shared memory segment: Cannot allocate memory
+ then you need to tweak your system's shared memory parameters:
+ http://www.postgresql.org/docs/current/static/kernel-resources.html#SYSVIPC
+ EOS
+ end
+
+ # Override Formula#plist_name
+ def plist_name(extra = nil)
+ (extra) ? super()+'-'+extra : super()+'-gtm'
+ end
+
+ # Override Formula#plist_path
+ def plist_path(extra = nil)
+ (extra) ? super().dirname+(plist_name(extra)+'.plist') : super()
+ end
+
+ def gtm_startup_plist(name); <<-EOPLIST.undent
+
+
+
+
+ KeepAlive
+
+ Label
+ #{plist_name(name)}
+ ProgramArguments
+
+ #{opt_prefix}/bin/gtm
+ -D
+ #{var}/postgres-xc/#{name}
+ -l
+ #{var}/postgres-xc/#{name}/server.log
+
+ RunAtLoad
+
+ UserName
+ #{`whoami`.chomp}
+ WorkingDirectory
+ #{HOMEBREW_PREFIX}
+ StandardErrorPath
+ #{var}/postgres-xc/#{name}/server.log
+
+
+ EOPLIST
+ end
+
+ def gtm_proxy_startup_plist(name); <<-EOPLIST.undent
+
+
+
+
+ KeepAlive
+
+ Label
+ #{plist_name(name)}
+ ProgramArguments
+
+ #{opt_prefix}/bin/gtm_proxy
+ -D
+ #{var}/postgres-xc/#{name}
+ -n
+ 2
+ -s
+ localhost
+ -t
+ 6666
+ -l
+ #{var}/postgres-xc/#{name}/server.log
+
+ RunAtLoad
+
+ UserName
+ #{`whoami`.chomp}
+ WorkingDirectory
+ #{HOMEBREW_PREFIX}
+ StandardErrorPath
+ #{var}/postgres-xc/#{name}/server.log
+
+
+ EOPLIST
+ end
+
+ def coordinator_startup_plist(name); <<-EOPLIST.undent
+
+
+
+
+ KeepAlive
+
+ Label
+ #{plist_name(name)}
+ ProgramArguments
+
+ #{opt_prefix}/bin/postgres
+ -i
+ -C
+ -D
+ #{var}/postgres-xc/#{name}
+ -r
+ #{var}/postgres-xc/#{name}/server.log
+
+ RunAtLoad
+
+ UserName
+ #{`whoami`.chomp}
+ WorkingDirectory
+ #{HOMEBREW_PREFIX}
+ StandardErrorPath
+ #{var}/postgres-xc/#{name}/server.log
+
+
+ EOPLIST
+ end
+
+ def datanode_startup_plist(name); <<-EOPLIST.undent
+
+
+
+
+ KeepAlive
+
+ Label
+ #{plist_name(name)}
+ ProgramArguments
+
+ #{opt_prefix}/bin/postgres
+ -i
+ -X
+ -D
+ #{var}/postgres-xc/#{name}
+ -r
+ #{var}/postgres-xc/#{name}/server.log
+
+ RunAtLoad
+
+ UserName
+ #{`whoami`.chomp}
+ WorkingDirectory
+ #{HOMEBREW_PREFIX}
+ StandardErrorPath
+ #{var}/postgres-xc/#{name}/server.log
+
+
+ EOPLIST
+ end
+
+end
+
+
+__END__
+--- a/src/pl/plpython/Makefile 2011-09-23 08:03:52.000000000 +1000
++++ b/src/pl/plpython/Makefile 2011-10-26 21:43:40.000000000 +1100
+@@ -24,8 +24,6 @@
+ # Darwin (OS X) has its own ideas about how to do this.
+ ifeq ($(PORTNAME), darwin)
+ shared_libpython = yes
+-override python_libspec = -framework Python
+-override python_additional_libs =
+ endif
+
+ # If we don't have a shared library and the platform doesn't allow it
+--- a/contrib/uuid-ossp/uuid-ossp.c 2012-07-30 18:34:53.000000000 -0700
++++ b/contrib/uuid-ossp/uuid-ossp.c 2012-07-30 18:35:03.000000000 -0700
+@@ -9,6 +9,8 @@
+ *-------------------------------------------------------------------------
+ */
+
++#define _XOPEN_SOURCE
++
+ #include "postgres.h"
+ #include "fmgr.h"
+ #include "utils/builtins.h"