Alexander Belyak created IGNITE-19284:
-----------------------------------------
Summary: SQL Prepared statement interval parsing: Failed to parse
query: Encountered ""
Key: IGNITE-19284
URL: https://issues.apache.org/jira/browse/IGNITE-19284
Project: Ignite
Issue Type: Bug
Components: sql
Affects Versions: 3.0
Reporter: Alexander Belyak
Attachments: interval.zip
Query with parameter for interval fails while it executing through
PreparedStatement:
1) Start ignite3 single node cluster
2) Execute:
{noformat}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TimeoutExceptionReproducer {
private static final String DB_URL = "jdbc:ignite:thin://127.0.0.1:10800";
public static void main(String[] args) throws SQLException {
try (Connection connection = DriverManager.getConnection(DB_URL)) {
parce(connection);
}
}
public static void parce(Connection connection) throws SQLException {
try (Statement stmt = connection.createStatement()) {
stmt.executeUpdate("create table testTable (id int primary key, val
date not null)");
}
System.out.println("Table created");
try (Statement stmt = connection.createStatement()) {
try (ResultSet rs = stmt.executeQuery("select id, val from
testTable where val <= DATE '1990-01-01' - interval 1 day")) {
while (rs.next()) {
// No op
}
}
}
System.out.println("Statement done");
try (PreparedStatement ps = connection.prepareStatement(
"select id, val from testTable where val <= DATE '1990-01-01' -
interval ? day")) {
ps.setInt(1, 1);
// Or
//ps.setString(1, "1");
try (ResultSet rs = ps.executeQuery()) {
while(rs.next()) {
// NoOp
}
}
}
System.out.println("Prepared statement done");
}
}{noformat}
Return error:
{noformat}
Table created
Apr 13, 2023 11:49:53 AM org.apache.ignite.internal.logger.IgniteLogger
logInternal
INFO: Partition assignment change notification received
[remoteAddress=127.0.0.1/<unresolved>:10800]
Exception in thread "main" java.sql.SQLException: Exception while executing
query [query=select id, val from testTable where val <= DATE '1990-01-01' -
interval ? day]. Error message:IGN-SQL-3
TraceId:14caecea-db6f-4948-8a21-ae5f5efae06b Failed to parse query: Encountered
"" at line 1, column 62.
Statement done
Was expecting one of:
at
org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode.createJdbcSqlException(IgniteQueryErrorCode.java:57)
at
org.apache.ignite.internal.jdbc.JdbcStatement.execute0(JdbcStatement.java:148)
at
org.apache.ignite.internal.jdbc.JdbcPreparedStatement.executeWithArguments(JdbcPreparedStatement.java:657)
at
org.apache.ignite.internal.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:85)
at TimeoutExceptionReproducer.parce(TimeoutExceptionReproducer.java:36)
at
TimeoutExceptionReproducer.main(TimeoutExceptionReproducer.java:13)Process
finished with exit code 1{noformat}
There is nothing in the server logs, even on
--
This message was sent by Atlassian Jira
(v8.20.10#820010)