blob: 95f535b0a3e1cbb68add3f2df976883a78abd84b [file] [log] [blame]
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.client;
import java.sql.SQLException;
import java.util.List;
import java.util.concurrent.Executor;
import org.mariadb.jdbc.HostAddress;
import org.mariadb.jdbc.export.ExceptionFactory;
import org.mariadb.jdbc.export.Prepare;
import org.mariadb.jdbc.message.ClientMessage;
/** Client interface */
public interface Client extends AutoCloseable {
/**
* Send client message and read result
*
* @param message client message
* @param canRedo can client message be redone in case of failover
* @return results
* @throws SQLException if execution fails
*/
List<Completion> execute(ClientMessage message, boolean canRedo) throws SQLException;
/**
* Send client message and read result
*
* @param message client message
* @param stmt statement
* @param canRedo can client message be redone in case of failover
* @return results
* @throws SQLException if execution fails
*/
List<Completion> execute(ClientMessage message, org.mariadb.jdbc.Statement stmt, boolean canRedo)
throws SQLException;
/**
* Send client message and read result
*
* @param message client message
* @param stmt statement
* @param fetchSize fetch size
* @param maxRows maximum number of rows. 0 = all
* @param resultSetConcurrency concurrency
* @param resultSetType result-set type
* @param closeOnCompletion close statement on completion
* @param canRedo can client message be redone in case of failover
* @return results
* @throws SQLException if any error occurs
*/
List<Completion> execute(
ClientMessage message,
org.mariadb.jdbc.Statement stmt,
int fetchSize,
long maxRows,
int resultSetConcurrency,
int resultSetType,
boolean closeOnCompletion,
boolean canRedo)
throws SQLException;
/**
* Send client messages pipelining and read result
*
* @param messages client message
* @param stmt statement
* @param fetchSize fetch size
* @param maxRows maximum number of rows. 0 = all
* @param resultSetConcurrency concurrency
* @param resultSetType result-set type
* @param closeOnCompletion close statement on completion
* @param canRedo can client message be redone in case of failover
* @return results
* @throws SQLException if any error occurs
*/
List<Completion> executePipeline(
ClientMessage[] messages,
org.mariadb.jdbc.Statement stmt,
int fetchSize,
long maxRows,
int resultSetConcurrency,
int resultSetType,
boolean closeOnCompletion,
boolean canRedo)
throws SQLException;
/**
* Read results
*
* @param completions List that will have the new results
* @param fetchSize fetch size
* @param maxRows maximum number of rows. 0 = all
* @param resultSetConcurrency concurrency
* @param resultSetType result-set type
* @param closeOnCompletion close statement on completion
* @throws SQLException if any error occurs
*/
void readStreamingResults(
List<Completion> completions,
int fetchSize,
long maxRows,
int resultSetConcurrency,
int resultSetType,
boolean closeOnCompletion)
throws SQLException;
/**
* Close prepare command
*
* @param prepare prepare command
* @throws SQLException if any error occurs
*/
void closePrepare(Prepare prepare) throws SQLException;
/**
* Abort current connection
*
* @param executor executor
* @throws SQLException if any error occurs
*/
void abort(Executor executor) throws SQLException;
/**
* Close client
*
* @throws SQLException if any error occurs
*/
void close() throws SQLException;
/**
* Switch to a writer/read-only connection, no effet on mono-connection
*
* @param readOnly must use read-only connection
* @throws SQLException if any error occurs
*/
void setReadOnly(boolean readOnly) throws SQLException;
/**
* get socket timeout
*
* @return socket timeout
*/
int getSocketTimeout();
/**
* Set socket timeout
*
* @param milliseconds timeout
* @throws SQLException if any error occurs
*/
void setSocketTimeout(int milliseconds) throws SQLException;
/**
* Is client closed
*
* @return close flag
*/
boolean isClosed();
/** Reset connection */
void reset();
/**
* is current client writer or read-only
*
* @return is primary
*/
boolean isPrimary();
/**
* Get connection context
*
* @return connection context
*/
Context getContext();
/**
* Get connection exception factory
*
* @return connection exception factory
*/
ExceptionFactory getExceptionFactory();
/**
* Get connection host
*
* @return connection host
*/
HostAddress getHostAddress();
}