Skip to content

Commit 9d3a737

Browse files
committed
Support portable decimal types for Beam SQL
1 parent 40e2b0d commit 9d3a737

File tree

1 file changed

+5
-0
lines changed
  • sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/rel

1 file changed

+5
-0
lines changed

sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/rel/BeamCalcRel.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.apache.beam.sdk.schemas.Schema;
5555
import org.apache.beam.sdk.schemas.Schema.LogicalType;
5656
import org.apache.beam.sdk.schemas.logicaltypes.FixedBytes;
57+
import org.apache.beam.sdk.schemas.logicaltypes.FixedPrecisionNumeric;
5758
import org.apache.beam.sdk.schemas.logicaltypes.FixedString;
5859
import org.apache.beam.sdk.schemas.logicaltypes.PassThroughLogicalType;
5960
import org.apache.beam.sdk.schemas.logicaltypes.SqlTypes;
@@ -600,6 +601,8 @@ private static Expression getBeamField(
600601
fieldName,
601602
Expressions.constant(LocalDateTime.class)),
602603
LocalDateTime.class);
604+
} else if (FixedPrecisionNumeric.IDENTIFIER.equals(identifier)) {
605+
value = Expressions.call(expression, "getDecimal", fieldName);
603606
} else {
604607
throw new UnsupportedOperationException("Unable to get logical type " + identifier);
605608
}
@@ -687,6 +690,8 @@ private static Expression toCalciteValue(Expression value, FieldType fieldType)
687690
Expressions.multiply(dateValue, Expressions.constant(MILLIS_PER_DAY)),
688691
Expressions.divide(timeValue, Expressions.constant(NANOS_PER_MILLISECOND)));
689692
return nullOr(value, returnValue);
693+
} else if (FixedPrecisionNumeric.IDENTIFIER.equals(identifier)) {
694+
return Expressions.convert_(value, BigDecimal.class);
690695
} else {
691696
throw new UnsupportedOperationException("Unable to convert logical type " + identifier);
692697
}

0 commit comments

Comments
 (0)