You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by "Stepan Pilschikov (JIRA)" <ji...@apache.org> on 2018/10/19 15:56:00 UTC

[jira] [Created] (IGNITE-9951) thin php: Date data type cut nanos

Stepan Pilschikov created IGNITE-9951:
-----------------------------------------

             Summary: thin php: Date data type cut nanos
                 Key: IGNITE-9951
                 URL: https://issues.apache.org/jira/browse/IGNITE-9951
             Project: Ignite
          Issue Type: Bug
          Components: thin client
    Affects Versions: 2.7
         Environment: Ignite 2.7 latest sources
default cache configuration
Python 3.7
nodejs 10+
PHP 7.2+
Ubuntu 17
            Reporter: Stepan Pilschikov


When using PHP data types TIMESTAMP or DATE have problem with getting data with others clients, main reason that is nano seconds was cutted from php client side

PHP code
{code}

<?php
require_once '/vendor/autoload.php';

use Apache\Ignite\Client;
use Apache\Ignite\ClientConfiguration;
use Apache\Ignite\Data\Date;
use Apache\Ignite\Type\ObjectType;
    
$client = new Client();
$ENDPOINT = '127.0.0.1:10800';
$client->connect(new ClientConfiguration($ENDPOINT));
    $cache = $client->getOrCreateCache("PH_DATE")
                    ->setKeyType(ObjectType::INTEGER)
                    ->setValueType(ObjectType::DATE);
    $cache->put(1,Date::fromDateTime(DateTime::createFromFormat('Y-m-d H:i:s.u', '2018-10-19 18:31:13.029726')));

{code}

JS output
{code}
"2018-10-19T15:31:13.000Z"
{code}

Py 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("PH_DATE")
print(str(cache.get(1, key_hint=IntObject)))
{code}

Py output
{code}
2018-10-19 18:31:13
{code}

When im using JS or Python for put looks like
Py 
{code}
2018-10-19 18:31:13.029000
{code}
JS 
{code}
"2018-10-19T15:31:13.029Z"
{code}


Same story with Timestamp when
PHP put
{code}

<?php
require_once '/vendor/autoload.php';

use Apache\Ignite\Client;
use Apache\Ignite\ClientConfiguration;
use Apache\Ignite\Data\Timestamp;
use Apache\Ignite\Type\ObjectType;
    
$client = new Client();
$ENDPOINT = '127.0.0.1:10800';
$client->connect(new ClientConfiguration($ENDPOINT));
try {

    $cache = $client->getOrCreateCache("PH_TIMESTAMP")->setKeyType(ObjectType::INTEGER)->setValueType(ObjectType::TIMESTAMP);
    $cache->put(1,(new Timestamp((DateTime::createFromFormat('Y-m-d H:i:s.u', '2018-10-19 18:31:13.029734'))->getTimestamp() * 1000, 29734)));

} finally {
    $client->disconnect();
}
{code}

Py output
{code}
(datetime.datetime(2018, 10, 19, 18, 31, 13), 29734)
{code}
should look like 
{code}
(datetime.datetime(2018, 10, 19, 18, 31, 13, 29000), 29734)
{code}

Or JS
{code}
"2018-10-19T15:31:13.000Z"
{code}

should look like
{code}
"2018-10-19T15:31:13.029Z"
{code}

Also wanna to admit that PHP Method Timestamp::fromDateTime(Data) didn't take nano seconds from date time (thats why in timestamp initialization i am doing what i do)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)