I agree that with Fabien that float data-type is inadequate for the arithmetic requirements for unit conversion. In both Python[1] and PostgreSQL[2], the precision of float types are dependent on CPU architecture and Operating System. An Ideal fix would be a data type that is exact to any arbitrary number of digits precision. In Python, the decimal type defaults to 28 digits of precision[3] however has no defined maximum in implementation. In the PostgreSQL manual, the numeric data type is recommended for fields of arbitrary precision. As stated in the documentation[4] "Specifying NUMERIC without any precision or scale creates a column in which numeric values of any precision and scale can be stored, up to the implementation limit on precision.". This datatype, allows for arbitrary precision and and is arithmetically exact, and should be the proper solution for this bug.
[1]http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex [2]http://www.postgresql.org/docs/8.1/static/datatype.html#DATATYPE-FLOAT [3]http://docs.python.org/library/decimal.html#module-decimal [4]http://www.postgresql.org/docs/8.1/static/datatype.html#DATATYPE-NUMERIC-DECIMAL -- unit factor is limited to 5 zeros https://bugs.launchpad.net/bugs/511193 You received this bug notification because you are a member of C2C OERPScenario, which is subscribed to the OpenERP Project Group. Status in OpenObject Addons Modules: Fix Released Status in OpenObject Addons 5.0 series: Won't Fix Status in OpenObject Addons trunk series: Fix Released Bug description: I have got a category measure unit size. The master unit is meter, but I need having m2, m3 and related measure units like mm, mm2, mm3, micrometer so 1m = 1000mm but 1m = 1000000micrometer If I try including a conversion factor where I need more than 5 zeros, system crashes showing this error: Environment Information : System : Windows-XP-5.1.2600-SP3 OS Name : nt Operating System Release : XP Operating System Version : 5.1.2600 Operating System Architecture : 32bit Operating System Locale : es_ES.cp1252 Python Version : 2.5.2 OpenERP-Client Version : 5.0.6 Last revision No. & ID :Bazaar Package not Found !Traceback (most recent call last): File "/home/xabier/openerp-server/server/bin/netsvc.py", line 244, in dispatch result = LocalService(service_name)(method, *params) File "/home/xabier/openerp-server/server/bin/netsvc.py", line 73, in __call__ return getattr(self, method)(*params) File "/home/xabier/openerp-server/server/bin/addons/base_module_record/base_module_record.py", line 38, in execute res = super(recording_objects_proxy, self).execute(*args, **argv) File "/home/xabier/openerp-server/server/bin/service/web_services.py", line 583, in execute res = service.execute(db, uid, object, method, *args) File "/home/xabier/openerp-server/server/bin/osv/osv.py", line 59, in wrapper return f(self, dbname, *args, **kwargs) File "/home/xabier/openerp-server/server/bin/osv/osv.py", line 118, in execute res = pool.execute_cr(cr, uid, obj, method, *args, **kw) File "/home/xabier/openerp-server/server/bin/osv/osv.py", line 110, in execute_cr return getattr(object, method)(cr, uid, *args, **kw) File "/home/xabier/openerp-server/server/bin/osv/orm.py", line 2458, in write 'where id in ('+ids_str+')', upd1) File "/home/xabier/openerp-server/server/bin/sql_db.py", line 76, in wrapper return f(self, *args, **kwargs) File "/home/xabier/openerp-server/server/bin/sql_db.py", line 120, in execute res = self._obj.execute(query, params) ProgrammingError: numeric field overflow DETAIL: A field with precision 12, scale 6 must round to an absolute value less than 10^6. This is limiting the possibility of having all posible and needed conversion factors on measure units, so I think it could be considered a bug or maybe wishlist Thank you!! Ana _______________________________________________ Mailing list: https://launchpad.net/~c2c-oerpscenario Post to : [email protected] Unsubscribe : https://launchpad.net/~c2c-oerpscenario More help : https://help.launchpad.net/ListHelp

