You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ignite.apache.org by GitBox <gi...@apache.org> on 2021/12/08 07:39:45 UTC

[GitHub] [ignite-3] AMashenkov commented on a change in pull request #326: IGNITE-15212 Add SQL API

AMashenkov commented on a change in pull request #326:
URL: https://github.com/apache/ignite-3/pull/326#discussion_r764613311



##########
File path: modules/api/src/main/java/org/apache/ignite/sql/Session.java
##########
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.sql;
+
+import java.util.concurrent.TimeUnit;
+import org.apache.ignite.sql.async.AsyncSession;
+import org.apache.ignite.sql.reactive.ReactiveSession;
+import org.apache.ignite.tx.Transaction;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * SQL Session provides methods for query execution.
+ */
+public interface Session extends AsyncSession, ReactiveSession {
+    /**
+     * Sets default query timeout.
+     *
+     * @param timeout  Query timeout value.
+     * @param timeUnit Timeunit.
+     */
+    void defaultTimeout(long timeout, TimeUnit timeUnit);
+
+    /**
+     * Gets default query timeout.
+     *
+     * @param timeUnit Timeunit.
+     * @return Default query timeout.
+     */
+    long defaultTimeout(TimeUnit timeUnit);
+
+    /**
+     * Sets default query schema.
+     *
+     * @param schema Default schema.
+     */
+    void defaultSchema(@NotNull String schema);
+
+    /**
+     * Gets default query schema.
+     *
+     * @return Default query schema.
+     */
+    String defaultSchema();
+
+    /**
+     * Executes single SQL query.
+     *
+     * @param query       SQL query template.
+     * @param arguments   Arguments for the template (opti
+     * @param transaction Transaction to execute the query within or {@code null}.onal).
+     * @return SQL query results set.
+     * @throws SqlException If failed.
+     */
+    ResultSet execute(@NotNull String query, @Nullable Transaction transaction, Object... arguments);

Review comment:
       I've dropped multi-statement because the API looks ugly with them, and looks too complex using in async/reactive way, allowing the user to shoot in his foot with ease.
   
   But I think we should support non-transactional SQL scripts with DDL and DML statements for better UX, e.g. import initial schema, which was exported from other DB, or to restore backup.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@ignite.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org