Skip to content

Commit a0c033f

Browse files
authored
Flavor capabilities: MySQL GR and more (vitessio#10451)
* Flavor capabilities: MySQL GR and more Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> * unit tests Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com>
1 parent 4fe33ad commit a0c033f

File tree

4 files changed

+33
-0
lines changed

4 files changed

+33
-0
lines changed

go/mysql/flavor.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ const (
4949
InstantAddDropVirtualColumnFlavorCapability
5050
InstantAddDropColumnFlavorCapability
5151
InstantChangeColumnDefaultFlavorCapability
52+
MySQLJSONFlavorCapability
53+
MySQLUpgradeInServerFlavorCapability
5254
)
5355

5456
const (

go/mysql/flavor_mysql.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,8 @@ func (mysqlFlavor57) baseShowTablesWithSizes() string {
319319
// supportsCapability is part of the Flavor interface.
320320
func (mysqlFlavor57) supportsCapability(serverVersion string, capability FlavorCapability) (bool, error) {
321321
switch capability {
322+
case MySQLJSONFlavorCapability:
323+
return true, nil
322324
default:
323325
return false, nil
324326
}
@@ -343,6 +345,10 @@ func (mysqlFlavor80) supportsCapability(serverVersion string, capability FlavorC
343345
return ServerVersionAtLeast(serverVersion, 8, 0, 17)
344346
case FastDropTableFlavorCapability:
345347
return ServerVersionAtLeast(serverVersion, 8, 0, 23)
348+
case MySQLJSONFlavorCapability:
349+
return true, nil
350+
case MySQLUpgradeInServerFlavorCapability:
351+
return ServerVersionAtLeast(serverVersion, 8, 0, 16)
346352
default:
347353
return false, nil
348354
}

go/mysql/flavor_mysqlgr.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,21 @@ func (mysqlGRFlavor) baseShowTablesWithSizes() string {
241241
// supportsCapability is part of the Flavor interface.
242242
func (mysqlGRFlavor) supportsCapability(serverVersion string, capability FlavorCapability) (bool, error) {
243243
switch capability {
244+
case InstantDDLFlavorCapability,
245+
InstantAddLastColumnFlavorCapability,
246+
InstantAddDropVirtualColumnFlavorCapability,
247+
InstantChangeColumnDefaultFlavorCapability:
248+
return ServerVersionAtLeast(serverVersion, 8, 0, 0)
249+
case InstantAddDropColumnFlavorCapability:
250+
return ServerVersionAtLeast(serverVersion, 8, 0, 29)
251+
case TransactionalGtidExecutedFlavorCapability:
252+
return ServerVersionAtLeast(serverVersion, 8, 0, 17)
253+
case FastDropTableFlavorCapability:
254+
return ServerVersionAtLeast(serverVersion, 8, 0, 23)
255+
case MySQLJSONFlavorCapability:
256+
return ServerVersionAtLeast(serverVersion, 5, 7, 0)
257+
case MySQLUpgradeInServerFlavorCapability:
258+
return ServerVersionAtLeast(serverVersion, 8, 0, 16)
244259
default:
245260
return false, nil
246261
}

go/mysql/flavor_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,16 @@ func TestGetFlavor(t *testing.T) {
125125
capability: TransactionalGtidExecutedFlavorCapability,
126126
isCapable: false,
127127
},
128+
{
129+
version: "5.6.7",
130+
capability: MySQLJSONFlavorCapability,
131+
isCapable: false,
132+
},
133+
{
134+
version: "5.7.29",
135+
capability: MySQLJSONFlavorCapability,
136+
isCapable: true,
137+
},
128138
}
129139
for _, tc := range testcases {
130140
name := fmt.Sprintf("%s %v", tc.version, tc.capability)

0 commit comments

Comments
 (0)