Обсуждение: Inconsistent: Getting array from result set

Поиск
Список
Период
Сортировка

Inconsistent: Getting array from result set

От
robrez
Дата:
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.


Re: Inconsistent: Getting array from result set

От
Dave Cramer
Дата:
Rob,

You refer to a test you ran, but I don't see anything attached ?

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


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

Re: Inconsistent: Getting array from result set

От
robrez
Дата:
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.


Re: Inconsistent: Getting array from result set

От
Dave Cramer
Дата:

well the code made it, the results didn't :(



Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


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.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

Re: Inconsistent: Getting array from result set

От
robrez
Дата:
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.


Re: Inconsistent: Getting array from result set

От
Craig Ringer
Дата:
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


Re: Inconsistent: Getting array from result set

От
robrez
Дата:
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.