diff --git a/pom.xml b/pom.xml
index 85b62902..548ca071 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,7 +73,7 @@
1.6
1.9.13
2.17.1
- 20180813
+ 20231013
3.1.6
1.2
${project.basedir}/src/test/java/
diff --git a/src/main/java/io/cdap/plugin/salesforce/plugin/source/streaming/SalesforceStreamingSourceUtil.java b/src/main/java/io/cdap/plugin/salesforce/plugin/source/streaming/SalesforceStreamingSourceUtil.java
index e2c3f9f5..232d6692 100644
--- a/src/main/java/io/cdap/plugin/salesforce/plugin/source/streaming/SalesforceStreamingSourceUtil.java
+++ b/src/main/java/io/cdap/plugin/salesforce/plugin/source/streaming/SalesforceStreamingSourceUtil.java
@@ -33,6 +33,7 @@
import org.slf4j.LoggerFactory;
import scala.reflect.ClassTag$;
+import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
@@ -148,6 +149,13 @@ private static Object convertValue(Object value, Schema.Field field) {
}
}
+ // NOTE: org.json >= 20230227 returns BigDecimal for all non-integer JSON numbers.
+ if (value instanceof BigDecimal && fieldSchemaType.equals(Schema.Type.DOUBLE)) {
+ // Avro Schema.Type.DOUBLE expects a Double instance (or primitive double) at serialization time,
+ // so converting BigDecimal → double for compatibility.
+ return ((BigDecimal) value).doubleValue();
+ }
+
return value;
}