You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ly...@apache.org on 2022/05/17 18:45:57 UTC
[tinkerpop] branch 3.6-dev updated (c2d2708e31 -> 265fbb6bda)
This is an automated email from the ASF dual-hosted git repository.
lyndonb pushed a change to branch 3.6-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
from c2d2708e31 Correcting gremlin go github action to need smoke
add 3436b3f80a Serialization refactoring (#1648)
new ba6e7badab Merge branch '3.5-dev' into 3.6-dev
add 60dd5f966a Fix for boolean writes
new 265fbb6bda Merge branch '3.5-dev' into 3.6-dev
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/codecov.yml | 12 +-
gremlin-go/driver/graphBinary.go | 1074 +++++++++++++++------------------
gremlin-go/driver/graphBinary_test.go | 446 +++++---------
gremlin-go/driver/serializer.go | 234 +++----
gremlin-go/driver/serializer_test.go | 21 -
5 files changed, 782 insertions(+), 1005 deletions(-)
[tinkerpop] 01/02: Merge branch '3.5-dev' into 3.6-dev
Posted by ly...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
lyndonb pushed a commit to branch 3.6-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit ba6e7badab3f3f5d896ddef5263cedddb7f485af
Merge: c2d2708e31 3436b3f80a
Author: Lyndon Bauto <ly...@bitquilltech.com>
AuthorDate: Tue May 17 11:41:44 2022 -0700
Merge branch '3.5-dev' into 3.6-dev
.github/codecov.yml | 12 +-
gremlin-go/driver/graphBinary.go | 1074 +++++++++++++++------------------
gremlin-go/driver/graphBinary_test.go | 426 ++++---------
gremlin-go/driver/serializer.go | 234 +++----
gremlin-go/driver/serializer_test.go | 21 -
5 files changed, 762 insertions(+), 1005 deletions(-)
diff --cc gremlin-go/driver/graphBinary.go
index a43b8c0557,29ba7645de..89b6b8350a
--- a/gremlin-go/driver/graphBinary.go
+++ b/gremlin-go/driver/graphBinary.go
@@@ -898,139 -605,76 +606,78 @@@ func bindingWriter(value interface{}, b
return buffer.Bytes(), nil
}
- func bindingReader(buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) (interface{}, error) {
- b := new(Binding)
-
- // Not fully qualified.
- newKey, err := typeSerializer.readValue(buffer, byte(stringType), false)
- if err != nil {
- return nil, err
- }
- b.Key = newKey.(string)
-
- newValue, err := typeSerializer.read(buffer)
- if err != nil {
- return nil, err
- }
- b.Value = newValue
-
- return b, nil
- }
-
- // gets the type of the serializer based on the value
- func (serializer *graphBinaryTypeSerializer) getSerializerToWrite(val interface{}) (*graphBinaryTypeSerializer, error) {
+ func (serializer *graphBinaryTypeSerializer) getType(val interface{}) (dataType, error) {
switch val.(type) {
case *bytecode, bytecode, *GraphTraversal:
- return &graphBinaryTypeSerializer{dataType: bytecodeType, writer: bytecodeWriter, logHandler: serializer.logHandler}, nil
+ return bytecodeType, nil
case string:
- return &graphBinaryTypeSerializer{dataType: stringType, writer: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
- err := binary.Write(buffer, binary.BigEndian, int32(len(value.(string))))
- if err != nil {
- return nil, err
- }
- _, err = buffer.WriteString(value.(string))
- return buffer.Bytes(), err
- }, logHandler: serializer.logHandler}, nil
+ return stringType, nil
case *big.Int:
- return &graphBinaryTypeSerializer{dataType: bigIntegerType, writer: bigIntWriter, logHandler: serializer.logHandler}, nil
+ return bigIntegerType, nil
case int64, int, uint32:
- return &graphBinaryTypeSerializer{dataType: longType, writer: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
- switch v := value.(type) {
- case int:
- value = int64(v)
- case uint32:
- value = int64(v)
- }
- err := binary.Write(buffer, binary.BigEndian, value)
- return buffer.Bytes(), err
- }, logHandler: serializer.logHandler}, nil
+ return longType, nil
case int32, uint16:
- return &graphBinaryTypeSerializer{dataType: intType, writer: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
- switch v := value.(type) {
- case uint16:
- value = int32(v)
- }
- err := binary.Write(buffer, binary.BigEndian, value.(int32))
- return buffer.Bytes(), err
- }, logHandler: serializer.logHandler}, nil
+ return intType, nil
case int16:
- return &graphBinaryTypeSerializer{dataType: shortType, writer: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
- err := binary.Write(buffer, binary.BigEndian, value.(int16))
- return buffer.Bytes(), err
- }, logHandler: serializer.logHandler}, nil
+ return shortType, nil
case uint8:
- return &graphBinaryTypeSerializer{dataType: byteType, writer: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
- err := binary.Write(buffer, binary.BigEndian, value.(uint8))
- return buffer.Bytes(), err
- }, logHandler: serializer.logHandler}, nil
+ return byteType, nil
case bool:
- return &graphBinaryTypeSerializer{dataType: booleanType, writer: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
- err := binary.Write(buffer, binary.BigEndian, value.(bool))
- return buffer.Bytes(), err
- }, logHandler: serializer.logHandler}, nil
+ return booleanType, nil
case uuid.UUID:
- return &graphBinaryTypeSerializer{dataType: uuidType, writer: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
- err := binary.Write(buffer, binary.BigEndian, value)
- return buffer.Bytes(), err
- }, logHandler: serializer.logHandler}, nil
+ return uuidType, nil
case float32:
- return &graphBinaryTypeSerializer{dataType: floatType, writer: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
- err := binary.Write(buffer, binary.BigEndian, value)
- return buffer.Bytes(), err
- }, logHandler: serializer.logHandler}, nil
+ return floatType, nil
case float64:
- return &graphBinaryTypeSerializer{dataType: doubleType, writer: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
- err := binary.Write(buffer, binary.BigEndian, value)
- return buffer.Bytes(), err
- }, logHandler: serializer.logHandler}, nil
+ return doubleType, nil
case *Vertex:
- return &graphBinaryTypeSerializer{dataType: vertexType, writer: vertexWriter, logHandler: serializer.logHandler}, nil
+ return vertexType, nil
case *Edge:
- return &graphBinaryTypeSerializer{dataType: edgeType, writer: edgeWriter, logHandler: serializer.logHandler}, nil
+ return edgeType, nil
case *Property:
- return &graphBinaryTypeSerializer{dataType: propertyType, writer: propertyWriter, logHandler: serializer.logHandler}, nil
+ return propertyType, nil
case *VertexProperty:
- return &graphBinaryTypeSerializer{dataType: vertexPropertyType, writer: vertexPropertyWriter, logHandler: serializer.logHandler}, nil
+ return vertexPropertyType, nil
case *Lambda:
- return &graphBinaryTypeSerializer{dataType: lambdaType, writer: lambdaWriter, logHandler: serializer.logHandler}, nil
+ return lambdaType, nil
case *traversalStrategy:
- return &graphBinaryTypeSerializer{dataType: traversalStrategyType, writer: traversalStrategyWriter, logHandler: serializer.logHandler}, nil
+ return traversalStrategyType, nil
case *Path:
- return &graphBinaryTypeSerializer{dataType: pathType, writer: pathWriter, logHandler: serializer.logHandler}, nil
+ return pathType, nil
case Set:
- return &graphBinaryTypeSerializer{dataType: setType, writer: setWriter, logHandler: serializer.logHandler}, nil
+ return setType, nil
case time.Time:
- return &graphBinaryTypeSerializer{dataType: dateType, writer: timeWriter, logHandler: serializer.logHandler}, nil
+ return dateType, nil
case time.Duration:
- return &graphBinaryTypeSerializer{dataType: durationType, writer: durationWriter, logHandler: serializer.logHandler}, nil
+ return durationType, nil
case Cardinality:
- return &graphBinaryTypeSerializer{dataType: cardinalityType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return cardinalityType, nil
case Column:
- return &graphBinaryTypeSerializer{dataType: columnType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return columnType, nil
case Direction:
- return &graphBinaryTypeSerializer{dataType: directionType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return directionType, nil
case Operator:
- return &graphBinaryTypeSerializer{dataType: operatorType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return operatorType, nil
case Order:
- return &graphBinaryTypeSerializer{dataType: orderType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return orderType, nil
case Pick:
- return &graphBinaryTypeSerializer{dataType: pickType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return pickType, nil
case Pop:
- return &graphBinaryTypeSerializer{dataType: popType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return popType, nil
case T:
- return &graphBinaryTypeSerializer{dataType: tType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return tType, nil
case Barrier:
- return &graphBinaryTypeSerializer{dataType: barrierType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return barrierType, nil
case Scope:
- return &graphBinaryTypeSerializer{dataType: scopeType, writer: enumWriter, logHandler: serializer.logHandler}, nil
+ return scopeType, nil
+ case Merge:
- return &graphBinaryTypeSerializer{dataType: mergeType, writer: enumWriter, logHandler: serializer.logHandler}, nil
++ return mergeType, nil
case p, Predicate:
- return &graphBinaryTypeSerializer{dataType: pType, writer: pWriter, logHandler: serializer.logHandler}, nil
+ return pType, nil
case textP, TextPredicate:
- return &graphBinaryTypeSerializer{dataType: textPType, writer: textPWriter, logHandler: serializer.logHandler}, nil
+ return textPType, nil
case *Binding, Binding:
- return &graphBinaryTypeSerializer{dataType: bindingType, writer: bindingWriter, logHandler: serializer.logHandler}, nil
+ return bindingType, nil
default:
switch reflect.TypeOf(val).Kind() {
case reflect.Map:
diff --cc gremlin-go/driver/serializer.go
index 8b40a355e3,097ff23182..fb65905882
--- a/gremlin-go/driver/serializer.go
+++ b/gremlin-go/driver/serializer.go
@@@ -287,13 -214,103 +214,104 @@@ func (gs graphBinarySerializer) deseria
if err != nil {
return msg, err
}
+ return msg, nil
+ }
- msg.responseID = msgUUID
- msg.responseStatus.code = uint16(statusCode)
- msg.responseStatus.message = statusMessage
- msg.responseStatus.attributes = statusAttributes
- msg.responseResult.meta = metaAttributes
- msg.responseResult.data = data
+ func initSerializers() {
+ if serializers == nil || len(serializers) == 0 {
+ serializers = map[dataType]writer{
+ bytecodeType: bytecodeWriter,
+ stringType: stringWriter,
+ bigIntegerType: bigIntWriter,
+ longType: longWriter,
+ intType: intWriter,
+ shortType: shortWriter,
+ byteType: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
+ err := binary.Write(buffer, binary.BigEndian, value.(uint8))
+ return buffer.Bytes(), err
+ },
+ booleanType: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
+ err := binary.Write(buffer, binary.BigEndian, value.(bool))
+ return buffer.Bytes(), err
+ },
+ uuidType: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
+ err := binary.Write(buffer, binary.BigEndian, value)
+ return buffer.Bytes(), err
+ },
+ floatType: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
+ err := binary.Write(buffer, binary.BigEndian, value)
+ return buffer.Bytes(), err
+ },
+ doubleType: func(value interface{}, buffer *bytes.Buffer, typeSerializer *graphBinaryTypeSerializer) ([]byte, error) {
+ err := binary.Write(buffer, binary.BigEndian, value)
+ return buffer.Bytes(), err
+ },
+ vertexType: vertexWriter,
+ edgeType: edgeWriter,
+ propertyType: propertyWriter,
+ vertexPropertyType: vertexPropertyWriter,
+ lambdaType: lambdaWriter,
+ traversalStrategyType: traversalStrategyWriter,
+ pathType: pathWriter,
+ setType: setWriter,
+ dateType: timeWriter,
+ durationType: durationWriter,
+ cardinalityType: enumWriter,
+ columnType: enumWriter,
+ directionType: enumWriter,
+ operatorType: enumWriter,
+ orderType: enumWriter,
+ pickType: enumWriter,
+ popType: enumWriter,
+ tType: enumWriter,
+ barrierType: enumWriter,
+ scopeType: enumWriter,
++ mergeType: enumWriter,
+ pType: pWriter,
+ textPType: textPWriter,
+ bindingType: bindingWriter,
+ mapType: mapWriter,
+ listType: listWriter,
+ }
+ }
+ }
- return msg, nil
+ func initDeserializers() {
+ if deserializers == nil || len(deserializers) == 0 {
+ deserializers = map[dataType]reader{
+ // Primitive
+ booleanType: readBoolean,
+ byteType: readByte,
+ shortType: readShort,
+ intType: readInt,
+ longType: readLong,
+ bigIntegerType: readBigInt,
+ floatType: readFloat,
+ doubleType: readDouble,
+ stringType: readString,
+
+ // Composite
+ listType: readList,
+ mapType: readMap,
+ setType: readSet,
+ uuidType: readUuid,
+
+ // Date Time
+ dateType: timeReader,
+ timestampType: timeReader,
+ durationType: durationReader,
+
+ // Graph
+ traverserType: traverserReader,
+ vertexType: vertexReader,
+ edgeType: edgeReader,
+ propertyType: propertyReader,
+ vertexPropertyType: vertexPropertyReader,
+ pathType: pathReader,
+ bulkSetType: bulkSetReader,
+ tType: enumReader,
+ directionType: enumReader,
+ bindingType: bindingReader,
+ }
+ }
}
[tinkerpop] 02/02: Merge branch '3.5-dev' into 3.6-dev
Posted by ly...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
lyndonb pushed a commit to branch 3.6-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 265fbb6bda3ed79b7ffec3928f1a931d390cc54b
Merge: ba6e7badab 60dd5f966a
Author: Lyndon Bauto <ly...@bitquilltech.com>
AuthorDate: Tue May 17 11:44:53 2022 -0700
Merge branch '3.5-dev' into 3.6-dev
gremlin-go/driver/graphBinary.go | 2 +-
gremlin-go/driver/graphBinary_test.go | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)