• unknown's avatar
    Bug#31177: Server variables can't be set to their current values · 89a20885
    unknown authored
    Default values of variables were not subject to upper/lower bounds
    and step, while setting variables was. Bounds and step are also
    applied to defaults now; defaults are corrected quietly, values
    given by the user are corrected, and a correction-warning is thrown
    as needed. Lastly, very large values could wrap around, starting
    from 0 again. They are bounded at the maximum value for the
    respective data-type now if no lower maximum is specified in the
    variable's definition.
    
    
    client/mysql.cc:
      correct maxima in options array
    client/mysqltest.c:
      adjust minimum for "sleep" option so default value is no longer
      out of bounds.
    include/m_string.h:
      ullstr() - the unsigned brother of llstr()
    include/my_getopt.h:
      Flag if we bounded the value (that is, correct anything aside from
      making value a multiple of block-size)
    mysql-test/r/delayed.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/index_merge.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/innodb.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/innodb_mysql.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/key_cache.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/packet.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/ps.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/subselect.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/type_bit.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/type_bit_innodb.result:
      We throw a warning now when we adjust out of range parameters.
    mysql-test/r/variables.result:
      correct results: bounds and step apply to variables' default values, too
    mysql-test/t/variables.test:
      correct results: bounds and step apply to variables' default values, too
    mysys/my_getopt.c:
      - apply bounds/step to default values of variables (based on work by serg)
      - print complaints about incorrect values for variables (truncation etc.,
        by requestion of consulting)
      - if no lower maximum is specified in variable definition, bound unsigned
        values at their maximum to prevent wrap-around
      - some calls to error_reporter had a \n, some didn't. remove \n from calls,
        let reporter-function handle it, so the default reporter behaves like that
        in mysqld
    sql/mysql_priv.h:
      correct RANGE_ALLOC_BLOCK_SIZE (cleared with monty)
    sql/mysqld.cc:
      correct maxima to correct data-type.
      correct minima where higher than default.
      correct range-alloc-block-size.
      correct inno variables so GET_* corresponds to actual variable's type.
    sql/set_var.cc:
      When the new value for a variable is out of bounds, we'll send the
      client a warning (but not if the value was simply not a multiple of
      'blocksize').  sys_var_thd_ulong had this, sys_var_long_ptr_global
      didn't; broken out and streamlined to avoid duplication of code.
    strings/llstr.c:
      ullstr() - the unsigned brother of llstr()
    89a20885
my_getopt.c 29.8 KB