We previously discussed compressing the numeric data type for small values:
http://archives.postgresql.org/pgsql-hackers/2007-06/msg00715.php We didn't do this for 8.3 but in any case Tom did suggest we ought to reverse the weight and sign/dscale so we could do this sometime without introducing another incompatibility. I think we also should move the NumericData and declaration to numeric.c and make the Numeric type an opaque pointer for the rest of the source tree. That will catch any contrib modules or third-party modules which would be broken by any new data representation. --- numeric.h 27 Feb 2007 23:48:10 +0000 1.24 +++ numeric.h 24 Sep 2007 16:07:24 +0100 @@ -63,8 +63,8 @@ typedef struct NumericData { int32 vl_len_; /* varlena header (do not touch directly!) */ - int16 n_weight; /* Weight of 1st digit */ uint16 n_sign_dscale; /* Sign + display scale */ + int16 n_weight; /* Weight of 1st digit */ char n_data[1]; /* Digits (really array of NumericDigit) */ } NumericData; -- Gregory Stark EnterpriseDB http://www.enterprisedb.com ---------------------------(end of broadcast)--------------------------- TIP 7: You can help support the PostgreSQL project by donating at http://www.postgresql.org/about/donate