1. 17 May, 2017 5 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 4 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
    • Monty's avatar
      Fixed some bugs in fork_big.pl which caused some tests to die early · e3521ab9
      Monty authored
      - Changed to 'strict'
      - Fixed scope of variables
      - Made timing smaller for of repair, check, flush and alter to get them to
        trigger earlier
      e3521ab9
    • Marko Mäkelä's avatar
      MDEV-12635 innodb.log_file_size fails when run with Valgrind · bc5c1d99
      Marko Mäkelä authored
      In MariaDB Server before 10.2, InnoDB will not be shut down properly
      if startup fails. So, Valgrind failures are to be expected.
      Disable the test under Valgrind. In 10.2, it should pass with Valgrind.
      bc5c1d99