diff --git a/ddl/index.go b/ddl/index.go index 458a68a208..41f4348b5d 100644 --- a/ddl/index.go +++ b/ddl/index.go @@ -29,7 +29,7 @@ import ( "github.com/pingcap/tidb/util/errors2" ) -func (d *ddl) checkTablePublic(t *meta.Meta, job *model.Job) (*model.TableInfo, error) { +func (d *ddl) getTableInfo(t *meta.Meta, job *model.Job) (*model.TableInfo, error) { schemaID := job.SchemaID tableID := job.TableID tblInfo, err := t.GetTable(schemaID, tableID) @@ -104,8 +104,7 @@ func buildIndexInfo(tblInfo *model.TableInfo, unique bool, indexName model.CIStr func (d *ddl) onIndexCreate(t *meta.Meta, job *model.Job) error { schemaID := job.SchemaID - - tblInfo, err := d.checkTablePublic(t, job) + tblInfo, err := d.getTableInfo(t, job) if err != nil { return errors.Trace(err) } @@ -214,8 +213,7 @@ func (d *ddl) onIndexCreate(t *meta.Meta, job *model.Job) error { func (d *ddl) onIndexDrop(t *meta.Meta, job *model.Job) error { schemaID := job.SchemaID - - tblInfo, err := d.checkTablePublic(t, job) + tblInfo, err := d.getTableInfo(t, job) if err != nil { return errors.Trace(err) } @@ -264,8 +262,7 @@ func (d *ddl) onIndexDrop(t *meta.Meta, job *model.Job) error { return errors.Trace(err) case model.StateReorgnization: // reorganization -> absent - var tbl table.Table - tbl, err = d.getTable(t, schemaID, tblInfo) + tbl, err := d.getTable(t, schemaID, tblInfo) if err != nil { return errors.Trace(err) } diff --git a/ddl/reorg.go b/ddl/reorg.go index 763c1b469c..106712de7c 100644 --- a/ddl/reorg.go +++ b/ddl/reorg.go @@ -97,7 +97,6 @@ const waitReorgTimeout = 10 * time.Second var errWaitReorgTimeout = errors.New("wait for reorgnization timeout") func (d *ddl) runReorgJob(f func() error) error { - // wait reorgnization jobs done // TODO use persistent reorgnization job list. if d.reOrgDoneCh == nil { // start a reorgnization job diff --git a/ddl/worker.go b/ddl/worker.go index aa6aa092dd..c5d5e760b5 100644 --- a/ddl/worker.go +++ b/ddl/worker.go @@ -294,7 +294,9 @@ func (d *ddl) runJob(t *meta.Meta, job *model.Job) error { case model.ActionDropIndex: err = d.onIndexDrop(t, job) case model.ActionAddConstraint: + log.Fatal("Doesn't support change constraint online") case model.ActionDropConstraint: + log.Fatal("Doesn't support change constraint online") default: // invalid job, cancel it. job.State = model.JobCancelled diff --git a/meta/meta.go b/meta/meta.go index 97ee0b2c89..cf440f0793 100644 --- a/meta/meta.go +++ b/meta/meta.go @@ -20,6 +20,7 @@ import ( "strconv" "strings" "sync" + "time" "github.com/juju/errors" "github.com/pingcap/tidb/kv" @@ -260,9 +261,8 @@ func (m *Meta) CreateTable(dbID int64, tableInfo *model.TableInfo) error { // DropDatabase drops whole database. func (m *Meta) DropDatabase(dbID int64) error { - // first check db exists or not. + // check if db exists. dbKey := m.dbKey(dbID) - if err := m.txn.HClear(dbKey); err != nil { return errors.Trace(err) } @@ -283,7 +283,6 @@ func (m *Meta) DropTable(dbID int64, tableID int64) error { } tableKey := m.tableKey(tableID) - // then check table exists or not if err := m.checkTableExists(dbKey, tableKey); err != nil { return errors.Trace(err) @@ -398,7 +397,6 @@ func (m *Meta) GetTable(dbID int64, tableID int64) (*model.TableInfo, error) { } tableKey := m.tableKey(tableID) - value, err := m.txn.HGet(dbKey, tableKey) if err != nil || value == nil { return nil, errors.Trace(err) @@ -479,6 +477,8 @@ func (m *Meta) GetDDLJob(index int64) (*model.Job, error) { // UpdateDDLJob updates the DDL job with index. func (m *Meta) UpdateDDLJob(index int64, job *model.Job) error { + // TODO: use timestamp allocated by TSO + job.LastUpdateTS = time.Now().Unix() b, err := job.Encode() if err != nil { return errors.Trace(err) diff --git a/model/ddl.go b/model/ddl.go index 2d33aa1db8..33ee20554f 100644 --- a/model/ddl.go +++ b/model/ddl.go @@ -78,7 +78,8 @@ type Job struct { RawArgs json.RawMessage `json:"raw_args"` SchemaState SchemaState `json:"schema_state"` // snapshot version for this job. - SnapshotVer uint64 `json:"snapshot_ver"` + SnapshotVer uint64 `json:"snapshot_ver"` + LastUpdateTS int64 `json:"last_update_ts"` } // Encode encodes job with json format.