Skip to content

Commit 75ae9dd

Browse files
julienledemkou
authored andcommitted
ARROW-270: Define more generic Interval logical type
Author: Julien Le Dem <julien@dremio.com> Closes apache#144 from julienledem/interval and squashes the following commits: eb76fed [Julien Le Dem] ARROW-270: Define more generic Interval logical type
1 parent 213e0de commit 75ae9dd

File tree

4 files changed

+23
-24
lines changed

4 files changed

+23
-24
lines changed

vector/src/main/codegen/data/ArrowTypes.tdd

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,8 @@
6969
fields: [{name: "timezone", type: "String"}]
7070
},
7171
{
72-
name: "IntervalDay",
73-
fields: []
74-
},
75-
{
76-
name: "IntervalYear",
77-
fields: []
72+
name: "Interval",
73+
fields: [{name: "unit", type: short}]
7874
}
7975
]
8076
}

vector/src/main/codegen/templates/NullableValueVectors.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@ public final class ${className} extends BaseDataValueVector implements <#if type
105105
<#elseif minor.class == "TimeStamp">
106106
field = new Field(name, true, new org.apache.arrow.vector.types.pojo.ArrowType.Timestamp(""), null);
107107
<#elseif minor.class == "IntervalDay">
108-
field = new Field(name, true, new IntervalDay(), null);
108+
field = new Field(name, true, new Interval(org.apache.arrow.flatbuf.IntervalUnit.DAY_TIME), null);
109109
<#elseif minor.class == "IntervalYear">
110-
field = new Field(name, true, new IntervalYear(), null);
110+
field = new Field(name, true, new Interval(org.apache.arrow.flatbuf.IntervalUnit.YEAR_MONTH), null);
111111
<#elseif minor.class == "VarChar">
112112
field = new Field(name, true, new Utf8(), null);
113113
<#elseif minor.class == "VarBinary">

vector/src/main/java/org/apache/arrow/vector/schema/TypeLayout.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.Collections;
3232
import java.util.List;
3333

34+
import org.apache.arrow.flatbuf.IntervalUnit;
3435
import org.apache.arrow.flatbuf.UnionMode;
3536
import org.apache.arrow.vector.types.pojo.ArrowType;
3637
import org.apache.arrow.vector.types.pojo.ArrowType.ArrowTypeVisitor;
@@ -40,12 +41,11 @@
4041
import org.apache.arrow.vector.types.pojo.ArrowType.Decimal;
4142
import org.apache.arrow.vector.types.pojo.ArrowType.FloatingPoint;
4243
import org.apache.arrow.vector.types.pojo.ArrowType.Int;
43-
import org.apache.arrow.vector.types.pojo.ArrowType.IntervalDay;
44-
import org.apache.arrow.vector.types.pojo.ArrowType.IntervalYear;
44+
import org.apache.arrow.vector.types.pojo.ArrowType.Interval;
4545
import org.apache.arrow.vector.types.pojo.ArrowType.Null;
46+
import org.apache.arrow.vector.types.pojo.ArrowType.Struct_;
4647
import org.apache.arrow.vector.types.pojo.ArrowType.Time;
4748
import org.apache.arrow.vector.types.pojo.ArrowType.Timestamp;
48-
import org.apache.arrow.vector.types.pojo.ArrowType.Struct_;
4949
import org.apache.arrow.vector.types.pojo.ArrowType.Union;
5050
import org.apache.arrow.vector.types.pojo.ArrowType.Utf8;
5151

@@ -167,14 +167,17 @@ public TypeLayout visit(Time type) {
167167
}
168168

169169
@Override
170-
public TypeLayout visit(IntervalDay type) { // TODO: check size
171-
return newFixedWidthTypeLayout(dataVector(64));
170+
public TypeLayout visit(Interval type) { // TODO: check size
171+
switch (type.getUnit()) {
172+
case IntervalUnit.DAY_TIME:
173+
return newFixedWidthTypeLayout(dataVector(64));
174+
case IntervalUnit.YEAR_MONTH:
175+
return newFixedWidthTypeLayout(dataVector(64));
176+
default:
177+
throw new UnsupportedOperationException("Unknown unit " + type.getUnit());
178+
}
172179
}
173180

174-
@Override
175-
public TypeLayout visit(IntervalYear type) { // TODO: check size
176-
return newFixedWidthTypeLayout(dataVector(64));
177-
}
178181
});
179182
return layout;
180183
}

