MCPcopy Index your code
hub / github.com/github/gh-ost / TestBuildRangeInsertQueryRenameMap

Function TestBuildRangeInsertQueryRenameMap

go/sql/builder_test.go:311–367  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

309}
310
311func 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

Callers

nothing calls this directly

Calls 3

NewColumnListFunction · 0.85
BuildRangeInsertQueryFunction · 0.85
normalizeQueryFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…