Обсуждение: Problem with creating language by JDBC

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

Problem with creating language by JDBC

От
"Ming Deng"
Дата:
Hi there,

I was trying to create language by execute() or executeUpdate(). But the
call always fails with message as

problem running SQL query: CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
  HANDLER plpgsql_call_handler
.An I/O error occured while sending to the backend.

Following is a snippet of the Java code I have, which works with
creating database, executing other queries:

        PreparedStatement stmt = null;
        ResultSet rs = null;
        try {
            stmt = con.prepareStatement(str);
            System.out.println("Running SQL query: " + str +
"..");
            try {
                //stmt.executeUpdate();
                stmt.execute();
            } catch (SQLException sqle) {
                StringBuffer errMsg = new StringBuffer(
                        "  problem running SQL
query: " + str + ".");
                errMsg.append(sqle.getMessage());
                System.err.println(errMsg.toString());
                ret = false;
            }
            con.commit();
            System.out.println("Query is done.");
        } finally {

I'm using postgresql-8.2dev-501.jdbc3.jar and querying against an 8.3.4
server. If I run the query manually on psql command with same
authentication, it will return successfully. I tried with a later JDBC
driver, it has the same problem.

Regards,

M.

---------------------------------------------------------------------
This transmission (including any attachments) may contain confidential information, privileged material (including
materialprotected by the solicitor-client or other applicable privileges), or constitute non-public information. Any
useof this information by anyone other than the intended recipient is prohibited. If you have received this
transmissionin error, please immediately reply to the sender and delete this information from your system. Use,
dissemination,distribution, or reproduction of this transmission by unintended recipients is not authorized and may be
unlawful.

Re: Problem with creating language by JDBC

От
Thomas Kellerer
Дата:
Ming Deng wrote on 24.06.2010 19:44:
> Hi there,
>
> I was trying to create language by execute() or executeUpdate(). But the
> call always fails with message as
>
> problem running SQL query: CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
>    HANDLER plpgsql_call_handler
> .An I/O error occured while sending to the backend.
>
> Following is a snippet of the Java code I have, which works with
> creating database, executing other queries:
>

Did you try to use a regular statement, instead of a PreparedStatement?

Statement stmt = con.createStatement()
stmt.executeUpdate("CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler");

Thomas


Re: Problem with creating language by JDBC

От
MD
Дата:
On Jun 24, 5:38 pm, spam_eater@gmx.net (Thomas Kellerer) wrote:
> Ming Deng wrote on 24.06.2010 19:44:
>
> > Hi there,
>
> > I was trying to create language by execute() or executeUpdate(). But the
> > call always fails with message as
>
> > problem running SQL query: CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
> >    HANDLER plpgsql_call_handler
> > .An I/O error occured while sending to the backend.
>
> > Following is a snippet of the Java code I have, which works with
> > creating database, executing other queries:
>
> Did you try to use a regular statement, instead of a PreparedStatement?
>
> Statement stmt = con.createStatement()
> stmt.executeUpdate("CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler");
>
> Thomas
>
> --
> Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
> To make changes to your subscription:http://www.postgresql.org/mailpref/pgsql-jdbc

I just tried with the regular statement, got the same failure.


Re: Problem with creating language by JDBC

От
Thomas Kellerer
Дата:
MD, 25.06.2010 05:10:
>>> I was trying to create language by execute() or executeUpdate(). But the
>>> call always fails with message as
>>
>>> problem running SQL query: CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
>>>     HANDLER plpgsql_call_handler
>>> .An I/O error occured while sending to the backend.
>>
>>> Following is a snippet of the Java code I have, which works with
>>> creating database, executing other queries:
>>
>> Did you try to use a regular statement, instead of a PreparedStatement?
>>
>
> I just tried with the regular statement, got the same failure.

That's strange, the following works fine for me:

Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection("jdbc:postgresql://localhost/postgres", "postgres", "postgres");
stmt = con.createStatement();
stmt.executeUpdate("CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler");

I think it is not related to the way you run this from Java, but something else, and the "I/O error" seems to indicate
that.


Regards
Thomas







Re: Problem with creating language by JDBC

От
MD
Дата:
On Jun 25, 2:40 am, spam_ea...@gmx.net (Thomas Kellerer) wrote:
> MD, 25.06.2010 05:10:
>
> >>> I was trying to create language by execute() or executeUpdate(). But the
> >>> call always fails with message as
>
> >>> problem running SQL query: CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
> >>>     HANDLER plpgsql_call_handler
> >>> .An I/O error occured while sending to the backend.
>
> >>> Following is a snippet of the Java code I have, which works with
> >>> creating database, executing other queries:
>
> >> Did you try to use a regular statement, instead of a PreparedStatement?
>
> > I just tried with the regular statement, got the same failure.
>
> That's strange, the following works fine for me:
>
> Class.forName("org.postgresql.Driver");
> con = DriverManager.getConnection("jdbc:postgresql://localhost/postgres", "postgres", "postgres");
> stmt = con.createStatement();
> stmt.executeUpdate("CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler");
>
> I think it is not related to the way you run this from Java, but something else, and the "I/O error" seems to
indicatethat. 
>
> Regards
> Thomas

Hi Thomas,

Thanks for your investigation. What are the version of Postgres and
JDBC you are using?


Re: Problem with creating language by JDBC

От
Thomas Kellerer
Дата:
>> Class.forName("org.postgresql.Driver");
>> con = DriverManager.getConnection("jdbc:postgresql://localhost/postgres", "postgres", "postgres");
>> stmt = con.createStatement();
>> stmt.executeUpdate("CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler");
>>
>> I think it is not related to the way you run this from Java, but something else, and the "I/O error" seems to
indicatethat. 
>>
>> Regards
>> Thomas
>
> Hi Thomas,
>
> Thanks for your investigation. What are the version of Postgres and
> JDBC you are using?
>

Postgres: 8.4.2
JDBC Driver: 8.4 JDBC4 (build 701)

Regards
Thomas

Re: Problem with creating language by JDBC

От
MD
Дата:
On Jun 25, 11:14 am, spam_ea...@gmx.net (Thomas Kellerer) wrote:
> >> Class.forName("org.postgresql.Driver");
> >> con = DriverManager.getConnection("jdbc:postgresql://localhost/postgres", "postgres", "postgres");
> >> stmt = con.createStatement();
> >> stmt.executeUpdate("CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler");
>
> >> I think it is not related to the way you run this from Java, but something else, and the "I/O error" seems to
indicatethat. 
>
> >> Regards
> >> Thomas
>
> > Hi Thomas,
>
> > Thanks for your investigation. What are the version of Postgres and
> > JDBC you are using?
>
> Postgres: 8.4.2
> JDBC Driver: 8.4 JDBC4 (build 701)
>
> Regards
> Thomas
>
Thanks very much for your info. With the help of that, I narrowed down
the problem. It was caused by a bug in a related piece of code.

Re: Problem with creating language by JDBC

От
Lew
Дата:
Thomas Kellerer wrote:
> Did you try to use a regular statement, instead of a PreparedStatement?

That would not change anything.

--
Lew