org.apache.hadoop.hive.ql.plan.ColStatistics Maven / Gradle / Ivy
/**
* 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.hadoop.hive.ql.plan;
import org.apache.hadoop.hive.ql.stats.StatsUtils;
public class ColStatistics {
private String colName;
private String colType;
private long countDistint;
private long numNulls;
private double avgColLen;
private long numTrues;
private long numFalses;
private Range range;
private boolean isPrimaryKey;
public ColStatistics(String colName, String colType) {
this.setColumnName(colName);
this.setColumnType(colType);
this.setPrimaryKey(false);
}
public ColStatistics() {
this(null, null);
}
public String getColumnName() {
return colName;
}
public void setColumnName(String colName) {
this.colName = colName;
}
public String getColumnType() {
return colType;
}
public void setColumnType(String colType) {
this.colType = colType;
}
public long getCountDistint() {
return countDistint;
}
public void setCountDistint(long countDistint) {
this.countDistint = countDistint;
}
public long getNumNulls() {
return numNulls;
}
public void setNumNulls(long numNulls) {
this.numNulls = numNulls;
}
public double getAvgColLen() {
return avgColLen;
}
public void setAvgColLen(double avgColLen) {
this.avgColLen = avgColLen;
}
public long getNumTrues() {
return numTrues;
}
public void setNumTrues(long numTrues) {
this.numTrues = numTrues;
}
public long getNumFalses() {
return numFalses;
}
public void setNumFalses(long numFalses) {
this.numFalses = numFalses;
}
public Range getRange() {
return range;
}
public void setRange(Number minVal, Number maxVal) {
this.range = new Range(minVal, maxVal);
}
public void setRange(Range r) {
this.range = r;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(" colName: ");
sb.append(colName);
sb.append(" colType: ");
sb.append(colType);
sb.append(" countDistincts: ");
sb.append(countDistint);
sb.append(" numNulls: ");
sb.append(numNulls);
sb.append(" avgColLen: ");
sb.append(avgColLen);
sb.append(" numTrues: ");
sb.append(numTrues);
sb.append(" numFalses: ");
sb.append(numFalses);
if (range != null) {
sb.append(" ");
sb.append(range);
}
sb.append(" isPrimaryKey: ");
sb.append(isPrimaryKey);
return sb.toString();
}
@Override
public ColStatistics clone() throws CloneNotSupportedException {
ColStatistics clone = new ColStatistics(colName, colType);
clone.setAvgColLen(avgColLen);
clone.setCountDistint(countDistint);
clone.setNumNulls(numNulls);
clone.setNumTrues(numTrues);
clone.setNumFalses(numFalses);
clone.setPrimaryKey(isPrimaryKey);
if (range != null ) {
clone.setRange(range.clone());
}
return clone;
}
public boolean isPrimaryKey() {
return isPrimaryKey;
}
public void setPrimaryKey(boolean isPrimaryKey) {
this.isPrimaryKey = isPrimaryKey;
}
public static class Range {
public final Number minValue;
public final Number maxValue;
public Range(Number minValue, Number maxValue) {
super();
this.minValue = minValue;
this.maxValue = maxValue;
}
@Override
public Range clone() {
return new Range(minValue, maxValue);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Range: [");
sb.append(" min: ");
sb.append(minValue);
sb.append(" max: ");
sb.append(maxValue);
sb.append(" ]");
return sb.toString();
}
}
}