diff --git a/.gitignore b/.gitignore
index 1ab1ad1..9c1bc00 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/postgresql-10.5.tar.bz2
+SOURCES/postgresql-12.1.tar.bz2
diff --git a/.libpq.metadata b/.libpq.metadata
index 70e748f..5c59073 100644
--- a/.libpq.metadata
+++ b/.libpq.metadata
@@ -1 +1 @@
-8c7b4406b0ba2987f4170657f89908ad47947429 SOURCES/postgresql-10.5.tar.bz2
+b9bd13230fa02a4d0105e92d15d56e7842119e26 SOURCES/postgresql-12.1.tar.bz2
diff --git a/SOURCES/libpq-10.4-symbol-versioning.patch b/SOURCES/libpq-10.4-symbol-versioning.patch
deleted file mode 100644
index ad09569..0000000
--- a/SOURCES/libpq-10.4-symbol-versioning.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-The libpq package is supposed to be used for all the PostgreSQL modules
-available in RHEL 8, and ABI versioning will guarantee us that modular RPMs will
-depend on appropriate libpq ABI version (picked at build-time).
-
-diff --git a/config/Makefile b/config/Makefile
-index 67e7998f55..86612a42c3 100644
---- a/config/Makefile
-+++ b/config/Makefile
-@@ -8,6 +8,7 @@ include $(top_builddir)/src/Makefile.global
- install: all installdirs
- 	$(INSTALL_SCRIPT) $(srcdir)/install-sh '$(DESTDIR)$(pgxsdir)/config/install-sh'
- 	$(INSTALL_SCRIPT) $(srcdir)/missing '$(DESTDIR)$(pgxsdir)/config/missing'
-+	$(INSTALL_SCRIPT) $(srcdir)/build-exports-gnu-ld '$(DESTDIR)$(pgxsdir)/config/build-exports-gnu-ld'
- 
- installdirs:
- 	$(MKDIR_P) '$(DESTDIR)$(pgxsdir)/config'
-diff --git a/config/build-exports-gnu-ld b/config/build-exports-gnu-ld
-new file mode 100755
-index 0000000000..bdcfb40d48
---- /dev/null
-+++ b/config/build-exports-gnu-ld
-@@ -0,0 +1,41 @@
-+#! /bin/sh
-+
-+# by default use PG_ prefix
-+: "${SYMBOL_VERSION_PREFIX=PG_}"
-+
-+# we started symbol versioning since v10
-+: "${SYMBOL_VERSION_START=9.6}"
-+
-+version=$SYMBOL_VERSION_START
-+version_prev=
-+first=:
-+
-+open_block ()
-+{
-+	$first || echo
-+	first=false
-+	echo "${SYMBOL_VERSION_PREFIX}$version {"
-+	echo "global:"
-+}
-+
-+close_block ()
-+{
-+	echo "}${version_prev:+ $SYMBOL_VERSION_PREFIX$version_prev};"
-+	version_prev=$version
-+	version=$1
-+}
-+
-+open_block
-+while read -r symbol _ new_version
-+do
-+	case $symbol in '#'*) continue ;; esac
-+	if test -n "$new_version" && test "$new_version" != "$version"; then
-+		close_block "$new_version"
-+		open_block
-+	fi
-+	echo "	$symbol;"
-+done
-+
-+echo "local:"
-+echo "	*;"
-+close_block
-diff --git a/src/Makefile.shlib b/src/Makefile.shlib
-index 95b82a6dea..a7065d02a4 100644
---- a/src/Makefile.shlib
-+++ b/src/Makefile.shlib
-@@ -221,7 +221,7 @@ ifeq ($(PORTNAME), linux)
-   ifdef soname
-     LINK.shared		+= -Wl,-soname,$(soname)
-   endif
--  BUILD.exports		= ( echo '{ global:'; $(AWK) '/^[^\#]/ {printf "%s;\n",$$1}' $<; echo ' local: *; };' ) >$@
-+  BUILD.exports		= $(SHELL) $(top_srcdir)/config/build-exports-gnu-ld < $< > $@
-   exports_file		= $(SHLIB_EXPORTS:%.txt=%.list)
-   ifneq (,$(exports_file))
-     LINK.shared		+= -Wl,--version-script=$(exports_file)
-diff --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt
-index d6a38d0df8..29bebeac7e 100644
---- a/src/interfaces/libpq/exports.txt
-+++ b/src/interfaces/libpq/exports.txt
-@@ -171,4 +171,4 @@ PQsslAttributeNames       168
- PQsslAttribute            169
- PQsetErrorContextVisibility 170
- PQresultVerboseErrorMessage 171
--PQencryptPasswordConn     172
-+PQencryptPasswordConn     172     10
--- 
-2.17.0
-
diff --git a/SOURCES/libpq-12.0-symbol-versioning.patch b/SOURCES/libpq-12.0-symbol-versioning.patch
new file mode 100644
index 0000000..2ff9570
--- /dev/null
+++ b/SOURCES/libpq-12.0-symbol-versioning.patch
@@ -0,0 +1,92 @@
+- The libpq package is supposed to be used for all the PostgreSQL modules
+
+- available in RHEL 8, and ABI versioning will guarantee us that modular RPMs will
+- depend on appropriate libpq ABI version (picked at build-time).
+
+diff --git a/config/Makefile b/config/Makefile
+index 67e7998f55..86612a42c3 100644
+--- a/config/Makefile
++++ b/config/Makefile
+@@ -8,6 +8,7 @@ include $(top_builddir)/src/Makefile.global
+ install: all installdirs
+ 	$(INSTALL_SCRIPT) $(srcdir)/install-sh '$(DESTDIR)$(pgxsdir)/config/install-sh'
+ 	$(INSTALL_SCRIPT) $(srcdir)/missing '$(DESTDIR)$(pgxsdir)/config/missing'
++	$(INSTALL_SCRIPT) $(srcdir)/build-exports-gnu-ld '$(DESTDIR)$(pgxsdir)/config/build-exports-gnu-ld'
+ 
+ installdirs:
+ 	$(MKDIR_P) '$(DESTDIR)$(pgxsdir)/config'
+diff --git a/config/build-exports-gnu-ld b/config/build-exports-gnu-ld
+new file mode 100755
+index 0000000000..84c48e3ade
+--- /dev/null
++++ b/config/build-exports-gnu-ld
+@@ -0,0 +1,41 @@
++#! /bin/sh
++
++# by default use PG_ prefix
++: "${SYMBOL_VERSION_PREFIX=PG_}"
++
++# we started symbol versioning since v10
++: "${SYMBOL_VERSION_START=9.6}"
++
++version=$SYMBOL_VERSION_START
++version_prev=
++first=:
++
++open_block ()
++{
++	$first || echo
++	first=false
++	echo "${SYMBOL_VERSION_PREFIX}$version {"
++	echo "global:"
++}
++
++close_block ()
++{
++	echo "}${version_prev:+ $SYMBOL_VERSION_PREFIX$version_prev};"
++	version_prev=$version
++	version=$1
++}
++
++open_block
++while read -r symbol _ new_version
++do
++	case $symbol in '#'*) continue ;; esac
++	if test -n "$new_version" && test "$new_version" != "$version"; then
++		close_block "$new_version"
++		open_block
++	fi
++	echo "	$symbol;"
++done
++
++echo "local:"
++echo "	*;"
++close_block
+diff --git a/src/Makefile.shlib b/src/Makefile.shlib
+index 373d73caef..d5bd5468cd 100644
+--- a/src/Makefile.shlib
++++ b/src/Makefile.shlib
+@@ -231,7 +231,7 @@ ifeq ($(PORTNAME), linux)
+   ifdef soname
+     LINK.shared		+= -Wl,-soname,$(soname)
+   endif
+-  BUILD.exports		= ( echo '{ global:'; $(AWK) '/^[^\#]/ {printf "%s;\n",$$1}' $<; echo ' local: *; };' ) >$@
++  BUILD.exports		= $(SHELL) $(top_srcdir)/config/build-exports-gnu-ld < $< > $@
+   exports_file		= $(SHLIB_EXPORTS:%.txt=%.list)
+   ifneq (,$(exports_file))
+     LINK.shared		+= -Wl,--version-script=$(exports_file)
+diff --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt
+index ccec59919b..4c2be8b7d5 100644
+--- a/src/interfaces/libpq/exports.txt
++++ b/src/interfaces/libpq/exports.txt
+@@ -171,8 +171,8 @@ PQsslAttributeNames       168
+ PQsslAttribute            169
+ PQsetErrorContextVisibility 170
+ PQresultVerboseErrorMessage 171
+-PQencryptPasswordConn     172
+-PQresultMemorySize        173
++PQencryptPasswordConn     172      10
++PQresultMemorySize        173      12
+ PQhostaddr                174
+ PQgssEncInUse             175
+ PQgetgssctx               176
diff --git a/SOURCES/postgresql-10.5.tar.bz2.sha256 b/SOURCES/postgresql-10.5.tar.bz2.sha256
deleted file mode 100644
index 62d14ed..0000000
--- a/SOURCES/postgresql-10.5.tar.bz2.sha256
+++ /dev/null
@@ -1 +0,0 @@
-6c8e616c91a45142b85c0aeb1f29ebba4a361309e86469e0fb4617b6a73c4011  postgresql-10.5.tar.bz2
diff --git a/SOURCES/postgresql-12.1.tar.bz2.sha256 b/SOURCES/postgresql-12.1.tar.bz2.sha256
new file mode 100644
index 0000000..27f8f97
--- /dev/null
+++ b/SOURCES/postgresql-12.1.tar.bz2.sha256
@@ -0,0 +1 @@
+a09bf3abbaf6763980d0f8acbb943b7629a8b20073de18d867aecdb7988483ed  postgresql-12.1.tar.bz2
diff --git a/SPECS/libpq.spec b/SPECS/libpq.spec
index 7dabaf4..d878136 100644
--- a/SPECS/libpq.spec
+++ b/SPECS/libpq.spec
@@ -1,21 +1,22 @@
-%global majorversion 10
+%global majorversion 12
+%global obsoletes_version %( echo $(( %majorversion + 1 )) )
 
 Summary: PostgreSQL client library
 Name: libpq
