public inbox for pgsql-jdbc@postgresql.org  
help / color / mirror / Atom feed
From: Manav Kumar <mkumar@yugabyte.com>
To: pgsql-jdbc@lists.postgresql.org
Subject: Don't see CLOSE packet been sent
Date: Thu, 4 Dec 2025 19:07:21 +0530
Message-ID: <CAPhCW+_N8emtusnO5B4bj3U3iFwH6BRSHMQZAexSAv3n7dkOog@mail.gmail.com> (raw)

Hi Team,
Wrote a simple below application to understand nature of CLOSE packet.
But i don't see the JDBC sending CLOSE packet. Any ideas what i can do see
CLOSE packet.
I'm compiling with:
javac -classpath /home/manavkumar/postgresql-42.7.1.jar sendClose.java && \
java -cp .:/home/manavkumar/postgresql-42.7.1.jar sendClose

```import java.sql.*;

public class sendClose {

public static void main(String[] args) {
Connection connection = null;
PreparedStatement pstmt1 = null, pstmt2 = null;

try {
// prepareThreshold=1 is crucial here
connection = DriverManager.getConnection("jdbc:postgresql://
10.150.3.175:5433/yugabyte?prepareThreshold=1", "yugabyte","yugabyte");

// ---------------------------------------------------------
// CHANGE 1: Use placeholders (?)
// This forces the driver to use Extended Query Protocol (Parse/Bind)
// and create a named statement (e.g., "S_1") on the server.
// ---------------------------------------------------------
pstmt1 = connection.prepareStatement("insert into t_ values (?, ?)");
pstmt1.setInt(1, 1);
pstmt1.setInt(2, 2);
// Execute twice to ensure the driver switches to server-prepare mode
pstmt1.execute();
pstmt1.execute();
pstmt1.execute();
pstmt1.execute();
pstmt1.execute();
pstmt1.execute();
pstmt1.execute();
pstmt1.execute();
pstmt1.execute();
pstmt1.execute();
// ---------------------------------------------------------
// CHANGE 2: Close the statement
// The driver now marks "S_1" as closed internally and queues the packet.
// ---------------------------------------------------------
pstmt1.close();

System.out.println("Statement 1 closed. Sending Statement 2 to flush the
buffer...");

// ---------------------------------------------------------
// CHANGE 3: Send ANY other traffic
// The driver will attach the buffered "CLOSE S_1" packet
// to the front of this new request.
// ---------------------------------------------------------
pstmt2 = connection.prepareStatement("SELECT 1");
pstmt2.execute();
pstmt2.close();

connection.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}

```


reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-jdbc@postgresql.org
  Cc: mkumar@yugabyte.com, pgsql-jdbc@lists.postgresql.org
  Subject: Re: Don't see CLOSE packet been sent
  In-Reply-To: <CAPhCW+_N8emtusnO5B4bj3U3iFwH6BRSHMQZAexSAv3n7dkOog@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox