diff --git a/pkg/vm/engine/tae/containers/mock.go b/pkg/vm/engine/tae/containers/mock.go index 2d7119f15efed1013cb8cafa6f1d0db95758ad17..ad860052d355bf0f8102028a06d102d7ed8c1da5 100644 --- a/pkg/vm/engine/tae/containers/mock.go +++ b/pkg/vm/engine/tae/containers/mock.go @@ -173,7 +173,7 @@ func MockVector(t types.Type, rows int, unique, nullable bool, provider Vector) v2 := rand.Intn(math.MaxInt32) + 1 vec.Append(float64(v1) / float64(v2)) } - case types.T_varchar, types.T_char: + case types.T_varchar, types.T_char, types.T_blob: if unique { for i := 0; i < rows; i++ { s := fmt.Sprintf("%d-%d", i, 0) diff --git a/pkg/vm/engine/tae/mergesort/mergesort.go b/pkg/vm/engine/tae/mergesort/mergesort.go index 1abdf664938fbced4fc39fa460a321af390e4749..2e2dca7bde09f067c514aa0a9b487c4df10b1daa 100644 --- a/pkg/vm/engine/tae/mergesort/mergesort.go +++ b/pkg/vm/engine/tae/mergesort/mergesort.go @@ -62,7 +62,7 @@ func SortBlockColumns(cols []containers.Vector, pk int) ([]uint32, error) { decimal128s.Sort(cols[pk], sortedIdx) case types.T_timestamp: numerics.Sort[types.Timestamp](cols[pk], sortedIdx) - case types.T_char, types.T_json, types.T_varchar: + case types.T_char, types.T_json, types.T_varchar, types.T_blob: varchar.Sort(cols[pk], sortedIdx) default: panic(fmt.Sprintf("%s not supported", cols[pk].GetType().String())) @@ -111,7 +111,7 @@ func MergeSortedColumn(column []containers.Vector, sortedIdx *[]uint32, fromLayo ret, mapping = decimal128s.Merge(column, sortedIdx, fromLayout, toLayout) case types.T_timestamp: ret, mapping = numerics.Merge[types.Timestamp](column, sortedIdx, fromLayout, toLayout) - case types.T_char, types.T_json, types.T_varchar: + case types.T_char, types.T_json, types.T_varchar, types.T_blob: ret, mapping = varchar.Merge(column, sortedIdx, fromLayout, toLayout) default: panic(fmt.Sprintf("%s not supported", column[0].GetType().String())) @@ -191,7 +191,7 @@ func ShuffleColumn(column []containers.Vector, sortedIdx []uint32, fromLayout, t // dates.Merge(col, mergedSrc) // case types.T_datetime: // datetimes.Merge(col, mergedSrc) -// case types.T_char, types.T_json, types.T_varchar: +// case types.T_char, types.T_json, types.T_varchar, types.T_blob: // varchar.Merge(col, mergedSrc) // } // @@ -228,7 +228,7 @@ func ShuffleColumn(column []containers.Vector, sortedIdx []uint32, fromLayout, t // dates.Multiplex(col, mergedSrc) // case types.T_datetime: // datetimes.Multiplex(col, mergedSrc) -// case types.T_char, types.T_json, types.T_varchar: +// case types.T_char, types.T_json, types.T_varchar, types.T_blob: // varchar.Multiplex(col, mergedSrc) // } // } diff --git a/pkg/vm/engine/tae/txn/txnimpl/index.go b/pkg/vm/engine/tae/txn/txnimpl/index.go index d27034743dc2680e7d00fbb44061087d1e6b1ff8..7c135961d4c55dbca53e3b58afa129f9008bc634 100644 --- a/pkg/vm/engine/tae/txn/txnimpl/index.go +++ b/pkg/vm/engine/tae/txn/txnimpl/index.go @@ -82,7 +82,7 @@ func InsertOp[T comparable](input any, start, count int, fromRow uint32, dedupIn func (idx *simpleTableIndex) KeyToVector(kType types.Type) containers.Vector { vec := containers.MakeVector(kType, false) switch kType.Oid { - case types.T_char, types.T_varchar, types.T_json: + case types.T_char, types.T_varchar, types.T_json, types.T_blob: for k := range idx.tree { vec.Append([]byte(k.(string))) } @@ -180,7 +180,7 @@ func (idx *simpleTableIndex) BatchInsert(col containers.Vector, start, count int return InsertOp[types.Timestamp](col.Slice(), start, count, row, dedupInput, idx.tree) case types.T_datetime: return InsertOp[types.Datetime](col.Slice(), start, count, row, dedupInput, idx.tree) - case types.T_char, types.T_varchar, types.T_json: + case types.T_char, types.T_varchar, types.T_json, types.T_blob: vs := col.Slice().(*containers.Bytes) if dedupInput { set := make(map[string]bool) @@ -247,7 +247,7 @@ func (idx *simpleTableIndex) BatchDedup(col containers.Vector) error { return DedupOp[types.Datetime](vals, idx.tree) case types.T_timestamp: return DedupOp[types.Timestamp](vals, idx.tree) - case types.T_char, types.T_varchar, types.T_json: + case types.T_char, types.T_varchar, types.T_json, types.T_blob: vals := vals.(*containers.Bytes) for i, s := range vals.Offset { e := s + vals.Length[i]