public class CalcitePrepareImpl extends 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 |
COMMUTE |
private static List<RelOptRule> |
CONSTANT_REDUCTION_RULES |
static boolean |
DEBUG |
private static List<RelOptRule> |
DEFAULT_RULES |
private static boolean |
ENABLE_COLLATION_TRAIT
Whether to enable the collation trait.
|
static boolean |
ENABLE_ENUMERABLE
Whether the enumerable convention is enabled.
|
static boolean |
ENABLE_STREAM
Whether the streaming is enabled.
|
boolean |
enableBindable
Whether the bindable convention should be the root convention of any
plan.
|
static List<RelOptRule> |
ENUMERABLE_RULES |
private static Set<String> |
SIMPLE_SQLS |
DEFAULT_FACTORY, THREAD_CONTEXT_STACK| Constructor and Description |
|---|
CalcitePrepareImpl() |
| Modifier and Type | Method and Description |
|---|---|
private CalcitePrepare.AnalyzeViewResult |
analyze_(SqlValidator validator,
String sql,
SqlNode sqlNode,
RelRoot root,
boolean fail) |
CalcitePrepare.AnalyzeViewResult |
analyzeView(CalcitePrepare.Context context,
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,
String sql,
boolean analyze,
boolean fail,
CalciteCatalogReader catalogReader,
SqlValidator validator,
SqlNode sqlNode1) |
CalcitePrepare.ConvertResult |
convert(CalcitePrepare.Context context,
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(String sql)
Factory method for default SQL parser.
|
protected SqlParser |
createParser(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 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 String |
getClassName(RelDataType type) |
private List<org.apache.calcite.avatica.ColumnMetaData> |
getColumnMetaDataList(JavaTypeFactory typeFactory,
RelDataType x,
RelDataType jdbcType,
List<List<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 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,
String fieldName,
RelDataType type,
RelDataType fieldType,
List<String> origins) |
private static String |
origin(List<String> origins,
int offsetFromEnd) |
private CalcitePrepare.ParseResult |
parse_(CalcitePrepare.Context context,
String sql,
boolean convert,
boolean analyze,
boolean fail)
|
CalcitePrepare.ParseResult |
parse(CalcitePrepare.Context context,
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,
Type elementType,
long maxRowCount) |
(package private) <T> CalcitePrepare.CalciteSignature<T> |
prepare2_(CalcitePrepare.Context context,
CalcitePrepare.Query<T> query,
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,
Type elementType,
long maxRowCount) |
private <T> CalcitePrepare.CalciteSignature<T> |
simplePrepare(CalcitePrepare.Context context,
String sql)
Quickly prepares a simple SQL statement, circumventing the usual
preparation process.
|
public static final boolean DEBUG
public static final boolean COMMUTE
private static final boolean ENABLE_COLLATION_TRAIT
public final boolean enableBindable
public static final boolean ENABLE_ENUMERABLE
public static final boolean ENABLE_STREAM
public static final List<RelOptRule> ENUMERABLE_RULES
private static final List<RelOptRule> DEFAULT_RULES
private static final List<RelOptRule> CONSTANT_REDUCTION_RULES
public CalcitePrepare.ParseResult parse(CalcitePrepare.Context context, String sql)
parse in interface CalcitePreparepublic CalcitePrepare.ConvertResult convert(CalcitePrepare.Context context, String sql)
convert in interface CalcitePreparepublic CalcitePrepare.AnalyzeViewResult analyzeView(CalcitePrepare.Context context, String sql, boolean fail)
CalcitePrepareanalyzeView in interface CalcitePreparecontext - Contextsql - View SQLfail - Whether to fail (and throw a descriptive error message) if the
view is not modifiableprivate CalcitePrepare.ParseResult parse_(CalcitePrepare.Context context, String sql, boolean convert, boolean analyze, boolean fail)
private CalcitePrepare.ParseResult convert_(CalcitePrepare.Context context, String sql, boolean analyze, boolean fail, CalciteCatalogReader catalogReader, SqlValidator validator, SqlNode sqlNode1)
private CalcitePrepare.AnalyzeViewResult analyze_(SqlValidator validator, String sql, SqlNode sqlNode, RelRoot root, boolean fail)
public void executeDdl(CalcitePrepare.Context context, SqlNode node)
CalcitePrepareThe statement identified itself as DDL in the
CalcitePrepare.ParseResult.kind() field.
executeDdl in interface CalcitePrepareprotected SqlParser createParser(String sql, SqlParser.ConfigBuilder parserConfig)
protected SqlParser.ConfigBuilder createParserConfig()
protected SqlRexConvertletTable createConvertletTable()
protected RelOptCluster createCluster(RelOptPlanner planner, RexBuilder rexBuilder)
protected 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 CalcitePreparepublic <T> CalcitePrepare.CalciteSignature<T> prepareSql(CalcitePrepare.Context context, CalcitePrepare.Query<T> query, Type elementType, long maxRowCount)
prepareSql in interface CalcitePrepare<T> CalcitePrepare.CalciteSignature<T> prepare_(CalcitePrepare.Context context, CalcitePrepare.Query<T> query, Type elementType, long maxRowCount)
private <T> CalcitePrepare.CalciteSignature<T> simplePrepare(CalcitePrepare.Context context, 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, Type elementType, long maxRowCount, CalciteCatalogReader catalogReader, RelOptPlanner planner)
private SqlValidator createSqlValidator(CalcitePrepare.Context context, CalciteCatalogReader catalogReader)
private List<org.apache.calcite.avatica.ColumnMetaData> getColumnMetaDataList(JavaTypeFactory typeFactory, RelDataType x, RelDataType jdbcType, List<List<String>> originList)
private org.apache.calcite.avatica.ColumnMetaData metaData(JavaTypeFactory typeFactory, int ordinal, String fieldName, RelDataType type, RelDataType fieldType, List<String> origins)
private org.apache.calcite.avatica.ColumnMetaData.AvaticaType avaticaType(JavaTypeFactory typeFactory, RelDataType type, RelDataType fieldType)
private int getTypeOrdinal(RelDataType type)
private static String getClassName(RelDataType type)
private static int getScale(RelDataType type)
private static int getPrecision(RelDataType type)
private static 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–2018 The Apache Software Foundation. All rights reserved.