bolthelper.go
func (b Bucket) Put(k [][]byte, v []byte) error {
	bb, err := b.CreateBucketIfNotExists(k[:len(k)-1])
	if err != nil {
		return errorsp.WithStacksAndMessage(err, "CreateBucketIfNotExists %q failed", string(bytes.Join(k[:len(k)-1], []byte(" "))))
	}
	return errorsp.WithStacks(bb.Bucket.Put(k[len(k)-1], v))
}
func (b Bucket) Put(k [][]byte, v []byte) error {
	bb, err := b.CreateBucketIfNotExists(k[:len(k)-1])
	if err != nil {
		return errorsp.WithStacksAndMessage(err, "CreateBucketIfNotExists %q failed", string(bytes.Join(k[:len(k)-1], []byte(" "))))
	}
	return errorsp.WithStacks(bb.Bucket.Put(k[len(k)-1], v))
}
// Put sets the value for a key in the bucket. If the key exist then its
// previous value will be overwritten. Supplied value must remain valid
// for the life of the transaction. Returns an error if the bucket was
// created from a read-only transaction, if the key is blank, if the key
// is too large, or if the value is too large.