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

Method materializeCondensedDelta

delta/controller.go:404–440  ·  view source on GitHub ↗

Materialize the condensed delta view as a temporary table.

(
	ctx *sql.Context,
	conn *stdsql.Conn,
	tx *stdsql.Tx,
	table tableIdentifier,
	appender *DeltaAppender,
	stats *FlushStats,
)

Source from the content-addressed store, hash-verified

402
403// Materialize the condensed delta view as a temporary table.
404func (c *DeltaController) materializeCondensedDelta(
405 ctx *sql.Context,
406 conn *stdsql.Conn,
407 tx *stdsql.Tx,
408 table tableIdentifier,
409 appender *DeltaAppender,
410 stats *FlushStats,
411) error {
412 viewName, release, err := c.prepareArrowView(ctx, conn, table, appender, 0, nil)
413 if err != nil {
414 return err
415 }
416 defer release()
417
418 condenseDeltaSQL := buildCondenseDeltaSQL(viewName, appender)
419
420 // Create a temporary table to store the latest delta view
421 result, err := tx.ExecContext(ctx, "CREATE OR REPLACE TEMP TABLE delta AS "+condenseDeltaSQL)
422 if err != nil {
423 return err
424 }
425 affected, err := result.RowsAffected()
426 if err != nil {
427 return err
428 }
429
430 if log := ctx.GetLogger(); log.Logger.IsLevelEnabled(logrus.DebugLevel) {
431 log.WithFields(logrus.Fields{
432 "db": table.dbName,
433 "table": table.tableName,
434 "rows": affected,
435 }).Debug("Delta created")
436 }
437
438 stats.DeltaSize += affected
439 return nil
440}
441
442func (c *DeltaController) handleGeneralCase(
443 ctx *sql.Context,

Callers 2

handleGeneralCaseMethod · 0.95
handleWithoutIndexMethod · 0.95

Calls 3

prepareArrowViewMethod · 0.95
buildCondenseDeltaSQLFunction · 0.85
ExecContextMethod · 0.80

Tested by

no test coverage detected