blob: 00a2ec8fb9aa5ec9f65cf801adab5c43e2420204 [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.drill.exec.vector.accessor;
/**
* Represents the primitive types supported to read and write data
* from value vectors. Vectors support many data widths. For simplicity
* (and because of no difference in performance), the get/set methods
* use a reduced set of types. In general, each reader and writer
* supports just one type. Though some may provide more than one
* (such as access to bytes for a <tt>STRING</tt> value.)
*/
public enum ValueType {
/**
* The value is set from a boolean: BIT.
*/
BOOLEAN,
/**
* The value is set from an integer: TINYINT,
* SMALLINT, INT, UINT1, and UINT2.
*/
INTEGER,
/**
* The value set from a long: BIGINT and
* UINT4.
*/
LONG,
/**
* Type is set from a float: FLOAT4.
*/
FLOAT,
/**
* Type is set from a double: FLOAT4 and FLOAT8.
*/
DOUBLE,
/**
* The value can be set from a string (for convenience).
* VARCHAR and VAR16CHAR.
*/
STRING,
/**
* The value is set from a byte buffer. VARCHAR (in production
* code), VAR16CHAR, VARBINARY.
*/
BYTES,
/**
* The value is set from a BigDecimal: any of Drill's decimal
* types.
*/
DECIMAL,
/**
* The value is set from a Period. Any of Drill's date/time
* types. (Note: there is a known bug in which Drill incorrectly
* differentiates between local date/times (those without a timezone)
* and absolute date/times (those with a timezone.) Caveat emptor.
*/
PERIOD,
/**
* The value is set from a Joda LocalDate. (Should upgrade to
* Java 8 LocalDate.) Native type is an int.
*/
DATE,
/**
* The value is set from a Joda LocalTime. (Should upgrade to
* Java 8 LocalTime.) Native type is an int.
*/
TIME,
/**
* The value is set from a Joda Instant. (Should upgrade to
* Java 8 Instant.) Native type is a long.
*/
TIMESTAMP,
/**
* The value has no type. This is typically a dummy writer used
* for unprojected columns.
*/
NULL
}