You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Igor Sapego (JIRA)" <ji...@apache.org> on 2018/05/03 17:27:00 UTC

[jira] [Commented] (IGNITE-8039) Binary Client Protocol spec: data types/format clarifications

    [ https://issues.apache.org/jira/browse/IGNITE-8039?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16462822#comment-16462822 ] 

Igor Sapego commented on IGNITE-8039:
-------------------------------------

[~alexey.kosenchuk], thanks for your comments.

Good idea. I've tried to implement it dividing types in five groups. Take a look and tell me what you think.

For other comments see my replies below:

1) Byte is not always signed, as it is not always represents a number. Sometimes it's just a piece of data. However, I've mentioned, that it can also represent a small signed integer number.

2) Added.

3) Added. Also, mentioned their endianness.

4) That's due to Java format of {{BigDecimal}}. It improves Java part performance, which is the most crucial for the overall Ignite performance.

5) There is only one {{Type ID}} in Ignite, so the answer is "yes". I'm going to create a separate section for this and other concepts of binary protocol, and going to put a reference there.

6) UTC. Fixed.

7-8) You are right. I've tried to clarify this part in the documentation, so take a look and say what do you think. What do you mean by "unified"?

9) The answer is "yes". Object collections may contain any objects, including other collections. Clarified in the doc.

> Binary Client Protocol spec: data types/format clarifications
> -------------------------------------------------------------
>
>                 Key: IGNITE-8039
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8039
>             Project: Ignite
>          Issue Type: Bug
>          Components: documentation, thin client
>    Affects Versions: 2.4
>            Reporter: Alexey Kosenchuk
>            Assignee: Igor Sapego
>            Priority: Major
>             Fix For: 2.5
>
>
> Assuming the Binary Client Protocol spec should be detalized enough to allow a client development basing on the spec only, w/o looking at other client implementations and asking additional questions...
> The following should be clarified / corrected in the Binary Client Protocol spec (v.2.4) (https://apacheignite.readme.io/v2.4/docs/binary-client-protocol#section-data-format):
> Type Codes table:
> -----------------
> - UUID (Guid) size: should be 16 bytes, not 8 (?) 
> - what is Object array (type code 23) ? What is the difference between it and Objects Wrapped In​ Array (type code 27) ?
> - what is Collection USER_SET ?
> - what is Collection USER_COL ?
> - what is Collection SINGLETON_LIST ?
> - Collection: misprint: should be "... + length ..."
> - what is Decimal ?
> - what is Timestamp ?
> - what is Time ?
> Complex Objects:
> ----------------
> - what does flag USER_TYPE mean ?
> - Schema "field Id; Java-style hash code of field" -> should be "... of field name".
> - "Repeat for as many times as the total number of schemas you have" -> should be "... total number of fields you have".
> - is it mandated that the number of fields in the Schema must be equal to the number of fields in the Data Object ?
> Objects Wrapped In​ Array
> ------------------------
> - may binary objects with different type codes be in the same array ?
> - may complex objects with different type ids be in the same array ?
> - "All cache operations return complex objects inside a wrapper (but not primitives)." -> does it mean that in general a complex object (103) must always be sent via the Binary Protocol in a wrapper (27)? 
> - "Byte array size" -> "Payload size" or "Size of the whole array with header" ?
> - Offset. What is "object graph" here ? The Binary Protocol nowhere describes any relations ("graph") between data objects in the protocol.
> Terminology
> -----------
> Not critical but would be really convenient to define and use the same terms along the whole spec. For example:
> - "binary object" is always the same as "data object" of any type (?). Can be "standard/predefined type object" or "complex object".
> - "cluster" or "server" ?
> - "cluster member" or "server nodes" ?



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