Stepan Pilschikov created IGNITE-9950: -----------------------------------------
Summary: thin python: Decimal data type didn't match with others clients Key: IGNITE-9950 URL: https://issues.apache.org/jira/browse/IGNITE-9950 Project: Ignite Issue Type: Bug Components: thin client Environment: Ignite 2.7 latest sources default cache configuration Python 3.7 nodejs 10+ PHP 7.2+ Ubuntu 17 Reporter: Stepan Pilschikov Trying to put Decimal value from JS or PHP client and get with Python, but exception throwing JS code: {code} IgniteClient = require('apache-ignite-client'); IgniteClientConfiguration = IgniteClient.IgniteClientConfiguration; const Decimal = IgniteClient.Decimal; const ObjectType = IgniteClient.ObjectType; ENDPOINT = '127.0.0.1:10800'; igniteClient = new IgniteClient(); async function start() { await igniteClient.connect(new IgniteClientConfiguration(ENDPOINT)); try { cache = (await igniteClient.getOrCreateCache("JS_DECIMAL")) .setKeyType(ObjectType.PRIMITIVE_TYPE.INTEGER) .setValueType(ObjectType.PRIMITIVE_TYPE.DECIMAL); await cache.put(1, new Decimal('7.7')); } finally { igniteClient.disconnect(); } } start(); {code} Python get code {code} from pyignite import Client from pyignite.datatypes import * client = Client() client.connect('127.0.0.1', 10800) cache = client.get_or_create_cache("JS_DECIMAL") print(str(cache.get(1, key_hint=IntObject))) {code} exception in python {code} Traceback (most recent call last): File get_value_JS_DECIMAL.py", line 7, in <module> print(str(cache.get(1, key_hint=IntObject))) File "[ignite_src]/platforms/python/pyignite/utils.py", line 163, in ste_wrapper result = fn(*args, **kwargs) File "[ignite_src]/platforms/python/pyignite/cache.py", line 200, in get result = cache_get(self._client, self._cache_id, key, key_hint=key_hint) File "[ignite_src]/platforms/python/pyignite/api/key_value.py", line 107, in cache_get ('value', AnyDataObject), File "[ignite_src]/platforms/python/pyignite/queries/__init__.py", line 291, in perform result.value = response_struct.to_python(response) File "[ignite_src]/platforms/python/pyignite/queries/__init__.py", line 96, in to_python *args, **kwargs File "[ignite_src]/platforms/python/pyignite/datatypes/internal.py", line 288, in to_python return data_class.to_python(ctype_object) File "[ignite_src]/platforms/python/pyignite/datatypes/standard.py", line 183, in to_python result = decimal.Decimal(data.decode(PROTOCOL_STRING_ENCODING)) decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>] {code} When trying with PHP have same exception Also when use Decimal from Python others clients return different value: Python decimal put code {code} from pyignite import Client from pyignite.datatypes import * from decimal import Decimal client = Client() client.connect('127.0.0.1', 10800) cache = client.get_or_create_cache("PY_DECIMAL") cache.put(1, Decimal('7.7'), key_hint=IntObject, value_hint=DecimalObject) {code} JS get {code} IgniteClient = require('apache-ignite-client'); IgniteClientConfiguration = IgniteClient.IgniteClientConfiguration; const ObjectType = IgniteClient.ObjectType; ENDPOINT = '127.0.0.1:10800'; igniteClient = new IgniteClient(); async function start() { await igniteClient.connect(new IgniteClientConfiguration(ENDPOINT)); try { cache = (await igniteClient.getOrCreateCache("PY_DECIMAL")) .setKeyType(ObjectType.PRIMITIVE_TYPE.INTEGER); console.log(await cache.get(1)); } finally { igniteClient.disconnect(); } } start(); {code} JS return '141350' value PHP have same behavior as JS -- This message was sent by Atlassian JIRA (v7.6.3#76005)