(t *testing.T)
| 309 | } |
| 310 | |
| 311 | func TestBuildRangeInsertQueryRenameMap(t *testing.T) { |
| 312 | databaseName := "mydb" |
| 313 | originalTableName := "tbl" |
| 314 | ghostTableName := "ghost" |
| 315 | sharedColumns := []string{"id", "name", "position"} |
| 316 | mappedSharedColumns := []string{"id", "name", "location"} |
| 317 | { |
| 318 | uniqueKey := "PRIMARY" |
| 319 | uniqueKeyColumns := NewColumnList([]string{"id"}) |
| 320 | rangeStartValues := []string{"@v1s"} |
| 321 | rangeEndValues := []string{"@v1e"} |
| 322 | rangeStartArgs := []interface{}{3} |
| 323 | rangeEndArgs := []interface{}{103} |
| 324 | |
| 325 | query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, mappedSharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true, true) |
| 326 | require.NoError(t, err) |
| 327 | expected := ` |
| 328 | insert /* gh-ost mydb.tbl */ ignore |
| 329 | into |
| 330 | mydb.ghost |
| 331 | (id, name, location) |
| 332 | ( |
| 333 | select id, name, position |
| 334 | from |
| 335 | mydb.tbl |
| 336 | force index (PRIMARY) |
| 337 | where |
| 338 | (((id > @v1s) or ((id = @v1s))) |
| 339 | and |
| 340 | ((id < @v1e) or ((id = @v1e)))) |
| 341 | for share nowait |
| 342 | )` |
| 343 | require.Equal(t, normalizeQuery(expected), normalizeQuery(query)) |
| 344 | require.Equal(t, []interface{}{3, 3, 103, 103}, explodedArgs) |
| 345 | } |
| 346 | { |
| 347 | uniqueKey := "name_position_uidx" |
| 348 | uniqueKeyColumns := NewColumnList([]string{"name", "position"}) |
| 349 | rangeStartValues := []string{"@v1s", "@v2s"} |
| 350 | rangeEndValues := []string{"@v1e", "@v2e"} |
| 351 | rangeStartArgs := []interface{}{3, 17} |
| 352 | rangeEndArgs := []interface{}{103, 117} |
| 353 | |
| 354 | query, explodedArgs, err := BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName, sharedColumns, mappedSharedColumns, uniqueKey, uniqueKeyColumns, rangeStartValues, rangeEndValues, rangeStartArgs, rangeEndArgs, true, true, true) |
| 355 | require.NoError(t, err) |
| 356 | expected := ` |
| 357 | insert /* gh-ost mydb.tbl */ ignore |
| 358 | into mydb.ghost (id, name, location) |
| 359 | (select id, name, position from mydb.tbl force index (name_position_uidx) where name = @v1s and position >= @v2s for share nowait) |
| 360 | union all |
| 361 | (select id, name, position from mydb.tbl force index (name_position_uidx) where name > @v1s and name < @v1e for share nowait) |
| 362 | union all |
| 363 | (select id, name, position from mydb.tbl force index (name_position_uidx) where name = @v1e and position <= @v2e for share nowait)` |
| 364 | require.Equal(t, normalizeQuery(expected), normalizeQuery(query)) |
| 365 | require.Equal(t, []interface{}{3, 17, 3, 103, 103, 117}, explodedArgs) |
| 366 | } |
| 367 | } |
| 368 |
nothing calls this directly
no test coverage detected
searching dependent graphs…