Skip to content

Commit

Permalink
chore: update to substrait 0.48.0 (#250)
Browse files Browse the repository at this point in the history
feat(pojo): wire in PrecisionTimestamp and PrecisionTimestampTZ

BREAKING CHANGE: ParameterizedTypeVisitor has new visit methods
BREAKING CHANGE: TypeExpressionVisitor has new visit methods
BREAKING CHANGE: TypeVisitor has new visit methods
BREAKING CHANGE: BaseProtoTypes has new visit methods
  • Loading branch information
vbarua authored Apr 26, 2024
1 parent ce0f1ee commit 572fe57
Show file tree
Hide file tree
Showing 21 changed files with 390 additions and 1 deletion.
4 changes: 4 additions & 0 deletions core/src/main/antlr/SubstraitType.g4
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ IntervalYear: I N T E R V A L '_' Y E A R;
IntervalDay: I N T E R V A L '_' D A Y;
UUID : U U I D;
Decimal : D E C I M A L;
PrecisionTimestamp: P R E C I S I O N '_' T I M E S T A M P;
PrecisionTimestampTZ: P R E C I S I O N '_' T I M E S T A M P '_' T Z;
FixedChar: F I X E D C H A R;
VarChar : V A R C H A R;
FixedBinary: F I X E D B I N A R Y;
Expand Down Expand Up @@ -167,6 +169,8 @@ parameterizedType
| VarChar isnull='?'? Lt len=numericParameter Gt #varChar
| FixedBinary isnull='?'? Lt len=numericParameter Gt #fixedBinary
| Decimal isnull='?'? Lt precision=numericParameter Comma scale=numericParameter Gt #decimal
| PrecisionTimestamp isnull='?'? Lt precision=numericParameter Gt #precisionTimestamp
| PrecisionTimestampTZ isnull='?'? Lt precision=numericParameter Gt #precisionTimestampTZ
| Struct isnull='?'? Lt expr (Comma expr)* Gt #struct
| NStruct isnull='?'? Lt Identifier expr (Comma Identifier expr)* Gt #nStruct
| List isnull='?'? Lt expr Gt #list
Expand Down
30 changes: 30 additions & 0 deletions core/src/main/java/io/substrait/function/ParameterizedType.java
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,36 @@ public static ImmutableParameterizedType.Decimal.Builder builder() {
}
}

@Value.Immutable
abstract static class PrecisionTimestamp extends BaseParameterizedType implements NullableType {
public abstract StringLiteral precision();

@Override
<R, E extends Throwable> R accept(final ParameterizedTypeVisitor<R, E> parameterizedTypeVisitor)
throws E {
return parameterizedTypeVisitor.visit(this);
}

public static ImmutableParameterizedType.PrecisionTimestamp.Builder builder() {
return ImmutableParameterizedType.PrecisionTimestamp.builder();
}
}

@Value.Immutable
abstract static class PrecisionTimestampTZ extends BaseParameterizedType implements NullableType {
public abstract StringLiteral precision();

@Override
<R, E extends Throwable> R accept(final ParameterizedTypeVisitor<R, E> parameterizedTypeVisitor)
throws E {
return parameterizedTypeVisitor.visit(this);
}

public static ImmutableParameterizedType.PrecisionTimestampTZ.Builder builder() {
return ImmutableParameterizedType.PrecisionTimestampTZ.builder();
}
}

