1. 17 May, 2017 7 commits
  2. 16 May, 2017 9 commits
  3. 15 May, 2017 15 commits
    • Sergei Golubchik's avatar
      MDEV-10936 CONNECT engine JDBC type can't find JdbcInterface · a3cf69e2
      Sergei Golubchik authored
      Don't use instal_jar() from Use_Java.cmake -
      at least in CentOS 7 (cmake 2.8.12.2) it doesn't yet support
      the COMPONENT option.
      a3cf69e2
    • Sergei Golubchik's avatar
      MDEV-12660 inconsistent mysql_stmt_close · a8773ef3
      Sergei Golubchik authored
      remove dead code: this "return rc" could've never happened,
      because reset_stmt_handle can only possibly fail if RESET_SERVER
      flag is used.
      
      But this "return rc" was confusing, it was under DBUG_ENTER (while
      not being DBUG_RETURN) and it was skipping required stmt cleanup
      at the end of the function.
      a8773ef3
    • Sergei Golubchik's avatar
      MDEV-11883 MariaDB crashes with out-of-memory when query information_schema · a65623b3
      Sergei Golubchik authored
      CSV engine didn't expect CSM files to be read-only
      a65623b3
    • Sergei Golubchik's avatar
      MDEV-9998 Fix issues caught by Clang's -Wpointer-bool-conversion warning · 71b45032
      Sergei Golubchik authored
      remove useless checks
      and a couple of others
      71b45032
    • Sergei Golubchik's avatar
      MDEV-12761 Error return from external_lock make the server crash · f9264280
      Sergei Golubchik authored
      bunch of bugs when external_lock() fails on unlock:
      * mi_lock_database() used mi_mark_crashed() under share->intern_lock,
        but mi_mark_crashed() itself locks this mutex.
      * handler::close() required table to be unlocked, but failed
        external_lock didn't count as unlock
      * mysql_unlock_tables() ignored all unlock errors, but they still set
        the error status in stmt_da.
      f9264280
    • Sergei Golubchik's avatar
      MDEV-12420 max_recursive_iterations did not prevent a stack-overflow and segfault · 52aa2009
      Sergei Golubchik authored
      post-review fixes
      * move pcre-specific variable out of mysys
      * don't use current_thd
      * move a commonly used macro to my_sys.h
      * remove new sysvar
      52aa2009
    • Daniel Black's avatar
      602b5e4c
    • Daniel Black's avatar
      b30311e5
    • Daniel Black's avatar
      fbc057ad
    • Daniel Black's avatar
      MDEV-12420: PCRE stack overflow · d672f88e
      Daniel Black authored
      It was possible to construct a PCRE expression that exceeded the stack.
      resulting in a crash:
      
      With fix:
      
      MariaDB [(none)]> SELECT 1
          -> FROM dual
          -> WHERE ('Alpha,Bravo,Charlie,Delta,Echo,Foxtrot,StrataCentral,Golf,Hotel,India,Juliet,Kilo,Lima,Mike,StrataL3,November,Oscar,StrataL2,Sand,P3,P4SwitchTest,Arsys,Poppa,ExtensionMgr,Arp,Quebec,Romeo,StrataApiV2,PtReyes,Sierra,SandAcl,Arrow,Artools,BridgeTest,Tango,SandT,PAlaska,Namespace,Agent,Qos,PatchPanel,ProjectReport,Ark,Gimp,Agent,SliceAgent,Arnet,Bgp,Ale,Tommy,Central,AsicPktTestLib,Hsc,SandL3,Abuild,Pca9555,Standby,ControllerDut,CalSys,SandLib,Sb820,PointV2,BfnLib,Evpn,BfnSdk,Sflow,ManagementActive,AutoTest,GatedTest,Bgp,Sand,xinetd,BfnAgentLib,bf-utils,Hello,BfnState,Eos,Artest,Qos,Scd,ThermoMgr,Uniform,EosUtils,Eb,FanController,Central,BfnL3,BfnL2,tcp_wrappers,Victor,Environment,Route,Failover,Whiskey,Xray,Gimp,BfnFixed,Strata,SoCal,XApi,Msrp,XpProfile,tcpdump,PatchPanel,ArosTest,FhTest,Arbus,XpAcl,MacConc,XpApi,telnet,QosTest,Alpha2,BfnVlan,Stp,VxlanControllerTest,MplsAgent,Bravo2,Lanz,BfnMbb,Intf,XCtrl,Unicast,SandTunnel,L3Unicast,Ipsec,MplsTest,Rsvp,EthIntf,StageMgr,Sol,MplsUtils,Nat,Ira,P4NamespaceDut,Counters,Charlie2,Aqlc,Mlag,Power,OpenFlow,Lag,RestApi,BfdTest,strongs,Sfa,CEosUtils,Adt746,MaintenanceMode,MlagDut,EosImage,IpEth,MultiProtocol,Launcher,Max3179,Snmp,Acl,IpEthTest,PhyEee,bf-syslibs,tacc,XpL2,p4-ar-switch,p4-bf-switch,LdpTest,BfnPhy,Mirroring,Phy6,Ptp'
          ->
          -> REGEXP '^((?!\b(Strata|StrataApi|StrataApiV2)\b).)*$');
      Empty set, 1 warning (0.00 sec)
      
      MariaDB [(none)]> show warnings;
      +---------+------+---------------------------------------------------------+
      | Level   | Code | Message                                                 |
      +---------+------+---------------------------------------------------------+
      | Warning | 1139 | Got error 'pcre_exec: Internal error (-21)' from regexp |
      +---------+------+---------------------------------------------------------+
      d672f88e
    • Sergei Golubchik's avatar
      MDEV-12799 Buffer overflow · 2e1428c0
      Sergei Golubchik authored
      with a specially corrupted master.info one can
      get an invalid heartbeat_period that will
      trigger a heap overflow.
      2e1428c0
    • Igor Babaev's avatar
      Fixed the bug mdev-7599. · e0352fb0
      Igor Babaev authored
      At some conditions the function opt_sum_query() can apply MIN/MAX
      optimizations to to Item_sum objects of a select These optimizations
      becomes invalid if this select is the subquery of an IN subquery
      predicate that is converted to a EXISTS subquery. Thus in this case
      the MIX/MAX optimizations that have been applied in opt_sum_query()
      must be rolled back.
      This bug appeared in 5.3 when the code for the cost base choice between
      materialization and in-to-exists transformation of non-correlated
      IN subqueries was introduced. Before this code in-to-exists
      transformations were always performed before the call of opt_sum_query().
      e0352fb0
    • Marko Mäkelä's avatar
      MDEV-12188 information schema - errors populating fail to free memory, unlock mutexes · 217b8115
      Marko Mäkelä authored
      Given the OK macro used in innodb does a DBUG_RETURN(1) on expression failure
      the innodb implementation has a number of errors in i_s.cc.
      
      We introduce a new macro BREAK_IF that replaces some use of the OK macro.
      Also, do some other cleanup detailed below.
      
      When invoking Field::store() on integers, always pass the parameter
      is_unsigned=true to avoid an unnecessary conversion to double.
      
      i_s_fts_deleted_generic_fill(), i_s_fts_config_fill():
      Use the BREAK_IF macro instead of OK.
      
      i_s_fts_index_cache_fill_one_index(), i_s_fts_index_table_fill_one_index():
      Add a parameter for conv_string, and let the caller allocate that buffer.
      
      i_s_fts_index_cache_fill(): Check the return status of
      i_s_fts_index_cache_fill_one_index().
      
      i_s_fts_index_table_fill(): Check the return status of
      i_s_fts_index_table_fill_one_index().
      
      i_s_fts_index_table_fill_one_fetch(): Always let the caller invoke
      i_s_fts_index_table_free_one_fetch().
      
      i_s_innodb_buffer_page_fill(), i_s_innodb_buf_page_lru_fill():
      Do release dict_sys->mutex if filling the buffers fails.
      
      i_s_innodb_buf_page_lru_fill(): Also display the value
      INFORMATION_SCHEMA.INNODB_BUFFER_PAGE.PAGE_IO_FIX='IO_PIN'
      when a block is in that state. Remove the unnecessary variable 'heap'.
      217b8115
    • Vicențiu Ciorbaru's avatar
      5.6.36 · 0af98182
      Vicențiu Ciorbaru authored
      0af98182
    • Marko Mäkelä's avatar
      Fix the Solaris compilation after MDEV-12674 · 8417252b
      Marko Mäkelä authored
      simple_counter::add(): Add a type cast to the os_atomic_increment_ulint()
      call, because GCC would check the type compatibility even when the code
      branch is not being instantiated (atomic=false). On Solaris,
      os_atomic_increment_ulint() actually needs a compatible parameter type,
      and an error would be emitted due to an incompatible 64-bit type,
      for srv_stats.n_lock_wait_time.add(diff_time).
      8417252b
  4. 12 May, 2017 3 commits
    • Olivier Bertrand's avatar
    • Marko Mäkelä's avatar
      MDEV-12674 Innodb_row_lock_current_waits has overflow · ff166093
      Marko Mäkelä authored
      There is a race condition related to the variable
      srv_stats.n_lock_wait_current_count, which is only
      incremented and decremented by the function lock_wait_suspend_thread(),
      
      The incrementing is protected by lock_sys->wait_mutex, but the
      decrementing does not appear to be protected by anything.
      This mismatch could allow the counter to be corrupted when a
      transactional InnoDB table or record lock wait is terminating
      roughly at the same time with the start of a wait on a
      (possibly different) lock.
      
      ib_counter_t: Remove some unused methods. Prevent instantiation for N=1.
      Add an inc() method that takes a slot index as a parameter.
      
      single_indexer_t: Remove.
      
      simple_counter<typename Type, bool atomic=false>: A new counter wrapper.
      Optionally use atomic memory operations for modifying the counter.
      Aligned to the cache line size.
      
      lsn_ctr_1_t, ulint_ctr_1_t, int64_ctr_1_t: Define as simple_counter<Type>.
      These counters are either only incremented (and we do not care about
      losing some increment operations), or the increment/decrement operations
      are protected by some mutex.
      
      srv_stats_t::os_log_pending_writes: Document that the number is protected
      by log_sys->mutex.
      
      srv_stats_t::n_lock_wait_current_count: Use simple_counter<ulint, true>,
      that is, atomic inc() and dec() operations.
      
      lock_wait_suspend_thread(): Release the mutexes before incrementing
      the counters. Avoid acquiring the lock mutex if the lock wait has
      already been resolved. Atomically increment and decrement
      srv_stats.n_lock_wait_current_count.
      
      row_insert_for_mysql(), row_update_for_mysql(),
      row_update_cascade_for_mysql(): Use the inc() method with the trx->id
      as the slot index. This is a non-functional change, just using
      inc() instead of add(1).
      
      buf_LRU_get_free_block(): Replace the method add(index, n) with inc().
      There is no slot index in the simple_counter.
      ff166093
    • Sachin Setiya's avatar
      MDEV-11718 Post-fix · 9495e018
      Sachin Setiya authored
      A better way of finding mysqld
      9495e018
  5. 11 May, 2017 2 commits
    • Olivier Bertrand's avatar
      Fix failing test connect.json for MariaDB 10.0 · 436070c6
      Olivier Bertrand authored
      Suppressing Uri and dsn from json tables (was MGO)
        modified:   storage/connect/ha_connect.cc
        modified:   storage/connect/tabdos.cpp
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/tabjson.h
      436070c6
    • Olivier Bertrand's avatar
      Fix wrong value of JSON column · 1c88b9a8
      Olivier Bertrand authored
      When null and the column is NOT NULL the value was not reset.
        modified:   storage/connect/tabjson.cpp
      
      Fix converting bstr_t string to set error message
        modified:   storage/connect/domdoc.cpp
      
      Fix MDEV-12768: -Wformat-overflow compile warnings
        modified:   storage/connect/global.h
        modified:   storage/connect/jsonudf.cpp
        modified:   storage/connect/plugutil.cpp
        modified:   storage/connect/tabvct.cpp
      
      Typo (in external_lock)
        modified:   storage/connect/ha_connect.cc
      
      Remove some warnings
        modified:   storage/connect/odbconn.cpp
        modified:   storage/connect/tabmysql.cpp
      
      Add MEM_RESERVE flag to virtualAlloc
        modified:   storage/connect/plgdbutl.cpp
      
      Fix MDEV-12573:
      Accept=1 may show incorrect value for NULL column in CONNECT TBL
        modified:   storage/connect/tabutil.cpp
      
      Fix wrong setting of key size when greater than 2G
       modified:   storage/connect/xindex.cpp
      
      Fixing MDEV-12149: compile errors on Windows with /Zc:strictStrings
      Introduce typedef PCSZ and replace PSZ by it where it matters
      All done on CONNECT but compile still fails because of an included system file
        modified:   storage/connect/array.cpp
        modified:   storage/connect/catalog.h
        modified:   storage/connect/colblk.cpp
        modified:   storage/connect/colblk.h
        modified:   storage/connect/connect.cc
        modified:   storage/connect/domdoc.cpp
        modified:   storage/connect/domdoc.h
        modified:   storage/connect/filamdbf.cpp
        modified:   storage/connect/filamdbf.h
        modified:   storage/connect/filamfix.cpp
        modified:   storage/connect/filamgz.cpp
        modified:   storage/connect/filamtxt.h
        modified:   storage/connect/filamvct.cpp
        modified:   storage/connect/filamvct.h
        modified:   storage/connect/filamzip.cpp
        modified:   storage/connect/filamzip.h
        modified:   storage/connect/ha_connect.cc
        modified:   storage/connect/ha_connect.h
        modified:   storage/connect/jdbccat.h
        modified:   storage/connect/jdbconn.cpp
        modified:   storage/connect/jdbconn.h
        modified:   storage/connect/json.cpp
        modified:   storage/connect/json.h
        modified:   storage/connect/jsonudf.cpp
        modified:   storage/connect/jsonudf.h
        modified:   storage/connect/libdoc.cpp
        modified:   storage/connect/macutil.cpp
        modified:   storage/connect/myconn.cpp
        modified:   storage/connect/myutil.cpp
        modified:   storage/connect/myutil.h
        modified:   storage/connect/odbccat.h
        modified:   storage/connect/odbconn.cpp
        modified:   storage/connect/odbconn.h
        modified:   storage/connect/os.h
        modified:   storage/connect/plgdbsem.h
        modified:   storage/connect/plgdbutl.cpp
        modified:   storage/connect/plgxml.cpp
        modified:   storage/connect/plgxml.h
        modified:   storage/connect/plugutil.cpp
        modified:   storage/connect/preparse.h
        modified:   storage/connect/reldef.cpp
        modified:   storage/connect/reldef.h
        modified:   storage/connect/tabdos.cpp
        modified:   storage/connect/tabdos.h
        modified:   storage/connect/tabext.cpp
        modified:   storage/connect/tabext.h
        modified:   storage/connect/tabfix.cpp
        modified:   storage/connect/tabfix.h
        modified:   storage/connect/tabfmt.cpp
        modified:   storage/connect/tabfmt.h
        modified:   storage/connect/tabjdbc.cpp
        modified:   storage/connect/tabjdbc.h
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/tabjson.h
        modified:   storage/connect/table.cpp
        modified:   storage/connect/tabmac.cpp
        modified:   storage/connect/tabmul.cpp
        modified:   storage/connect/tabmul.h
        modified:   storage/connect/tabmysql.cpp
        modified:   storage/connect/tabmysql.h
        modified:   storage/connect/tabodbc.cpp
        modified:   storage/connect/tabodbc.h
        modified:   storage/connect/tabpivot.cpp
        modified:   storage/connect/tabpivot.h
        modified:   storage/connect/tabsys.cpp
        modified:   storage/connect/tabsys.h
        modified:   storage/connect/tabutil.cpp
        modified:   storage/connect/tabutil.h
        modified:   storage/connect/tabvir.cpp
        modified:   storage/connect/tabvir.h
        modified:   storage/connect/tabwmi.cpp
        modified:   storage/connect/tabwmi.h
        modified:   storage/connect/tabxml.cpp
        modified:   storage/connect/tabxml.h
        modified:   storage/connect/tabzip.cpp
        modified:   storage/connect/tabzip.h
        modified:   storage/connect/valblk.cpp
        modified:   storage/connect/valblk.h
        modified:   storage/connect/value.cpp
        modified:   storage/connect/value.h
        modified:   storage/connect/xindex.cpp
        modified:   storage/connect/xobject.cpp
        modified:   storage/connect/xobject.h
        modified:   storage/connect/xtable.h
      
      Fix MDEV-12603 Insert replaces values in ZIP file
        modified:   storage/connect/filamzip.cpp
        modified:   storage/connect/filamzip.h
      
      Fix MDEV-12686 Handle null in json
      Fix MDEV-12688 Insert does not handle type TINYINT
        modified:   storage/connect/json.cpp
        modified:   storage/connect/tabjson.cpp
      
      Fix MDEV-12653 Cannot add index for ZIP CONNECT table
        modified:   storage/connect/filamzip.cpp
        modified:   storage/connect/ha_connect.cc
        modified:   storage/connect/tabdos.cpp
        modified:   storage/connect/tabfmt.cpp
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/xindex.cpp
      1c88b9a8
  6. 09 May, 2017 1 commit
    • Igor Babaev's avatar
      Fixed the bugs mdev-12670 and mdev-12675. · 6b97fe06
      Igor Babaev authored
      The code that blocked conversion of a IN subselect pedicate to a semi-join
      if it occurred in the ON expression of an outer join did not do it correctly.
      As a result, the conversion was blocked for IN subselect predicates
      encountered in ON expressions of INNER joins or in WHERE conditions
      of mergeable views / derived tables. This patch fixes this problem.
      6b97fe06
  7. 08 May, 2017 1 commit
  8. 05 May, 2017 2 commits
    • Olivier Bertrand's avatar
      Fix MDEV-12603 Insert replaces values in ZIP file · 531698e0
      Olivier Bertrand authored
        modified:   storage/connect/filamzip.cpp
        modified:   storage/connect/filamzip.h
      
      Fix MDEV-12686 Handle null in json
      Fix MDEV-12688 Insert does not handle type TINYINT
        modified:   storage/connect/json.cpp
        modified:   storage/connect/tabjson.cpp
      531698e0
    • Monty's avatar
      MDEV-10104 Table lock race condition with replication · fc25437a
      Monty authored
      Problem was two race condtion in Aria page cache:
      - find_block() didn't inform free_block() that it had released requests
      - free_block() didn't handle pinned blocks, which could happen if
        free_block() was called as part of flush. This is fixed by not freeing
        blocks that are pinned.  This is safe as when maria_close() is called
        when last thread is using a table, there can be no pinned blocks. For
        other flush calls it's safe to ignore pinned blocks.
      fc25437a