func NewCommonHandle(encoded []byte) (*CommonHandle, error) {
	ch := &CommonHandle{encoded: encoded}
	remain := encoded
	endOff := uint16(0)
	for len(remain) > 0 {
		var err error
		var col []byte
		col, remain, err = codec.CutOne(remain)
		if err != nil {
			return nil, err
		}
		endOff += uint16(len(col))
		ch.colEndOffsets = append(ch.colEndOffsets, endOff)
	}
	return ch, nil
}
NewCommonHandle creates a CommonHandle from a encoded bytes which is encoded by code.EncodeKey.
package table
import (
	"context"
	"fmt"
	"github.com/pingcap/tidb/kv"
	"github.com/pingcap/tidb/types"
	"strings"
	"bytes"
	parser_model "github.com/pingcap/parser/model"
	"github.com/zhihu/zetta/pkg/codec"
	"github.com/pingcap/tidb/sessionctx"
	"github.com/pingcap/tidb/sessionctx/stmtctx"
)
type Handle interface {
	IsInt() bool
	IntValue() int64
	Next() Handle
	Equal(h Handle) bool
	Compare(h Handle) int
	Encoded() []byte
	Len() int
	NumCols() int
	EncodedCol(idx int) []byte
	String() string
}
type CommonHandle struct {
	encoded       []byte
	colEndOffsets []uint16
}