@@ -32,29 +32,6 @@ func EscapeName(name string) string {
3232 return fmt .Sprintf ("`%s`" , name )
3333}
3434
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-
5835func buildPreparedValues (length int ) []string {
5936 values := make ([]string , length , length )
6037 for i := 0 ; i < length ; i ++ {
@@ -330,14 +307,14 @@ func BuildDMLDeleteQuery(databaseName, tableName string, tableColumns, uniqueKey
330307 if uniqueKeyColumns .Len () == 0 {
331308 return result , uniqueKeyArgs , fmt .Errorf ("No unique key columns found in BuildDMLDeleteQuery" )
332309 }
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 ])
336313 uniqueKeyArgs = append (uniqueKeyArgs , arg )
337314 }
338315 databaseName = EscapeName (databaseName )
339316 tableName = EscapeName (tableName )
340- equalsComparison , err := BuildEqualsPreparedComparison (uniqueKeyColumns .Names )
317+ equalsComparison , err := BuildEqualsPreparedComparison (uniqueKeyColumns .Names () )
341318 if err != nil {
342319 return result , uniqueKeyArgs , err
343320 }
@@ -367,13 +344,13 @@ func BuildDMLInsertQuery(databaseName, tableName string, tableColumns, sharedCol
367344 databaseName = EscapeName (databaseName )
368345 tableName = EscapeName (tableName )
369346
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 ])
373350 sharedArgs = append (sharedArgs , arg )
374351 }
375352
376- mappedSharedColumnNames := duplicateNames (mappedSharedColumns .Names )
353+ mappedSharedColumnNames := duplicateNames (mappedSharedColumns .Names () )
377354 for i := range mappedSharedColumnNames {
378355 mappedSharedColumnNames [i ] = EscapeName (mappedSharedColumnNames [i ])
379356 }
@@ -415,26 +392,26 @@ func BuildDMLUpdateQuery(databaseName, tableName string, tableColumns, sharedCol
415392 databaseName = EscapeName (databaseName )
416393 tableName = EscapeName (tableName )
417394
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 ])
422399 sharedArgs = append (sharedArgs , arg )
423400 }
424401
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 ])
428405 uniqueKeyArgs = append (uniqueKeyArgs , arg )
429406 }
430407
431- mappedSharedColumnNames := duplicateNames (mappedSharedColumns .Names )
408+ mappedSharedColumnNames := duplicateNames (mappedSharedColumns .Names () )
432409 for i := range mappedSharedColumnNames {
433410 mappedSharedColumnNames [i ] = EscapeName (mappedSharedColumnNames [i ])
434411 }
435412 setClause , err := BuildSetPreparedClause (mappedSharedColumnNames )
436413
437- equalsComparison , err := BuildEqualsPreparedComparison (uniqueKeyColumns .Names )
414+ equalsComparison , err := BuildEqualsPreparedComparison (uniqueKeyColumns .Names () )
438415 result = fmt .Sprintf (`
439416 update /* gh-ost %s.%s */
440417 %s.%s
0 commit comments