blob: 804aa553750281f0b11109a29f1de9c68fd984d1 [file] [log] [blame]
/*
* 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.internal.sql.engine;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.internal.manager.IgniteComponent;
import org.apache.ignite.internal.sql.engine.property.PropertiesHolder;
import org.apache.ignite.internal.sql.engine.session.SessionId;
import org.apache.ignite.lang.IgniteException;
/**
* QueryProcessor interface.
*/
public interface QueryProcessor extends IgniteComponent {
/**
* Creates a session with given properties.
*
* @param queryProperties Properties to store within a new session.
* @return An identifier of a created session.
*/
SessionId createSession(PropertiesHolder queryProperties);
/**
* Closes the session with given id.
*
* <p>This method just return a completed future in case the session was already closed or never exists.
*
* @param sessionId An identifier of a session to close.
* @return A future representing result of an operation.
*/
CompletableFuture<Void> closeSession(SessionId sessionId);
/**
* Execute the query with given schema name and parameters.
*
* @param schemaName Schema name.
* @param qry Sql query.
* @param params Query parameters.
* @return List of sql cursors.
*
* @throws IgniteException in case of an error.
*/
List<CompletableFuture<AsyncSqlCursor<List<Object>>>> queryAsync(String schemaName, String qry, Object... params);
/**
* Execute the query with given schema name and parameters.
*
* @param context User query context.
* @param schemaName Schema name.
* @param qry Sql query.
* @param params Query parameters.
* @return List of sql cursors.
*
* @throws IgniteException in case of an error.
*/
List<CompletableFuture<AsyncSqlCursor<List<Object>>>> queryAsync(QueryContext context, String schemaName, String qry, Object... params);
/**
* Execute the single statement query with given schema name and parameters.
*
* <p>If the query string contains more than one statement the IgniteException will be thrown.
*
* @param context User query context.
* @param qry Single statement SQL query .
* @param params Query parameters.
* @return Sql cursor.
*
* @throws IgniteException in case of an error.
*/
CompletableFuture<AsyncSqlCursor<List<Object>>> querySingleAsync(
SessionId sessionId,
QueryContext context,
String qry,
Object... params
);
}