/*
* Copyright (c) 2004, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
// Copyright (c) 2004, Open Cloud Limited.
package org.postgresql.core;
import java.util.Map;
Abstraction of a generic Query, hiding the details of any protocol-version-specific data needed
to execute the query efficiently.
Query objects should be explicitly closed when no longer needed; if resources are allocated on
the server for this query, their cleanup is triggered by closing the Query.
Author: Oliver Jowett (oliver@opencloud.com)
/**
* <p>Abstraction of a generic Query, hiding the details of any protocol-version-specific data needed
* to execute the query efficiently.</p>
*
* <p>Query objects should be explicitly closed when no longer needed; if resources are allocated on
* the server for this query, their cleanup is triggered by closing the Query.</p>
*
* @author Oliver Jowett (oliver@opencloud.com)
*/
public interface Query {
Create a ParameterList suitable for storing parameters associated with this Query.
If this query has no parameters, a ParameterList will be returned, but it may be a shared
immutable object. If this query does have parameters, the returned ParameterList is a new list,
unshared by other callers.
Returns: a suitable ParameterList instance for this query
/**
* <p>Create a ParameterList suitable for storing parameters associated with this Query.</p>
*
* <p>If this query has no parameters, a ParameterList will be returned, but it may be a shared
* immutable object. If this query does have parameters, the returned ParameterList is a new list,
* unshared by other callers.</p>
*
* @return a suitable ParameterList instance for this query
*/
ParameterList createParameterList();
Stringize this query to a human-readable form, substituting particular parameter values for
parameter placeholders.
Params: - parameters – a ParameterList returned by this Query's
createParameterList
method, or null
to leave the parameter placeholders unsubstituted.
Returns: a human-readable representation of this query
/**
* Stringize this query to a human-readable form, substituting particular parameter values for
* parameter placeholders.
*
* @param parameters a ParameterList returned by this Query's {@link #createParameterList} method,
* or <code>null</code> to leave the parameter placeholders unsubstituted.
* @return a human-readable representation of this query
*/
String toString(ParameterList parameters);
Returns SQL in native for database format.
Returns: SQL in native for database format
/**
* Returns SQL in native for database format.
* @return SQL in native for database format
*/
String getNativeSql();
Returns properties of the query (sql keyword, and some other parsing info).
Returns: returns properties of the query (sql keyword, and some other parsing info) or null if not applicable
/**
* Returns properties of the query (sql keyword, and some other parsing info).
* @return returns properties of the query (sql keyword, and some other parsing info) or null if not applicable
*/
SqlCommand getSqlCommand();
Close this query and free any server-side resources associated with it. The resources may not
be immediately deallocated, but closing a Query may make the deallocation more prompt.
A closed Query should not be executed.
/**
* <p>Close this query and free any server-side resources associated with it. The resources may not
* be immediately deallocated, but closing a Query may make the deallocation more prompt.</p>
*
* <p>A closed Query should not be executed.</p>
*/
void close();
boolean isStatementDescribed();
boolean isEmpty();
Get the number of times this Query has been batched.
Returns: number of times addBatch()
has been called.
/**
* Get the number of times this Query has been batched.
* @return number of times <code>addBatch()</code> has been called.
*/
int getBatchSize();
Get a map that a result set can use to find the index associated to a name.
Returns: null if the query implementation does not support this method.
/**
* Get a map that a result set can use to find the index associated to a name.
*
* @return null if the query implementation does not support this method.
*/
Map<String, Integer> getResultSetColumnNameIndexMap();
Return a list of the Query objects that make up this query. If this object is already a
SimpleQuery, returns null (avoids an extra array construction in the common case).
Returns: an array of single-statement queries, or null
if this object is already a
single-statement query.
/**
* Return a list of the Query objects that make up this query. If this object is already a
* SimpleQuery, returns null (avoids an extra array construction in the common case).
*
* @return an array of single-statement queries, or <code>null</code> if this object is already a
* single-statement query.
*/
Query[] getSubqueries();
}