diff --git a/go/vt/schema/tablegc.go b/go/vt/schema/tablegc.go index 2f102085f00..bf10b930c86 100644 --- a/go/vt/schema/tablegc.go +++ b/go/vt/schema/tablegc.go @@ -45,7 +45,7 @@ const ( ) const ( - GCTableNameExpression string = `^_vt_(HOLD|PURGE|EVAC|DROP)_([0-f]{32})_([0-9]{14})$` + GCTableNameExpression string = `^_vt_(HOLD|PURGE|EVAC|DROP|hold|purge|evac|drop)_([0-f]{32})_([0-9]{14})$` // NewGCTableNameExpression parses new intrnal table name format, e.g. _vt_hld_6ace8bcef73211ea87e9f875a4d24e90_20200915120410_ NewGCTableNameExpression string = `^_vt_(hld|prg|evc|drp)_([0-f]{32})_([0-9]{14})_$` ) @@ -55,14 +55,18 @@ var ( gcTableNameRegexp = regexp.MustCompile(GCTableNameExpression) gcStates = map[string]TableGCState{ - string(HoldTableGCState): HoldTableGCState, + string(HoldTableGCState): HoldTableGCState, + strings.ToLower(string(HoldTableGCState)): HoldTableGCState, "hld": HoldTableGCState, string(PurgeTableGCState): PurgeTableGCState, - "prg": PurgeTableGCState, - string(EvacTableGCState): EvacTableGCState, - "evc": EvacTableGCState, - string(DropTableGCState): DropTableGCState, - "drp": DropTableGCState, + strings.ToLower(string(PurgeTableGCState)): PurgeTableGCState, + "prg": PurgeTableGCState, + string(EvacTableGCState): EvacTableGCState, + strings.ToLower(string(EvacTableGCState)): EvacTableGCState, + "evc": EvacTableGCState, + string(DropTableGCState): DropTableGCState, + strings.ToLower(string(DropTableGCState)): DropTableGCState, + "drp": DropTableGCState, } ) diff --git a/go/vt/schema/tablegc_test.go b/go/vt/schema/tablegc_test.go index fb9795d4978..2096455734e 100644 --- a/go/vt/schema/tablegc_test.go +++ b/go/vt/schema/tablegc_test.go @@ -48,6 +48,11 @@ func TestIsGCTableName(t *testing.T) { "_vt_DROP_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", "_vt_HOLD_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", "_vt_drp_6ace8bcef73211ea87e9f875a4d24e90_20200915120410_", + // Test lowercase variants for lower_case_table_names=1 compatibility + "_vt_drop_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + "_vt_hold_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + "_vt_purge_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + "_vt_evac_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", } for _, tableName := range names { t.Run(tableName, func(t *testing.T) { @@ -166,6 +171,31 @@ func TestAnalyzeGCTableName(t *testing.T) { tableName: "_vt_xyz_6ace8bcef73211ea87e9f875a4d24e90_20200915120410_", isGC: false, }, + // Test lowercase variants for lower_case_table_names=1 compatibility + { + tableName: "_vt_drop_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + state: DropTableGCState, + t: baseTime, + isGC: true, + }, + { + tableName: "_vt_hold_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + state: HoldTableGCState, + t: baseTime, + isGC: true, + }, + { + tableName: "_vt_purge_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + state: PurgeTableGCState, + t: baseTime, + isGC: true, + }, + { + tableName: "_vt_evac_6ace8bcef73211ea87e9f875a4d24e90_20200915120410", + state: EvacTableGCState, + t: baseTime, + isGC: true, + }, } for _, ts := range tt { t.Run(ts.tableName, func(t *testing.T) {