Re: [JDBC] A result was returned by the statement, when none was expected

Поиск
Список
Период
Сортировка
От Eric Scroger
Тема Re: [JDBC] A result was returned by the statement, when none was expected
Дата
Msg-id 3C855562.9030403@carl.org
обсуждение исходный текст
Список pgsql-hackers
Dave,

>Eric,
>
>Which version of the driver are you using? Also do you have logs from
>the postgres backend?
>

We are using driver jar file jdbc7.1-1.2.jar.

I reproduced the problem with postgresql configured the debug setting to 16.
The backend debug logs are attached to this as they are kinda long
(postback.log).

I'm not sure it is data directly, but it does always fail on the same data.
One thing I do know is the problem occurs when we are using
PreparedStatments.
If I put the same SQL statement into a separate statement it works fine.
For your info, here is the code related to the PreparedStatements.

----------------------------------------------------

PreparedStatement psInsertError = null;

            psInsertError = conn.prepareStatement(
            "INSERT INTO " + tabName
            + "(ID,DATA,ATTEMPTS,REASON) VALUES (?,?,?,?)" );

            psInsertError.setLong(1,id);
            psInsertError.setString(2,data);
            psInsertError.setInt(3,attempts);
            psInsertError.setString(4,reason);
            psInsertError.executeUpdate();

----------------------------

Thanks for your suggestions.

Eric


>
>
>My suspicion is something in the data is causing the problem, what I
>don't know, but that's my guess.
>
>Dave
>

