Updating the Postgresql JDBC Driver

Four Stars

Updating the Postgresql JDBC Driver

I've cloned tPostgresqlBulkExec and modified it to use COPY FROM STDIN, but COPY FROM STDIN is not supported in postgresql-8.3-603.jdbc3.jar, so I'm trying to update the Postgresql JDBC Driver to a more recent version. Unfortunately, I can not get the tPostgresql components to use a different version of the Postgresql JDBC Driver.
I've gone into the Postgresql *_java.xml files and changed the JDBC driver specified there, no luck. I've changed the file name of a more recent version of the Postgresql JDBC Driver to postgresql-8.3-603.jdbc3.jar and placed it the directories for the tPostgresql components, no luck. The directions listed in www.talendforge.org/forum/viewtopic.php?id=15594 do not work for Talend 5.2.1.
Please advise.
Seventeen Stars

Re: Updating the Postgresql JDBC Driver

At first, the driver is used also in the connection component.
If you load at any place in your job an older version of the driver, the newer classes from your driver will not loaded!
Check which tPostgresql components you already use and check if they use also the newer driver version.
Four Stars

Re: Updating the Postgresql JDBC Driver

Hi Jan,
Thank you for responding. On my entire file system, I've found and replaced all copies of postgresql-8.3-603.jdbc3.jar with postgresql-9.1-903.jdbc3.jar renamed to postgresql-8.3-603.jdbc3.jar. I still get the same error message thrown by 8.3. Because of my situation, I have to drop my work with Talend. Again, thank you for all your kind help.
Four Stars

Re: Updating the Postgresql JDBC Driver

OK, I've tried again, this time replacing postgresql-8.3-603.jdbc3.jar with postgresql-9.2-1002.jdbc3.jar renamed to postgresql-8.3-603.jdbc3.jar.
I've also inserted this snippet into my code:
java.sql.DatabaseMetaData dbmd = conn_<%=cid%>.getMetaData();
System.out.println("===== Database info =====");
System.out.println("DatabaseProductName: " + dbmd.getDatabaseProductName() );
System.out.println("DatabaseProductVersion: " + dbmd.getDatabaseProductVersion() );
System.out.println("DatabaseMajorVersion: " + dbmd.getDatabaseMajorVersion() );
System.out.println("DatabaseMinorVersion: " + dbmd.getDatabaseMinorVersion() );
System.out.println("===== Driver info =====");
System.out.println("DriverName: " + dbmd.getDriverName() );
System.out.println("DriverVersion: " + dbmd.getDriverVersion() );
System.out.println("DriverMajorVersion: " + dbmd.getDriverMajorVersion() );
System.out.println("DriverMinorVersion: " + dbmd.getDriverMinorVersion() );
System.out.println("===== JDBC/DB attributes =====");
System.out.print("Supports getGeneratedKeys(): ");
if (dbmd.supportsGetGeneratedKeys() )
This snippet of code shows that Talend is indeed using the Postgresql 9.2 JDBC Driver.
I've created a component that tries to do COPY FROM STDIN, and fails with this stack trace:
org.postgresql.util.PSQLException: ERROR: COPY from stdin failed: The JDBC driver currently does not support COPY operations.
Where: COPY tmp_customercsv_tmp, line 1
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:395)
at ted.bulkexec_copy_ted_0_1.BulkExec_Copy_TED.tFileInputDelimited_1Process(BulkExec_Copy_TED.java:1353)
at ted.bulkexec_copy_ted_0_1.BulkExec_Copy_TED.tPostgresqlConnection_1Process(BulkExec_Copy_TED.java:564)
at ted.bulkexec_copy_ted_0_1.BulkExec_Copy_TED.runJobInTOS(BulkExec_Copy_TED.java:2379)
I managed to get the source code for the Postgresql 9.2 JDBC Driver from http://jdbc.postgresql.org/download.html, and opened up QueryExecutorImpl.java in a text editor. As the stack trace above suggests, the error message "The JDBC driver currently does not support COPY operations" is found in this file! In 9.2!
I also see code for using COPY FROM STDIN. My guess is that this new functionality can only be accessed by using methods not present in 8.3, while Talend is using methods from 8.3 provided for backwards compatibility.


Talend named a Leader.

Get your copy


Kickstart your first data integration and ETL projects.

Download now

What’s New for Talend Summer ’19

Watch the recorded webinar!

Watch Now

Best Practices for Using Context Variables with Talend – Part 1

Learn how to do cool things with Context Variables


Migrate Data from one Database to another with one Job using the Dynamic Schema

Find out how to migrate from one database to another using the Dynamic schema


Best Practices for Using Context Variables with Talend – Part 4

Pick up some tips and tricks with Context Variables