MCPcopy Create free account
hub / github.com/apecloud/myduckserver / handleZeroDelete

Method handleZeroDelete

delta/controller.go:361–401  ·  view source on GitHub ↗
(
	ctx *sql.Context,
	conn *stdsql.Conn,
	tx *stdsql.Tx,
	table tableIdentifier,
	appender *DeltaAppender,
	stats *FlushStats,
)

Source from the content-addressed store, hash-verified

359}
360
361func (c *DeltaController) handleZeroDelete(
362 ctx *sql.Context,
363 conn *stdsql.Conn,
364 tx *stdsql.Tx,
365 table tableIdentifier,
366 appender *DeltaAppender,
367 stats *FlushStats,
368) error {
369 viewName, release, err := c.prepareArrowView(ctx, conn, table, appender, 0, nil)
370 if err != nil {
371 return err
372 }
373 defer release()
374
375 condenseDeltaSQL := buildCondenseDeltaSQL(viewName, appender)
376
377 insertSQL := "INSERT OR REPLACE INTO " +
378 catalog.ConnectIdentifiersANSI(table.dbName, table.tableName) +
379 " SELECT * EXCLUDE (" + AugmentedColumnList + ") FROM (" + condenseDeltaSQL + ")"
380 result, err := tx.ExecContext(ctx, insertSQL)
381 if err != nil {
382 return err
383 }
384
385 affected, err := result.RowsAffected()
386 if err != nil {
387 return err
388 }
389 stats.Insertions += affected
390 stats.DeltaSize += affected
391
392 if log := ctx.GetLogger(); log.Logger.IsLevelEnabled(logrus.DebugLevel) {
393 log.WithFields(logrus.Fields{
394 "db": table.dbName,
395 "table": table.tableName,
396 "rows": affected,
397 }).Debug("Upserted")
398 }
399
400 return nil
401}
402
403// Materialize the condensed delta view as a temporary table.
404func (c *DeltaController) materializeCondensedDelta(

Callers 1

updateTableMethod · 0.95

Calls 4

prepareArrowViewMethod · 0.95
ConnectIdentifiersANSIFunction · 0.92
buildCondenseDeltaSQLFunction · 0.85
ExecContextMethod · 0.80

Tested by

no test coverage detected