Re: problem: query result in jdbc is <> result in psql

Поиск
Список
Период
Сортировка
От Dave Cramer
Тема Re: problem: query result in jdbc is <> result in psql
Дата
Msg-id CADK3HHKe-yGSsfKAVEyL5rm+5x=iecVsuDWU5q7to7sCZUG8Lg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: problem: query result in jdbc is <> result in psql  (Joseph Shraibman <jks@selectacast.net>)
Ответы Re: problem: query result in jdbc is <> result in psql  (Joseph Shraibman <jks@selectacast.net>)
Список pgsql-jdbc
Joseph,

I just tried your code using the latest driver and pg 8.4 and 9.1  it
works fine. What version of the server are you using ?

relname    locktype    database    relation    page    tuple    virtualxid    transactionid    classid    objid
objsubid   virtualtransaction    pid    mode    granted 
-------------------------
a    relation    16385    16392    null    null    null    null    null    null    null    2/15    2392    RowShareLock
  true 
null    virtualxid    null    null    null    null    2/15    null    null    null    null    2/15    2392
ExclusiveLock   true 
pg_class    relation    16385    1259    null    null    null    null    null    null    null    3/11    2468
AccessShareLock   true 
pg_class_oid_index    relation    16385    2662    null    null    null    null    null    null    null    3/11    2468
  AccessShareLock    true 
pg_class_relname_nsp_index    relation    16385    2663    null    null    null    null    null    null    null    3/11
  2468    AccessShareLock    true 
pg_locks    relation    16385    11000    null    null    null    null    null    null    null    3/11    2468
AccessShareLock   true 
null    virtualxid    null    null    null    null    3/11    null    null    null    null    3/11    2468
ExclusiveLock   true 


Dave Cramer

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