-Version: %majorversion.5
-Release: 1%{?dist}
+Version: %{majorversion}.1
+Release: 3%{?dist}
 
 License: PostgreSQL
 Url: http://www.postgresql.org/
 
-Source0: https://ftp.postgresql.org/pub/source/v%version/postgresql-%version.tar.bz2
-Source1: https://ftp.postgresql.org/pub/source/v%version/postgresql-%version.tar.bz2.sha256
+Source0: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2
+Source1: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2.sha256
 
 
 # Comments for these patches are in the patch files.
 Patch1: libpq-10.3-rpm-pgsql.patch
 Patch2: libpq-10.3-var-run-socket.patch
-Patch3: libpq-10.4-symbol-versioning.patch
+Patch3: libpq-12.0-symbol-versioning.patch
 
 BuildRequires: gcc
 BuildRequires: glibc-devel bison flex gawk
@@ -26,6 +27,9 @@ BuildRequires: openldap-devel
 BuildRequires: gettext
 BuildRequires: multilib-rpm-config
 
+Obsoletes: postgresql-libs < %obsoletes_version
+Provides: postgresql-libs = %version-%release
+
 
 %description
 The libpq package provides the essential shared library for any PostgreSQL
@@ -42,101 +46,83 @@ Requires: %name%{?_isa} = %version-%release
 # most of the depending packages and the rest (those which want to build server
 # modules) need to be fixed to require postgresql-server-devel package.
 Provides: postgresql-devel = %version-%release
