blob: 108518a7948601840b82e5b274f0fad5b0954833 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.druid.query.search;
import org.apache.druid.collections.bitmap.BitmapFactory;
import org.apache.druid.java.util.common.ISE;
import org.apache.druid.java.util.emitter.service.ServiceEmitter;
import org.apache.druid.query.BitmapResultFactory;
import org.apache.druid.query.Query;
import org.apache.druid.query.QueryMetrics;
import org.apache.druid.query.filter.Filter;
import java.util.List;
/**
* This class is implemented with delegation to another QueryMetrics for compatibility, see "Making subinterfaces of
* QueryMetrics for emitting custom dimensions and/or metrics for specific query types" section in {@link QueryMetrics}
* javadoc.
*/
public class DefaultSearchQueryMetrics implements SearchQueryMetrics
{
private QueryMetrics<Query<?>> delegateQueryMetrics;
// queryMetrics.query(query) must already be called on the provided queryMetrics.
public DefaultSearchQueryMetrics(QueryMetrics<Query<?>> queryMetrics)
{
this.delegateQueryMetrics = queryMetrics;
}
@Override
public void query(SearchQuery query)
{
//delegateQueryMetrics.query(query) must already be called on the provided queryMetrics.
}
@Override
public void dataSource(SearchQuery query)
{
throw new ISE("Unsupported method in default query metrics implementation.");
}
@Override
public void queryType(SearchQuery query)
{
throw new ISE("Unsupported method in default query metrics implementation.");
}
@Override
public void interval(SearchQuery query)
{
throw new ISE("Unsupported method in default query metrics implementation.");
}
@Override
public void hasFilters(SearchQuery query)
{
throw new ISE("Unsupported method in default query metrics implementation.");
}
@Override
public void duration(SearchQuery query)
{
throw new ISE("Unsupported method in default query metrics implementation.");
}
@Override
public void queryId(SearchQuery query)
{
throw new ISE("Unsupported method in default query metrics implementation.");
}
@Override
public void subQueryId(SearchQuery query)
{
throw new ISE("Unsupported method in default query metrics implementation.");
}
@Override
public void sqlQueryId(SearchQuery query)
{
throw new ISE("Unsupported method in default query metrics implementation.");
}
@Override
public void granularity(SearchQuery query)
{
// Don't emit by default
}
@Override
public void context(SearchQuery query)
{
throw new ISE("Unsupported method in default query metrics implementation.");
}
@Override
public void server(String host)
{
delegateQueryMetrics.server(host);
}
@Override
public void remoteAddress(String remoteAddress)
{
delegateQueryMetrics.remoteAddress(remoteAddress);
}
@Override
public void status(String status)
{
delegateQueryMetrics.status(status);
}
@Override
public void success(boolean success)
{
delegateQueryMetrics.success(success);
}
@Override
public void segment(String segmentIdentifier)
{
delegateQueryMetrics.segment(segmentIdentifier);
}
@Override
public void preFilters(List<Filter> preFilters)
{
delegateQueryMetrics.preFilters(preFilters);
}
@Override
public void postFilters(List<Filter> postFilters)
{
delegateQueryMetrics.postFilters(postFilters);
}
@Override
public void identity(String identity)
{
delegateQueryMetrics.identity(identity);
}
@Override
public void vectorized(final boolean vectorized)
{
delegateQueryMetrics.vectorized(vectorized);
}
@Override
public void parallelMergeParallelism(int parallelism)
{
delegateQueryMetrics.parallelMergeParallelism(parallelism);
}
@Override
public BitmapResultFactory<?> makeBitmapResultFactory(BitmapFactory factory)
{
return delegateQueryMetrics.makeBitmapResultFactory(factory);
}
@Override
public QueryMetrics reportQueryTime(long timeNs)
{
return delegateQueryMetrics.reportQueryTime(timeNs);
}
@Override
public QueryMetrics reportQueryBytes(long byteCount)
{
return delegateQueryMetrics.reportQueryBytes(byteCount);
}
@Override
public QueryMetrics reportWaitTime(long timeNs)
{
return delegateQueryMetrics.reportWaitTime(timeNs);
}
@Override
public QueryMetrics reportSegmentTime(long timeNs)
{
return delegateQueryMetrics.reportSegmentTime(timeNs);
}
@Override
public QueryMetrics reportSegmentAndCacheTime(long timeNs)
{
return delegateQueryMetrics.reportSegmentAndCacheTime(timeNs);
}
@Override
public QueryMetrics reportCpuTime(long timeNs)
{
return delegateQueryMetrics.reportCpuTime(timeNs);
}
@Override
public QueryMetrics reportNodeTimeToFirstByte(long timeNs)
{
return delegateQueryMetrics.reportNodeTimeToFirstByte(timeNs);
}
@Override
public QueryMetrics reportBackPressureTime(long timeNs)
{
return delegateQueryMetrics.reportBackPressureTime(timeNs);
}
@Override
public QueryMetrics reportNodeTime(long timeNs)
{
return delegateQueryMetrics.reportNodeTime(timeNs);
}
@Override
public QueryMetrics reportNodeBytes(long byteCount)
{
return delegateQueryMetrics.reportNodeBytes(byteCount);
}
@Override
public QueryMetrics reportBitmapConstructionTime(long timeNs)
{
return delegateQueryMetrics.reportBitmapConstructionTime(timeNs);
}
@Override
public QueryMetrics reportSegmentRows(long numRows)
{
return delegateQueryMetrics.reportSegmentRows(numRows);
}
@Override
public QueryMetrics reportPreFilteredRows(long numRows)
{
return delegateQueryMetrics.reportPreFilteredRows(numRows);
}
@Override
public QueryMetrics reportParallelMergeParallelism(int parallelism)
{
return delegateQueryMetrics.reportParallelMergeParallelism(parallelism);
}
@Override
public QueryMetrics reportParallelMergeInputSequences(long numSequences)
{
return delegateQueryMetrics.reportParallelMergeInputSequences(numSequences);
}
@Override
public QueryMetrics reportParallelMergeInputRows(long numRows)
{
return delegateQueryMetrics.reportParallelMergeInputRows(numRows);
}
@Override
public QueryMetrics reportParallelMergeOutputRows(long numRows)
{
return delegateQueryMetrics.reportParallelMergeOutputRows(numRows);
}
@Override
public QueryMetrics reportParallelMergeTaskCount(long numTasks)
{
return delegateQueryMetrics.reportParallelMergeTaskCount(numTasks);
}
@Override
public QueryMetrics reportParallelMergeTotalCpuTime(long timeNs)
{
return delegateQueryMetrics.reportParallelMergeTotalCpuTime(timeNs);
}
@Override
public QueryMetrics reportQueriedSegmentCount(long segmentCount)
{
return delegateQueryMetrics.reportQueriedSegmentCount(segmentCount);
}
@Override
public void emit(ServiceEmitter emitter)
{
delegateQueryMetrics.emit(emitter);
}
}