Skip to content

Commit 5ddeb21

Browse files
Only use NOWAIT on MySQL 8.
1 parent a91c386 commit 5ddeb21

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

go/logic/applier.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,8 @@ func (this *Applier) ApplyIterationInsertQuery() (chunkSize int64, rowsAffected
631631
this.migrationContext.MigrationIterationRangeMaxValues.AbstractValues(),
632632
this.migrationContext.GetIteration() == 0,
633633
this.migrationContext.IsTransactionalTable(),
634+
// TODO: Don't hardcode this
635+
strings.HasPrefix(this.migrationContext.ApplierMySQLVersion, "8."),
634636
)
635637
if err != nil {
636638
return chunkSize, rowsAffected, duration, err

go/sql/builder.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ func BuildRangePreparedComparison(columns *ColumnList, args []interface{}, compa
182182
return BuildRangeComparison(columns.Names(), values, args, comparisonSign)
183183
}
184184

185-
func BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName string, sharedColumns []string, mappedSharedColumns []string, uniqueKey string, uniqueKeyColumns *ColumnList, rangeStartValues, rangeEndValues []string, rangeStartArgs, rangeEndArgs []interface{}, includeRangeStartValues bool, transactionalTable bool) (result string, explodedArgs []interface{}, err error) {
185+
func BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName string, sharedColumns []string, mappedSharedColumns []string, uniqueKey string, uniqueKeyColumns *ColumnList, rangeStartValues, rangeEndValues []string, rangeStartArgs, rangeEndArgs []interface{}, includeRangeStartValues bool, transactionalTable bool, noWait bool) (result string, explodedArgs []interface{}, err error) {
186186
if len(sharedColumns) == 0 {
187187
return "", explodedArgs, fmt.Errorf("Got 0 shared columns in BuildRangeInsertQuery")
188188
}
@@ -214,7 +214,11 @@ func BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName strin
214214
explodedArgs = append(explodedArgs, rangeExplodedArgs...)
215215
transactionalClause := ""
216216
if transactionalTable {
217-
transactionalClause = "for share nowait"
217+
if noWait {
218+
transactionalClause = "for share nowait"
219+
} else {
220+
transactionalClause = "lock in share mode"
221+
}
218222
}
219223
rangeEndComparison, rangeExplodedArgs, err := BuildRangeComparison(uniqueKeyColumns.Names(), rangeEndValues, rangeEndArgs, LessThanOrEqualsComparisonSign)
220224
if err != nil {
@@ -241,10 +245,10 @@ func BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName strin
241245
return result, explodedArgs, nil
242246
}
243247

244-
func BuildRangeInsertPreparedQuery(databaseName, originalTableName, ghostTableName string, sharedColumns []string, mappedSharedColumns []string, uniqueKey string, uniqueKeyColumns *ColumnList, rangeStartArgs, rangeEndArgs []interface{}, includeRangeStartValues bool, transactionalTable bool) (result string, explodedArgs []interface{}, err error) {
248+
func BuildRangeInsertPreparedQuery(databaseName, originalTableName, ghostTableName string, sharedColumns []string, mappedSharedColumns []string, uniqueKey string, uniqueKeyColumns *ColumnList, rangeStartArgs, rangeEndArgs []interface{}, includeRangeStartValues bool, transactionalTable bool, noWait bool) (result string, explodedArgs []interface{}, err error) {
245249
rangeStartValues := buildColumnsPreparedValues(uniqueKeyColumns)
246250
rangeEndValues := buildColumnsPreparedValues(uniqueKeyColumns)
247-
return BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, mappedSharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, includeRangeStartValues, transactionalTable)
251+
return BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, mappedSharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, includeRangeStartValues, transactionalTable, noWait)
248252
}
249253

250254
func BuildUniqueKeyRangeEndPreparedQueryViaOffset(databaseName, tableName string, uniqueKeyColumns *ColumnList, rangeStartArgs, rangeEndArgs []interface{}, chunkSize int64, includeRangeStartValues bool, hint string) (result string, explodedArgs []interface{}, err error) {

go/sql/builder_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ func TestBuildRangeInsertQuery(t *testing.T) {
171171
rangeStartArgs := []interface{}{3}
172172
rangeEndArgs := []interface{}{103}
173173

174-
query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, sharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true)
174+
query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, sharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true, true)
175175
require.NoError(t, err)
176176
expected := `
177177
insert /* gh-ost mydb.tbl */ ignore
@@ -199,7 +199,7 @@ func TestBuildRangeInsertQuery(t *testing.T) {
199199
rangeStartArgs := []interface{}{3, 17}
200200
rangeEndArgs := []interface{}{103, 117}
201201

202-
query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, sharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true)
202+
query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, sharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true, true)
203203
require.NoError(t, err)
204204
expected := `
205205
insert /* gh-ost mydb.tbl */ ignore
@@ -241,7 +241,7 @@ func TestBuildRangeInsertQueryRenameMap(t *testing.T) {
241241
rangeStartArgs := []interface{}{3}
242242
rangeEndArgs := []interface{}{103}
243243

244-
query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, mappedSharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true)
244+
query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, mappedSharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true, true)
245245
require.NoError(t, err)
246246
expected := `
247247
insert /* gh-ost mydb.tbl */ ignore
@@ -270,7 +270,7 @@ func TestBuildRangeInsertQueryRenameMap(t *testing.T) {
270270
rangeStartArgs := []interface{}{3, 17}
271271
rangeEndArgs := []interface{}{103, 117}
272272

273-
query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, mappedSharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true)
273+
query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, mappedSharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true, true)
274274
require.NoError(t, err)
275275
expected := `
276276
insert /* gh-ost mydb.tbl */ ignore
@@ -305,7 +305,7 @@ func TestBuildRangeInsertPreparedQuery(t *testing.T) {
305305
rangeStartArgs := []interface{}{3, 17}
306306
rangeEndArgs := []interface{}{103, 117}
307307

308-
query, explodedArgs, err := BuildRangeInsertPreparedQuery(databaseName, originalTableName, ghostTableName, sharedColumns, sharedColumns, uniqueKey, uniqueKeyColumns, rangeStartArgs, rangeEndArgs, true, true)
308+
query, explodedArgs, err := BuildRangeInsertPreparedQuery(databaseName, originalTableName, ghostTableName, sharedColumns, sharedColumns, uniqueKey, uniqueKeyColumns, rangeStartArgs, rangeEndArgs, true, true, true)
309309
require.NoError(t, err)
310310
expected := `
311311
insert /* gh-ost mydb.tbl */ ignore

0 commit comments

Comments
 (0)