MCPcopy
hub / github.com/apache/devlake / copyDataToDst

Function copyDataToDst

backend/plugins/starrocks/tasks/tasks.go:263–378  ·  view source on GitHub ↗

put data to final dst database

(dc *DataConfigParams, columnMap map[string]string, orderBy string)

Source from the content-addressed store, hash-verified

261
262// put data to final dst database
263func copyDataToDst(dc *DataConfigParams, columnMap map[string]string, orderBy string) error {
264 c := dc.Ctx
265 logger := dc.Ctx.GetLogger()
266 config := dc.Config
267 db := dc.SrcDb
268 starrocksDb := dc.DestDb
269 table := dc.SrcTableName
270 starrocksTable := dc.DestTableName
271 starrocksTmpTable := fmt.Sprintf("%s_tmp", starrocksTable)
272 tableConfig, ok := config.TableConfigs[table]
273 where := ""
274 if ok {
275 where = tableConfig.Where
276 }
277 var offset int
278 var err error
279 var rows dal.Rows
280 rows, err = db.Cursor(
281 dal.From(table),
282 dal.Orderby(orderBy),
283 dal.Where(where),
284 )
285 if err != nil {
286 if strings.Contains(err.Error(), "cached plan must not change result type") {
287 logger.Warn(err, "skip err: cached plan must not change result type")
288 rows, err = db.Cursor(
289 dal.From(table),
290 dal.Orderby(orderBy),
291 dal.Where(where),
292 )
293 if err != nil {
294 return err
295 }
296 } else {
297 return err
298 }
299 }
300 defer rows.Close()
301
302 var data []map[string]interface{}
303 cols, err := (rows).Columns()
304 if err != nil {
305 return err
306 }
307
308 var batchCount int
309 for rows.Next() {
310 select {
311 case <-c.GetContext().Done():
312 return c.GetContext().Err()
313 default:
314 }
315 row := make(map[string]interface{})
316 columns := make([]interface{}, len(cols))
317 columnPointers := make([]interface{}, len(cols))
318 for i := range columns {
319 dataType := columnMap[cols[i]]
320 if strings.HasPrefix(dataType, "array") {

Callers 1

ExportDataFunction · 0.85

Calls 15

CloseMethod · 0.95
NextMethod · 0.95
ScanMethod · 0.95
putBatchDataFunction · 0.85
ColumnsMethod · 0.80
ErrMethod · 0.80
GetLoggerMethod · 0.65
CursorMethod · 0.65
FromMethod · 0.65
ErrorMethod · 0.65
WarnMethod · 0.65
GetContextMethod · 0.65

Tested by

no test coverage detected