Igor Sapego created IGNITE-21669: ------------------------------------ Summary: Remove sessions from SQL API Key: IGNITE-21669 URL: https://issues.apache.org/jira/browse/IGNITE-21669 Project: Ignite Issue Type: Improvement Components: sql Reporter: Igor Sapego
Currently, {{org.apache.ignite.sql.Session}} interface does not bring any value, and can be confusing for the users: * It is simply a property bag and does not hold any other state across queries; * The same properties can be set on {{Statement}}; * {{createSession}} is an extra step for the user; * Some people, even AI3 developers, look at this API and assume something more, like holding open transactions on the server, etc. To do: # Move query execution methods from Session to IgniteSql; # Remove Session interface. {code:java} public interface IgniteSql { ResultSet<SqlRow> execute(@Nullable Transaction transaction, String query, @Nullable Object... arguments); ResultSet<SqlRow> execute(@Nullable Transaction transaction, Statement statement, @Nullable Object... arguments); Statement.StatementBuilder statementBuilder(); ... } {code} Usage examples: {code:java} // Simple query in one line. sql.execute(null, "delete from my-table where id = ?", 1); // Statement. Statement statement = sql.statementBuilder() .query("select foo from bar") .pageSize(123) .defaultSchema("my-schema") .build(); ResultSet<SqlRow> result = sql.execute(null, statement); // Statement as a template (instead of Session as a common property holder). Statement statement2 = statement.toBuilder() .query("select foo from baz") .build(); {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)