@@ -193,11 +193,22 @@ func mergeResultWithoutOrderByAndLimit(ctx context.Context,
193193 var (
194194 fields []* mysql.Field
195195 warning uint16 = 0
196+ << << << < HEAD
196197 rows = make ([]proto.Row , 0 )
197198 // Record whether mysql.Result has been traversed
198199 endResult = make ([]bool , len (results ))
199200 rowIndexes = make ([]int , len (results ))
200201 endCount = 0
202+ == == == =
203+
204+ commandType = proto .CommandType (ctx )
205+ rows = make ([]proto.Row , 0 )
206+ // Record whether mysql.Result has been traversed
207+ endResult = make ([]bool , len (results ))
208+ endCount = 0
209+
210+ rowIndexs = make ([]int , len (results ))
211+ >> >> >> > 0 8 c063b (bugfix )
201212 )
202213 for _ , rlt := range results {
203214 warning += rlt .Warning
@@ -208,16 +219,37 @@ func mergeResultWithoutOrderByAndLimit(ctx context.Context,
208219 continue
209220 }
210221 result := rlt .Result .(* mysql.Result )
222+ << << << < HEAD
211223 row := result.Rows [rowIndexes [i ]]
212224 rowIndexes [i ]++
213225 if rowIndexes [i ] == len (result .Rows ) {
226+ == == == =
227+ row := result.Rows [rowIndexs [i ]]
228+ rowIndexs [i ]++
229+ if rowIndexs [i ] == len (result .Rows ) {
230+ >> >> >> > 0 8 c063b (bugfix )
214231 endResult [i ] = true
215232 endCount += 1
216233 continue
217234 }
218235
236+ << << << < HEAD
219237 if _ , err := row .Decode (); err != nil {
220238 log .Panic (err )
239+ == == == =
240+ if commandType == constant .ComQuery {
241+ textRow := & mysql.TextRow {Row : row .(* mysql.Row )}
242+ if _ , err := textRow .Decode (); err != nil {
243+ log .Panic (err )
244+ }
245+ rows = append (rows , textRow )
246+ } else {
247+ binaryRow := & mysql.BinaryRow {Row : row .(* mysql.Row )}
248+ if _ , err := binaryRow .Decode (); err != nil {
249+ log .Panic (err )
250+ }
251+ rows = append (rows , binaryRow )
252+ >> >> >> > 0 8 c063b (bugfix )
221253 }
222254 rows = append (rows , row )
223255 }
@@ -240,6 +272,7 @@ func mergeResultWithLimit(ctx context.Context,
240272 results []* ResultWithErr ,
241273 limit * Limit ) (* mysql.Result , uint16 ) {
242274 var (
275+ << << << < HEAD
243276 fields []* mysql.Field
244277 warning uint16 = 0
245278 offset int64
@@ -250,6 +283,21 @@ func mergeResultWithLimit(ctx context.Context,
250283 endResult = make ([]bool , len (results ))
251284 rowIndexes = make ([]int , len (results ))
252285 endCount = 0
286+ == == == =
287+ fields []* mysql.Field
288+ warning uint16 = 0
289+ offset int64
290+ count int64
291+ rowCount int64
292+ commandType = proto .CommandType (ctx )
293+
294+ rows = make ([]proto.Row , 0 )
295+ // Record whether mysql.Result has been traversed
296+ endResult = make ([]bool , len (results ))
297+ endCount = 0
298+
299+ rowIndexs = make ([]int , len (results ))
300+ >> >> >> > 0 8 c063b (bugfix )
253301 )
254302 for _ , rlt := range results {
255303 warning += rlt .Warning
@@ -263,9 +311,15 @@ func mergeResultWithLimit(ctx context.Context,
263311 continue
264312 }
265313 result := rlt .Result .(* mysql.Result )
314+ << << << < HEAD
266315 row := result.Rows [rowIndexes [i ]]
267316 rowIndexes [i ]++
268317 if rowIndexes [i ] == len (result .Rows ) {
318+ == == == =
319+ row := result.Rows [rowIndexs [i ]]
320+ rowIndexs [i ]++
321+ if rowIndexs [i ] == len (result .Rows ) {
322+ >> >> >> > 0 8 c063b (bugfix )
269323 endResult [i ] = true
270324 endCount += 1
271325 continue
@@ -275,8 +329,23 @@ func mergeResultWithLimit(ctx context.Context,
275329 if int64 (len (rows )) == count {
276330 break
277331 }
332+ << << << < HEAD
278333 if _ , err := row .Decode (); err != nil {
279334 log .Panic (err )
335+ == == == =
336+ if commandType == constant .ComQuery {
337+ textRow := & mysql.TextRow {Row : row .(* mysql.Row )}
338+ if _ , err := textRow .Decode (); err != nil {
339+ log .Panic (err )
340+ }
341+ rows = append (rows , textRow )
342+ } else {
343+ binaryRow := & mysql.BinaryRow {Row : row .(* mysql.Row )}
344+ if _ , err := binaryRow .Decode (); err != nil {
345+ log .Panic (err )
346+ }
347+ rows = append (rows , binaryRow )
348+ >> >> >> > 0 8 c063b (bugfix )
280349 }
281350 rows = append (rows , row )
282351 }
@@ -303,6 +372,7 @@ func mergeResultWithOrderByAndLimit(ctx context.Context,
303372 var (
304373 fields []* mysql.Field
305374 orderByFields []* OrderField
375+ << << << < HEAD
306376 warning uint16 = 0
307377 offset int64
308378 count int64
@@ -312,6 +382,20 @@ func mergeResultWithOrderByAndLimit(ctx context.Context,
312382 endResult = make ([]bool , len (results ))
313383 rowIndexes = make ([]int , len (results ))
314384 endCount = 0
385+ == == == =
386+
387+ commandType = proto .CommandType (ctx )
388+ warning uint16 = 0
389+ offset int64
390+ count int64
391+ rowCount int64
392+ rows = make ([]proto.Row , 0 )
393+ cells = make ([]* OrderByCell , len (results ))
394+ endResult = make ([]bool , len (results ))
395+ endCount = 0
396+
397+ rowIndexs = make ([]int , len (results ))
398+ >> >> >> > 0 8 c063b (bugfix )
315399 )
316400 fields = results [0 ].Result .(* mysql.Result ).Fields
317401 orderByFields = castOrderByItemsToOrderField (orderBy , fields )
@@ -322,15 +406,22 @@ func mergeResultWithOrderByAndLimit(ctx context.Context,
322406 for i , rlt := range results {
323407 if (cells [i ] == nil || cells [i ].next ) && ! endResult [i ] {
324408 result := rlt .Result .(* mysql.Result )
409+ << << << < HEAD
325410 row := result.Rows [rowIndexes [i ]]
326411 rowIndexes [i ]++
327412 if rowIndexes [i ] == len (result .Rows ) {
413+ == == == =
414+ row := result.Rows [rowIndexs [i ]]
415+ rowIndexs [i ]++
416+ if rowIndexs [i ] == len (result .Rows ) {
417+ >> >> >> > 0 8 c063b (bugfix )
328418 endResult [i ] = true
329419 endCount += 1
330420 continue
331421 }
332422
333423 orderFields := copyOrderFields (orderByFields )
424+ << << << < HEAD
334425 values , err := row .Decode ()
335426 if err != nil {
336427 log .Fatal (err )
@@ -343,6 +434,38 @@ func mergeResultWithOrderByAndLimit(ctx context.Context,
343434 orderField : orderFields ,
344435 next : false ,
345436 row : row ,
437+ == == == =
438+ if commandType == constant.ComQuery {
439+ textRow := & mysql.TextRow {Row : row .(* mysql.Row )}
440+ values , err := textRow .Decode ()
441+ if err != nil {
442+ log .Panic (err )
443+ }
444+ for _, of := range orderFields {
445+ of.value = values [of.fieldValueIndex ].Val
446+ }
447+
448+ cells [i ] = & OrderByCell {
449+ orderField : orderFields ,
450+ next : false ,
451+ row : textRow ,
452+ }
453+ } else {
454+ binaryRow := & mysql.BinaryRow {Row : row .(* mysql.Row )}
455+ values , err := binaryRow .Decode ()
456+ if err != nil {
457+ log .Fatal (err )
458+ }
459+ for _, of := range orderFields {
460+ of.value = values [of.fieldValueIndex ].Val
461+ }
462+
463+ cells [i ] = & OrderByCell {
464+ orderField : orderFields ,
465+ next : false ,
466+ row : binaryRow ,
467+ }
468+ >> >> >> > 0 8 c063b (bugfix )
346469 }
347470 }
348471 }
@@ -393,25 +516,39 @@ func mergeResultWithOrderBy(ctx context.Context,
393516 // OrderBy compare
394517 cells = make ([]* OrderByCell , len (results ))
395518 // Record whether mysql.Result has been traversed
519+ << << << < HEAD
396520 endResult = make ([]bool , len (results ))
397521 rowIndexes = make ([]int , len (results ))
398522 endCount = 0
523+ == == == =
524+ endResult = make ([]bool , len (results ))
525+ endCount = 0
526+
527+ rowIndexs = make ([]int , len (results ))
528+ >> >> >> > 0 8 c063b (bugfix )
399529 )
400530 fields = results [0 ].Result .(* mysql.Result ).Fields
401531 orderByFields = castOrderByItemsToOrderField (orderBy , fields )
402532 for {
403533 for i , rlt := range results {
404534 if (cells [i ] == nil || cells [i ].next ) && ! endResult [i ] {
405535 result := rlt .Result .(* mysql.Result )
536+ << << << < HEAD
406537 row := result.Rows [rowIndexes [i ]]
407538 rowIndexes [i ]++
408539 if rowIndexes [i ] == len (result .Rows ) {
540+ == == == =
541+ row := result.Rows [rowIndexs [i ]]
542+ rowIndexs [i ]++
543+ if rowIndexs [i ] == len (result .Rows ) {
544+ >> >> >> > 0 8 c063b (bugfix )
409545 endResult [i ] = true
410546 endCount += 1
411547 continue
412548 }
413549
414550 orderFields := copyOrderFields (orderByFields )
551+ << << << < HEAD
415552 values , err := row .Decode ()
416553 if err != nil {
417554 log .Fatal (err )
@@ -424,6 +561,38 @@ func mergeResultWithOrderBy(ctx context.Context,
424561 orderField : orderFields ,
425562 next : false ,
426563 row : row ,
564+ == == == =
565+ if commandType == constant.ComQuery {
566+ textRow := & mysql.TextRow {Row : row .(* mysql.Row )}
567+ values , err := textRow .Decode ()
568+ if err != nil {
569+ log .Panic (err )
570+ }
571+ for _, of := range orderFields {
572+ of.value = values [of.fieldValueIndex ].Val
573+ }
574+
575+ cells [i ] = & OrderByCell {
576+ orderField : orderFields ,
577+ next : false ,
578+ row : textRow ,
579+ }
580+ } else {
581+ binaryRow := & mysql.BinaryRow {Row : row .(* mysql.Row )}
582+ values , err := binaryRow .Decode ()
583+ if err != nil {
584+ log .Fatal (err )
585+ }
586+ for _, of := range orderFields {
587+ of.value = values [of.fieldValueIndex ].Val
588+ }
589+
590+ cells [i ] = & OrderByCell {
591+ orderField : orderFields ,
592+ next : false ,
593+ row : binaryRow ,
594+ }
595+ >> >> >> > 0 8 c063b (bugfix )
427596 }
428597 }
429598 }
0 commit comments