package com.airbnb.airpal.presto.hive;
import com.facebook.presto.client.ClientTypeSignature;
import com.facebook.presto.client.ClientTypeSignatureParameter;
import com.facebook.presto.client.Column;
import com.facebook.presto.spi.type.TypeSignature;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import javax.annotation.concurrent.Immutable;
@Immutable
public class HiveColumn extends Column {
private final boolean isPartition;
private final boolean isNullable;
@JsonCreator
public HiveColumn(@JsonProperty("name") String name,
@JsonProperty("type") String type,
@JsonProperty("isPartition") boolean isPartition,
@JsonProperty("isNullable") boolean isNullable) {
super(name, type, new ClientTypeSignature(TypeSignature.parseTypeSignature(type)));
this.isPartition = isPartition;
this.isNullable = isNullable;
}
@JsonProperty
public boolean isPartition() {
return isPartition;
}
@JsonProperty
public boolean isNullable() {
return isNullable;
}
public static HiveColumn fromColumn(Column column, boolean isNullable, boolean isPartition) {
return new HiveColumn(column.getName(), column.getType(),isPartition, isNullable);
}
}