@Value.Immutable
abstract static class Struct extends BaseParameterizedType implements NullableType {
public abstract java.util.List<ParameterizedType> fields();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,20 @@ public ParameterizedType decimalE(String precision, String scale) {
.build();
}

public ParameterizedType precisionTimestampE(String precision) {
return ParameterizedType.PrecisionTimestamp.builder()
.nullable(nullable)
.precision(parameter(precision, false))
.build();
}

public ParameterizedType precisionTimestampTZE(String precision) {
return ParameterizedType.PrecisionTimestampTZ.builder()
.nullable(nullable)
.precision(parameter(precision, false))
.build();
}

public ParameterizedType structE(ParameterizedType... types) {
return ParameterizedType.Struct.builder().nullable(nullable).addFields(types).build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ public interface ParameterizedTypeVisitor<R, E extends Throwable> extends TypeVi

R visit(ParameterizedType.Decimal expr) throws E;

R visit(ParameterizedType.PrecisionTimestamp expr) throws E;

R visit(ParameterizedType.PrecisionTimestampTZ expr) throws E;

R visit(ParameterizedType.Struct expr) throws E;

R visit(ParameterizedType.ListType expr) throws E;
Expand Down Expand Up @@ -46,6 +50,16 @@ public R visit(ParameterizedType.Decimal expr) throws E {
throw t();
}

@Override
public R visit(ParameterizedType.PrecisionTimestamp expr) throws E {
throw t();
}

@Override
public R visit(ParameterizedType.PrecisionTimestampTZ expr) throws E {
throw t();
}

@Override
public R visit(ParameterizedType.Struct expr) throws E {
throw t();
Expand Down
20 changes: 20 additions & 0 deletions core/src/main/java/io/substrait/function/ToTypeString.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,16 @@ public String visit(final Type.Decimal expr) {
return "dec";
}

@Override
public String visit(final Type.PrecisionTimestamp expr) {
return "pts";
}

@Override
public String visit(final Type.PrecisionTimestampTZ expr) {
return "ptstz";
}

@Override
public String visit(final Type.Struct expr) {
return "struct";
Expand Down Expand Up @@ -155,6 +165,16 @@ public String visit(ParameterizedType.Decimal expr) throws RuntimeException {
return "dec";
}

@Override
public String visit(ParameterizedType.PrecisionTimestamp expr) throws RuntimeException {
return "pts";
}

@Override
public String visit(ParameterizedType.PrecisionTimestampTZ expr) throws RuntimeException {
return "ptstz";
}

@Override
public String visit(ParameterizedType.Struct expr) throws RuntimeException {
return "struct";
Expand Down
30 changes: 30 additions & 0 deletions core/src/main/java/io/substrait/function/TypeExpression.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,36 @@ public static ImmutableTypeExpression.Decimal.Builder builder() {
}
}

@Value.Immutable
abstract static class PrecisionTimestamp extends BaseTypeExpression implements NullableType {

public abstract TypeExpression precision();

@Override
<R, E extends Throwable> R acceptE(final TypeExpressionVisitor<R, E> visitor) throws E {
return visitor.visit(this);
}

public static ImmutableTypeExpression.PrecisionTimestamp.Builder builder() {
return ImmutableTypeExpression.PrecisionTimestamp.builder();
}
}

@Value.Immutable
abstract static class PrecisionTimestampTZ extends BaseTypeExpression implements NullableType {

public abstract TypeExpression precision();

@Override
<R, E extends Throwable> R acceptE(final TypeExpressionVisitor<R, E> visitor) throws E {
return visitor.visit(this);
}

public static ImmutableTypeExpression.PrecisionTimestampTZ.Builder builder() {
return ImmutableTypeExpression.PrecisionTimestampTZ.builder();
}
}

@Value.Immutable
abstract static class Struct extends BaseTypeExpression implements NullableType {
public abstract java.util.List<TypeExpression> fields();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,20 @@ public TypeExpression decimalE(TypeExpression precision, TypeExpression scale) {
.build();
}

public TypeExpression precisionTimestampE(TypeExpression precision) {
return TypeExpression.PrecisionTimestamp.builder()
.nullable(nullable)
.precision(precision)
.build();
}

public TypeExpression precisionTimestampTZE(TypeExpression precision) {
return TypeExpression.PrecisionTimestampTZ.builder()
.nullable(nullable)
.precision(precision)
.build();
}

public TypeExpression structE(TypeExpression... types) {
return TypeExpression.Struct.builder().nullable(nullable).addFields(types).build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ public interface TypeExpressionVisitor<R, E extends Throwable>

R visit(TypeExpression.Decimal expr) throws E;

R visit(TypeExpression.PrecisionTimestamp expr) throws E;

R visit(TypeExpression.PrecisionTimestampTZ expr) throws E;

R visit(TypeExpression.Struct expr) throws E;

R visit(TypeExpression.ListType expr) throws E;
Expand Down Expand Up @@ -54,6 +58,16 @@ public R visit(TypeExpression.Decimal expr) throws E {
throw t();
}

@Override
public R visit(TypeExpression.PrecisionTimestamp expr) throws E {
throw t();
}

@Override
public R visit(TypeExpression.PrecisionTimestampTZ expr) throws E {
throw t();
}

@Override
public R visit(TypeExpression.Struct expr) throws E {
throw t();
Expand Down
10 changes: 10 additions & 0 deletions core/src/main/java/io/substrait/type/StringTypeVisitor.java
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,16 @@ public String visit(Type.Decimal type) throws RuntimeException {
return String.format("decimal<%d,%d>%s", type.precision(), type.scale(), n(type));
}

@Override
public String visit(Type.PrecisionTimestamp type) throws RuntimeException {
return String.format("precision_timestamp<%d>%s", type.precision(), n(type));
}

@Override
public String visit(Type.PrecisionTimestampTZ type) throws RuntimeException {
return String.format("precision_timestamp_tz<%d>%s", type.precision(), n(type));
}

@Override
public String visit(Type.Struct type) throws RuntimeException {
return String.format(
Expand Down
37 changes: 37 additions & 0 deletions core/src/main/java/io/substrait/type/Type.java
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,12 @@ public <R, E extends Throwable> R accept(final TypeVisitor<R, E> typeVisitor) th
}
}

/** Deprecated, use {@link PrecisionTimestampTZ} instead */
@Value.Immutable
@Deprecated
abstract static class TimestampTZ implements Type {

/** Deprecated, use {@link PrecisionTimestampTZ#builder()} instead */
public static ImmutableType.TimestampTZ.Builder builder() {
return ImmutableType.TimestampTZ.builder();
}
Expand All @@ -167,8 +171,13 @@ public <R, E extends Throwable> R accept(final TypeVisitor<R, E> typeVisitor) th
}
}

/** Deprecated, use {@link PrecisionTimestamp} instead */
@Value.Immutable
@Deprecated
abstract static class Timestamp implements Type {

/** Deprecated, use {@link PrecisionTimestamp#builder()} instead */
@Deprecated
public static ImmutableType.Timestamp.Builder builder() {
return ImmutableType.Timestamp.builder();
}
Expand Down Expand Up @@ -273,6 +282,34 @@ public <R, E extends Throwable> R accept(final TypeVisitor<R, E> typeVisitor) th
}
}

@Value.Immutable
abstract static class PrecisionTimestamp implements Type {
public abstract int precision();

public static ImmutableType.PrecisionTimestamp.Builder builder() {
return ImmutableType.PrecisionTimestamp.builder();
}

@Override
public <R, E extends Throwable> R accept(final TypeVisitor<R, E> typeVisitor) throws E {
return typeVisitor.visit(this);
}
}

@Value.Immutable
abstract static class PrecisionTimestampTZ implements Type {
public abstract int precision();

public static ImmutableType.PrecisionTimestampTZ.Builder builder() {
return ImmutableType.PrecisionTimestampTZ.builder();
}

@Override
public <R, E extends Throwable> R accept(final TypeVisitor<R, E> typeVisitor) throws E {
return typeVisitor.visit(this);
}
}

@Value.Immutable
abstract static class Struct implements Type {
public abstract java.util.List<Type> fields();
Expand Down
18 changes: 18 additions & 0 deletions core/src/main/java/io/substrait/type/TypeCreator.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ public final Type.Struct struct(Type... types) {
return Type.Struct.builder().nullable(nullable).addFields(types).build();
}

public final Type precisionTimestamp(int precision) {
return Type.PrecisionTimestamp.builder().nullable(nullable).precision(precision).build();
}

public final Type precisionTimestampTZ(int precision) {
return Type.PrecisionTimestampTZ.builder().nullable(nullable).precision(precision).build();
}

public Type.Struct struct(Iterable<? extends Type> types) {
return Type.Struct.builder().nullable(nullable).addAllFields(types).build();
}
Expand Down Expand Up @@ -215,6 +223,16 @@ public Type visit(Type.Decimal type) throws RuntimeException {
return Type.Decimal.builder().from(type).nullable(nullability).build();
}

@Override
public Type visit(Type.PrecisionTimestamp type) throws RuntimeException {
return Type.PrecisionTimestamp.builder().from(type).nullable(nullability).build();
}

@Override
public Type visit(Type.PrecisionTimestampTZ type) throws RuntimeException {
return Type.PrecisionTimestampTZ.builder().from(type).nullable(nullability).build();
}

@Override
public Type visit(Type.Struct type) throws RuntimeException {
return Type.Struct.builder().from(type).nullable(nullability).build();
Expand Down
14 changes: 14 additions & 0 deletions core/src/main/java/io/substrait/type/TypeVisitor.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ public interface TypeVisitor<R, E extends Throwable> {

R visit(Type.Timestamp type) throws E;

R visit(Type.PrecisionTimestamp type) throws E;

R visit(Type.PrecisionTimestampTZ type) throws E;

R visit(Type.IntervalYear type) throws E;

R visit(Type.IntervalDay type) throws E;
Expand Down Expand Up @@ -162,6 +166,16 @@ public R visit(Type.Decimal type) throws E {
throw t();
}

@Override
public R visit(Type.PrecisionTimestamp type) throws E {
throw t();
}

@Override
public R visit(Type.PrecisionTimestampTZ type) throws E {
throw t();
}

@Override
public R visit(Type.Struct type) throws E {
throw t();
Expand Down
Loading

0 comments on commit 572fe57

Please sign in to comment.