I manage a PostgreSQL databases - we currently have clusters on PostgreSQL v9.6.23 & PostgreSQL v12.8. Our database clusters are on Linux VMs, with OS: Flavor: redhat_7 Release: 3.10.0-1160.45.1.el7.x86_64
We have repmgr clusters of 1 Primary & 2 Standby servers & use another server with PgBouncer to direct the connections to the current Primary. I am in the process of migrating the v9.6.23 databases to the v12.8 cluster, which already has live databases on it, so I'm doing a pg_dump on the v9.6 cluster for the individual databases to be migrated & restoring the backups to the v12.8 cluster. I'm currently testing in a sandbox cluster. The restore completes successfully. After the restore, I compare the rowcounts of the dbs from both versions to verify that the data loaded correctly. I also do a pg_dump of just the data from both clusters & compare them with the diff utility. For one of the databases, I'm discovering some differences in the data. It looks like some data is being truncated: 5,6c5,6 < -- Dumped from database version 9.6.23 < -- Dumped by pg_dump version 9.6.23 --- > -- Dumped from database version 12.8 > -- Dumped by pg_dump version 12.8 34085c34085 < xxxxxxxx xxxxxxxx xxx P 108 xxxxxxx UP FI xxxx-xx-xx 53809.6016 53809.6016 52W 0 xxx 0 xxxxx \N --- > xxxxxxxx xxxxxxxx xxx P 108 xxxxxxx UP FI > xxxx-xx-xx 53809.6 53809.6 52W 0 xxx 0 > xxxxx \N 34088c34088 < xxxxxxxx xxxxxxxx xxx P 108 xxxxxxx UP FI xxxx-xx-xx 53809.6016 53809.6016 52W 0 xxx 0 xxxxx \N --- > xxxxxxxx xxxxxxxx xxx P 108 xxxxxxx UP FI > xxxx-xx-xx 53809.6 53809.6 52W 0 xxx 0 > xxxxx \N … ß data is truncated in new database 147825,147826c147825,147826 < xxxxxxxx \N \N \N 46716.8008 \N \N \N \N \N \N \N < xxxxxxxx \N \N \N 38729.6016 \N \N \N \N \N \N \N --- > xxxxxxxx \N \N \N 46716.8 \N \N \N > \N \N \N \N > xxxxxxxx \N \N \N 38729.6 \N \N \N > \N \N \N \N When I looked at the table specification, it is the same in both versions & the affected columns are specified as datatype real: Table "tablex" Column | Type | Modifiers ------------------+----------------------+----------- id | integer | not null column2 | character(8) | not null column3 | character(3) | not null column4 | character(1) | column5 | character(4) | column6 | character(10) | column7 | character(2) | column8 | date | column9 | real | column10 | real | When I do a select on each database version, the results both display the truncated data: id | column9 | column10 ------------+--------------+------------------ xxxxxxxx | 53809.6 | 53809.6 (1 row) And when I try to export the data from both versions, the data also exports with a 1-digit decimal for those columns. It's only when I do the pg_dump that I can see the extra digits from the v9.6.23 tables. In other tables, I'm seeing differences with only 2 digits showing for columns where the datatype is real - they are being rounded up. For example: xxxxxxxx 19.8199997 \N \N 3435 \N 1 \N \N \N 3435 0 0 3435 \N \N \N 0 … xxxxxxxx 25.8700008 \N \N 4484.12988 80 \N \N \N \N 2069.6001 0 0 2069.6001 \N \N \N 0 vs. xxxxxxxx 19.82 \N \N 3435 \N 1 \N \N \N 3435 0 0 3435 \N \N \N 0 … xxxxxxxx 25.87 \N \N 4484.13 80 \N \N \N \N 2069.6 0 0 2069.6 \N \N \N 0 How can I ensure that the data was migrated correctly - that the data hasn't been truncated or rounded up in the v12.8 tables? Any help would be greatly appreciated. Thanks, Karin Hilbert