diff --git a/meta/meta.go b/meta/meta.go index 1b9705e308..3f2ef0d59b 100644 --- a/meta/meta.go +++ b/meta/meta.go @@ -21,18 +21,24 @@ import ( "github.com/pingcap/tidb/kv" ) -const ( +var ( // SchemaMetaPrefix is the prefix for database meta key prefix. - SchemaMetaPrefix = "mDB:" + SchemaMetaPrefix = string(MakeMetaKey("mDB:")) + // TableMetaPrefix is the prefix for table meta key prefix. - TableMetaPrefix = "mTable:" + TableMetaPrefix = MakeMetaKey("mTable:") + + // SchemaMetaVersionKey is used as lock for changing schema + SchemaMetaVersionKey = MakeMetaKey("mSchemaVersion") + + // globalIDPrefix is used as key of global ID + globalIDKey = MakeMetaKey("mNextGlobalID") ) -var ( - nextGlobalIDPrefix = []byte("mNextGlobalID") - // SchemaMetaVersionKey is used as lock for changing schema - SchemaMetaVersionKey = []byte("mSchemaVersion") -) +// MakeMetaKey creates meta key +func MakeMetaKey(key string) []byte { + return append([]byte{0x0}, key...) +} // GenID adds step to the value for key and returns the sum. func GenID(txn kv.Transaction, key []byte, step int) (int64, error) { @@ -67,7 +73,7 @@ func AutoIDKey(tableID int64) string { // GenGlobalID generates the next id in the store scope. func GenGlobalID(store kv.Storage) (ID int64, err error) { err = kv.RunInNewTxn(store, true, func(txn kv.Transaction) error { - ID, err = GenID(txn, []byte(nextGlobalIDPrefix), 1) + ID, err = GenID(txn, globalIDKey, 1) if err != nil { return errors.Trace(err) } diff --git a/meta/meta_test.go b/meta/meta_test.go index 629bb36dd7..316990dbf8 100644 --- a/meta/meta_test.go +++ b/meta/meta_test.go @@ -49,14 +49,14 @@ func (*testSuite) TestT(c *C) { c.Assert(err, NotNil) // For DBMetaKey - mkey := meta.DBMetaKey(1) - c.Assert(mkey, Equals, "mDB::1") + mkey := []byte(meta.DBMetaKey(1)) + c.Assert(mkey, DeepEquals, meta.MakeMetaKey("mDB::1")) //For AutoIDKey - mkey = meta.AutoIDKey(1) - c.Assert(mkey, Equals, "mTable::1_autoID") - mkey = meta.AutoIDKey(0) - c.Assert(mkey, Equals, "mTable::0_autoID") + mkey = []byte(meta.AutoIDKey(1)) + c.Assert(mkey, DeepEquals, meta.MakeMetaKey("mTable::1_autoID")) + mkey = []byte(meta.AutoIDKey(0)) + c.Assert(mkey, DeepEquals, meta.MakeMetaKey("mTable::0_autoID")) // For GenGlobalID id, err = meta.GenGlobalID(store) diff --git a/table/tables/tables.go b/table/tables/tables.go index 404636cca3..901a7c77ee 100644 --- a/table/tables/tables.go +++ b/table/tables/tables.go @@ -534,6 +534,10 @@ func (t *Table) IterRecords(ctx context.Context, startKey string, cols []*column } defer it.Close() + if !it.Valid() { + return nil + } + log.Debugf("startKey %q, key:%q,value:%q", startKey, it.Key(), it.Value()) prefix := t.KeyPrefix()