Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update to substrait 0.46.0 #245

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
23 changes: 22 additions & 1 deletion 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,7 +165,18 @@ public String visit(ParameterizedType.Decimal expr) throws RuntimeException {
return "dec";
}

@Override

@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 "precision_timestamp" + n(type);
}

@Override
public String visit(Type.PrecisionTimestampTZ type) throws RuntimeException {
return "precision_timestamp_tz" + n(type);
}

@Override
public String visit(Type.Struct type) throws RuntimeException {
return String.format(
Expand Down
39 changes: 39 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,36 @@ 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
Loading