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(-)