public class CalcitePrepareImpl extends java.lang.Object implements CalcitePrepare
This class is public so that projects that create their own JDBC driver and server can fine-tune preferences. However, this class and its methods are subject to change without notice.
Modifier and Type | Class and Description |
---|---|
private static class |
CalcitePrepareImpl.CalcitePreparedExplain
An
EXPLAIN statement, prepared and ready to execute. |
(package private) static class |
CalcitePrepareImpl.CalcitePreparingStmt
Holds state for the process of preparing a SQL statement.
|
(package private) static class |
CalcitePrepareImpl.EmptyScalarTranslator
Basic translator.
|
private static class |
CalcitePrepareImpl.LambdaScalarTranslator
Translator that looks for parameters.
|
(package private) static interface |
CalcitePrepareImpl.ScalarTranslator
Translator from Java AST to
RexNode . |
CalcitePrepare.AnalyzeViewResult, CalcitePrepare.CalciteSignature<T>, CalcitePrepare.Context, CalcitePrepare.ConvertResult, CalcitePrepare.Dummy, CalcitePrepare.ParseResult, CalcitePrepare.Query<T>, CalcitePrepare.SparkHandler
Modifier and Type | Field and Description |
---|---|
static boolean |
ENABLE_ENUMERABLE
Deprecated.
|
static boolean |
ENABLE_STREAM
Deprecated.
|
boolean |
enableBindable
Whether the bindable convention should be the root convention of any
plan.
|
static java.util.List<RelOptRule> |
ENUMERABLE_RULES
Deprecated.
|
private static java.util.Set<java.lang.String> |
SIMPLE_SQLS |
DEFAULT_FACTORY, THREAD_CONTEXT_STACK
Constructor and Description |
---|
CalcitePrepareImpl() |
Modifier and Type | Method and Description |
---|---|
private CalcitePrepare.AnalyzeViewResult |
analyze_(SqlValidator validator,
java.lang.String sql,
SqlNode sqlNode,
RelRoot root,
boolean fail) |
CalcitePrepare.AnalyzeViewResult |
analyzeView(CalcitePrepare.Context context,
java.lang.String sql,
boolean fail)
Analyzes a view.
|
private org.apache.calcite.avatica.ColumnMetaData.AvaticaType |
avaticaType(JavaTypeFactory typeFactory,
RelDataType type,
RelDataType fieldType) |
private CalcitePrepare.ParseResult |
convert_(CalcitePrepare.Context context,
java.lang.String sql,
boolean analyze,
boolean fail,
CalciteCatalogReader catalogReader,
SqlValidator validator,
SqlNode sqlNode1) |
CalcitePrepare.ConvertResult |
convert(CalcitePrepare.Context context,
java.lang.String sql) |
protected RelOptCluster |
createCluster(RelOptPlanner planner,
RexBuilder rexBuilder)
Factory method for cluster.
|
protected SqlRexConvertletTable |
createConvertletTable()
Factory method for default convertlet table.
|
protected SqlParser |
createParser(java.lang.String sql)
Factory method for default SQL parser.
|
protected SqlParser |
createParser(java.lang.String sql,
SqlParser.ConfigBuilder parserConfig)
Factory method for SQL parser with a given configuration.
|
protected SqlParser.ConfigBuilder |
createParserConfig()
Factory method for SQL parser configuration.
|
protected RelOptPlanner |
createPlanner(CalcitePrepare.Context prepareContext)
Creates a query planner and initializes it with a default set of
rules.
|
protected RelOptPlanner |
createPlanner(CalcitePrepare.Context prepareContext,
Context externalContext,
RelOptCostFactory costFactory)
Creates a query planner and initializes it with a default set of
rules.
|
protected java.util.List<Function1<CalcitePrepare.Context,RelOptPlanner>> |
createPlannerFactories()
Creates a collection of planner factories.
|
private SqlValidator |
createSqlValidator(CalcitePrepare.Context context,
CalciteCatalogReader catalogReader) |
void |
executeDdl(CalcitePrepare.Context context,
SqlNode node)
Executes a DDL statement.
|
private static java.lang.String |
getClassName(RelDataType type) |
private java.util.List<org.apache.calcite.avatica.ColumnMetaData> |
getColumnMetaDataList(JavaTypeFactory typeFactory,
RelDataType x,
RelDataType jdbcType,
java.util.List<java.util.List<java.lang.String>> originList) |
private static int |
getPrecision(RelDataType type) |
private static int |
getScale(RelDataType type) |
private org.apache.calcite.avatica.Meta.StatementType |
getStatementType(Prepare.PreparedResult preparedResult)
Deduces the broad type of statement for a prepare result.
|
private org.apache.calcite.avatica.Meta.StatementType |
getStatementType(SqlKind kind)
Deduces the broad type of statement.
|
private static java.lang.String |
getTypeName(RelDataType type)
Returns the type name in string form.
|
private int |
getTypeOrdinal(RelDataType type) |
private static RelDataType |
makeStruct(RelDataTypeFactory typeFactory,
RelDataType type) |
private org.apache.calcite.avatica.ColumnMetaData |
metaData(JavaTypeFactory typeFactory,
int ordinal,
java.lang.String fieldName,
RelDataType type,
RelDataType fieldType,
java.util.List<java.lang.String> origins) |
private static java.lang.String |
origin(java.util.List<java.lang.String> origins,
int offsetFromEnd) |
private CalcitePrepare.ParseResult |
parse_(CalcitePrepare.Context context,
java.lang.String sql,
boolean convert,
boolean analyze,
boolean fail)
|
CalcitePrepare.ParseResult |
parse(CalcitePrepare.Context context,
java.lang.String sql) |
<R> R |
perform(CalciteServerStatement statement,
Frameworks.PrepareAction<R> action)
Executes a prepare action.
|
protected void |
populateMaterializations(CalcitePrepare.Context context,
RelOptPlanner planner,
Prepare.Materialization materialization) |
(package private) <T> CalcitePrepare.CalciteSignature<T> |
prepare_(CalcitePrepare.Context context,
CalcitePrepare.Query<T> query,
java.lang.reflect.Type elementType,
long maxRowCount) |
(package private) <T> CalcitePrepare.CalciteSignature<T> |
prepare2_(CalcitePrepare.Context context,
CalcitePrepare.Query<T> query,
java.lang.reflect.Type elementType,
long maxRowCount,
CalciteCatalogReader catalogReader,
RelOptPlanner planner) |
<T> CalcitePrepare.CalciteSignature<T> |
prepareQueryable(CalcitePrepare.Context context,
Queryable<T> queryable) |
<T> CalcitePrepare.CalciteSignature<T> |
prepareSql(CalcitePrepare.Context context,
CalcitePrepare.Query<T> query,
java.lang.reflect.Type elementType,
long maxRowCount) |
private <T> CalcitePrepare.CalciteSignature<T> |
simplePrepare(CalcitePrepare.Context context,
java.lang.String sql)
Quickly prepares a simple SQL statement, circumventing the usual
preparation process.
|
@Deprecated public static final boolean ENABLE_ENUMERABLE
@Deprecated public static final boolean ENABLE_STREAM
@Deprecated public static final java.util.List<RelOptRule> ENUMERABLE_RULES
public final boolean enableBindable
private static final java.util.Set<java.lang.String> SIMPLE_SQLS
public CalcitePrepare.ParseResult parse(CalcitePrepare.Context context, java.lang.String sql)
parse
in interface CalcitePrepare
public CalcitePrepare.ConvertResult convert(CalcitePrepare.Context context, java.lang.String sql)
convert
in interface CalcitePrepare
public CalcitePrepare.AnalyzeViewResult analyzeView(CalcitePrepare.Context context, java.lang.String sql, boolean fail)
CalcitePrepare
analyzeView
in interface CalcitePrepare
context
- Contextsql
- View SQLfail
- Whether to fail (and throw a descriptive error message) if the
view is not modifiableprivate CalcitePrepare.ParseResult parse_(CalcitePrepare.Context context, java.lang.String sql, boolean convert, boolean analyze, boolean fail)
private CalcitePrepare.ParseResult convert_(CalcitePrepare.Context context, java.lang.String sql, boolean analyze, boolean fail, CalciteCatalogReader catalogReader, SqlValidator validator, SqlNode sqlNode1)
private CalcitePrepare.AnalyzeViewResult analyze_(SqlValidator validator, java.lang.String sql, SqlNode sqlNode, RelRoot root, boolean fail)
public void executeDdl(CalcitePrepare.Context context, SqlNode node)
CalcitePrepare
The statement identified itself as DDL in the
CalcitePrepare.ParseResult.kind()
field.
executeDdl
in interface CalcitePrepare
protected SqlParser createParser(java.lang.String sql)
protected SqlParser createParser(java.lang.String sql, SqlParser.ConfigBuilder parserConfig)
protected SqlParser.ConfigBuilder createParserConfig()
protected SqlRexConvertletTable createConvertletTable()
protected RelOptCluster createCluster(RelOptPlanner planner, RexBuilder rexBuilder)
protected java.util.List<Function1<CalcitePrepare.Context,RelOptPlanner>> createPlannerFactories()
The collection must have at least one factory, and each factory must create a planner. If the collection has more than one planner, Calcite will try each planner in turn.
One of the things you can do with this mechanism is to try a simpler, faster, planner with a smaller rule set first, then fall back to a more complex planner for complex and costly queries.
The default implementation returns a factory that calls
createPlanner(org.apache.calcite.jdbc.CalcitePrepare.Context)
.
protected RelOptPlanner createPlanner(CalcitePrepare.Context prepareContext)
protected RelOptPlanner createPlanner(CalcitePrepare.Context prepareContext, Context externalContext, RelOptCostFactory costFactory)
public <T> CalcitePrepare.CalciteSignature<T> prepareQueryable(CalcitePrepare.Context context, Queryable<T> queryable)
prepareQueryable
in interface CalcitePrepare
public <T> CalcitePrepare.CalciteSignature<T> prepareSql(CalcitePrepare.Context context, CalcitePrepare.Query<T> query, java.lang.reflect.Type elementType, long maxRowCount)
prepareSql
in interface CalcitePrepare
<T> CalcitePrepare.CalciteSignature<T> prepare_(CalcitePrepare.Context context, CalcitePrepare.Query<T> query, java.lang.reflect.Type elementType, long maxRowCount)
private <T> CalcitePrepare.CalciteSignature<T> simplePrepare(CalcitePrepare.Context context, java.lang.String sql)
private org.apache.calcite.avatica.Meta.StatementType getStatementType(SqlKind kind)
kind
- Kind of statementprivate org.apache.calcite.avatica.Meta.StatementType getStatementType(Prepare.PreparedResult preparedResult)
preparedResult
- Prepare result<T> CalcitePrepare.CalciteSignature<T> prepare2_(CalcitePrepare.Context context, CalcitePrepare.Query<T> query, java.lang.reflect.Type elementType, long maxRowCount, CalciteCatalogReader catalogReader, RelOptPlanner planner)
private SqlValidator createSqlValidator(CalcitePrepare.Context context, CalciteCatalogReader catalogReader)
private java.util.List<org.apache.calcite.avatica.ColumnMetaData> getColumnMetaDataList(JavaTypeFactory typeFactory, RelDataType x, RelDataType jdbcType, java.util.List<java.util.List<java.lang.String>> originList)
private org.apache.calcite.avatica.ColumnMetaData metaData(JavaTypeFactory typeFactory, int ordinal, java.lang.String fieldName, RelDataType type, RelDataType fieldType, java.util.List<java.lang.String> origins)
private org.apache.calcite.avatica.ColumnMetaData.AvaticaType avaticaType(JavaTypeFactory typeFactory, RelDataType type, RelDataType fieldType)
private static java.lang.String origin(java.util.List<java.lang.String> origins, int offsetFromEnd)
private int getTypeOrdinal(RelDataType type)
private static java.lang.String getClassName(RelDataType type)
private static int getScale(RelDataType type)
private static int getPrecision(RelDataType type)
private static java.lang.String getTypeName(RelDataType type)
protected void populateMaterializations(CalcitePrepare.Context context, RelOptPlanner planner, Prepare.Materialization materialization)
private static RelDataType makeStruct(RelDataTypeFactory typeFactory, RelDataType type)
public <R> R perform(CalciteServerStatement statement, Frameworks.PrepareAction<R> action)
Copyright © 2012–2019 The Apache Software Foundation. All rights reserved.