コード例 #1
0
ファイル: ddl.go プロジェクト: H0bby/tidb
func (d *ddl) verifySchemaMetaVersion(txn kv.Transaction, schemaMetaVersion int64) error {
	curVer, err := txn.GetInt64(meta.SchemaMetaVersionKey)
	if err != nil {
		return errors.Trace(err)
	}
	if curVer != schemaMetaVersion {
		return errors.Errorf("Schema changed, our version %d, but got %d", schemaMetaVersion, curVer)
	}

	// Increment version.
	_, err = txn.Inc(meta.SchemaMetaVersionKey, 1)
	if err != nil {
		return errors.Trace(err)
	}

	if err := txn.LockKeys(meta.SchemaMetaVersionKey); err != nil {
		return errors.Trace(err)
	}
	return errors.Trace(err)
}
コード例 #2
0
ファイル: domain.go プロジェクト: remotesyssupport/tidb
func (do *Domain) loadInfoSchema(txn kv.Transaction) (err error) {
	var schemas []*model.DBInfo
	err = util.ScanMetaWithPrefix(txn, meta.SchemaMetaPrefix, func(key []byte, value []byte) bool {
		di := &model.DBInfo{}
		err := json.Unmarshal(value, di)
		if err != nil {
			log.Fatal(err)
		}
		schemas = append(schemas, di)
		return true
	})
	if err != nil {
		return errors.Trace(err)
	}
	schemaMetaVersion, err := txn.GetInt64(meta.SchemaMetaVersionKey)
	if err != nil {
		return
	}
	log.Info("loadInfoSchema %d", schemaMetaVersion)
	do.infoHandle.Set(schemas, schemaMetaVersion)
	return
}