public class SqlLifecycle extends Object
QueryLifecycle, this class manages the lifecycle of a SQL query.
It ensures that a SQL query goes through the following stages, in the proper order:
initialize(String, Map))plan(HttpServletRequest) or plan(AuthenticationResult))authorize())execute())emitLogsAndMetrics(Throwable, String, long))Unlike QueryLifecycle, this class is designed to be thread safe so that it can be used in multi-threaded scenario (JDBC) without external synchronization.
| Constructor and Description |
|---|
SqlLifecycle(PlannerFactory plannerFactory,
ServiceEmitter emitter,
RequestLogger requestLogger,
long startMs,
long startNs) |
| Modifier and Type | Method and Description |
|---|---|
Access |
authorize() |
void |
emitLogsAndMetrics(Throwable e,
String remoteAddress,
long bytesWritten)
Emit logs and metrics for this query.
|
Sequence<Object[]> |
execute() |
String |
initialize(String sql,
Map<String,Object> queryContext) |
PlannerContext |
plan(AuthenticationResult authenticationResult) |
PlannerContext |
plan(javax.servlet.http.HttpServletRequest req) |
PlannerContext |
planAndAuthorize(AuthenticationResult authenticationResult) |
PlannerContext |
planAndAuthorize(javax.servlet.http.HttpServletRequest req) |
org.apache.calcite.rel.type.RelDataType |
rowType() |
Sequence<Object[]> |
runSimple(String sql,
Map<String,Object> queryContext,
AuthenticationResult authenticationResult) |
public SqlLifecycle(PlannerFactory plannerFactory, ServiceEmitter emitter, RequestLogger requestLogger, long startMs, long startNs)
public PlannerContext plan(AuthenticationResult authenticationResult) throws org.apache.calcite.tools.ValidationException, org.apache.calcite.tools.RelConversionException, org.apache.calcite.sql.parser.SqlParseException
org.apache.calcite.tools.ValidationExceptionorg.apache.calcite.tools.RelConversionExceptionorg.apache.calcite.sql.parser.SqlParseExceptionpublic PlannerContext plan(javax.servlet.http.HttpServletRequest req) throws org.apache.calcite.sql.parser.SqlParseException, org.apache.calcite.tools.RelConversionException, org.apache.calcite.tools.ValidationException
org.apache.calcite.sql.parser.SqlParseExceptionorg.apache.calcite.tools.RelConversionExceptionorg.apache.calcite.tools.ValidationExceptionpublic org.apache.calcite.rel.type.RelDataType rowType()
public Access authorize()
public PlannerContext planAndAuthorize(AuthenticationResult authenticationResult) throws org.apache.calcite.sql.parser.SqlParseException, org.apache.calcite.tools.RelConversionException, org.apache.calcite.tools.ValidationException
org.apache.calcite.sql.parser.SqlParseExceptionorg.apache.calcite.tools.RelConversionExceptionorg.apache.calcite.tools.ValidationExceptionpublic PlannerContext planAndAuthorize(javax.servlet.http.HttpServletRequest req) throws org.apache.calcite.sql.parser.SqlParseException, org.apache.calcite.tools.RelConversionException, org.apache.calcite.tools.ValidationException
org.apache.calcite.sql.parser.SqlParseExceptionorg.apache.calcite.tools.RelConversionExceptionorg.apache.calcite.tools.ValidationExceptionpublic Sequence<Object[]> runSimple(String sql, Map<String,Object> queryContext, AuthenticationResult authenticationResult) throws org.apache.calcite.tools.ValidationException, org.apache.calcite.tools.RelConversionException, org.apache.calcite.sql.parser.SqlParseException
org.apache.calcite.tools.ValidationExceptionorg.apache.calcite.tools.RelConversionExceptionorg.apache.calcite.sql.parser.SqlParseExceptionpublic void emitLogsAndMetrics(@Nullable Throwable e, @Nullable String remoteAddress, long bytesWritten)
e - exception that occurred while processing this queryremoteAddress - remote address, for logging; or null if unknownbytesWritten - number of bytes written; will become a query/bytes metric if >= 0Copyright © 2011–2020 The Apache Software Foundation. All rights reserved.