lxd/db/schema/schema.go
func ensureUpdatesAreApplied(tx *sql.Tx, current int, updates []Update, hook Hook) error {
	if current > len(updates) {
		return fmt.Errorf(
			"schema version '%d' is more recent than expected '%d'",
			current, len(updates))
	}

	// If there are no updates, there's nothing to do.
	if len(updates) == 0 {
		return nil
	}

	// Apply missing updates.
	for _, update := range updates[current:] {
		if hook != nil {
			err := hook(current, tx)
			if err != nil {
				return fmt.Errorf(
					"failed to execute hook (version %d): %v", current, err)
			}
		}
		err := update(tx)
		if err != nil {
			return fmt.Errorf("failed to apply update %d: %v", current, err)
		}
		current++

		err = insertSchemaVersion(tx, current)
		if err != nil {
			return fmt.Errorf("failed to insert version %d", current)
		}
	}

	return nil
}
func ensureUpdatesAreApplied(tx *sql.Tx, current int, updates []Update, hook Hook) error {
	if current > len(updates) {
		return fmt.Errorf(
			"schema version '%d' is more recent than expected '%d'",
			current, len(updates))
	}

	// If there are no updates, there's nothing to do.
	if len(updates) == 0 {
		return nil
	}

	// Apply missing updates.
	for _, update := range updates[current:] {
		if hook != nil {
			err := hook(current, tx)
			if err != nil {
				return fmt.Errorf(
					"failed to execute hook (version %d): %v", current, err)
			}
		}
		err := update(tx)
		if err != nil {
			return fmt.Errorf("failed to apply update %d: %v", current, err)
		}
		current++

		err = insertSchemaVersion(tx, current)
		if err != nil {
			return fmt.Errorf("failed to insert version %d", current)
		}
	}

	return nil
}
func ensureUpdatesAreApplied ( tx * sql . Tx , current int , updates [ ] Update , hook Hook ) error { if current > len ( updates ) { return fmt . Errorf ( " " , current , len ( updates ) ) } // If there are no updates, there's nothing to do. if len ( updates ) == 0 { return nil } // Apply missing updates. for _ , update := range updates [ current : ] { if hook != nil { err := hook ( current , tx ) if err != nil { return fmt . Errorf ( " " , current , err ) } } err := update ( tx ) if err != nil { return fmt . Errorf ( " " , current , err ) } current ++ err = insertSchemaVersion ( tx , current ) if err != nil { return fmt . Errorf ( " " , current ) } } return nil }
// Apply any pending update that was not yet applied.
Apply any pending update that was not yet applied .