org.apache.hadoop.hive.ql.plan.ptf.PartitionedTableFunctionDef 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.ptf;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.hive.ql.parse.PTFInvocationSpec;
import org.apache.hadoop.hive.ql.plan.Explain;
import org.apache.hadoop.hive.ql.plan.Explain.Level;
import org.apache.hadoop.hive.ql.udf.ptf.TableFunctionEvaluator;
@Explain(displayName = "Partition table definition", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED })
public class PartitionedTableFunctionDef extends PTFInputDef {
private String name;
private String resolverClassName;
private ShapeDetails rawInputShape;
private boolean carryForwardNames;
private PTFInputDef input;
private List args;
private PartitionDef partition;
private OrderDef order;
private TableFunctionEvaluator tFunction;
boolean transformsRawInput;
private transient List referencedColumns;
@Explain(displayName = "name", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED })
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ShapeDetails getRawInputShape() {
return rawInputShape;
}
@Explain(displayName = "raw input shape")
public ShapeDetails getRawInputShapeExplain() {
return rawInputShape;
}
public void setRawInputShape(ShapeDetails rawInputShape) {
this.rawInputShape = rawInputShape;
}
public boolean isCarryForwardNames() {
return carryForwardNames;
}
public void setCarryForwardNames(boolean carryForwardNames) {
this.carryForwardNames = carryForwardNames;
}
@Override
public PTFInputDef getInput() {
return input;
}
public void setInput(PTFInputDef input) {
this.input = input;
}
public PartitionDef getPartition() {
return partition;
}
@Explain(displayName = "partition by", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED })
public String getPartitionExplain() {
if (partition == null || partition.getExpressions() == null) {
return null;
}
StringBuilder builder = new StringBuilder();
for (PTFExpressionDef expression : partition.getExpressions()) {
if (builder.length() > 0) {
builder.append(", ");
}
builder.append(expression.getExprNode().getExprString());
}
return builder.toString();
}
public void setPartition(PartitionDef partition) {
this.partition = partition;
}
public OrderDef getOrder() {
return order;
}
public void setOrder(OrderDef order) {
this.order = order;
}
@Explain(displayName = "order by", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED })
public String getOrderExplain() {
if (order == null || order.getExpressions() == null) {
return null;
}
StringBuilder builder = new StringBuilder();
for (OrderExpressionDef expression : order.getExpressions()) {
if (builder.length() > 0) {
builder.append(", ");
}
builder.append(expression.getExprNode().getExprString());
builder.append(" ");
if (expression.getOrder() == PTFInvocationSpec.Order.ASC) {
builder.append("ASC ");
} else {
builder.append("DESC ");
}
if (expression.getNullOrder() == PTFInvocationSpec.NullOrder.NULLS_FIRST) {
builder.append("NULLS FIRST");
} else {
builder.append("NULLS LAST");
}
}
return builder.toString();
}
public TableFunctionEvaluator getTFunction() {
return tFunction;
}
public void setTFunction(TableFunctionEvaluator tFunction) {
this.tFunction = tFunction;
}
public List getArgs() {
return args;
}
public void setArgs(List args) {
this.args = args;
}
@Explain(displayName = "arguments")
public String getArgsExplain() {
if (args == null) {
return null;
}
StringBuilder builder = new StringBuilder();
for (PTFExpressionDef expression : args) {
if (builder.length() > 0) {
builder.append(", ");
}
builder.append(expression.getExprNode().getExprString());
}
return builder.toString();
}
public void addArg(PTFExpressionDef arg) {
args = args == null ? new ArrayList() : args;
args.add(arg);
}
public PartitionedTableFunctionDef getStartOfChain() {
if (input instanceof PartitionedTableFunctionDef ) {
return ((PartitionedTableFunctionDef)input).getStartOfChain();
}
return this;
}
@Explain(displayName = "transforms raw input", displayOnlyOnTrue=true)
public boolean isTransformsRawInput() {
return transformsRawInput;
}
public void setTransformsRawInput(boolean transformsRawInput) {
this.transformsRawInput = transformsRawInput;
}
public String getResolverClassName() {
return resolverClassName;
}
public void setResolverClassName(String resolverClassName) {
this.resolverClassName = resolverClassName;
}
@Explain(displayName = "referenced columns")
public List getReferencedColumns() {
return referencedColumns;
}
public void setReferencedColumns(List referencedColumns) {
this.referencedColumns = referencedColumns;
}
}