buildIndexForRow implements table.Table BuildIndexForRow interface.
(ctx table.MutateContext, h kv.Handle, vals []types.Datum, newData []types.Datum, idx *index, txn kv.Transaction, untouched bool, opt *table.CreateIdxOpt)
| 1250 | |
| 1251 | // buildIndexForRow implements table.Table BuildIndexForRow interface. |
| 1252 | func (t *TableCommon) buildIndexForRow(ctx table.MutateContext, h kv.Handle, vals []types.Datum, newData []types.Datum, idx *index, txn kv.Transaction, untouched bool, opt *table.CreateIdxOpt) error { |
| 1253 | rsData := TryGetHandleRestoredDataWrapper(t.meta, newData, nil, idx.Meta()) |
| 1254 | if _, err := idx.create(ctx, txn, vals, h, rsData, untouched, opt); err != nil { |
| 1255 | if kv.ErrKeyExists.Equal(err) { |
| 1256 | // Make error message consistent with MySQL. |
| 1257 | tablecodec.TruncateIndexValues(t.meta, idx.Meta(), vals) |
| 1258 | colStrVals, err1 := genIndexKeyStrs(vals) |
| 1259 | if err1 != nil { |
| 1260 | // if genIndexKeyStrs failed, return the original error. |
| 1261 | return err |
| 1262 | } |
| 1263 | |
| 1264 | return kv.GenKeyExistsErr(colStrVals, fmt.Sprintf("%s.%s", idx.TableMeta().Name.String(), idx.Meta().Name.String())) |
| 1265 | } |
| 1266 | return err |
| 1267 | } |
| 1268 | return nil |
| 1269 | } |
| 1270 | |
| 1271 | // IterRecords iterates records in the table and calls fn. |
| 1272 | func IterRecords(t table.Table, ctx sessionctx.Context, cols []*table.Column, |
no test coverage detected