1. 30 Jun, 2016 4 commits
    • Sergei Golubchik's avatar
      parse negative numbers into one item · 23d03a1b
      Sergei Golubchik authored
      use Item->neg to convert generate negative Item_num's
      instead of Item_func_neg(Item_num).
      
      Based on the following commit:
      
        Author: Monty <monty@mariadb.org>
        Date:   Mon May 30 22:44:00 2016 +0300
      
          Make negative number their own token
          The negation (-) operator will call Item->neg() one underlying numeric constants
          and remove itself (like the NOT() function does today for other NOT functions.
      
          This simplifies things
          - -1 is not anymore an expression but a basic_const_item
            - improves optimizer
            - DEFAULT -1 doesn't need special handling anymore
            - When we add DEFAULT expressions, -1 will be treated exactly like 1
          - printing of items doesn't anymore put braces around all negative numbers
      
          Other things fixed:
          - Fixed that longlong converted to decimal's has a more appropriate size
          - Fixed that "-0.0" read into a decimal is interpreted as 0.0
      23d03a1b
    • Monty's avatar
      Simplify THD::decide_logging_format() · 60916a8b
      Monty authored
      Fixed some test for future when DELETE will not trigger row based replication
      60916a8b
    • Michael Widenius's avatar
      Part of MDEV-10134 Add full support for DEFAULT · 6c173324
      Michael Widenius authored
      Print default values for BLOB's.
      This is a part commit for automatic changes to make the real commit smaller.
      All changes here are related to that we now print DEFAULT NULL for blob and
      text fields, like we do for all other fields.
      6c173324
    • Sergei Golubchik's avatar
      compilation warning · 3aadba15
      Sergei Golubchik authored
      3aadba15
  2. 29 Jun, 2016 1 commit
    • Alexander Barkov's avatar
      Preparing the CAST(..AS [UN]SIGNED) related code to fix a number · afbd28ae
      Alexander Barkov authored
      of bugs easier (MDEV-8919, MDEV-10304, MDEV-10305, MDEV-10307)
      
      - Adding Item::push_note_converted_to_negative_complement() and
        Item::push_note_converted_to_positive_complement()
      - Adding virtual methods Item::val_int_signed_typecast() and
        Item::val_int_unsigned_typecast()
      - Moving COLUMN_GET() related code from
        Item_func_signed::val_int() and Item_func_unsigned::val_int() to
        Item_dyncol_get::val_int_signed_typecast() and
        Item_dyncol_get::val_int_unsigned_typecast()
      - Moving Item_func_signed::val_int_from_str() to Item::val_int_from_str()
        and changing it to get the value from "this" instead of args[0].
      
      The patch does not change behaviour. It's only to simplify fixing of the
      mentioned bugs. It will also simplify switching the CAST related code to
      use the type handler infrastructure easier (soon).
      afbd28ae
  3. 26 Jun, 2016 1 commit
  4. 23 Jun, 2016 1 commit
  5. 22 Jun, 2016 4 commits
    • Monty's avatar
      MDEV-10219 rpl.rpl_parallel_temptable failed in buildbot: Assertion `!table ||... · ec38c7e6
      Monty authored
      MDEV-10219 rpl.rpl_parallel_temptable failed in buildbot: Assertion `!table || !table->in_use || table->in_use == _current_thd()' failed
      
      Problem was that table->in_use was not properly set when dropping a temporary for the slave.
      ec38c7e6
    • Monty's avatar
      838205f0
    • Monty's avatar
      MDEV-10138 Support for decimals up to 38 digits · 34eb10e4
      Monty authored
      Decimals with float, double and decimal now works the following way:
      
      - DECIMAL_NOT_SPECIFIED is used when declaring DECIMALS without a firm number
        of decimals.  It's only used in asserts and my_decimal_int_part.
      - FLOATING_POINT_DECIMALS (31) is used to mark that a FLOAT or DOUBLE
        was defined without decimals. This is regarded as a floating point value.
      - Max decimals allowed for FLOAT and DOUBLE is FLOATING_POINT_DECIMALS-1
      - Clients assumes that float and double with decimals >= NOT_FIXED_DEC are
        floating point values (no decimals)
      - In the .frm decimals=FLOATING_POINT_DECIMALS are used to define
        floating point for float and double (31, like before)
      
      To ensure compatibility with old clients we do:
      
      - When storing float and double, we change NOT_FIXED_DEC to
        FLOATING_POINT_DECIMALS.
      - When creating fields from .frm we change for float and double
        FLOATING_POINT_DEC to NOT_FIXED_DEC
      - When sending definition for a float/decimal field without decimals
        to the client as part of a result set we convert NOT_FIXED_DEC to
        FLOATING_POINT_DECIMALS.
      - variance() and std() has changed to limit the decimals to
        FLOATING_POINT_DECIMALS -1 to not get the double converted floating point.
        (This was to preserve compatiblity)
      - FLOAT and DOUBLE still have 30 as max number of decimals.
      
      Bugs fixed:
      
      variance() printed more decimals than we support for double values.
      
      New behaviour:
      - Strings now have 38 decimals instead of 30 when converted to decimal
      - CREATE ... SELECT with a decimal with > 30 decimals will create a column
        with a smaller range than before as we are trying to preserve the number of
        decimals.
      
      
      Other changes
      - We are now using the obsolete bit FIELDFLAG_LEFT_FULLSCREEN to specify
        decimals > 31
      - NOT_FIXED_DEC is now declared in one place
      - For clients, NOT_FIXED_DEC is always 31 (to ensure compatibility).
        On the server NOT_FIXED_DEC is DECIMAL_NOT_SPECIFIED (39)
      - AUTO_SEC_PART_DIGITS is taken from DECIMAL_NOT_SPECIFIED
      - DOUBLE conversion functions are now using DECIMAL_NOT_SPECIFIED instead of
        NOT_FIXED_DEC
      34eb10e4
    • Monty's avatar
      Fixed compiler warnings · e4062d4d
      Monty authored
      Added my_global.h to PerconeFT to avoid "error <my_config.h> MUST be included first"
      e4062d4d
  6. 19 Jun, 2016 1 commit
  7. 14 Jun, 2016 1 commit
  8. 13 Jun, 2016 2 commits
    • Sergei Golubchik's avatar
      MDEV-10098 main.create_delayed fails with ps-protocol: assertion... · 9f9eb682
      Sergei Golubchik authored
      MDEV-10098 main.create_delayed fails with ps-protocol: assertion `global_status_var.global_memory_used >= 0' failed
      
      Remove the assert. We cannot verify that
      global_memory_used value is valid (>=0)
      because some of updates are cached in individual THD's
      (e.g. THD1 can have +300 cached, while the other THD2
      can have -300 cached. If the second THD exists before
      the first one, global_memory_used will be -300
      temporarily).
      
      Instead add the assert just before the exit, when all
      THDs been already destroyed.
      9f9eb682
    • Sergei Golubchik's avatar
      cleanup · e65703c6
      Sergei Golubchik authored
      always update global_status_var.global_memory_used
      through update_global_memory_status()
      e65703c6
  9. 10 Jun, 2016 6 commits
    • Nirbhay Choubey's avatar
      MDEV-5535: Cannot reopen temporary table · b2ae32aa
      Nirbhay Choubey authored
      Since a query can now refer to the same temporary table
      multiple times, find_dup_table()/find_table_in_list()
      have been updated to also consider this new possibility.
      b2ae32aa
    • Nirbhay Choubey's avatar
      MDEV-5535: Cannot reopen temporary table · e2087c6e
      Nirbhay Choubey authored
      Temporary table being created by outer statement
      should not be visible to inner statement. And if
      inner statement creates a table with same name.
      The whole statement should fail with
      ER_TABLE_EXISTS_ERROR.
      
      Implemented by temporarily de-linking the TABLE_SHARE
      being created by outer statement so that it remains
      hidden to the inner statement.
      e2087c6e
    • Nirbhay Choubey's avatar
      MDEV-5535: Cannot reopen temporary table · 7305be2f
      Nirbhay Choubey authored
      mysqld maintains a list of TABLE objects for all temporary
      tables created within a session in THD. Here each table is
      represented by a TABLE object.
      
      A query referencing a particular temporary table for more
      than once, however, failed with ER_CANT_REOPEN_TABLE error
      because a TABLE_SHARE was allocate together with the TABLE,
      so temporary tables always had only one TABLE per TABLE_SHARE.
      
      This patch lift this restriction by separating TABLE and
      TABLE_SHARE objects and storing TABLE_SHAREs for temporary
      tables in a list in THD, and TABLEs in a list within their
      respective TABLE_SHAREs.
      7305be2f
    • Nirbhay Choubey's avatar
      MDEV-5535: Cannot reopen temporary table · 54751115
      Nirbhay Choubey authored
      Add generic temporary table related tests.
      54751115
    • Nirbhay Choubey's avatar
      Some trivial changes. · 78d42767
      Nirbhay Choubey authored
      78d42767
    • Sergey Vojtovich's avatar
      Code cleanups · 7ecb3049
      Sergey Vojtovich authored
      - unused TABLE_SHARE::deleting and TABLE_LIST::deleting flags were removed
      - kill_delayed_threads_for_table() and intern_close_table() are now private
        methods of table cache
      - removed free_share flag of closefrm(): it was never used for temporary
        tables and was rarely useful for regular tables
      7ecb3049
  10. 08 Jun, 2016 3 commits
  11. 07 Jun, 2016 2 commits
    • Sergey Vojtovich's avatar
      MDEV-9857 - CACHE_LINE_SIZE in innodb should be 128 on POWER · 9de67083
      Sergey Vojtovich authored
      Replaced hard-coded cache line size.
      
      Changes based on Daniel Black's work.
      9de67083
    • Alexey Kopytov's avatar
      Few improvements related to CPU cache line size and padding: · 49ad0845
      Alexey Kopytov authored
      Bug #79636: CACHE_LINE_SIZE should be 128 on AArch64
      Bug #79637: Hard-coded cache line size
      Bug #79638: Reconcile CACHE_LINE_SIZE with CPU_LEVEL1_DCACHE_LINESIZE
      Bug #79652: Suspicious padding in srv_conc_t
      
      - changed CPU_LEVEL1_DCACHE_LINESIZE to default to 128 bytes on POWER
        and AArch64 architectures in cases when no value could be detected
        by CMake using getconf
      
      - changed CACHE_LINE_SIZE definition in ut0counter.h to be an alias of
        CPU_LEVEL1_DCACHE_LINESIZE
      
      - changed a number of hard-coded 64-byte cache line size values in the
        InnoDB code
      
      - fixed insufficient padding for srv_conc members in srv0conc.cc
      
      Ported to Mariadb by Daniel Black <daniel.black@au.ibm.com>
      Added s390 cache size of 256 at same time.
      49ad0845
  12. 05 Jun, 2016 1 commit
  13. 04 Jun, 2016 8 commits
    • Sergei Golubchik's avatar
      stop binlog background thread together with others · 4a0612ed
      Sergei Golubchik authored
      that fixes many rpl tests failures
      4a0612ed
    • Sergei Golubchik's avatar
      cleanup: thread_count · 562c1df7
      Sergei Golubchik authored
      move thread_count handling into THD:
      * increment thread_count in THD constructor
      * decrement thread_count in THD destructor
      * never modify thread_count directly!
      562c1df7
    • Sergei Golubchik's avatar
      decrement thead_count *after* THD is destroyed · 7425610c
      Sergei Golubchik authored
      because thread_count means just that: number of THDs
      and shutdown code looks at it to know when to free
      shared data structures that THD uses.
      
      This fixes random crashes in ~THD on shutdown
      7425610c
    • Sergei Golubchik's avatar
      fix the method name · 74aef87c
      Sergei Golubchik authored
      it's always assert_<statement>,
      not <do something>_if_<condition>
      74aef87c
    • Sergei Golubchik's avatar
      THD:: cleanup() must be where it used to · 725ce0fe
      Sergei Golubchik authored
      between net_end() and ha_close_connection()
      
      this fixes lockups in main.locked_temporary-5955 and some
      other innodb tests.
      725ce0fe
    • Sergei Golubchik's avatar
      reset @@TIMESTAMP for COM_CHANGE_USER · 69da361c
      Sergei Golubchik authored
      this also fixes tokudb.type_year failure
      (in ./mtr tokudb.type_timestamp tokudb.type_year)
      69da361c
    • Sergei Golubchik's avatar
      fix XID comparison · 4aacb20d
      Sergei Golubchik authored
      according to the standard, the gtrid/bqual pair must be
      "globally unique", so XIDs are equal if their gtrids and
      bquals are identical, formatID simply tells how
      gtrid/bqual were generated. But if formatID == -1
      (it means "null") gtrid/bqual don't have any value at all.
      
      This fixes main.xa_sync failure in
      ./mtr main.quary_cache_debug main.xa_sync
      4aacb20d
    • Monty's avatar
      Reuse THD for new user connections · 89685d55
      Monty authored
      - To ensure that mallocs are marked for the correct THD, even if it's
        allocated in another thread, I added the thread_id to the THD constructor
      - Added st_my_thread_var to thr_lock_info_init() to avoid a call to my_thread_var
      - Moved things from THD::THD() to THD::init()
      - Moved some things to THD::cleanup()
      - Added THD::free_connection() and THD::reset_for_reuse()
      - Added THD to CONNECT::create_thd()
      - Added THD::thread_dbug_id and st_my_thread_var->dbug_id. These are needed
        to ensure that we have a constant thread_id used for debugging with a THD,
        even if it changes thread_id (=connection_id)
      - Set variables.pseudo_thread_id in constructor. Removed not needed sets.
      89685d55
  14. 02 Jun, 2016 3 commits
  15. 01 Jun, 2016 2 commits