Skip site navigation (1) Skip section navigation (2)

Improved JDBC driver part 2

From: Radosław Smogura <mail(at)smogura(dot)eu>
To: pgsql-jdbc(at)postgresql(dot)org, Александър Шопов <lists(at)kambanaria(dot)org>, PG Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Improved JDBC driver part 2
Date: 2010-11-30 18:49:03
Message-ID: 201011301949.03336.mail@smogura.eu (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-jdbc
Hello,

Maybe you are interested about this what I done with JDBC

=== Original driver (Text mode) ===
* Memory *
1. Memory usage improvments when using result set input streams (no uneeded 
memory copy) - needs few touches for bigger performance.
2. Memory usage improvments for large data, should be no problem to load 1GB 
bytea[] when have only 300MB of memory ("threshold" size still hardcoded).

* JDBC 4 *
1. XML are now correctly transformed before send to server - previous version 
used normal text-file transformations that is not enaugh.
2. In all modes (text/binary) XMLs are sended in binary mode, so driver don't 
need to do special transformation (does it require libxml?), until character 
streams are used.
3. JDBC4 exception throwing.
4. XML objects are readable only once, you can't reuse it, update form result 
set (silently set to null on RS.updateRow() - shouldn't be silent) returns 
null till refreshRow(), but you can write to them after load. 
5.Target XML behavior is streaming behavior to don't repeat problems with 
bytea.

* JDBC 4.1 *
1. Just started.

* Others *
1. Few additional test cases. Few utils for XML checking (string equals is too 
less) no good, but better.
2. Fixed bug, causing inproper time(stamps) encoding for WITH TIME ZONE fields, 
after changing default time zone.

=== Binary mode ===
1. Read for almost all data types with arrays.
2. Write for few.
3. Much more restrictive checking when casting form one type to other.
4. Exceptions when casting from one type to other inproper type.
5. Still ResultSet.getString() for XML will return XML - this spec. prohibited 
(X - base type conversion, x - possible conversion, no x - no base and 
possible = no conversion).
6. No getPriviliges for metadata - no binary output for ACL!!!
7. Many, many tests passed.
8. Data reading is faster for all reads (checked with profiler, against 
original driver).

Driver is here http://www.rsmogura.net/pgsql/pgjdbc_exp_20101130_C.tar.gz is 
currently JDK 6 compatible (will be not), compressed patch takes about 136kb 
gziped.

Kind regards & have a nice day
----------
Radosław Smogura
http://www.softperience.eu

In response to

Responses

pgsql-hackers by date

Next:From: Kevin GrittnerDate: 2010-11-30 19:12:54
Subject: Re: DELETE with LIMIT (or my first hack)
Previous:From: Tom LaneDate: 2010-11-30 18:48:39
Subject: Re: [GENERAL] column-level update privs + lock table

pgsql-jdbc by date

Next:From: Dave CramerDate: 2010-12-01 10:38:41
Subject: Re: Storing timestamps in text format
Previous:From: Francesco DegrassiDate: 2010-11-30 18:42:51
Subject: Postgresql XA prepare() method behaviour

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group