Package org.apache.calcite.runtime
Class ResultSetEnumerable<T>
- java.lang.Object
-
- org.apache.calcite.linq4j.DefaultEnumerable<T>
-
- org.apache.calcite.linq4j.AbstractEnumerable<T>
-
- org.apache.calcite.runtime.ResultSetEnumerable<T>
-
- Type Parameters:
T
- Element type
- All Implemented Interfaces:
java.lang.Iterable<T>
,Enumerable<T>
,ExtendedEnumerable<T>
,ExtendedOrderedEnumerable<T>
,OrderedEnumerable<T>
,RawEnumerable<T>
public class ResultSetEnumerable<T> extends AbstractEnumerable<T>
Executes a SQL statement and returns the result as anEnumerable
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
ResultSetEnumerable.PreparedStatementEnricher
Consumer for decorating aPreparedStatement
, that is, setting its parameters.private static class
ResultSetEnumerable.ResultSetEnumerator<T>
Implementation ofEnumerator
that reads from aResultSet
.
-
Field Summary
Fields Modifier and Type Field Description private static Function1<java.sql.ResultSet,Function0<java.lang.Object>>
AUTO_ROW_BUILDER_FACTORY
private javax.sql.DataSource
dataSource
private static org.slf4j.Logger
LOGGER
private ResultSetEnumerable.PreparedStatementEnricher
preparedStatementEnricher
private Function1<java.sql.ResultSet,Function0<T>>
rowBuilderFactory
private java.lang.String
sql
-
Constructor Summary
Constructors Modifier Constructor Description private
ResultSetEnumerable(javax.sql.DataSource dataSource, java.lang.String sql, Function1<java.sql.ResultSet,Function0<T>> rowBuilderFactory)
private
ResultSetEnumerable(javax.sql.DataSource dataSource, java.lang.String sql, Function1<java.sql.ResultSet,Function0<T>> rowBuilderFactory, ResultSetEnumerable.PreparedStatementEnricher preparedStatementEnricher)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
closeIfPossible(java.sql.Connection connection, java.sql.Statement statement)
static ResultSetEnumerable.PreparedStatementEnricher
createEnricher(java.lang.Integer[] indexes, DataContext context)
Called from generated code that proposes to create aResultSetEnumerable
over a prepared statement.Enumerator<T>
enumerator()
Returns an enumerator that iterates through a collection.private Enumerator<T>
enumeratorBasedOnPreparedStatement()
private Enumerator<T>
enumeratorBasedOnStatement()
static Enumerable<java.lang.Object>
of(javax.sql.DataSource dataSource, java.lang.String sql)
Creates an ResultSetEnumerable.static <T> Enumerable<T>
of(javax.sql.DataSource dataSource, java.lang.String sql, Function1<java.sql.ResultSet,Function0<T>> rowBuilderFactory)
Executes a SQL query and returns the results as an enumerator, using a row builder to convert JDBC column values into rows.static <T> Enumerable<T>
of(javax.sql.DataSource dataSource, java.lang.String sql, Function1<java.sql.ResultSet,Function0<T>> rowBuilderFactory, ResultSetEnumerable.PreparedStatementEnricher consumer)
Executes a SQL query and returns the results as an enumerator, using a row builder to convert JDBC column values into rows.static Enumerable<java.lang.Object>
of(javax.sql.DataSource dataSource, java.lang.String sql, Primitive[] primitives)
Creates an ResultSetEnumerable that retrieves columns as specific Java types.private static Function1<java.sql.ResultSet,Function0<java.lang.Object>>
primitiveRowBuilderFactory(Primitive[] primitives)
private static void
setDynamicParam(java.sql.PreparedStatement preparedStatement, int i, java.lang.Object value)
Assigns a value to a dynamic parameter in a prepared statement, calling the appropriatesetXxx
method based on the type of the value.private void
setTimeoutIfPossible(java.sql.Statement statement)
-
Methods inherited from class org.apache.calcite.linq4j.AbstractEnumerable
iterator
-
Methods inherited from class org.apache.calcite.linq4j.DefaultEnumerable
aggregate, aggregate, aggregate, all, any, any, asEnumerable, asOrderedQueryable, asQueryable, average, average, average, average, average, average, average, average, average, average, cast, concat, contains, contains, correlateJoin, count, count, createOrderedEnumerable, defaultIfEmpty, defaultIfEmpty, distinct, distinct, elementAt, elementAtOrDefault, except, except, first, first, firstOrDefault, firstOrDefault, foreach, getThis, getThisOrdered, groupBy, groupBy, groupBy, groupBy, groupBy, groupBy, groupBy, groupBy, groupBy, groupBy, groupJoin, groupJoin, intersect, intersect, into, join, join, join, last, last, lastOrDefault, lastOrDefault, longCount, longCount, max, max, max, max, max, max, max, max, max, max, max, max, min, min, min, min, min, min, min, min, min, min, min, min, ofType, orderBy, orderBy, orderByDescending, orderByDescending, removeAll, reverse, select, select, selectMany, selectMany, selectMany, selectMany, sequenceEqual, sequenceEqual, single, single, singleOrDefault, singleOrDefault, skip, skipWhile, skipWhile, sum, sum, sum, sum, sum, sum, sum, sum, sum, sum, take, takeWhile, takeWhile, thenBy, thenBy, thenByDescending, thenByDescending, toList, toLookup, toLookup, toLookup, toLookup, toMap, toMap, toMap, toMap, union, union, where, where, zip
-
-
-
-
Field Detail
-
dataSource
private final javax.sql.DataSource dataSource
-
sql
private final java.lang.String sql
-
preparedStatementEnricher
private final ResultSetEnumerable.PreparedStatementEnricher preparedStatementEnricher
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
-
Constructor Detail
-
ResultSetEnumerable
private ResultSetEnumerable(javax.sql.DataSource dataSource, java.lang.String sql, Function1<java.sql.ResultSet,Function0<T>> rowBuilderFactory, ResultSetEnumerable.PreparedStatementEnricher preparedStatementEnricher)
-
-
Method Detail
-
of
public static Enumerable<java.lang.Object> of(javax.sql.DataSource dataSource, java.lang.String sql)
Creates an ResultSetEnumerable.
-
of
public static Enumerable<java.lang.Object> of(javax.sql.DataSource dataSource, java.lang.String sql, Primitive[] primitives)
Creates an ResultSetEnumerable that retrieves columns as specific Java types.
-
of
public static <T> Enumerable<T> of(javax.sql.DataSource dataSource, java.lang.String sql, Function1<java.sql.ResultSet,Function0<T>> rowBuilderFactory)
Executes a SQL query and returns the results as an enumerator, using a row builder to convert JDBC column values into rows.
-
of
public static <T> Enumerable<T> of(javax.sql.DataSource dataSource, java.lang.String sql, Function1<java.sql.ResultSet,Function0<T>> rowBuilderFactory, ResultSetEnumerable.PreparedStatementEnricher consumer)
Executes a SQL query and returns the results as an enumerator, using a row builder to convert JDBC column values into rows.It uses a
PreparedStatement
for computing the query result, and that means that it can bind parameters.
-
createEnricher
public static ResultSetEnumerable.PreparedStatementEnricher createEnricher(java.lang.Integer[] indexes, DataContext context)
Called from generated code that proposes to create aResultSetEnumerable
over a prepared statement.
-
setDynamicParam
private static void setDynamicParam(java.sql.PreparedStatement preparedStatement, int i, java.lang.Object value) throws java.sql.SQLException
Assigns a value to a dynamic parameter in a prepared statement, calling the appropriatesetXxx
method based on the type of the value.- Throws:
java.sql.SQLException
-
enumerator
public Enumerator<T> enumerator()
Description copied from interface:RawEnumerable
Returns an enumerator that iterates through a collection.
-
enumeratorBasedOnStatement
private Enumerator<T> enumeratorBasedOnStatement()
-
enumeratorBasedOnPreparedStatement
private Enumerator<T> enumeratorBasedOnPreparedStatement()
-
setTimeoutIfPossible
private void setTimeoutIfPossible(java.sql.Statement statement) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
closeIfPossible
private void closeIfPossible(java.sql.Connection connection, java.sql.Statement statement)
-
-