@@ -352,24 +352,24 @@ func BuildUniqueKeyRangeEndPreparedQueryViaTemptable(databaseName, tableName str
352
352
return result , explodedArgs , nil
353
353
}
354
354
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" )
357
357
}
358
358
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" )
361
361
}
362
362
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 {
365
365
return "" , fmt .Errorf ("Got 0 columns in BuildUniqueKeyMinMaxValuesPreparedQuery" )
366
366
}
367
367
databaseName = EscapeName (databaseName )
368
368
tableName = EscapeName (tableName )
369
369
370
- uniqueKeyColumnNames := duplicateNames (uniqueKeyColumns .Names ())
370
+ uniqueKeyColumnNames := duplicateNames (uniqueKey . Columns .Names ())
371
371
uniqueKeyColumnOrder := make ([]string , len (uniqueKeyColumnNames ))
372
- for i , column := range uniqueKeyColumns .Columns () {
372
+ for i , column := range uniqueKey . Columns .Columns () {
373
373
uniqueKeyColumnNames [i ] = EscapeName (uniqueKeyColumnNames [i ])
374
374
if column .Type == EnumColumnType {
375
375
uniqueKeyColumnOrder [i ] = fmt .Sprintf ("concat(%s) %s" , uniqueKeyColumnNames [i ], order )
@@ -378,14 +378,15 @@ func buildUniqueKeyMinMaxValuesPreparedQuery(databaseName, tableName string, uni
378
378
}
379
379
}
380
380
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 ,
389
390
strings .Join (uniqueKeyColumnOrder , ", " ),
390
391
)
391
392
return query , nil
0 commit comments