code: func (do *Domain) tryLoadSchemaDiffs(m *meta.Meta, usedVersion, newVersion int64) (bool, []int64, error) {
  	// If there isn't any used version, or used version is too old, we do full load.
  	// And when users use history read feature, we will set usedVersion to initialVersion, then full load is needed.
  	if isTooOldSchema(usedVersion, newVersion) {
  		return false, nil, nil
  	}
  	var diffs []*model.SchemaDiff
  	for usedVersion < newVersion {
  		usedVersion++
  		diff, err := m.GetSchemaDiff(usedVersion)
  		if err != nil {
  			return false, nil, err
  		}
  		if diff == nil {
  			// If diff is missing for any version between used and new version, we fall back to full reload.
  			return false, nil, nil
  		}
  		diffs = append(diffs, diff)
  	}
  	builder := infoschema.NewBuilder(do.infoHandle).InitWithOldInfoSchema()
  	tblIDs := make([]int64, 0, len(diffs))
  	for _, diff := range diffs {
  		ids, err := builder.ApplyDiff(m, diff)
  		if err != nil {
  			return false, nil, err
  		}
  		tblIDs = append(tblIDs, ids...)
  	}
  	builder.Build()
  	return true, tblIDs, nil
  }
docs: // tryLoadSchemaDiffs tries to only load latest schema changes.
  // Return true if the schema is loaded successfully.
  // Return false if the schema can not be loaded by schema diff, then we need to do full load.
  // The second returned value is the delta updated table IDs.