From 9d0420e729867dd8aa89024ba6d5c92b797b9172 Mon Sep 17 00:00:00 2001 From: ngaut Date: Mon, 5 Oct 2015 15:39:10 +0800 Subject: [PATCH 1/3] Update tests for meta change Conflicts: meta/meta.go --- meta/meta.go | 23 +++++++++++++++-------- meta/meta_test.go | 12 ++++++------ table/tables/tables.go | 4 ++++ 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/meta/meta.go b/meta/meta.go index 1b9705e308..ddc2318255 100644 --- a/meta/meta.go +++ b/meta/meta.go @@ -21,19 +21,26 @@ import ( "github.com/pingcap/tidb/kv" ) -const ( - // SchemaMetaPrefix is the prefix for database meta key prefix. - SchemaMetaPrefix = "mDB:" - // TableMetaPrefix is the prefix for table meta key prefix. - TableMetaPrefix = "mTable:" -) - var ( + // SchemaMetaPrefix is the prefix for database meta key prefix. + SchemaMetaPrefix = string(MakeMetaKey("mDB:")) + + // TableMetaPrefix is the prefix for table meta key prefix. + TableMetaPrefix = MakeMetaKey("mTable:") + nextGlobalIDPrefix = []byte("mNextGlobalID") // SchemaMetaVersionKey is used as lock for changing schema - SchemaMetaVersionKey = []byte("mSchemaVersion") + SchemaMetaVersionKey = MakeMetaKey("mSchemaVersion") + + // globalIDPrefix is used as key of global ID + globalIDKey = MakeMetaKey("mNextGlobalID") ) +// 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) { if len(key) == 0 { 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() From 8a1932ceecbe055b1a79eeef71622cc4e3b13a43 Mon Sep 17 00:00:00 2001 From: ngaut Date: Mon, 5 Oct 2015 09:51:24 +0800 Subject: [PATCH 2/3] meta: Add makeMetaKey function to create meta key Make sure meta key always less then other key. Conflicts: meta/meta.go --- meta/meta.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/meta.go b/meta/meta.go index ddc2318255..c10f849edd 100644 --- a/meta/meta.go +++ b/meta/meta.go @@ -74,7 +74,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) } From 973e066b34918a38b73e3403c99f1069f8b9063a Mon Sep 17 00:00:00 2001 From: ngaut Date: Wed, 7 Oct 2015 12:18:50 +0800 Subject: [PATCH 3/3] Tiny clean up --- meta/meta.go | 1 - 1 file changed, 1 deletion(-) diff --git a/meta/meta.go b/meta/meta.go index c10f849edd..3f2ef0d59b 100644 --- a/meta/meta.go +++ b/meta/meta.go @@ -28,7 +28,6 @@ var ( // TableMetaPrefix is the prefix for table meta key prefix. TableMetaPrefix = MakeMetaKey("mTable:") - nextGlobalIDPrefix = []byte("mNextGlobalID") // SchemaMetaVersionKey is used as lock for changing schema SchemaMetaVersionKey = MakeMetaKey("mSchemaVersion")