An Azure managed PostgreSQL database service for app development and deployment.
Hi Arinda Dollekamp,
Thanks for raising this, I completely understand how concerning it is to see numeric values getting altered during the copy process.
From what you’ve described, this behavior (decimal values appearing multiplied) does not look like a mapping or pipeline configuration issue. It aligns with a scenario we’ve seen in certain Self-hosted Integration Runtime (SHIR) builds used by Azure Data Factory, where numeric and decimal values from PostgreSQL are not handled correctly during data movement and may be scaled unexpectedly. Since this occurs within the runtime’s internal data handling layer, before mapping or transformations are applied, changes at the pipeline level typically do not resolve the issue.
The most reliable mitigation is to move the Self-hosted Integration Runtime back to a previously stable version where this behavior was not observed. This would involve uninstalling the current SHIR build (for example, 5.64.x), installing the last known working version, and re-registering it using the existing authentication key so it shows as “Online” under Manage > Integration runtimes in Azure Data Factory. Once the runtime is back online, you can re-run the pipeline and validate that the numeric values are processed correctly.
You can refer to the official documentation here:
https://learn.microsoft.com/azure/data-factory/create-self-hosted-integration-runtime https://learn.microsoft.com/azure/data-factory/self-hosted-integration-runtime-auto-update
If changing the SHIR version is not feasible right now, a temporary workaround would be to ingest the affected numeric columns as string and cast them back to numeric at the destination, or to use Mapping Data Flows with explicit schema and type handling to control precision and scale. These approaches can help avoid incorrect scaling but are not intended as permanent fixes.
The workaround implemented was to cast the affected numeric column to varchar during the connector operation and then cast it back to int in the later processing logic. This helped avoid the conversion/parsing issue encountered with the PostgreSQL connector while preserving the intended data type handling in downstream logic.