From b9ed7ce58af2f38522816d236554f7d3d7b666cd Mon Sep 17 00:00:00 2001 From: Jian Qiu Date: Fri, 8 Jul 2022 09:58:00 +0800 Subject: [PATCH] fix: fail to sync metadata table for splitable (#14593) Co-authored-by: Qiu Jian --- pkg/cloudcommon/db/opslog.go | 7 ++++++- pkg/util/splitable/metadata.go | 12 ++++++++++++ pkg/util/splitable/sync.go | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/pkg/cloudcommon/db/opslog.go b/pkg/cloudcommon/db/opslog.go index 3b50bd0e8b..7e4b4c7fa8 100644 --- a/pkg/cloudcommon/db/opslog.go +++ b/pkg/cloudcommon/db/opslog.go @@ -65,7 +65,12 @@ type SOpsLog struct { User string `width:"128" charset:"utf8" list:"user" create:"required"` DomainId string `width:"128" charset:"ascii" list:"user" create:"optional"` Domain string `width:"128" charset:"utf8" list:"user" create:"optional"` - Roles string `width:"64" charset:"utf8" list:"user" create:"optional"` + + // Deprecated + // swager:ignore + RolesOld string `name:"roles" width:"64" charset:"ascii" list:"user" create:"optional"` + + Roles string `name:"roles2" width:"64" charset:"utf8" list:"user" create:"optional"` OpsTime time.Time `nullable:"false" list:"user" clickhouse_ttl:"6m"` diff --git a/pkg/util/splitable/metadata.go b/pkg/util/splitable/metadata.go index 9f93d9d299..2fbcb5f8b0 100644 --- a/pkg/util/splitable/metadata.go +++ b/pkg/util/splitable/metadata.go @@ -50,6 +50,18 @@ func (spec *SSplitTableSpec) GetTableMetaByObject(obj ISplitTableObject) (*STabl return spec.GetTableMetaByTime(obj.GetRecordTime()) } +func (spec *SSplitTableSpec) getTableMetasForInit() ([]STableMetadata, error) { + q := spec.metaSpec.Query().Asc("id").IsFalse("deleted") + q = q.AppendField(q.Field("table")) + q = q.AppendField(q.Field("start")) + metas := make([]STableMetadata, 0) + err := q.All(&metas) + if err != nil && errors.Cause(err) != sql.ErrNoRows { + return nil, errors.Wrap(err, "query metadata") + } + return metas, nil +} + func (spec *SSplitTableSpec) GetTableMetas() ([]STableMetadata, error) { q := spec.metaSpec.Query().Asc("id").IsFalse("deleted") metas := make([]STableMetadata, 0) diff --git a/pkg/util/splitable/sync.go b/pkg/util/splitable/sync.go index 4b28884f2f..ee64feda2f 100644 --- a/pkg/util/splitable/sync.go +++ b/pkg/util/splitable/sync.go @@ -105,7 +105,7 @@ func (spec *SSplitTableSpec) SyncSQL() []string { zeroMeta := false if spec.metaSpec.Exists() { - metas, err := spec.GetTableMetas() + metas, err := spec.getTableMetasForInit() if err != nil { log.Errorf("GetTableMetas fail %s", err) return nil