Обсуждение: Inconsistent: Getting array from result set
I am encountering inconsistent behavior when getting an array from a result set that was produced via a prepared statement. It seems that the first 5 times the result set is generated from a given statement, everything is good. Attempts 6-n do something strange. It's tough to explain so here is a test I ran... Here is the output... Is the the result of some sort of lazy-loading mechanism in the sql.Array? I'm aware of any number of ways to work-around this 'issue'... but the inconsistency strikes me as odd. I'm running postgres 9-2. I could duplicate this issue using the following jars: *9.2-1003-jdbc3 9.2-1003-jdbc4 9.2-1002-jdbc4* I had an OLD jar hanging around that worked as I would have expected... I could not duplicate the issue using* 8.3-604-jdbc3* JRE is 7 Thanks for any input -- View this message in context: http://postgresql.1045698.n5.nabble.com/Inconsistent-Getting-array-from-result-set-tp5775841.html Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.
Rob,
You refer to a test you ran, but I don't see anything attached ?
On Thu, Oct 24, 2013 at 7:27 PM, robrez <resendez.java@gmail.com> wrote:
I am encountering inconsistent behavior when getting an array from a result
set that was produced via a prepared statement.
It seems that the first 5 times the result set is generated from a given
statement, everything is good.
Attempts 6-n do something strange. It's tough to explain so here is a test I
ran...
Here is the output...
Is the the result of some sort of lazy-loading mechanism in the sql.Array?
I'm aware of any number of ways to work-around this 'issue'... but the
inconsistency strikes me as odd.
I'm running postgres 9-2.
I could duplicate this issue using the following jars:
*9.2-1003-jdbc3
9.2-1003-jdbc4
9.2-1002-jdbc4*
I had an OLD jar hanging around that worked as I would have expected... I
could not duplicate the issue using* 8.3-604-jdbc3*
JRE is 7
Thanks for any input
--
View this message in context: http://postgresql.1045698.n5.nabble.com/Inconsistent-Getting-array-from-result-set-tp5775841.html
Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.
--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc
ha yeah that's not right.... I guess some of that tags used on 'nabble', where I posted the issue don't translate when they mail it off... You can see the snippet of code and its output at this url: http://postgresql.1045698.n5.nabble.com/Inconsistent-Getting-array-from-result-set-td5775841.htm blah.txt <http://postgresql.1045698.n5.nabble.com/file/n5775915/blah.txt> l -- View this message in context: http://postgresql.1045698.n5.nabble.com/Inconsistent-Getting-array-from-result-set-tp5775841p5775915.html Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.
well the code made it, the results didn't :(
On Fri, Oct 25, 2013 at 9:06 AM, robrez <resendez.java@gmail.com> wrote:
ha yeah that's not right....
I guess some of that tags used on 'nabble', where I posted the issue don't
translate when they mail it off...
You can see the snippet of code and its output at this url:
http://postgresql.1045698.n5.nabble.com/Inconsistent-Getting-array-from-result-set-td5775841.htm
blah.txt <http://postgresql.1045698.n5.nabble.com/file/n5775915/blah.txt> l
--
View this message in context: http://postgresql.1045698.n5.nabble.com/Inconsistent-Getting-array-from-result-set-tp5775841p5775915.htmlSent from the PostgreSQL - jdbc mailing list archive at Nabble.com.
--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc
annddddd now that link doesn't work... //BoilerPlate... db.getConnection().setAutoCommit(false); String TABLE = "CREATE TABLE array_test ( at_id integer, at_array character varying[] )"; PreparedStatement createStmt = db.getConnection().prepareStatement(TABLE); createStmt.execute(); createStmt.close(); String INSERT = "INSERT INTO array_test (at_id, at_array) VALUES (?, ARRAY[ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K' ])"; PreparedStatement insertStmt = db.getConnection().prepareStatement(INSERT); for (int i = 0; i < 100; i++) { insertStmt.setInt(1, i); insertStmt.execute(); } insertStmt.close(); String SELECT = "SELECT at_id, at_array, at_array::character varying as at_array_str FROM array_test WHERE at_id = ?"; PreparedStatement selectStmt = db.getConnection().prepareStatement(SELECT); for (int i = 0; i < 100; i++) { selectStmt.setInt(1, i); ResultSet rs = selectStmt.executeQuery(); while (rs.next()) { Integer id = rs.getInt("at_id"); Array arrayObj = rs.getArray("at_array"); String arrayStr = rs.getString("at_array_str"); if (arrayObj != null && arrayStr != null && arrayObj.toString() != null) { if (arrayObj.toString().equals(arrayStr)) { System.out.println("OKAY Id=" + id.toString() + " " + arrayObj.toString() + " == " + arrayStr); } else { System.out.println("BAD! Id=" + id.toString() + " " + arrayObj.toString() + " != " + arrayStr); } } else { if (arrayObj != null) { String[] asStringArray = (String[]) ((Array) arrayObj).getArray(); if (asStringArray != null) { List<String> asList = Arrays.asList(asStringArray); //WHY was arrayStr null? WHY is arrayObj.toString() null? System.out.println("BAD! Id=" + id.toString() + " NULL != " + asList.toString()); } } } } rs.close(); } selectStmt.close(); //The following reads the same records, but only makes 1 result set so everything 'works' String SELECTALL = "SELECT at_id, at_array, at_array::character varying as at_array_str FROM array_test ORDER BY at_id"; PreparedStatement selectAllStmt = db.getConnection().prepareStatement(SELECTALL); ResultSet rs = selectAllStmt.executeQuery(); while (rs.next()) { Integer id = rs.getInt("at_id"); Object arrayObj = rs.getObject("at_array"); String arrayStr = rs.getString("at_array_str"); if (arrayObj != null && arrayStr != null && arrayObj.toString() != null) { if (arrayObj.toString().equals(arrayStr)) { System.out.println("OKAY Id=" + id.toString() + " " + arrayObj.toString() + " == " + arrayStr); } else { System.out.println("BAD! Id=" + id.toString() + " " + arrayObj.toString() + " != " + arrayStr); } } else { if (arrayObj != null) { String[] asStringArray = (String[]) ((Array) arrayObj).getArray(); if (asStringArray != null) { List<String> asList = Arrays.asList(asStringArray); //WHY was arrayStr null? WHY is arrayObj.toString() null? System.out.println("BAD! Id=" + id.toString() + " NULL != " + asList.toString()); } } } } rs.close(); selectAllStmt.close(); PreparedStatement dropStmt = db.getConnection().prepareStatement("DROP TABLE array_test"); dropStmt.execute(); dropStmt.close(); db.getConnection().setAutoCommit(true); //output: OKAY Id=0 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=1 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=2 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=3 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=4 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} BAD! Id=5 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=6 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=7 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=8 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=9 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=10 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=11 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=12 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=13 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=14 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=15 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=16 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=17 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=18 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=19 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=20 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=21 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=22 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=23 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=24 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=25 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=26 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=27 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=28 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=29 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=30 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=31 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=32 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=33 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=34 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=35 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=36 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=37 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=38 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=39 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=40 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=41 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=42 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=43 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=44 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=45 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=46 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=47 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=48 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=49 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=50 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=51 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=52 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=53 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=54 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=55 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=56 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=57 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=58 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=59 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=60 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=61 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=62 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=63 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=64 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=65 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=66 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=67 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=68 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=69 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=70 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=71 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=72 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=73 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=74 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=75 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=76 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=77 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=78 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=79 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=80 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=81 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=82 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=83 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=84 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=85 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=86 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=87 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=88 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=89 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=90 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=91 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=92 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=93 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=94 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=95 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=96 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=97 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=98 NULL != [A, B, C, D, E, F, G, H, I, J, K] BAD! Id=99 NULL != [A, B, C, D, E, F, G, H, I, J, K] OKAY Id=0 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=1 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=2 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=3 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=4 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=5 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=6 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=7 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=8 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=9 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=10 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=11 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=12 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=13 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=14 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=15 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=16 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=17 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=18 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=19 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=20 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=21 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=22 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=23 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=24 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=25 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=26 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=27 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=28 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=29 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=30 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=31 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=32 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=33 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=34 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=35 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=36 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=37 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=38 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=39 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=40 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=41 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=42 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=43 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=44 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=45 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=46 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=47 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=48 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=49 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=50 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=51 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=52 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=53 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=54 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=55 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=56 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=57 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=58 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=59 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=60 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=61 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=62 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=63 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=64 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=65 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=66 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=67 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=68 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=69 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=70 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=71 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=72 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=73 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=74 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=75 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=76 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=77 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=78 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=79 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=80 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=81 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=82 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=83 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=84 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=85 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=86 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=87 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=88 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=89 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=90 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=91 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=92 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=93 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=94 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=95 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=96 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=97 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=98 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} OKAY Id=99 {A,B,C,D,E,F,G,H,I,J,K} == {A,B,C,D,E,F,G,H,I,J,K} Sorry it isn't a real test using the test suite. -- View this message in context: http://postgresql.1045698.n5.nabble.com/Inconsistent-Getting-array-from-result-set-tp5775841p5775916.html Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.
On 10/25/2013 07:27 AM, robrez wrote: > I am encountering inconsistent behavior when getting an array from a result > set that was produced via a prepared statement. > > It seems that the first 5 times the result set is generated from a given > statement, everything is good. > Attempts 6-n do something strange. By default, PgJDBC switches from client-side to server-side prepared statements at five executions. So I'd say you're seeing an issue related to that. Try playing with the prepared statement threshold, see if the problem behaviour changes along with the threshold. See the documentation for details on that. -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Craig's inference that the difference in behavior after 5 usages was related to the statement threshold seems to be correct. String SELECT = "SELECT at_id, at_array, at_array::character varying as at_array_str FROM array_test WHERE at_id = ?"; PreparedStatement selectStmt = db.getConnection().prepareStatement(SELECT); PGStatement pgStmt = (PGStatement) selectStmt; pgStmt.setPrepareThreshold(50); Setting the threshold to 50 made the sql.Array.toString() method return the expected value (not null) 50 times instead of 5. -- View this message in context: http://postgresql.1045698.n5.nabble.com/Inconsistent-Getting-array-from-result-set-tp5775841p5776079.html Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.