@@ -32,29 +32,6 @@ func EscapeName(name string) string {
32
32
return fmt .Sprintf ("`%s`" , name )
33
33
}
34
34
35
- func fixArgType (arg interface {}, isUnsigned bool ) interface {} {
36
- if ! isUnsigned {
37
- return arg
38
- }
39
- // unsigned
40
- if i , ok := arg .(int8 ); ok {
41
- return uint8 (i )
42
- }
43
- if i , ok := arg .(int16 ); ok {
44
- return uint16 (i )
45
- }
46
- if i , ok := arg .(int32 ); ok {
47
- return uint32 (i )
48
- }
49
- if i , ok := arg .(int64 ); ok {
50
- return strconv .FormatUint (uint64 (i ), 10 )
51
- }
52
- if i , ok := arg .(int ); ok {
53
- return uint (i )
54
- }
55
- return arg
56
- }
57
-
58
35
func buildPreparedValues (length int ) []string {
59
36
values := make ([]string , length , length )
60
37
for i := 0 ; i < length ; i ++ {
@@ -330,14 +307,14 @@ func BuildDMLDeleteQuery(databaseName, tableName string, tableColumns, uniqueKey
330
307
if uniqueKeyColumns .Len () == 0 {
331
308
return result , uniqueKeyArgs , fmt .Errorf ("No unique key columns found in BuildDMLDeleteQuery" )
332
309
}
333
- for _ , column := range uniqueKeyColumns .Names {
334
- tableOrdinal := tableColumns .Ordinals [column ]
335
- arg := fixArgType (args [tableOrdinal ], uniqueKeyColumns . IsUnsigned ( column ) )
310
+ for _ , column := range uniqueKeyColumns .Columns () {
311
+ tableOrdinal := tableColumns .Ordinals [column . Name ]
312
+ arg := column . convertArg (args [tableOrdinal ])
336
313
uniqueKeyArgs = append (uniqueKeyArgs , arg )
337
314
}
338
315
databaseName = EscapeName (databaseName )
339
316
tableName = EscapeName (tableName )
340
- equalsComparison , err := BuildEqualsPreparedComparison (uniqueKeyColumns .Names )
317
+ equalsComparison , err := BuildEqualsPreparedComparison (uniqueKeyColumns .Names () )
341
318
if err != nil {
342
319
return result , uniqueKeyArgs , err
343
320
}
@@ -367,13 +344,13 @@ func BuildDMLInsertQuery(databaseName, tableName string, tableColumns, sharedCol
367
344
databaseName = EscapeName (databaseName )
368
345
tableName = EscapeName (tableName )
369
346
370
- for _ , column := range mappedSharedColumns .Names {
371
- tableOrdinal := tableColumns .Ordinals [column ]
372
- arg := fixArgType (args [tableOrdinal ], mappedSharedColumns . IsUnsigned ( column ) )
347
+ for _ , column := range mappedSharedColumns .Columns () {
348
+ tableOrdinal := tableColumns .Ordinals [column . Name ]
349
+ arg := column . convertArg (args [tableOrdinal ])
373
350
sharedArgs = append (sharedArgs , arg )
374
351
}
375
352
376
- mappedSharedColumnNames := duplicateNames (mappedSharedColumns .Names )
353
+ mappedSharedColumnNames := duplicateNames (mappedSharedColumns .Names () )
377
354
for i := range mappedSharedColumnNames {
378
355
mappedSharedColumnNames [i ] = EscapeName (mappedSharedColumnNames [i ])
379
356
}
@@ -415,26 +392,26 @@ func BuildDMLUpdateQuery(databaseName, tableName string, tableColumns, sharedCol
415
392
databaseName = EscapeName (databaseName )
416
393
tableName = EscapeName (tableName )
417
394
418
- for i , column := range sharedColumns .Names {
419
- mappedColumn := mappedSharedColumns .Names [i ]
420
- tableOrdinal := tableColumns .Ordinals [column ]
421
- arg := fixArgType (valueArgs [tableOrdinal ], mappedSharedColumns . IsUnsigned ( mappedColumn ) )
395
+ for i , column := range sharedColumns .Columns () {
396
+ mappedColumn := mappedSharedColumns .Columns () [i ]
397
+ tableOrdinal := tableColumns .Ordinals [column . Name ]
398
+ arg := mappedColumn . convertArg (valueArgs [tableOrdinal ])
422
399
sharedArgs = append (sharedArgs , arg )
423
400
}
424
401
425
- for _ , column := range uniqueKeyColumns .Names {
426
- tableOrdinal := tableColumns .Ordinals [column ]
427
- arg := fixArgType (whereArgs [tableOrdinal ], uniqueKeyColumns . IsUnsigned ( column ) )
402
+ for _ , column := range uniqueKeyColumns .Columns () {
403
+ tableOrdinal := tableColumns .Ordinals [column . Name ]
404
+ arg := column . convertArg (whereArgs [tableOrdinal ])
428
405
uniqueKeyArgs = append (uniqueKeyArgs , arg )
429
406
}
430
407
431
- mappedSharedColumnNames := duplicateNames (mappedSharedColumns .Names )
408
+ mappedSharedColumnNames := duplicateNames (mappedSharedColumns .Names () )
432
409
for i := range mappedSharedColumnNames {
433
410
mappedSharedColumnNames [i ] = EscapeName (mappedSharedColumnNames [i ])
434
411
}
435
412
setClause , err := BuildSetPreparedClause (mappedSharedColumnNames )
436
413
437
- equalsComparison , err := BuildEqualsPreparedComparison (uniqueKeyColumns .Names )
414
+ equalsComparison , err := BuildEqualsPreparedComparison (uniqueKeyColumns .Names () )
438
415
result = fmt .Sprintf (`
439
416
update /* gh-ost %s.%s */
440
417
%s.%s
0 commit comments