+Obsoletes: postgresql-devel < %obsoletes_version
 
-%description -n libpq-devel
+%description devel
 The libpq package provides the essential shared library for any PostgreSQL
 client program or interface.  You will need to install this package to build any
 package or any clients that need to connect to a PostgreSQL server.
 
 
 %prep
-cd %_sourcedir; sha256sum -c %SOURCE1
-%autosetup -n postgresql-%version -p1
+( cd "$(dirname "%SOURCE1")" ; sha256sum -c "%SOURCE1" )
+%autosetup -n postgresql-%{version} -p1
 
 # remove .gitignore files to ensure none get into the RPMs (bug #642210)
 find . -type f -name .gitignore | xargs rm
 
 
 %build
-# Fiddling with CFLAGS.
-CFLAGS="${CFLAGS:-%optflags}"
-CFLAGS=`echo $CFLAGS | xargs -n 1 | sed 's|-O2|-O3|g' | xargs -n 100`
-# Strip out -ffast-math from CFLAGS....
-CFLAGS=`echo $CFLAGS|xargs -n 1|grep -v ffast-math|xargs -n 100`
-export CFLAGS
-
-# We don't build server binaries in this package, so we need to disable some
-# configure options which are only related to server builds.
-configure_no_server=--without-readline
-
+# complements symbol-versioning patch
 export SYMBOL_VERSION_PREFIX=RHPG_
 
