MCPcopy
hub / github.com/pingcap/tidb / fillRow

Method fillRow

pkg/executor/importer/kv_encode.go:181–217  ·  view source on GitHub ↗
(row []types.Datum, hasValue []bool, rowID int64)

Source from the content-addressed store, hash-verified

179}
180
181func (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.
220func (en *TableKVEncoder) Close() error {

Callers 1

getRowMethod · 0.95

Calls 12

TableHasAutoRowIDFunction · 0.92
NewIntDatumFunction · 0.92
GetOrCreateRecordMethod · 0.80
ProcessColDatumMethod · 0.80
LogKVConvertFailedMethod · 0.80
TableAllocatorsMethod · 0.80
EvalGeneratedColumnsMethod · 0.80
LogEvalGenExprFailedMethod · 0.80
TableMetaMethod · 0.65
GetMethod · 0.65
RebaseMethod · 0.65
ToInfoMethod · 0.45

Tested by

no test coverage detected