Re: JDBC + PG-15 but not psql - Mailing list pgsql-general

From Dave Cramer
Subject Re: JDBC + PG-15 but not psql
Date
Msg-id CADK3HH+aG2Hac-4cMsN6Jpo+T7BkfR6AOt6mp0Brn594QJyFDQ@mail.gmail.com
Whole thread Raw
In response to Re: JDBC + PG-15 but not psql  (Amn Ojee Uw <amnojeeuw@gmail.com>)
Responses Re: JDBC + PG-15 but not psql
List pgsql-general
Hi Amn,

What I don't understand is the requirement to set autocommit to true since this is the default ?

Either way this is expected behaviour as psql also has autocommit true by default.

Thanks,

Dave Cramer



On Mon, 21 Aug 2023 at 20:57, Amn Ojee Uw <amnojeeuw@gmail.com> wrote:

Thanks Dave for your interest.

In  the OP I started by explaining the difficulties when trying to create a tabelspace using JDBC; please note that when using the PG-15 prompt I did not have the problem. Well, it turns out that while developing the request for help (writing the email), I realize that my code had the following line :
this.conn.setAutoCommit(false);
However, in my research, I had read a post mentioning that by setting auto commit to true the issue was solved. So, I changed that line of code in my algorithm to :
this.conn.setAutoCommit(true);
Which also resulted in my app working without any errors.

Please read the code-snip I submitted; there you can see that line of code I edited; which I commented with "// game changer!!".

Thanks again Dave, have great week.


On 8/21/23 2:51 p.m., Dave Cramer wrote:
Hi Amn,

Can you help me understand this issue better?

I don't see anywhere in the code where you are attempting to create a tablespace ?


Dave Cramer



On Sun, 20 Aug 2023 at 11:17, Amn Ojee Uw <amnojeeuw@gmail.com> wrote:

Hello.

I have searched the net in an attempt to find if others have had and resolved this challenge, but most of the sites talk about how, when using the psql, this error arises. In my case, the error arises only when access PG-15 using JDBC.
JDBC connects to the database, but when trying to execute a schema, it be to create a database or to create a tabelspace I get this error :

StackTrace : [Ljava.lang.StackTraceElement;@7a69b07
Message : ERROR: CREATE TABLESPACE cannot run inside a transaction block

I have used the same algorithm, but now modify to accommodate PG-15, when using SQLite. So the JDBC code might not be the problem, but the requirements needed from PG-15.

Change of perspective, I resolved the concern!

Here is what changed the outcome :
--- snip ---

public void connectToDatabase() throws ClassNotFoundException, SQLException {
    try {
        Class.forName(this.getDatabaseClass().toString());
        this.conn = DriverManager.getConnection(this.getDatabaseUrl().toString(),
                this.getUserID().toString(),
                this.getUserPassword().toString());
        
        this.conn.setAutoCommit(true); // game changer!!
       

        this.pout("Connected to the PostgreSQL server, success!!!");

        this.stmt = this.conn.createStatement();
    } catch (final SQLException | ClassNotFoundException e) {
        throw e;
    }
}

--

All I had to do was to setAutoCommit to true, PG-15 set this value to false by default.


I hope my experience can help others.


pgsql-general by date:

Previous
From: Dave Cramer
Date:
Subject: Re: The same prepared query yield "-1" the first six times and then "-1.0"
Next
From: Florents Tselai
Date:
Subject: Released vasco: a PG extension to compute MIC and MINE correlation statistics