Skip to content

Commit 821adcc

Browse files
eye-gueye
andauthored
Spark: Add int long BigInteger cases for Decimal (#266)
Co-authored-by: eye <eye.gu@aloudata.com>
1 parent 4ea03f8 commit 821adcc

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

spark-3.3/clickhouse-spark/src/main/scala/xenon/clickhouse/read/format/ClickHouseJsonReader.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,12 @@ class ClickHouseJsonReader(
7070
Decimal(jsonNode.decimalValue, d.precision, d.scale)
7171
case d: DecimalType if jsonNode.isFloat | jsonNode.isDouble =>
7272
Decimal(BigDecimal(jsonNode.doubleValue, new MathContext(d.precision)), d.precision, d.scale)
73+
case d: DecimalType if jsonNode.isInt =>
74+
Decimal(BigDecimal(jsonNode.intValue, new MathContext(d.precision)), d.precision, d.scale)
75+
case d: DecimalType if jsonNode.isLong =>
76+
Decimal(BigDecimal(jsonNode.longValue, new MathContext(d.precision)), d.precision, d.scale)
77+
case d: DecimalType if jsonNode.isBigInteger =>
78+
Decimal(BigDecimal(jsonNode.bigIntegerValue, new MathContext(d.precision)), d.precision, d.scale)
7379
case d: DecimalType =>
7480
Decimal(BigDecimal(jsonNode.textValue, new MathContext(d.precision)), d.precision, d.scale)
7581
case TimestampType =>

spark-3.4/clickhouse-spark/src/main/scala/xenon/clickhouse/read/format/ClickHouseJsonReader.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,12 @@ class ClickHouseJsonReader(
7070
Decimal(jsonNode.decimalValue, d.precision, d.scale)
7171
case d: DecimalType if jsonNode.isFloat | jsonNode.isDouble =>
7272
Decimal(BigDecimal(jsonNode.doubleValue, new MathContext(d.precision)), d.precision, d.scale)
73+
case d: DecimalType if jsonNode.isInt =>
74+
Decimal(BigDecimal(jsonNode.intValue, new MathContext(d.precision)), d.precision, d.scale)
75+
case d: DecimalType if jsonNode.isLong =>
76+
Decimal(BigDecimal(jsonNode.longValue, new MathContext(d.precision)), d.precision, d.scale)
77+
case d: DecimalType if jsonNode.isBigInteger =>
78+
Decimal(BigDecimal(jsonNode.bigIntegerValue, new MathContext(d.precision)), d.precision, d.scale)
7379
case d: DecimalType =>
7480
Decimal(BigDecimal(jsonNode.textValue, new MathContext(d.precision)), d.precision, d.scale)
7581
case TimestampType =>

0 commit comments

Comments
 (0)