+# We don't build server nor client (e.g. /bin/psql) binaries in this package, so
+# we can disable some configure options.
 %configure \
-	--disable-rpath \
-	--with-ldap \
-	--with-openssl \
-	--with-gssapi \
-	--enable-nls \
-	$configure_no_server \
-	--datadir=%_datadir/pgsql
+    --disable-rpath \
+    --with-ldap \
+    --with-openssl \
+    --with-gssapi \
+    --enable-nls \
+    --without-readline \
+    --datadir=%_datadir/pgsql
 
 %global build_subdirs \\\
-	src/interfaces/libpq \\\
-	src/bin/pg_config \\\
-	src/include
-
-make -C "src/backend" ../../src/include/utils/fmgroids.h
-make -C "src/backend" ../../src/include/utils/fmgrprotos.h
+        src/include \\\
+        src/common \\\
+        src/port \\\
+        src/interfaces/libpq \\\
+        src/bin/pg_config
 
 for subdir in %build_subdirs; do
-	make -C "$subdir" %{?_smp_mflags}
+    %make_build -C "$subdir"
 done
 
 
 %install
 for subdir in %build_subdirs; do
-	make -C "$subdir" install DESTDIR=$RPM_BUILD_ROOT
+    %make_install -C "$subdir"
 done
 
 # remove files not to be packaged
-rm $RPM_BUILD_ROOT%_libdir/libpq.a
+find $RPM_BUILD_ROOT -name '*.a' -delete
 rm -r $RPM_BUILD_ROOT%_includedir/pgsql/server
 
-for header in \
-	%{_includedir}/pg_config.h \
-	%{_includedir}/pg_config_ext.h
-do
-	%multilib_fix_c_header --file "$header"
-done
-
-# initialize file lists
-cp /dev/null libpq.lst
-cp /dev/null libpq-devel.lst
+%multilib_fix_c_header --file "%_includedir/pg_config.h"
+%multilib_fix_c_header --file "%_includedir/pg_config_ext.h"
 
 find_lang_bins ()
 {
-	lstfile=$1 ; shift
-	for binary; do
-		%find_lang "$binary"-%majorversion
-		cat "$binary"-%majorversion.lang >>$lstfile
-	done
+    lstfile=$1 ; shift
+    cp /dev/null "$lstfile"
+    for binary; do
+        %find_lang "$binary"-%majorversion
+        cat "$binary"-%majorversion.lang >>"$lstfile"
+    done
 }
 
-find_lang_bins libpq.lst libpq5
-find_lang_bins libpq-devel.lst pg_config
-
+find_lang_bins %name.lst        libpq5
+find_lang_bins %name-devel.lst  pg_config
 
-%ldconfig_scriptlets
 
-
-%files -f libpq.lst
+%files -f %name.lst
 %license COPYRIGHT
 %_libdir/libpq.so.*
 %dir %_datadir/pgsql
 %doc %_datadir/pgsql/pg_service.conf.sample
 
 
-%files devel -f libpq-devel.lst
+%files devel -f %name-devel.lst
 %_bindir/pg_config
 %_includedir/*
 %_libdir/libpq.so
@@ -144,6 +130,22 @@ find_lang_bins libpq-devel.lst pg_config
 
 
 %changelog
+* Tue Nov 19 2019 Patrik Novotný <panovotn@redhat.com> - 12.1-3
+- Rebuild with rebased symbol versioning patch
+
+* Fri Nov 15 2019 Patrik Novotný <panovotn@redhat.com> - 12.1-2
+- Rebuild with rebased symbol versioning patch
+
+* Tue Nov 12 2019 Patrik Novotný <panovotn@redhat.com> - 12.1-1
+- Rebase to upstream release 12.1
+
+* Fri Nov 08 2019 Honza Horak <hhorak@redhat.com> - 12.0-2
+- Bump release for a new build with gating.yaml added
+  Related: #1749461
+
+* Thu Oct 03 2019 Patrik Novotný <panovotn@redhat.com> - 12.0-1
+- Initial release for upstream version 12.0
+
 * Wed Aug 08 2018 Pavel Raiskup <praiskup@redhat.com> - 10.5-1
 - update to 10.5 per release notes:
   https://www.postgresql.org/docs/10/static/release-10-5.html