>
>-----Original Message-----
>From: pgsql-jdbc-owner@postgresql.org
>[mailto:pgsql-jdbc-owner@postgresql.org] On Behalf Of Eric Scroger
>Sent: Tuesday, March 05, 2002 5:28 PM
>To: pgsql hackers; pgsql-jdbc@postgresql.org
>Cc: ed@carl.org
>Subject: [JDBC] A result was returned by the statement, when none was
>expected
>
>
>JDBC-ers,
>
>We are doing an INSERT and occasionally Postgres throws a SQLException
>because there are unexpected results (see stacktrace below), maybe 10%
>of the time,
>Any idea why this would happen when it works over 90% of the time?
>However, it appears the insert is completed successfully.
>
>We have looked at the source code for ResultSet.java and noticed the
>method reallyResultSet() returns true if any of the fields are non-null.
>I hope that helps in debugging.
>
>Also, we are running Postgres 7.1 with JDK1.2.1.
>
>Regards,
>
>Eric
>
>------------------------------------------------------------------------
>--
>
>IINSERT INTO bad_urls(ID,DATA,ATTEMPTS,REASON) VALUES
>(3375,'http://www.oit.itd.umich.edu/projects/adw2k/chordata/aves.html',0
>,'Unknown
>Host')
>
>A result was returned by the statement, when none was expected.
>    at java.lang.Throwable.fillInStackTrace(Native Method)
>    at java.lang.Throwable.fillInStackTrace(Compiled Code)
>    at java.lang.Throwable.<init>(Compiled Code)
>    at java.lang.Exception.<init>(Compiled Code)
>    at java.sql.SQLException.<init>(SQLException.java:98)
>    at org.postgresql.util.PSQLException.<init>(PSQLException.java:23)
>    at org.postgresql.jdbc2.Statement.executeUpdate(Statement.java:80)
>    at
>org.postgresql.jdbc2.PreparedStatement.executeUpdate(PreparedStatement.j
>ava:122)
>    at InsertError.record(InsertError.java:98)
>    at InsertError.record(InsertError.java:69)
>    at wbCheckUrl$CheckThread.run(wbCheckUrl.java:307)
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 2: you can get off all lists at once with the unregister command
>    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>
>

DEBUG:  query: SELECT ATTEMPTS FROM bad_urls WHERE ID=3364
DEBUG:  parse tree: { QUERY :command 1  :utility <> :resultRelation 0 :into <> :isPortal false :isBinary false :isTemp
false:hasAggs false :hasSubLinks false :rtable ({ RTE :relname bad_urls :relid 96568  :subquery <> :alias <> :eref {
ATTR:relname bad_urls :attrs ( "id"   "data"   "attempts"   "reason" )} :inh true :inFromCl true :checkForRead true
:checkForWritefalse :checkAsUser 0}) :jointree { FROMEXPR :fromlist ({ RANGETBLREF 1 }) :quals { EXPR :typeOid 16
:opTypeop :oper { OPER :opno 96 :opid 0 :opresulttype 16 } :args ({ VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1
:varlevelsup0 :varnoold 1 :varoattno 1} { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false
:constvalue 4 [ 0 0 13 36 ] })}} :rowMarks () :targetList ({ TARGETENTRY :resdom { RESDOM :resno 1 :restype 23
:restypmod-1 :resname attempts :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1 :varattno
3:vartype 23 :vartypmod -1  :varlevelsup 0 :varnoold 1 :varoattno 3}}) :groupClause <> :havingQual <> :distinctClause
<>:sortClause <> :limitOffset <> :limitCount <> :setOperations <> :resultRelations ()} 
DEBUG:  rewritten parse tree:
DEBUG:  { QUERY :command 1  :utility <> :resultRelation 0 :into <> :isPortal false :isBinary false :isTemp false
:hasAggsfalse :hasSubLinks false :rtable ({ RTE :relname bad_urls :relid 96568  :subquery <> :alias <> :eref { ATTR
:relnamebad_urls :attrs ( "id"   "data"   "attempts"   "reason" )} :inh true :inFromCl true :checkForRead true
:checkForWritefalse :checkAsUser 0}) :jointree { FROMEXPR :fromlist ({ RANGETBLREF 1 }) :quals { EXPR :typeOid 16
:opTypeop :oper { OPER :opno 96 :opid 0 :opresulttype 16 } :args ({ VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1
:varlevelsup0 :varnoold 1 :varoattno 1} { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false
:constvalue 4 [ 0 0 13 36 ] })}} :rowMarks () :targetList ({ TARGETENTRY :resdom { RESDOM :resno 1 :restype 23
:restypmod-1 :resname attempts :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1 :varattno
3:vartype 23 :vartypmod -1  :varlevelsup 0 :varnoold 1 :varoattno 3}}) :groupClause <> :havingQual <> :distinctClause
<>:sortClause <> :limitOffset <> :limitCount <> :setOperations <> :resultRelations ()} 
DEBUG:  plan: { INDEXSCAN :startup_cost 0.00 :total_cost 8.14 :rows 10 :width 4 :qptargetlist ({ TARGETENTRY :resdom {
RESDOM:resno 1 :restype 23 :restypmod -1 :resname attempts :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false }
:expr{ VAR :varno 1 :varattno 3 :vartype 23 :vartypmod -1  :varlevelsup 0 :varnoold 1 :varoattno 3}}) :qpqual <>
:lefttree<> :righttree <> :extprm () :locprm () :initplan <> :nprm 0  :scanrelid 1 :indxid ( 96596) :indxqual (({ EXPR
:typeOid16  :opType op :oper { OPER :opno 96 :opid 65 :opresulttype 16 } :args ({ VAR :varno 1 :varattno 1 :vartype 23
:vartypmod-1  :varlevelsup 0 :varnoold 1 :varoattno 1} { CONST :consttype 23 :constlen 4 :constbyval true :constisnull
false:constvalue  4 [ 0 0 13 36 ] })})) :indxqualorig (({ EXPR :typeOid 16  :opType op :oper { OPER :opno 96 :opid 65
:opresulttype16 } :args ({ VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1  :varlevelsup 0 :varnoold 1 :varoattno 1}
{CONST :consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 13 36 ] })})) :indxorderdir 1
}
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
DEBUG:  query: INSERT INTO bad_urls(ID,DATA,ATTEMPTS,REASON) VALUES
(3364,'http://www.discovery.com/stories/nature/hibirds/hibirds.html',0,'NotFound - 404') 
DEBUG:  parse tree: { QUERY :command 3  :utility <> :resultRelation 1 :into <> :isPortal false :isBinary false :isTemp
false:hasAggs false :hasSubLinks false :rtable ({ RTE :relname bad_urls :relid 96568  :subquery <> :alias <> :eref {
ATTR:relname bad_urls :attrs ( "id"   "data"   "attempts"   "reason" )} :inh false :inFromCl false :checkForRead false
:checkForWritetrue :checkAsUser 0}) :jointree { FROMEXPR :fromlist <> :quals <>} :rowMarks () :targetList ({
TARGETENTRY:resdom { RESDOM :resno 1 :restype 23 :restypmod -1 :resname id :reskey 0 :reskeyop 0 :ressortgroupref 0
:resjunkfalse } :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 13 36
]}} { TARGETENTRY :resdom { RESDOM :resno 2 :restype 25 :restypmod -1 :resname data :reskey 0 :reskeyop 0
:ressortgroupref0 :resjunk false } :expr { CONST :consttype 25 :constlen -1 :constbyval false :constisnull false
:constvalue 64 [ 0 0 0 64 104 116 116 112 58 47 47 119 119 119 46 100 105 115 99 111 118 101 114 121 46 99 111 109 47
115116 111 114 105 101 115 47 110 97 116 117 114 101 47 104 105 98 105 114 100 115 47 104 105 98 105 114 100 115 46 104
116109 108 ] }} { TARGETENTRY :resdom { RESDOM :resno 3 :restype 23 :restypmod -1 :resname attempts :reskey 0 :reskeyop
0:ressortgroupref 0 :resjunk false } :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false
:constvalue 4 [ 0 0 0 0 ] }} { TARGETENTRY :resdom { RESDOM :resno 4 :restype 25 :restypmod -1 :resname reason :reskey
0:reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { CONST :consttype 25 :constlen -1 :constbyval false
:constisnullfalse :constvalue  19 [ 0 0 0 19 78 111 116 32 70 111 117 110 100 32 45 32 52 48 52 ] }}) :groupClause <>
:havingQual<> :distinctClause <> :sortClause <> :limitOffset <> :limitCount <> :setOperations <> :resultRelations ()} 
DEBUG:  rewritten parse tree:
DEBUG:  { QUERY :command 3  :utility <> :resultRelation 1 :into <> :isPortal false :isBinary false :isTemp false
:hasAggsfalse :hasSubLinks false :rtable ({ RTE :relname bad_urls :relid 96568  :subquery <> :alias <> :eref { ATTR
:relnamebad_urls :attrs ( "id"   "data"   "attempts"   "reason" )} :inh false :inFromCl false :checkForRead false
:checkForWritetrue :checkAsUser 0}) :jointree { FROMEXPR :fromlist <> :quals <>} :rowMarks () :targetList ({
TARGETENTRY:resdom { RESDOM :resno 1 :restype 23 :restypmod -1 :resname id :reskey 0 :reskeyop 0 :ressortgroupref 0
:resjunkfalse } :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 13 36
]}} { TARGETENTRY :resdom { RESDOM :resno 2 :restype 25 :restypmod -1 :resname data :reskey 0 :reskeyop 0
:ressortgroupref0 :resjunk false } :expr { CONST :consttype 25 :constlen -1 :constbyval false :constisnull false
:constvalue 64 [ 0 0 0 64 104 116 116 112 58 47 47 119 119 119 46 100 105 115 99 111 118 101 114 121 46 99 111 109 47
115116 111 114 105 101 115 47 110 97 116 117 114 101 47 104 105 98 105 114 100 115 47 104 105 98 105 114 100 115 46 104
116109 108 ] }} { TARGETENTRY :resdom { RESDOM :resno 3 :restype 23 :restypmod -1 :resname attempts :reskey 0 :reskeyop
0:ressortgroupref 0 :resjunk false } :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false
:constvalue 4 [ 0 0 0 0 ] }} { TARGETENTRY :resdom { RESDOM :resno 4 :restype 25 :restypmod -1 :resname reason :reskey
0:reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { CONST :consttype 25 :constlen -1 :constbyval false
:constisnullfalse :constvalue  19 [ 0 0 0 19 78 111 116 32 70 111 117 110 100 32 45 32 52 48 52 ] }}) :groupClause <>
:havingQual<> :distinctClause <> :sortClause <> :limitOffset <> :limitCount <> :setOperations <> :resultRelations ()} 
DEBUG:  plan: { RESULT :startup_cost 0.00 :total_cost 0.00 :rows 0 :width 0 :qptargetlist ({ TARGETENTRY :resdom {
RESDOM:resno 1 :restype 23 :restypmod -1 :resname id :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr {
CONST:consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 13 36 ] }} { TARGETENTRY
:resdom{ RESDOM :resno 2 :restype 25 :restypmod -1 :resname data :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk
false} :expr { CONST :consttype 25 :constlen -1 :constbyval false :constisnull false :constvalue  64 [ 0 0 0 64 104 116
116112 58 47 47 119 119 119 46 100 105 115 99 111 118 101 114 121 46 99 111 109 47 115 116 111 114 105 101 115 47 110
97116 117 114 101 47 104 105 98 105 114 100 115 47 104 105 98 105 114 100 115 46 104 116 109 108 ] }} { TARGETENTRY
:resdom{ RESDOM :resno 3 :restype 23 :restypmod -1 :resname attempts :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk
false} :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 0 0 ] }} {
TARGETENTRY:resdom { RESDOM :resno 4 :restype 25 :restypmod -1 :resname reason :reskey 0 :reskeyop 0 :ressortgroupref 0
:resjunkfalse } :expr { CONST :consttype 25 :constlen -1 :constbyval false :constisnull false :constvalue  19 [ 0 0 0
1978 111 116 32 70 111 117 110 100 32 45 32 52 48 52 ] }}) :qpqual <> :lefttree <> :righttree <> :extprm () :locprm ()
:initplan<> :nprm 0  :resconstantqual <>} 
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand
DEBUG:  proc_exit(0)
DEBUG:  shmem_exit(0)
DEBUG:  exit(0)
/usr/local/pgsql/bin/postmaster: reaping dead processes...
/usr/local/pgsql/bin/postmaster: CleanupProc: pid 18076 exited with status 0
DEBUG:  StartTransactionCommand
DEBUG:  query: SELECT ATTEMPTS FROM bad_urls WHERE ID=3375
DEBUG:  parse tree: { QUERY :command 1  :utility <> :resultRelation 0 :into <> :isPortal false :isBinary false :isTemp
false:hasAggs false :hasSubLinks false :rtable ({ RTE :relname bad_urls :relid 96568  :subquery <> :alias <> :eref {
ATTR:relname bad_urls :attrs ( "id"   "data"   "attempts"   "reason" )} :inh true :inFromCl true :checkForRead true
:checkForWritefalse :checkAsUser 0}) :jointree { FROMEXPR :fromlist ({ RANGETBLREF 1 }) :quals { EXPR :typeOid 16
:opTypeop :oper { OPER :opno 96 :opid 0 :opresulttype 16 } :args ({ VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1
:varlevelsup0 :varnoold 1 :varoattno 1} { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false
:constvalue 4 [ 0 0 13 47 ] })}} :rowMarks () :targetList ({ TARGETENTRY :resdom { RESDOM :resno 1 :restype 23
:restypmod-1 :resname attempts :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1 :varattno
3:vartype 23 :vartypmod -1  :varlevelsup 0 :varnoold 1 :varoattno 3}}) :groupClause <> :havingQual <> :distinctClause
<>:sortClause <> :limitOffset <> :limitCount <> :setOperations <> :resultRelations ()} 
DEBUG:  rewritten parse tree:
DEBUG:  { QUERY :command 1  :utility <> :resultRelation 0 :into <> :isPortal false :isBinary false :isTemp false
:hasAggsfalse :hasSubLinks false :rtable ({ RTE :relname bad_urls :relid 96568  :subquery <> :alias <> :eref { ATTR
:relnamebad_urls :attrs ( "id"   "data"   "attempts"   "reason" )} :inh true :inFromCl true :checkForRead true
:checkForWritefalse :checkAsUser 0}) :jointree { FROMEXPR :fromlist ({ RANGETBLREF 1 }) :quals { EXPR :typeOid 16
:opTypeop :oper { OPER :opno 96 :opid 0 :opresulttype 16 } :args ({ VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1
:varlevelsup0 :varnoold 1 :varoattno 1} { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false
:constvalue 4 [ 0 0 13 47 ] })}} :rowMarks () :targetList ({ TARGETENTRY :resdom { RESDOM :resno 1 :restype 23
:restypmod-1 :resname attempts :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1 :varattno
3:vartype 23 :vartypmod -1  :varlevelsup 0 :varnoold 1 :varoattno 3}}) :groupClause <> :havingQual <> :distinctClause
<>:sortClause <> :limitOffset <> :limitCount <> :setOperations <> :resultRelations ()} 
DEBUG:  plan: { INDEXSCAN :startup_cost 0.00 :total_cost 8.14 :rows 10 :width 4 :qptargetlist ({ TARGETENTRY :resdom {
RESDOM:resno 1 :restype 23 :restypmod -1 :resname attempts :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false }
:expr{ VAR :varno 1 :varattno 3 :vartype 23 :vartypmod -1  :varlevelsup 0 :varnoold 1 :varoattno 3}}) :qpqual <>
:lefttree<> :righttree <> :extprm () :locprm () :initplan <> :nprm 0  :scanrelid 1 :indxid ( 96596) :indxqual (({ EXPR
:typeOid16  :opType op :oper { OPER :opno 96 :opid 65 :opresulttype 16 } :args ({ VAR :varno 1 :varattno 1 :vartype 23
:vartypmod-1  :varlevelsup 0 :varnoold 1 :varoattno 1} { CONST :consttype 23 :constlen 4 :constbyval true :constisnull
false:constvalue  4 [ 0 0 13 47 ] })})) :indxqualorig (({ EXPR :typeOid 16  :opType op :oper { OPER :opno 96 :opid 65
:opresulttype16 } :args ({ VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1  :varlevelsup 0 :varnoold 1 :varoattno 1}
{CONST :consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 13 47 ] })})) :indxorderdir 1
}
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
DEBUG:  query: INSERT INTO bad_urls(ID,DATA,ATTEMPTS,REASON) VALUES
(3375,'http://www.oit.itd.umich.edu/projects/adw2k/chordata/aves.html',0,'UnknownHost') 
DEBUG:  parse tree: { QUERY :command 3  :utility <> :resultRelation 1 :into <> :isPortal false :isBinary false :isTemp
false:hasAggs false :hasSubLinks false :rtable ({ RTE :relname bad_urls :relid 96568  :subquery <> :alias <> :eref {
ATTR:relname bad_urls :attrs ( "id"   "data"   "attempts"   "reason" )} :inh false :inFromCl false :checkForRead false
:checkForWritetrue :checkAsUser 0}) :jointree { FROMEXPR :fromlist <> :quals <>} :rowMarks () :targetList ({
TARGETENTRY:resdom { RESDOM :resno 1 :restype 23 :restypmod -1 :resname id :reskey 0 :reskeyop 0 :ressortgroupref 0
:resjunkfalse } :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 13 47
]}} { TARGETENTRY :resdom { RESDOM :resno 2 :restype 25 :restypmod -1 :resname data :reskey 0 :reskeyop 0
:ressortgroupref0 :resjunk false } :expr { CONST :consttype 25 :constlen -1 :constbyval false :constisnull false
:constvalue 66 [ 0 0 0 66 104 116 116 112 58 47 47 119 119 119 46 111 105 116 46 105 116 100 46 117 109 105 99 104 46
101100 117 47 112 114 111 106 101 99 116 115 47 97 100 119 50 107 47 99 104 111 114 100 97 116 97 47 97 118 101 115 46
104116 109 108 ] }} { TARGETENTRY :resdom { RESDOM :resno 3 :restype 23 :restypmod -1 :resname attempts :reskey 0
:reskeyop0 :ressortgroupref 0 :resjunk false } :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull
false:constvalue  4 [ 0 0 0 0 ] }} { TARGETENTRY :resdom { RESDOM :resno 4 :restype 25 :restypmod -1 :resname reason
:reskey0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { CONST :consttype 25 :constlen -1 :constbyval false
:constisnullfalse :constvalue  16 [ 0 0 0 16 85 110 107 110 111 119 110 32 72 111 115 116 ] }}) :groupClause <>
:havingQual<> :distinctClause <> :sortClause <> :limitOffset <> :limitCount <> :setOperations <> :resultRelations ()} 
DEBUG:  rewritten parse tree:
DEBUG:  { QUERY :command 3  :utility <> :resultRelation 1 :into <> :isPortal false :isBinary false :isTemp false
:hasAggsfalse :hasSubLinks false :rtable ({ RTE :relname bad_urls :relid 96568  :subquery <> :alias <> :eref { ATTR
:relnamebad_urls :attrs ( "id"   "data"   "attempts"   "reason" )} :inh false :inFromCl false :checkForRead false
:checkForWritetrue :checkAsUser 0}) :jointree { FROMEXPR :fromlist <> :quals <>} :rowMarks () :targetList ({
TARGETENTRY:resdom { RESDOM :resno 1 :restype 23 :restypmod -1 :resname id :reskey 0 :reskeyop 0 :ressortgroupref 0
:resjunkfalse } :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 13 47
]}} { TARGETENTRY :resdom { RESDOM :resno 2 :restype 25 :restypmod -1 :resname data :reskey 0 :reskeyop 0
:ressortgroupref0 :resjunk false } :expr { CONST :consttype 25 :constlen -1 :constbyval false :constisnull false
:constvalue 66 [ 0 0 0 66 104 116 116 112 58 47 47 119 119 119 46 111 105 116 46 105 116 100 46 117 109 105 99 104 46
101100 117 47 112 114 111 106 101 99 116 115 47 97 100 119 50 107 47 99 104 111 114 100 97 116 97 47 97 118 101 115 46
104116 109 108 ] }} { TARGETENTRY :resdom { RESDOM :resno 3 :restype 23 :restypmod -1 :resname attempts :reskey 0
:reskeyop0 :ressortgroupref 0 :resjunk false } :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull
false:constvalue  4 [ 0 0 0 0 ] }} { TARGETENTRY :resdom { RESDOM :resno 4 :restype 25 :restypmod -1 :resname reason
:reskey0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { CONST :consttype 25 :constlen -1 :constbyval false
:constisnullfalse :constvalue  16 [ 0 0 0 16 85 110 107 110 111 119 110 32 72 111 115 116 ] }}) :groupClause <>
:havingQual<> :distinctClause <> :sortClause <> :limitOffset <> :limitCount <> :setOperations <> :resultRelations ()} 
DEBUG:  plan: { RESULT :startup_cost 0.00 :total_cost 0.00 :rows 0 :width 0 :qptargetlist ({ TARGETENTRY :resdom {
RESDOM:resno 1 :restype 23 :restypmod -1 :resname id :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr {
CONST:consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 13 47 ] }} { TARGETENTRY
:resdom{ RESDOM :resno 2 :restype 25 :restypmod -1 :resname data :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk
false} :expr { CONST :consttype 25 :constlen -1 :constbyval false :constisnull false :constvalue  66 [ 0 0 0 66 104 116
116112 58 47 47 119 119 119 46 111 105 116 46 105 116 100 46 117 109 105 99 104 46 101 100 117 47 112 114 111 106 101
99116 115 47 97 100 119 50 107 47 99 104 111 114 100 97 116 97 47 97 118 101 115 46 104 116 109 108 ] }} { TARGETENTRY
:resdom{ RESDOM :resno 3 :restype 23 :restypmod -1 :resname attempts :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk
false} :expr { CONST :consttype 23 :constlen 4 :constbyval true :constisnull false :constvalue  4 [ 0 0 0 0 ] }} {
TARGETENTRY:resdom { RESDOM :resno 4 :restype 25 :restypmod -1 :resname reason :reskey 0 :reskeyop 0 :ressortgroupref 0
:resjunkfalse } :expr { CONST :consttype 25 :constlen -1 :constbyval false :constisnull false :constvalue  16 [ 0 0 0
1685 110 107 110 111 119 110 32 72 111 115 116 ] }}) :qpqual <> :lefttree <> :righttree <> :extprm () :locprm ()
:initplan<> :nprm 0  :resconstantqual <>} 
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand

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

Предыдущее
От: "Nicolas Bazin"
Дата:
Сообщение: Fw: Postgresql backend to perform vacuum automatically
Следующее
От: Christopher Kings-Lynne
Дата:
Сообщение: Re: Intervening in Parser -> Planner Stage