Postgres 8.3 represents money with 64 bits. Compensate accordingly.
[pspp-builds.git] / src / data / psql-reader.c
index 20aa57dbfc17f28a8c342e763e137c4580d35fcb..f59bcb6dac8521cba01d026ca5cf1a54a524d367 100644 (file)
@@ -589,9 +589,28 @@ set_value (const struct psql_reader *r,
 
            case CASHOID:
              {
-               int32_t x;
-               GET_VALUE (&vptr, x);
-               val->f = x / 100.0;
+               /* Postgres 8.3 uses 64 bits.
+                  Earlier versions use 32 */
+               switch (length)
+                 {
+                 case 8:
+                   {
+                     int64_t x;
+                     GET_VALUE (&vptr, x);
+                     val->f = x / 100.0;
+                   }
+                   break;
+                 case 4:
+                   {
+                     int32_t x;
+                     GET_VALUE (&vptr, x);
+                     val->f = x / 100.0;
+                   }
+                   break;
+                 default:
+                   val->f = SYSMIS;
+                   break;
+                 }
              }
              break;