On Sun, Jan 8, 2012 at 7:43 PM, Joseph Shraibman <jks@selectacast.net> wrote:
> The equivalent java code:
>
> import java.sql.*;
>
> class PgTest{
>
>    public static void main(String[] args)throws Exception{
>        Class.forName("org.postgresql.Driver");
>        String url="jdbc:postgresql://localhost/template1";
>        String usr = "jks";
>        Statement st = DriverManager.getConnection(url,
> usr,"").createStatement();
>        String sql = "SELECT (select relname from pg_catalog.pg_class where
> pg_catalog.pg_class.oid = relation) as relname, * FROM pg_locks ORDER BY
> pid, relation;";
>        ResultSet rs = st.executeQuery(sql);
> int cols = rs.getMetaData().getColumnCount();
>
>        for(int colnum = 1; colnum <= cols ; colnum++)
>            System.out.print(rs.getMetaData().getColumnLabel(colnum) + "\t");
>
>        System.out.println();
>        System.out.println("-------------------------");
>
>        while(rs.next()){
>            for(int colnum = 1; colnum <= cols ; colnum++)
>                System.out.print( rs.getObject(colnum) + "\t");
>            System.out.println();
>        }
>
>    }
> }
>
> produces:
>
> [jks@jks-desktop /tmp]{f15}$ javac PgTest.java && java -cp
> ~/.ivy2/cache/postgresql/postgresql/jars/postgresql-9.1-901.jdbc4.jar:.
> PgTest
>
> relname locktype        database        relation        page    tuple
> virtualxid      transactionid   classid objid   objsubid
>  virtualtransaction      pid     mode    granted
> -------------------------
> null    relation        16384   16406   null    null    null    null    null
>    null    null    2/19    7613    AccessExclusiveLock     true
> null    virtualxid      null    null    null    null    2/19    null    null
>    null    null    2/19    7613    ExclusiveLock   true
> null    relation        16384   16406   null    null    null    null    null
>    null    null    4/43    7796    AccessExclusiveLock     false
> null    virtualxid      null    null    null    null    4/43    null    null
>    null    null    4/43    7796    ExclusiveLock   true
> pg_class        relation        1       1259    null    null    null    null
>    null    null    null    3/2656  22125   AccessShareLock true
> pg_class_oid_index      relation        1       2662    null    null    null
>    null    null    null    null    3/2656  22125   AccessShareLock true
> pg_class_relname_nsp_index      relation        1       2663    null    null
>    null    null    null    null    null    3/2656  22125   AccessShareLock
> true
> pg_locks        relation        1       11000   null    null    null    null
>    null    null    null    3/2656  22125   AccessShareLock true
> null    virtualxid      null    null    null    null    3/2656  null    null
>    null    null    3/2656  22125   ExclusiveLock   true
>
>
>
> On 01/08/2012 07:12 PM, Joseph Shraibman wrote:
>>
>> I'm working on some code that reads info from the pg lock table.
>>
>>
>> jks=# SELECT (select relname from pg_catalog.pg_class where
>> pg_catalog.pg_class.oid = relation) as relname, * FROM pg_locks ORDER BY
>> pid, relation;
>>          relname           |  locktype  | database | relation | page |
>> tuple | virtualxid | transactionid | classid | objid | objsubid |
>> virtualtransaction |  pid  |        mode         | granted
>>
>>
----------------------------+------------+----------+----------+------+-------+------------+---------------+---------+-------+----------+--------------------+-------+---------------------+---------
>>  a                          | relation   |    16384 |    16406 |      |
>>     |            |               |         |       |          | 2/19
>>       |  7613 | AccessExclusiveLock | t
>>                            | virtualxid |          |          |      |
>>   | 2/19       |               |         |       |          | 2/19
>>     |  7613 | ExclusiveLock       | t
>>  a                          | relation   |    16384 |    16406 |      |
>>     |            |               |         |       |          | 4/43
>>       |  7796 | AccessExclusiveLock | f
>>                            | virtualxid |          |          |      |
>>   | 4/43       |               |         |       |          | 4/43
>>     |  7796 | ExclusiveLock       | t
>>  pg_class                   | relation   |    16384 |     1259 |      |
>>     |            |               |         |       |          | 16/13
>>        | 20847 | AccessShareLock     | t
>>  pg_class_oid_index         | relation   |    16384 |     2662 |      |
>>     |            |               |         |       |          | 16/13
>>        | 20847 | AccessShareLock     | t
>>  pg_class_relname_nsp_index | relation   |    16384 |     2663 |      |
>>     |            |               |         |       |          | 16/13
>>        | 20847 | AccessShareLock     | t
>>  pg_locks                   | relation   |    16384 |    11000 |      |
>>     |            |               |         |       |          | 16/13
>>        | 20847 | AccessShareLock     | t
>>                            | virtualxid |          |          |      |
>>   | 16/13      |               |         |       |          | 16/13
>>      | 20847 | ExclusiveLock       | t
>> (9 rows)
>>
>> In this example I tried to lock the 'a' table in two different psql
>> windows.
>> The works fine in psql. However when I run the query in jdbc I don't see
>> the 'a's.
>>
>> I ran this script with
>>
>>  scala -cp
>> ~/.ivy2/cache/postgresql/postgresql/jars/postgresql-9.1-901.jdbc4.jar <
>> /tmp/pgjdbc.scala
>>
>>
>> import java.sql._
>> Class.forName("org.postgresql.Driver")
>> val url="jdbc:postgresql://localhost/template1"
>> val usr = "jks"
>> val conn = DriverManager.getConnection(url, usr,"")
>> val st = conn.createStatement
>> val sql = "SELECT (select relname from pg_catalog.pg_class where
>> pg_catalog.pg_class.oid = relation) as relname, * FROM pg_locks ORDER BY
>> pid, relation;"
>> val rs = st.executeQuery(sql)
>> val cols = rs.getMetaData().getColumnCount();
>>
>>  for(colnum <- 1 to cols)
>>     print(rs.getMetaData().getColumnLabel(colnum) + "\t")
>> println("-------------------------")
>>
>> while(rs.next){
>>   for(colnum <- 1 to cols)
>>      print( rs.getObject(colnum) + "\t")
>>   println
>> }
>>
>> The output is:
>>
>> null    relation        16384   16406   null    null    null    null
>>  null    null    null    2/19    7613    AccessExclusiveLock     true
>> null    virtualxid      null    null    null    null    2/19    null
>>  null    null    null    2/19    7613    ExclusiveLock   true
>> null    relation        16384   16406   null    null    null    null
>>  null    null    null    4/43    7796    AccessExclusiveLock     false
>> null    virtualxid      null    null    null    null    4/43    null
>>  null    null    null    4/43    7796    ExclusiveLock   true
>> pg_class        relation        1       1259    null    null    null
>>  null    null    null    null    17/462  21265   AccessShareLock true
>> pg_class_oid_index      relation        1       2662    null    null
>>  null    null    null    null    null    17/462  21265   AccessShareLock
>> true
>> pg_class_relname_nsp_index      relation        1       2663    null
>>  null    null    null    null    null    null    17/462  21265
>> AccessShareLock true
>> pg_locks        relation        1       11000   null    null    null
>>  null    null    null    null    17/462  21265   AccessShareLock true
>> null    virtualxid      null    null    null    null    17/462  null
>>  null    null    null    17/462  21265   ExclusiveLock   true
>>
>> notice that there is only 'null' in the left column where 'a's should be.
>>
>> Both psql and jdbc were connecting using the same user, 'jks'.  The pg
>> version is: PostgreSQL 9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc
>> (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9), 64-bit
>>
>
>
> --
> Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-jdbc

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Oliver Jowett
Дата:
Сообщение: Re: [GENERAL] Binary Large Objects (LOB/BLOB) in Hibernate and JDBC: Unresolved issues
Следующее
От: Radosław Smogura
Дата:
Сообщение: Re: [GENERAL] Binary Large Objects (LOB/BLOB) in Hibernate and JDBC: Unresolved issues