@@ -352,24 +352,24 @@ func BuildUniqueKeyRangeEndPreparedQueryViaTemptable(databaseName, tableName str
352352 return result , explodedArgs , nil
353353}
354354
355- func BuildUniqueKeyMinValuesPreparedQuery (databaseName , tableName string , uniqueKeyColumns * ColumnList ) (string , error ) {
356- return buildUniqueKeyMinMaxValuesPreparedQuery (databaseName , tableName , uniqueKeyColumns , "asc" )
355+ func BuildUniqueKeyMinValuesPreparedQuery (databaseName , tableName string , uniqueKey * UniqueKey ) (string , error ) {
356+ return buildUniqueKeyMinMaxValuesPreparedQuery (databaseName , tableName , uniqueKey , "asc" )
357357}
358358
359- func BuildUniqueKeyMaxValuesPreparedQuery (databaseName , tableName string , uniqueKeyColumns * ColumnList ) (string , error ) {
360- return buildUniqueKeyMinMaxValuesPreparedQuery (databaseName , tableName , uniqueKeyColumns , "desc" )
359+ func BuildUniqueKeyMaxValuesPreparedQuery (databaseName , tableName string , uniqueKey * UniqueKey ) (string , error ) {
360+ return buildUniqueKeyMinMaxValuesPreparedQuery (databaseName , tableName , uniqueKey , "desc" )
361361}
362362
363- func buildUniqueKeyMinMaxValuesPreparedQuery (databaseName , tableName string , uniqueKeyColumns * ColumnList , order string ) (string , error ) {
364- if uniqueKeyColumns .Len () == 0 {
363+ func buildUniqueKeyMinMaxValuesPreparedQuery (databaseName , tableName string , uniqueKey * UniqueKey , order string ) (string , error ) {
364+ if uniqueKey . Columns .Len () == 0 {
365365 return "" , fmt .Errorf ("Got 0 columns in BuildUniqueKeyMinMaxValuesPreparedQuery" )
366366 }
367367 databaseName = EscapeName (databaseName )
368368 tableName = EscapeName (tableName )
369369
370- uniqueKeyColumnNames := duplicateNames (uniqueKeyColumns .Names ())
370+ uniqueKeyColumnNames := duplicateNames (uniqueKey . Columns .Names ())
371371 uniqueKeyColumnOrder := make ([]string , len (uniqueKeyColumnNames ))
372- for i , column := range uniqueKeyColumns .Columns () {
372+ for i , column := range uniqueKey . Columns .Columns () {
373373 uniqueKeyColumnNames [i ] = EscapeName (uniqueKeyColumnNames [i ])
374374 if column .Type == EnumColumnType {
375375 uniqueKeyColumnOrder [i ] = fmt .Sprintf ("concat(%s) %s" , uniqueKeyColumnNames [i ], order )
@@ -378,14 +378,15 @@ func buildUniqueKeyMinMaxValuesPreparedQuery(databaseName, tableName string, uni
378378 }
379379 }
380380 query := fmt .Sprintf (`
381- select /* gh-ost %s.%s */ %s
382- from
383- %s.%s
384- order by
385- %s
386- limit 1
387- ` , databaseName , tableName , strings .Join (uniqueKeyColumnNames , ", " ),
388- databaseName , tableName ,
381+ select /* gh-ost %s.%s */ %s
382+ from
383+ %s.%s
384+ force index (%s)
385+ order by %s
386+ limit 1
387+ ` ,
388+ databaseName , tableName , strings .Join (uniqueKeyColumnNames , ", " ),
389+ databaseName , tableName , uniqueKey .Name ,
389390 strings .Join (uniqueKeyColumnOrder , ", " ),
390391 )
391392 return query , nil
0 commit comments