
PostgreSQL increasing list of supported drivers
One of the key strengths of PostgreSQL lies in its ever-growing and continuously expanding list of supported drivers, which significantly enhances its compatibility with an increasing array of global applications across various industries.
Some PostgreSQL interfaces may appear to be similar at first glance, however they usually have subtle differences that can impact their functionality or performance. For example some might work for multiple APIs, and as a result require connectivity to first go through an intermediate library, adding latency to connection requests. Others may be singularly for PostgreSQL from one language, such as the pgx driver for the Go Lang: :PostgreSQL driver for Go. Other drivers may include features like load balancing, proxies, or target server preferences, all of which will be considerations when development teams choose between interfaces or drivers.
Client libraries supported by Fujitsu Enterprise Postgres
All PostgreSQL drivers should be fully compatible for direct connectivity to the equivalent Fujitsu Enterprise Postgres cluster versions. Fujitsu officially publishes its supported drivers as per the below:
Driver | Windows | Linux |
JDBC | ||
ODBC | ||
.NET Data Provider | ||
C language (libpg) | ||
Embedded SQL (ECPG) in C language | ||
Embedded SQL (ECOBPG) in COBOL | ||
Connection Manager | ||
High-Speed Data Load | ||
pgAdmin | ||
pgPool-II | ||
ldap2pg | ||
pgBackRest |
Drivers and Connection Manager
Although PostgreSQL drivers are expected to work directly with Fujitsu Enterprise Postgres, unfortunately the same cannot be said for the same drivers connecting to our unique feature Connection Manager, which requires using our modified Fujitsu Enterprise Postgres client drivers for:
- libpq
- ECPG (embedded SQL in C pre-processor)
- ECOBPG(embedded SQL in COBOL pre-processor)
- JDBC driver ad ODBC driver.
One of the benefits of Connection Manager is that it avoids clients listing and maintaining all the possible primary server addresses in the client application connection strings, and then having the application knock on each door in the primary candidate list, to establish which one is really the primary.
Here’s an example of a client connection through Connection Manager, to determine the address of the primary Fuitsu Enterprise Postgres instance.
The Fujitsu Enterprise Postgres client ships with modified versions of Fujitsu Enterprise Postgres interface libraries, so that applications can use Connection Manager. These include both libpq and java JAR files for connectivity through Connection Manager. The Fujitsu Enterprise Postgres client paths need to be set in the shell profiles, to access the Fujitsu Enterprise Postgres modified libraries first. If we don’t source the Fujitsu Enterprise Postgres libraries first, then application connectivity through Connection Manager would fail.
By modifying the shell profile, we can set the order the application searches for the CLASSPATH, for Java apps or the LD_LIBRARY_PATH for C language library code. We do this to ensure access first through the Fujitsu Enterprise Postgres client Postgresql JAR file or the libpq.so libraries. Once these environment variables are set, applications can connect through the Connection Manager.
For example:
export CLASSPATH=/opt/fsepv<version>client64/jdbc/lib/postgresql-jdbc42.jar:${CLASSPATH}
or
export LD_LIBRARY_PATH=/opt/fsepv<version>client64/lib/libpq.so:${LD_LIBRARY_PATH}
Applications using ODBC drivers should ensure they reference the modified psqlodbca.so in their code. For example we can update the odbcinst.ini file to define the Fujitsu Enterprise Postgres interfaces location.
[PostgreSQL]
Description = Fujitsu Enterprise Postgres 15 x64 unicode driver
Driver64 = /opt/fsepv<version>client64/odbc/lib/psqlodbca.so
And the list will keep growing…
The Fujitsu Enterprise Postgres client libraries is by no means complete, and our developers are currently investigating adding a modified version of the pgx driver into the Fujitsu Enterprise Postgres client, for Go Lang compatibility. GoLang is increasingly becoming a popular choice for customers who choose to perform their software development on microservices architecture.
Stay tuned for more on this.