Package org.apache.calcite.adapter.druid
Class DruidConnectionImpl
- java.lang.Object
-
- org.apache.calcite.adapter.druid.DruidConnectionImpl
-
- All Implemented Interfaces:
DruidConnection
class DruidConnectionImpl extends java.lang.Object implements DruidConnection
Implementation ofDruidConnection
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
DruidConnectionImpl.BlockingQueueEnumerator<E>
AnEnumerator
that gets its rows from aBlockingQueue
.private static class
DruidConnectionImpl.JsonAggregator
Element of the "aggregators" collection in the result of a "segmentMetadata" call, populated by Jackson.private static class
DruidConnectionImpl.JsonColumn
Element of the "columns" collection in the result of a "segmentMetadata" call, populated by Jackson.private static class
DruidConnectionImpl.JsonSegmentMetadata
Result of a "segmentMetadata" call, populated by Jackson.(package private) static class
DruidConnectionImpl.Page
Progress through a large fetch.private static interface
DruidConnectionImpl.RunnableQueueSink
ASink
that is alsoRunnable
.
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
coordinatorUrl
static java.lang.String
DEFAULT_RESPONSE_TIMESTAMP_COLUMN
private static java.text.SimpleDateFormat
TIMESTAMP_FORMAT
private java.lang.String
url
private static java.text.SimpleDateFormat
UTC_TIMESTAMP_FORMAT
-
Constructor Summary
Constructors Constructor Description DruidConnectionImpl(java.lang.String url, java.lang.String coordinatorUrl)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Enumerable<Row>
enumerable(QueryType queryType, java.lang.String request, java.util.List<java.lang.String> fieldNames, java.util.concurrent.ExecutorService service)
Executes a request and returns the resulting rows as anEnumerable
, running the parser in a thread provided byservice
.private void
expect(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.core.JsonToken token)
private void
expect(com.fasterxml.jackson.core.JsonToken token, com.fasterxml.jackson.core.JsonToken expected)
private void
expectObjectField(com.fasterxml.jackson.core.JsonParser parser, java.lang.String name)
private void
expectScalarField(com.fasterxml.jackson.core.JsonParser parser, java.lang.String name)
private java.lang.Long
extractTimestampField(com.fasterxml.jackson.core.JsonParser parser)
(package private) void
metadata(java.lang.String dataSourceName, java.lang.String timestampColumnName, java.util.List<org.joda.time.Interval> intervals, java.util.Map<java.lang.String,SqlTypeName> fieldBuilder, java.util.Set<java.lang.String> metricNameBuilder, java.util.Map<java.lang.String,java.util.List<ComplexMetric>> complexMetrics)
Reads segment metadata, and populates a list of columns and metrics.private void
parse(QueryType queryType, java.io.InputStream in, Sink sink, java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, DruidConnectionImpl.Page page)
Parses the output of a query, sending the results to aSink
.private void
parseField(java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, int posTimestampField, Row.RowBuilder rowBuilder, com.fasterxml.jackson.core.JsonParser parser)
private void
parseFieldForName(java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, int posTimestampField, Row.RowBuilder rowBuilder, com.fasterxml.jackson.core.JsonParser parser, java.lang.String fieldName)
private void
parseFields(java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, int posTimestampField, Row.RowBuilder rowBuilder, com.fasterxml.jackson.core.JsonParser parser)
private void
parseFields(java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, Row.RowBuilder rowBuilder, com.fasterxml.jackson.core.JsonParser parser)
void
request(QueryType queryType, java.lang.String data, Sink sink, java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, DruidConnectionImpl.Page page)
Executes a query request.(package private) java.util.Set<java.lang.String>
tableNames()
Reads data source names from Druid.private java.io.InputStream
traceResponse(java.io.InputStream in)
-
-
-
Field Detail
-
url
private final java.lang.String url
-
coordinatorUrl
private final java.lang.String coordinatorUrl
-
DEFAULT_RESPONSE_TIMESTAMP_COLUMN
public static final java.lang.String DEFAULT_RESPONSE_TIMESTAMP_COLUMN
- See Also:
- Constant Field Values
-
UTC_TIMESTAMP_FORMAT
private static final java.text.SimpleDateFormat UTC_TIMESTAMP_FORMAT
-
TIMESTAMP_FORMAT
private static final java.text.SimpleDateFormat TIMESTAMP_FORMAT
-
-
Method Detail
-
request
public void request(QueryType queryType, java.lang.String data, Sink sink, java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, DruidConnectionImpl.Page page)
Executes a query request.- Parameters:
queryType
- Query typedata
- Data to postsink
- Sink to which to send the parsed rowsfieldNames
- Names of fieldsfieldTypes
- Types of fields (never null, but elements may be null)page
- Page definition (in/out)
-
parse
private void parse(QueryType queryType, java.io.InputStream in, Sink sink, java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, DruidConnectionImpl.Page page)
Parses the output of a query, sending the results to aSink
.
-
parseFields
private void parseFields(java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, Row.RowBuilder rowBuilder, com.fasterxml.jackson.core.JsonParser parser) throws java.io.IOException
- Throws:
java.io.IOException
-
parseFields
private void parseFields(java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, int posTimestampField, Row.RowBuilder rowBuilder, com.fasterxml.jackson.core.JsonParser parser) throws java.io.IOException
- Throws:
java.io.IOException
-
parseField
private void parseField(java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, int posTimestampField, Row.RowBuilder rowBuilder, com.fasterxml.jackson.core.JsonParser parser) throws java.io.IOException
- Throws:
java.io.IOException
-
parseFieldForName
private void parseFieldForName(java.util.List<java.lang.String> fieldNames, java.util.List<org.apache.calcite.avatica.ColumnMetaData.Rep> fieldTypes, int posTimestampField, Row.RowBuilder rowBuilder, com.fasterxml.jackson.core.JsonParser parser, java.lang.String fieldName) throws java.io.IOException
- Throws:
java.io.IOException
-
expect
private void expect(com.fasterxml.jackson.core.JsonParser parser, com.fasterxml.jackson.core.JsonToken token) throws java.io.IOException
- Throws:
java.io.IOException
-
expect
private void expect(com.fasterxml.jackson.core.JsonToken token, com.fasterxml.jackson.core.JsonToken expected) throws java.io.IOException
- Throws:
java.io.IOException
-
expectScalarField
private void expectScalarField(com.fasterxml.jackson.core.JsonParser parser, java.lang.String name) throws java.io.IOException
- Throws:
java.io.IOException
-
expectObjectField
private void expectObjectField(com.fasterxml.jackson.core.JsonParser parser, java.lang.String name) throws java.io.IOException
- Throws:
java.io.IOException
-
extractTimestampField
private java.lang.Long extractTimestampField(com.fasterxml.jackson.core.JsonParser parser) throws java.io.IOException
- Throws:
java.io.IOException
-
enumerable
public Enumerable<Row> enumerable(QueryType queryType, java.lang.String request, java.util.List<java.lang.String> fieldNames, java.util.concurrent.ExecutorService service) throws java.io.IOException
Executes a request and returns the resulting rows as anEnumerable
, running the parser in a thread provided byservice
.- Throws:
java.io.IOException
-
metadata
void metadata(java.lang.String dataSourceName, java.lang.String timestampColumnName, java.util.List<org.joda.time.Interval> intervals, java.util.Map<java.lang.String,SqlTypeName> fieldBuilder, java.util.Set<java.lang.String> metricNameBuilder, java.util.Map<java.lang.String,java.util.List<ComplexMetric>> complexMetrics)
Reads segment metadata, and populates a list of columns and metrics.
-
tableNames
java.util.Set<java.lang.String> tableNames()
Reads data source names from Druid.
-
traceResponse
private java.io.InputStream traceResponse(java.io.InputStream in)
-
-