vector/src/main/java/org/apache/arrow/vector/types/Types.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.HashMap;
2121
import java.util.Map;
2222

23+
import org.apache.arrow.flatbuf.IntervalUnit;
2324
import org.apache.arrow.flatbuf.Precision;
2425
import org.apache.arrow.flatbuf.Type;
2526
import org.apache.arrow.flatbuf.UnionMode;
@@ -78,13 +79,12 @@
7879
import org.apache.arrow.vector.types.pojo.ArrowType.Date;
7980
import org.apache.arrow.vector.types.pojo.ArrowType.FloatingPoint;
8081
import org.apache.arrow.vector.types.pojo.ArrowType.Int;
81-
import org.apache.arrow.vector.types.pojo.ArrowType.IntervalDay;
82-
import org.apache.arrow.vector.types.pojo.ArrowType.IntervalYear;
82+
import org.apache.arrow.vector.types.pojo.ArrowType.Interval;
8383
import org.apache.arrow.vector.types.pojo.ArrowType.List;
8484
import org.apache.arrow.vector.types.pojo.ArrowType.Null;
85+
import org.apache.arrow.vector.types.pojo.ArrowType.Struct_;
8586
import org.apache.arrow.vector.types.pojo.ArrowType.Time;
8687
import org.apache.arrow.vector.types.pojo.ArrowType.Timestamp;
87-
import org.apache.arrow.vector.types.pojo.ArrowType.Struct_;
8888
import org.apache.arrow.vector.types.pojo.ArrowType.Union;
8989
import org.apache.arrow.vector.types.pojo.ArrowType.Utf8;
9090
import org.apache.arrow.vector.types.pojo.Field;
@@ -104,8 +104,8 @@ public class Types {
104104
public static final Field DATE_FIELD = new Field("", true, Date.INSTANCE, null);
105105
public static final Field TIME_FIELD = new Field("", true, Time.INSTANCE, null);
106106
public static final Field TIMESTAMP_FIELD = new Field("", true, new Timestamp(""), null);
107-
public static final Field INTERVALDAY_FIELD = new Field("", true, IntervalDay.INSTANCE, null);
108-
public static final Field INTERVALYEAR_FIELD = new Field("", true, IntervalYear.INSTANCE, null);
107+
public static final Field INTERVALDAY_FIELD = new Field("", true, new Interval(IntervalUnit.DAY_TIME), null);
108+
public static final Field INTERVALYEAR_FIELD = new Field("", true, new Interval(IntervalUnit.YEAR_MONTH), null);
109109
public static final Field FLOAT4_FIELD = new Field("", true, new FloatingPoint(Precision.SINGLE), null);
110110
public static final Field FLOAT8_FIELD = new Field("", true, new FloatingPoint(Precision.DOUBLE), null);
111111
public static final Field LIST_FIELD = new Field("", true, List.INSTANCE, null);
@@ -260,7 +260,7 @@ public FieldWriter getNewFieldWriter(ValueVector vector) {
260260
return new TimeStampWriterImpl((NullableTimeStampVector) vector);
261261
}
262262
},
263-
INTERVALDAY(IntervalDay.INSTANCE) {
263+
INTERVALDAY(new Interval(IntervalUnit.DAY_TIME)) {
264264
@Override
265265
public Field getField() {
266266
return INTERVALDAY_FIELD;
@@ -276,7 +276,7 @@ public FieldWriter getNewFieldWriter(ValueVector vector) {
276276
return new IntervalDayWriterImpl((NullableIntervalDayVector) vector);
277277
}
278278
},
279-
INTERVALYEAR(IntervalYear.INSTANCE) {
279+
INTERVALYEAR(new Interval(IntervalUnit.YEAR_MONTH)) {
280280
@Override
281281
public Field getField() {
282282
return INTERVALYEAR_FIELD;

0 commit comments

Comments
 (0)