1. 03 Nov, 2020 2 commits
    • Olivier Bertrand's avatar
      78ccc605
    • Olivier Bertrand's avatar
      - Implementation of the Json BJSON representation. · 28af4212
      Olivier Bertrand authored
        VAL structures replace VALUE classes in binary trees.
        These parsed binary trees are swapped and saved on file
        Swapping is to replace pointers by offsets to make it portable.
        In restoring, class pointers to functions are realloced on place.
        Making BJSON files is done by the new UDF function jfile_bjson.
        modified:   storage/connect/block.h
        modified:   storage/connect/filamtxt.cpp
        modified:   storage/connect/filamtxt.h
        modified:   storage/connect/global.h
        modified:   storage/connect/json.cpp
        modified:   storage/connect/json.h
        modified:   storage/connect/jsonudf.cpp
        modified:   storage/connect/jsonudf.h
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/tabjson.h
        modified:   storage/connect/value.h
      
      - Make file (record) length and map memory possibly larger than MAX_INT
        modified:   storage/connect/filamap.cpp
        modified:   storage/connect/filamvct.cpp
        modified:   storage/connect/maputil.cpp
        modified:   storage/connect/maputil.h
        modified:   storage/connect/tabdos.cpp
        modified:   storage/connect/xindex.cpp
      
      - Make column length as bytes (not characters)
        This when making column definitions
        modified:   storage/connect/ha_connect.cc
      
      - Change the message when making index fails
        modified:   storage/connect/ha_connect.cc
      
      - Update tests and results to reflect recent changes
        modified:   storage/connect/mysql-test/connect/r/alter_xml.result
        modified:   storage/connect/mysql-test/connect/r/alter_xml2.result
        modified:   storage/connect/mysql-test/connect/r/jdbc_oracle.result
        modified:   storage/connect/mysql-test/connect/r/json.result
        modified:   storage/connect/mysql-test/connect/r/json_java_2.result
        modified:   storage/connect/mysql-test/connect/r/json_java_3.result
        modified:   storage/connect/mysql-test/connect/r/json_mongo_c.result
        modified:   storage/connect/mysql-test/connect/r/mongo_c.result
        modified:   storage/connect/mysql-test/connect/r/mongo_java_2.result
        modified:   storage/connect/mysql-test/connect/r/mongo_java_3.result
        modified:   storage/connect/mysql-test/connect/r/odbc_oracle.result
        modified:   storage/connect/mysql-test/connect/r/xml.result
        modified:   storage/connect/mysql-test/connect/r/xml2.result
        modified:   storage/connect/mysql-test/connect/r/xml2_html.result
        modified:   storage/connect/mysql-test/connect/r/xml2_mult.result
        modified:   storage/connect/mysql-test/connect/r/xml2_zip.result
        modified:   storage/connect/mysql-test/connect/r/xml_html.result
        modified:   storage/connect/mysql-test/connect/r/xml_mult.result
        modified:   storage/connect/mysql-test/connect/r/xml_zip.result
        modified:   storage/connect/mysql-test/connect/t/alter_xml.test
        modified:   storage/connect/mysql-test/connect/t/alter_xml2.test
        modified:   storage/connect/mysql-test/connect/t/jdbc_oracle.test
        modified:   storage/connect/mysql-test/connect/t/json.test
        modified:   storage/connect/mysql-test/connect/t/mongo_test.inc
        modified:   storage/connect/mysql-test/connect/t/odbc_oracle.test
        modified:   storage/connect/mysql-test/connect/t/xml.test
        modified:   storage/connect/mysql-test/connect/t/xml2.test
        modified:   storage/connect/mysql-test/connect/t/xml2_html.test
        modified:   storage/connect/mysql-test/connect/t/xml2_mult.test
        modified:   storage/connect/mysql-test/connect/t/xml2_zip.test
        modified:   storage/connect/mysql-test/connect/t/xml_html.test
        modified:   storage/connect/mysql-test/connect/t/xml_mult.test
        modified:   storage/connect/mysql-test/connect/t/xml_zip.test
      
      - Typo
        modified:   storage/connect/value.cpp
      28af4212
  2. 18 Oct, 2020 1 commit
    • Olivier Bertrand's avatar
      - Inline MakePtr and MakeOff with OFFSET as size_t · dc3a693b
      Olivier Bertrand authored
        Also add a new member Saved_Size in the Global structure.
        modified:   storage/connect/global.h
        modified:   storage/connect/plugutil.cpp
        modified:   storage/connect/user_connect.cc
        modified:   storage/connect/jsonudf.cpp
      
      - Add session variables json_all_path and default_depth
        modified:   storage/connect/ha_connect.cc
        modified:   storage/connect/mongo.cpp
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/tabxml.cpp
      
      - ADD column options JPATH and XPATH
        Work as FIELD_FORMAT but are more readable
        modified:   storage/connect/ha_connect.cc
        modified:   storage/connect/ha_connect.h
        modified:   storage/connect/mysql-test/connect/r/json_java_2.result
        modified:   storage/connect/mysql-test/connect/r/json_java_3.result
        modified:   storage/connect/mysql-test/connect/r/json_mongo_c.result
      
      - Handle negative numbes in the option list
        modified:   storage/connect/ha_connect.cc
      
      - Fix Json parse that could crash the server.
        Was because it could use THROW out of the TRY block.
        Also handle all error by THROW.
        It is now done by a new class JSON.
        modified:   storage/connect/json.cpp
        modified:   storage/connect/json.h
      
      - Add a new UDF function jfile_translate.
        It translate a Json file to pretty = 0.
        Fast because it does not a real parse of the file.
        modified:   storage/connect/jsonudf.cpp
        modified:   storage/connect/jsonudf.h
      
      - Add a now options JSIZE and STRINGIFY to Json tables.
        STRINGIFY makes Objects or Arrays to be returned by their
        json representation instead of by their concatenated values.
        JSIZE allows to specify the LRECL (was 256) defaults to 1024.
        Also fix a bug about locating the sub-table by its path.
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/tabjson.h
      dc3a693b
  3. 06 Oct, 2020 1 commit
  4. 05 Oct, 2020 2 commits
    • Olivier Bertrand's avatar
      d4138e7e
    • Olivier Bertrand's avatar
      - Use BIN type when charset='binary' · 307258c8
      Olivier Bertrand authored
        modified:   storage/connect/ha_connect.cc
      
      - Allow JSON columns to be "binary"
        By setting their type as VARBINAY(132)
        and their name begin with Jbin_
        modified:   storage/connect/json.h
        modified:   storage/connect/jsonudf.cpp
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/value.cpp
        modified:   storage/connect/value.h
      
      - CHARSET BINARY cannot be used for text columns
        modified:   storage/connect/mysql-test/connect/r/updelx.result
        modified:   storage/connect/mysql-test/connect/t/updelx.test
      307258c8
  5. 03 Oct, 2020 1 commit
  6. 01 Oct, 2020 1 commit
    • Olivier Bertrand's avatar
      - Make possible to allocate work space larger than 4GB · 99ab562a
      Olivier Bertrand authored
        All variables handling sizes that were uint are now size_t.
        The variable connect_work_size is now ulong (was uint);
        Also make Json functiosn to allocate a larger memory (M=9 was 7)
        modified:   storage/connect/global.h
        modified:   storage/connect/ha_connect.cc
        modified:   storage/connect/json.cpp
        modified:   storage/connect/jsonudf.cpp
        modified:   storage/connect/plgdbutl.cpp
        modified:   storage/connect/plugutil.cpp
        modified:   storage/connect/user_connect.cc
      
      - Fix uninitialised variable (pretty) in Json_File.
        Make Jbin_file accept the same arguments as Json_File ones.
        modified:   storage/connect/jsonudf.cpp
      
      - Change the Level option to Depth (the word currently used)
        (Level being still accepted)
        modified:   storage/connect/mongo.cpp
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/tabxml.cpp
      
      - Suppress 2nd argument default value for MYSQLtoPLG function
        modified:   storage/connect/myutil.h
      
      - Allow REST tables to be create not specifying a file_name
        modified:   storage/connect/tabrest.cpp
      99ab562a
  7. 13 Jul, 2020 2 commits
    • Olivier Bertrand's avatar
      ad0d2424
    • Olivier Bertrand's avatar
      - Fix MDEV-22561 Unable to access DBF inside a ZIP archive · 1e07df99
      Olivier Bertrand authored
        modified:   storage/connect/filamdbf.cpp
        modified:   storage/connect/filamdbf.h
        modified:   storage/connect/filamzip.cpp
        modified:   storage/connect/filamzip.h
        modified:   storage/connect/ha_connect.cc
        modified:   storage/connect/plgxml.cpp
        modified:   storage/connect/tabdos.cpp
        modified:   storage/connect/tabdos.h
        modified:   storage/connect/tabfix.h
      
      - Add/Init Level class member
        modified:   storage/connect/mongo.cpp
        modified:   storage/connect/mongo.h
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/tabjson.h
      
      - Typo
        modified:   storage/connect/connect.cc
      1e07df99
  8. 18 May, 2020 1 commit
  9. 11 Mar, 2020 1 commit
  10. 12 Jan, 2020 1 commit
    • Olivier Bertrand's avatar
      - Fix MDEV-21450 · 8ff3eb41
      Olivier Bertrand authored
        Failed compile when XML table type is not supported.
        Was because XMLDEF was unconditionally called from REST table.
        modified:   storage/connect/tabrest.cpp
      
      - Make cmake less verbose
        modified:   storage/connect/CMakeLists.txt
      
      - Hide Switch_to_definer_security_ctx not defined for 10.1 and 10.0
        modified:   storage/connect/ha_connect.cc
      8ff3eb41
  11. 10 Dec, 2019 1 commit
  12. 04 Dec, 2019 1 commit
  13. 03 Dec, 2019 2 commits
  14. 01 Dec, 2019 1 commit
  15. 30 Nov, 2019 2 commits
  16. 26 Nov, 2019 1 commit
    • Olivier Bertrand's avatar
      - Fix MDEV-13782 · f0da39be
      Olivier Bertrand authored
        Problem with NOT LIKE queries.
        modified:   storage/connect/ha_connect.cc
        modified:   sql/item_cmpfunc.h
      
      - Fix MDEV-21084
        Misusage of strncat could cause buffer overflow.
        modified:   storage/connect/reldef.cpp
        modified:   storage/connect/tabcmg.cpp
        modified:   storage/connect/tabjson.cpp
        modified:   storage/connect/tabrest.cpp
        modified:   storage/connect/tabxml.cpp
      f0da39be
  17. 24 Nov, 2019 1 commit
    • Olivier Bertrand's avatar
      These changed were made after pulling 10.2.30 from origin · fb91774e
      Olivier Bertrand authored
      ---------------------------------------------------------
      - Temporarily fix MDEV-13782 by commenting out LIKE_FUNC in CondFilter
        modified:   storage/connect/ha_connect.cc
      
      - Remove use of hack tables
        modified:   storage/connect/connect.cc
        modified:   storage/connect/connect.h
        modified:   storage/connect/ha_connect.cc
        modified:   storage/connect/xtable.h
      fb91774e
  18. 21 Nov, 2019 4 commits
  19. 19 Nov, 2019 1 commit
    • Vlad Lesin's avatar
      MDEV-21082: isnan/isinf compilation errors, isfinite warnings on MacOS · 6718d3bc
      Vlad Lesin authored
      The fix consists of three commits backported from 10.3:
      
      1) Cleanup isnan() portability checks
      
      (cherry picked from commit 7ffd7fe9)
      
      2) Cleanup isinf() portability checks
      
      Original problem reported by Wlad: re-compilation of 10.3 on top of 10.2
      build would cache undefined HAVE_ISINF from 10.2, whereas it is expected
      to be 1 in 10.3.
      
      std::isinf() seem to be available on all supported platforms.
      (cherry picked from commit bc469a0b)
      
      3) Use std::isfinite in C++ code
      
      This is addition to parent revision fixing build failures.
      
      (cherry picked from commit 54999f4e)
      6718d3bc
  20. 18 Nov, 2019 1 commit
    • Marko Mäkelä's avatar
      MDEV-21069 Crash on DROP TABLE if the data file is corrupted · b80df9eb
      Marko Mäkelä authored
      buf_read_ibuf_merge_pages(): Discard any page numbers that are
      outside the current bounds of the tablespace, by invoking the
      function ibuf_delete_recs() that was introduced in MDEV-20934.
      This could avoid an infinite change buffer merge loop on
      innodb_fast_shutdown=0, because normally the change buffer merge
      would only be attempted if a page was successfully loaded into
      the buffer pool.
      
      dict_drop_index_tree(): Add the parameter trx_t*.
      To prevent the DROP TABLE crash, do not invoke btr_free_if_exists()
      if the entire .ibd file will be dropped. Thus, we will avoid a crash
      if the BTR_SEG_LEAF or BTR_SEG_TOP of the index is corrupted,
      and we will also avoid unnecessarily accessing the to-be-dropped
      tablespace via the buffer pool.
      
      In MariaDB 10.2, we disable the DROP TABLE fix if innodb_safe_truncate=0,
      because the backup-unsafe MySQL 5.7 WL#6501 form of TRUNCATE TABLE
      requires that the individual pages be freed inside the tablespace.
      b80df9eb
  21. 16 Nov, 2019 2 commits
    • Olivier Bertrand's avatar
    • Olivier Bertrand's avatar
      ===================================================================== · 2cb4b152
      Olivier Bertrand authored
      This new CONNECT version 1.07 fully implements NOSQL support.
      It allows working on JSON or XML data retrieved as REST query results
      from all binary distributions of MariaDB when cpprestsdk is installed
      and the GetRest library is available.
      =====================================================================
      - Make Rest available for MariaDB binary distributed versions.
        Change RestGet function so it can be called from a library.
        modified:   storage/connect/CMakeLists.txt
        modified:   storage/connect/restget.cpp
        modified:   storage/connect/tabrest.cpp
      
      - Make column FLAG option available to discovery functions.
        modified:   storage/connect/ha_connect.cc
        modified:   storage/connect/plgdbsem.h
      
      - Update CONNECT version number and date.
        modified:   storage/connect/ha_connect.cc
      
      - Move OEMColumns function from mycat.cc to reldef.cpp.
        modified:   storage/connect/mycat.cc
        modified:   storage/connect/reldef.cpp
      
      - Allocate tables as TABREF (was RELDEF)
        modified:   storage/connect/mycat.cc
        modified:   storage/connect/mycat.h
      
      - Fix MDEV-20845 by commenting out TIMEOUT setting.
        modified:   storage/connect/myconn.cpp
      
      - Call DefineAM before calling GetColCatInfo. Column offset
        is now based on record format instead of table type.
        The RECFM_VCT format was added.
        This enables tables to specify the record format and is
        useful in particular for OEM tables.
        modified:   storage/connect/plgdbsem.h
        modified:   storage/connect/reldef.cpp
        modified:   storage/connect/reldef.h
        modified:   storage/connect/tabdos.cpp
        modified:   storage/connect/tabdos.h
        modified:   storage/connect/tabfix.cpp
        modified:   storage/connect/tabfmt.cpp
        modified:   storage/connect/tabmysql.cpp
        modified:   storage/connect/tabutil.cpp
        modified:   storage/connect/tabutil.h
        modified:   storage/connect/tabvct.cpp
        modified:   storage/connect/xindex.cpp
      2cb4b152
  22. 15 Nov, 2019 1 commit
  23. 13 Nov, 2019 3 commits
    • Eugene Kosov's avatar
      MDEV-20949 Stop issuing 'row size' error on DML · 98694ab0
      Eugene Kosov authored
      Move row size check to early CREATE/ALTER TABLE phase. Stop checking
      on table open.
      
      dict_index_add_to_cache(): remove parameter 'strict', stop checking row size
      
      dict_index_t::record_size_info_t: this is a result of row size check operation
      
      create_table_info_t::row_size_is_acceptable(): performs row size check.
      Issues error or warning. Writes first overflow field to InnoDB log.
      
      create_table_info_t::create_table(): add row size check
      
      dict_index_t::record_size_info(): this is a refactored version
      of dict_index_t::rec_potentially_too_big(). New version doesn't change global
      state of a program but return all interesting info. And it's callers who
      decide how to handle row size overflow.
      
      dict_index_t::rec_potentially_too_big(): removed
      98694ab0
    • Marko Mäkelä's avatar
      Clean up mtr_t::commit() further · 3b573c07
      Marko Mäkelä authored
      memo_block_unfix(), memo_latch_release(): Merge to ReleaseLatches.
      
      memo_slot_release(), ReleaseAll: Clean up the formatting.
      3b573c07
    • Marko Mäkelä's avatar
      MDEV-20934: Correct a debug assertion · abd45cdc
      Marko Mäkelä authored
      A search with PAGE_CUR_GE may land on the supremum record on
      a leaf page that is not the rightmost leaf page.
      This could occur when all keys on the current page are
      smaller than the search key, and the smallest key on the
      successor page is larger than the search key.
      
      ibuf_delete_recs(): Correct the debug assertion accordingly.
      abd45cdc
  24. 12 Nov, 2019 5 commits
    • Yasuhiro Horimoto's avatar
      Fix a typo in mariadb-plugin-mroonga.prerm · f127fb98
      Yasuhiro Horimoto authored
      Closes #1407
      f127fb98
    • Marko Mäkelä's avatar
      MDEV-12353 preparation: Clean up mtr_t · 2570cb8b
      Marko Mäkelä authored
      mtr_t::Impl, mtr_t::Command: Merge to mtr_t.
      
      MTR_MAGIC_N: Remove.
      
      MTR_STATE_COMMITTING: Remove. This state was only being set
      internally during mtr_t::commit().
      
      mtr_t::Command::m_locks_released: Remove (set-and-never-read member).
      
      mtr_t::Command::m_start_lsn: Replaced with the return value of
      finish_write() and a parameter to release_blocks().
      
      mtr_t::Command::m_end_lsn: Removed as a duplicate of mtr_t::m_commit_lsn.
      
      mtr_t::Command::prepare_write(): Replace a switch () with a
      comparison against 0. Only 2 m_log_mode are allowed.
      2570cb8b
    • Marko Mäkelä's avatar
      MDEV-14602: Cleanup recv_dblwr_t::find_page() · dc8380b6
      Marko Mäkelä authored
      Avoid creating std::vector, and use single instead of double traversal.
      dc8380b6
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · 2350066e
      Marko Mäkelä authored
      2350066e
    • Sujatha's avatar
      MDEV-20953: binlog_encryption.rpl_corruption failed in buildbot due to wrong error code · 7df07c76
      Sujatha authored
      Problem:
      ========
      CURRENT_TEST: binlog_encryption.rpl_corruption
      
      mysqltest: In included file "./include/wait_for_slave_io_error.inc":
      ...
      At line 72: Slave stopped with wrong error code
      **** Slave stopped with wrong error code: 1743 (expected 1595,1913) ****
      
      Analysis:
      ========
      The test emulates the corruption at the various stages of replication for
      example in binlog file, in network and in relay log etc. It verifies that all
      corruption cases are handled through appropriate error messages.
      
      The test cases which emulate network failure expect following errors.
      --ER_SLAVE_RELAY_LOG_WRITE_FAILURE (1595)
      --ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE (1743)
      
      Ideally test should expect error codes as 1595 and 1743.
      But the test actually waits on incorrect error code 1595,1913
      
      Fix:
      ===
      Added appropriate error code for 'ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE'.
      Replaced 1913 with 1743.
      7df07c76
  25. 11 Nov, 2019 1 commit