(row []types.Datum, hasValue []bool, rowID int64)
| 179 | } |
| 180 | |
| 181 | func (en *TableKVEncoder) fillRow(row []types.Datum, hasValue []bool, rowID int64) ([]types.Datum, error) { |
| 182 | var value types.Datum |
| 183 | var err error |
| 184 | |
| 185 | record := en.GetOrCreateRecord() |
| 186 | for i, col := range en.Columns { |
| 187 | var theDatum *types.Datum |
| 188 | if hasValue[i] { |
| 189 | theDatum = &row[i] |
| 190 | } |
| 191 | value, err = en.ProcessColDatum(col, rowID, theDatum) |
| 192 | if err != nil { |
| 193 | return nil, en.LogKVConvertFailed(row, i, col.ToInfo(), err) |
| 194 | } |
| 195 | |
| 196 | record = append(record, value) |
| 197 | } |
| 198 | |
| 199 | if common.TableHasAutoRowID(en.TableMeta()) { |
| 200 | rowValue := rowID |
| 201 | newRowID := en.AutoIDFn(rowID) |
| 202 | value = types.NewIntDatum(newRowID) |
| 203 | record = append(record, value) |
| 204 | alloc := en.TableAllocators().Get(autoid.RowIDAllocType) |
| 205 | if err := alloc.Rebase(context.Background(), rowValue, false); err != nil { |
| 206 | return nil, errors.Trace(err) |
| 207 | } |
| 208 | } |
| 209 | |
| 210 | if len(en.GenCols) > 0 { |
| 211 | if errCol, err := en.EvalGeneratedColumns(record, en.Columns); err != nil { |
| 212 | return nil, en.LogEvalGenExprFailed(row, errCol, err) |
| 213 | } |
| 214 | } |
| 215 | |
| 216 | return record, nil |
| 217 | } |
| 218 | |
| 219 | // Close the TableKVEncoder. |
| 220 | func (en *TableKVEncoder) Close() error { |
no test coverage detected