Обсуждение: question regarding upgrade from pg74.215.jdbc3.jar to postgresql-8.1-407.jdbc3.jar. function does not exist appeared ??? Please help :-/
Hi, I just upgraded my jdbc driver and fixing stuff to make it work with the new driver. I cannot find the answer to the following one. I tried with the old driver and everything works. With the new one that doesn't work. Here is the function declaration: CREATE OR REPLACE FUNCTION usp_Comptabilite_AgeDeCompteClient(VARCHAR, VARCHAR, DATE, BOOLEAN, BOOLEAN, INT, VARCHAR) RETURNS refcursor AS $$ Here is the error that I grabbed from the postgresql log file: select * from usp_Comptabilite_AgeDeCompteClient(M, NULL, 2006-08-22 -0400, 1, 1, 0, NULL) 2006-08-22 18:04:27 LOG: statement: PREPARE <unnamed> AS select * from usp_Comptabilite_AgeDeCompteClient($1, $2, $3, $4, $5, $6, $7) 2006-08-22 18:04:27 ERROR: function usp_comptabilite_agedecompteclient(character varying, character varying, "unknown", boolean, boolean, character varying, "unknown") does not exist 2006-08-22 18:04:27 HINT: No function matches the given name and argument types. You may need to add explicit type casts. 2006-08-22 18:04:27 STATEMENT: select * from usp_Comptabilite_AgeDeCompteClient($1, $2, $3, $4, $5, $6, $7) If I execute the statement on pgAdminIII it works: select * from usp_Comptabilite_AgeDeCompteClient('M', NULL, '2006-08-22', true, true, '0', NULL) ; Any idea what is the difference between drivers that can explain this. And of course how I can fix the problem! Thanks for your help! It's really appreciated! Best Regards /David P.S.: I traced with the debugger and I do call setDate for arg $3. I don't understand why it's still unknow ?
David Gagnon wrote: > CREATE OR REPLACE FUNCTION usp_Comptabilite_AgeDeCompteClient(VARCHAR, > VARCHAR, DATE, BOOLEAN, BOOLEAN, INT, VARCHAR) RETURNS refcursor AS $$ > 2006-08-22 18:04:27 ERROR: function > usp_comptabilite_agedecompteclient(character varying, character varying, > "unknown", boolean, boolean, character varying, "unknown") does not exist > 2006-08-22 18:04:27 HINT: No function matches the given name and > argument types. You may need to add explicit type casts. The problem is with parameter 7. This is expecting an INT, but you are giving it a VARCHAR. You are probably calling setString(7, "0"). If you use setInt(7,0) or setObject(7,"0",Types.INTEGER) it should work. > If I execute the statement on pgAdminIII it works: select * from > usp_Comptabilite_AgeDeCompteClient('M', NULL, '2006-08-22', > true, true, '0', NULL) ; Try it in pgAdmin using PREPARE and you should see the same error. > P.S.: I traced with the debugger and I do call setDate for arg $3. I > don't understand why it's still unknow ? It's because the driver doesn't know whether it is a timestamp or a timestamptz, and if we explicitly specify a type that doesn't match the actual type then the server will mangle the value while casting. However, it's not that parameter which is causing your problem. -O
Oliver Jowett wrote: > The problem is with parameter 7. Aaaand.. I can't count. It's parameter 6 :) -O
org.postgresql.util.PSQLException: An I/O error occured while sending to the backend
org.postgresql.util.PSQLException: An I/O error occured while sending to the backend.
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:201)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:313)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:305)
at com.ge.hc.nuevo.sessions.dbexpress.DBSession.dbxTransaction(DBSession.java:1496)
at com.ge.hc.nuevo.sessions.dbexpress.DBSession.installImage(DBSession.java:1254)
at com.ge.hc.nuevo.sessions.dbexpress.DBSession.installFiles(DBSession.java:737)
at com.ge.med.terra.tap.dm.DMSession.installFiles(DMSession.java:414)
at com.ge.hc.nuevo.services.jmservice.WorkerThread.arRestore(WorkerThread.java:666)
at com.ge.hc.nuevo.services.jmservice.WorkerThread.run(WorkerThread.java:979)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at org.postgresql.core.PGStream.flush(PGStream.java:494)
at org.postgresql.core.v3.QueryExecutorImpl.sendSync(QueryExecutorImpl.java:631)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:174)
... 10 more
surabhi.ahuja wrote: > org.postgresql.util.PSQLException: An I/O error occured while sending to > the backend. > Caused by: java.net.SocketException: Broken pipe This is a network error that the driver can't do anything about. If you have a stateful firewall between the client and the server, perhaps it is dropping the connection because it has been idle. -O
Re: org.postgresql.util.PSQLException: An I/O error occured while sending to the backend
From: Oliver Jowett [mailto:oliver@opencloud.com]
Sent: Wed 8/23/2006 12:03 PM
To: surabhi.ahuja
Cc: pgsql-general@postgresql.org; pgsql-jdbc@postgresql.org
Subject: Re: [JDBC] org.postgresql.util.PSQLException: An I/O error occured while sending to the backend
***********************
Your mail has been scanned by InterScan VirusWall.
***********-***********
surabhi.ahuja wrote:
> org.postgresql.util.PSQLException: An I/O error occured while sending to
> the backend.
> Caused by: java.net.SocketException: Broken pipe
This is a network error that the driver can't do anything about. If you
have a stateful firewall between the client and the server, perhaps it
is dropping the connection because it has been idle.
-O
surabhi.ahuja wrote: > hi, > dont such messages get logged to postgreslog. You might see something in the backend logs -- "unexpected client EOF" perhaps? Or just idle backend processes. It depends on exactly what is going wrong, and the timing of it. > Also, is it possible to check wht firewall is dropping the connection > between the client and the server. That is something you will have to diagnose yourself, it is specific to your network. -O