Code: Select all
EXPLAIN (GENERIC_PLAN, FORMAT JSON)
select * from test03
where test03.num2 = $1;
< /code>
Aber ich kann es nicht von Java ausführen. Ich habe Propre PrepectStatement
ausprobiert
Code: Select all
public JsonNode generateExecutionPlan(String sql) {
String explainQuery = "EXPLAIN (GENERIC_PLAN, FORMAT JSON) " + sql;
try (Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(explainQuery)) {
if (rs.next()) {
ObjectMapper objectMapper = new ObjectMapper();
logger.info("Execution plan generated successfully.");
return objectMapper.readTree(rs.getString(1));
}
} catch (Exception e) {
logger.error("Error generating execution plan: {}", e.getMessage(), e);
}
return null;
}
Code: Select all
Error generating execution plan: ERROR: bind message supplies 0 parameters, but prepared statement "" requires 1
org.postgresql.util.PSQLException: ERROR: bind message supplies 0 parameters, but prepared statement "" requires 1
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:356)
at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:341)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:317)
at org.postgresql.jdbc.PgStatement.executeQuery(PgStatement.java:266)
< /code>
Vorbereitete Anweisung Version: < /p>
public JsonNode generateExecutionPlan(String sql) {
String explainQuery = "EXPLAIN (GENERIC_PLAN, FORMAT JSON) " + sql;
try (PreparedStatement stmt = connection.prepareStatement(explainQuery);
ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
ObjectMapper objectMapper = new ObjectMapper();
logger.info("Execution plan generated successfully.");
return objectMapper.readTree(rs.getString(1));
}
} catch (Exception e) {
logger.error("Error generating execution plan: {}", e.getMessage(), e);
}
return null;
}`
`Error generating execution plan: ERROR: bind message supplies 0 parameters, but prepared statement "" requires 1
org.postgresql.util.PSQLException: ERROR: bind message supplies 0 parameters, but prepared statement "" requires 1
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194)
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:137)