handle incomplete versionstamp attempting to be packed into vanilla tuple
This commit is contained in:
parent
8066556753
commit
92167fd03f
|
@ -307,7 +307,7 @@ func (p *packer) encodeVersionstamp(v Versionstamp) {
|
||||||
p.putBytes(v.Bytes())
|
p.putBytes(v.Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *packer) encodeTuple(t Tuple, nested bool) {
|
func (p *packer) encodeTuple(t Tuple, nested bool, versionstamps bool) {
|
||||||
if nested {
|
if nested {
|
||||||
p.putByte(nestedCode)
|
p.putByte(nestedCode)
|
||||||
}
|
}
|
||||||
|
@ -315,7 +315,7 @@ func (p *packer) encodeTuple(t Tuple, nested bool) {
|
||||||
for i, e := range t {
|
for i, e := range t {
|
||||||
switch e := e.(type) {
|
switch e := e.(type) {
|
||||||
case Tuple:
|
case Tuple:
|
||||||
p.encodeTuple(e, true)
|
p.encodeTuple(e, true, versionstamps)
|
||||||
case nil:
|
case nil:
|
||||||
p.putByte(nilCode)
|
p.putByte(nilCode)
|
||||||
if nested {
|
if nested {
|
||||||
|
@ -352,6 +352,10 @@ func (p *packer) encodeTuple(t Tuple, nested bool) {
|
||||||
case UUID:
|
case UUID:
|
||||||
p.encodeUUID(e)
|
p.encodeUUID(e)
|
||||||
case Versionstamp:
|
case Versionstamp:
|
||||||
|
if versionstamps == false && e.TransactionVersion == incompleteTransactionVersion {
|
||||||
|
panic(fmt.Sprintf("Incomplete Versionstamp included in vanilla tuple pack"))
|
||||||
|
}
|
||||||
|
|
||||||
p.encodeVersionstamp(e)
|
p.encodeVersionstamp(e)
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("unencodable element at index %d (%v, type %T)", i, t[i], t[i]))
|
panic(fmt.Sprintf("unencodable element at index %d (%v, type %T)", i, t[i], t[i]))
|
||||||
|
@ -379,7 +383,7 @@ func (p *packer) encodeTuple(t Tuple, nested bool) {
|
||||||
//
|
//
|
||||||
func (t Tuple) Pack() []byte {
|
func (t Tuple) Pack() []byte {
|
||||||
p := newPacker()
|
p := newPacker()
|
||||||
p.encodeTuple(t, false)
|
p.encodeTuple(t, false, false)
|
||||||
return p.buf
|
return p.buf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,7 +413,7 @@ func (t Tuple) PackWithVersionstamp(prefix []byte) ([]byte, error) {
|
||||||
p.putBytes(prefix)
|
p.putBytes(prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
p.encodeTuple(t, false)
|
p.encodeTuple(t, false, true)
|
||||||
|
|
||||||
if hasVersionstamp {
|
if hasVersionstamp {
|
||||||
var scratch [4]byte
|
var scratch [4]byte
|
||||||
|
|
Loading…
Reference in New Issue