• Alexey Kopytov's avatar
    Fix for bug #21205: Different number of digits for float/double/real in --ps-protocol · a0194637
    Alexey Kopytov authored
    Various parts of code used different 'precision' arguments for sprintf("%g") when converting
    floating point numbers to a string. This led to differences in results in some cases 
    depending on whether the text-based or prepared statements protocol is used for a query.
    
    Fixed by changing arguments to sprintf("%g") to always be 15 (DBL_DIG) so that results are
    consistent regardless of the protocol.
    
    This patch will be null-merged to 6.0 as the problem does not exists there (fixed by the
    patch for WL#2934).
    
    client/sql_string.cc:
      Use 15 (DBL_DIG) as a precision argument for sprintf(), as Field_double::val_str() does.
    libmysql/libmysql.c:
      Use 15 (DBL_DIG) as a precision argument for sprintf(), as Field_double::val_str() does.
    mysql-test/r/archive_gis.result:
      Fixed test results to take additional precision into account.
    mysql-test/r/func_group.result:
      Fixed test results to take additional precision into account.
    mysql-test/r/func_math.result:
      Fixed test results to take additional precision into account.
    mysql-test/r/func_str.result:
      Fixed test results to take additional precision into account.
    mysql-test/r/gis.result:
      Fixed test results to take additional precision into account.
    mysql-test/r/innodb_gis.result:
      Fixed test results to take additional precision into account.
    mysql-test/r/select.result:
      Fixed test results to take additional precision into account.
    mysql-test/r/sp.result:
      Fixed test results to take additional precision into account.
    mysql-test/r/type_float.result:
      Fixed test results to take additional precision into account.
    mysql-test/t/type_float.test:
      Fixed test results to take additional precision into account.
    sql/sql_string.cc:
      Use 15 (DBL_DIG) as a precision argument for sprintf(), as Field_double::val_str() does.
    a0194637
sql_string.cc 24.3 KB