[
https://issues.apache.org/jira/browse/IGNITE-8039?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16458790#comment-16458790
]
Alexey Kosenchuk commented on IGNITE-8039:
------------------------------------------
[~isapego] thanks.
About the general format - it's better if [~dmagda] / [~vozerov] will confirm
how the spec should be formatted and where located.
Might be better if the types are grouped/ordered not by type code but by their
kind - primitive types and their arrays first; then
string/date/time/.../decimal/enum/...; collections/map/object_array at the end.
Comments:
- Byte: should be mentioned it's signed (?)
- Short, Int, Long: should be mentioned it's little-endian (?)
- Float, Double: should be mentioned it corresponds to the IEEE 754
floating-point numbers
- Decimal: just curious why "data" here is in big-endian while in general
"Ignite binary client protocol has little-endian byte ordering".
- Enum: it's format should be clarified.
** "type_id" is an id of the enum type registered by OP_PUT_BINARY_TYPE
command?
** "ordinal" is a position (starting from 0?) of a field in the enum type
registered by OP_PUT_BINARY_TYPE command??
- arrays: as we see from Java client implementation there are two formats of
arrays:
1) where every "element" does not have "type code" field but only "value". For
example Byte array, Int array, etc.
2) where every "element" has both - "type code" and "value" fields. For
example Date array, String array, etc.
This should be clarified, at least.
And may be unified (?)
- Collection, Map, Object array: should be better explained objects of which
types they may include. Absolutely any mentioned in this doc? I.e. it may be a
Collection of Maps, a Collection of Object arrays, a Collection of Collections,
etc.? And the same for Map? And the same for Object array?
> 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)