Commit graph

32,407 commits

Author SHA1 Message Date
Alexander Barkov
1bcd2bebc6 MDEV-4425 Regexp enhancements
Do not pass PCRE_UCP flag for binary data.
This makes bytes 0x80..FF not to belong to 
generic character classes \d (digit) and \w (word character).

SELECT 0xFF RLIKE '\\w';
 -> 0

Note, this change does not affect non-binary data,
which is still examined with the PCRE_UCP flag by default.
2013-10-08 18:25:17 +04:00
Alexander Barkov
c8e6cb9643 MDEV-4425 Regexp enhancements
Clean-up: moving initialization of my_string_stack_guard
and pcre_stack_guard into init_libstrings() and init_pcre().
2013-10-03 16:42:20 +04:00
Alexander Barkov
f71e253914 MDEV-4425
Adding ${CMAKE_BINARY_DIR}/pcre into search path for *.h files.
Needed for find pcre.h (which is generated from pcre.h.in) when
build directory != source directory.
2013-10-02 13:56:57 +04:00
Alexander Barkov
fcf992ba4c MDEV-4425 REGEXP enhancements
Adding pcre_stack_guard to avoid crashes in pcre_compile()
on a long recursive patterns with parenthesizes:

SELECT a RLIKE '((((...((((x)))...))))';
2013-10-02 11:58:29 +04:00
Alexander Barkov
59311f3ead Make PCRE use my_malloc() and my_free().
This patch also makes libstrings use my_malloc() and my_free()
in embedded server. Previously, embeddes server used malloc()
and free() in libstrings.
2013-10-01 16:39:29 +04:00
Alexander Barkov
4e433d73af MDEV-4425: Removing the remainders from the old regex library. 2013-09-30 18:48:24 +04:00
Alexander Barkov
038554ec96 Always include the local copy of pcre.h and pcreposix.h instead of the
system installed (if any).
2013-09-30 13:51:05 +04:00
Alexander Barkov
7fe391adbf Fixing compilation failure on Windows.
"PCRE_STATIC" must be defined before including pcre.h
to avoid linking errors:
- unresolved external symbol __imp_regerror
- unresolved external symbol __imp_pcre_exec
2013-09-27 16:29:05 +04:00
Alexander Barkov
285e7aa179 MDEV-4425 REGEXP enhancements 2013-09-26 18:02:17 +04:00
unknown
9d83468e78 merge 5.5 -> 10.0-base 2013-09-25 21:07:06 +03:00
unknown
64d6d8334f merge 5.3 -> 5.5 2013-09-25 17:16:13 +03:00
unknown
ec7da1561e MDEV-5039: incorrect Item_func_regex::update_used_tables()
Other fix of maybe_null problem and revert of revno: 3608 "MDEV-3873 & MDEV-3876 & MDEV-3912 : Wrong result (extra rows) with ALL subquery from a MERGE view."
2013-09-25 15:30:13 +03:00
Vladislav Vaintroub
11fc6b49d9 MDEV-5053 - fix cyclic dependency when building with Ninja CMake generator 2013-09-23 23:33:18 +02:00
Sergei Golubchik
2fe0836eed 5.5.33a merge 2013-09-20 11:29:01 +02:00
Sergei Golubchik
275101c624 merge 2013-09-18 20:14:21 +02:00
Sergei Golubchik
f89e6c442c MDEV-5029 Crash in MariaDB 5.5.33 with .frm from older MariaDB release
Don't fail when an frm is inconsistent (legacy DB_TYPE_xxx code doesn't match the
engine name), use the engine name, ignore the legacy code.
2013-09-18 17:25:10 +02:00
Sergei Golubchik
4ec2e9d7ed 5.5 merge and fixes for compiler/test errors 2013-09-18 13:07:31 +02:00
Sergei Golubchik
a5d7e70119 MDEV-5029 Crash in MariaDB 5.5.33 with .frm from older MariaDB release
don't set TABLE_SHARE::keys before TABLE_SHARE::key_info is set,
otherwise an error might leave only the first property set and it will
confuse TABLE_SHARE::destroy()
2013-09-18 09:09:27 +02:00
Sergey Petrunya
e2d1aaec82 Merge fix for MDEV-5037 into 5.5 2013-09-23 10:33:14 +04:00
Sergey Petrunya
422c55a240 MDEV-5037: Server crash on a JOIN on a derived table with join_cache_level > 2
- The crash was caused because the optimizer called handler->multi_range_read_info()
  on a derived temporary table.  That table has been created, but not opened yet.
  Because of that, handler::table was NULL, which caused crash.
  Fixed by changing DS-MRR methods to use handler::table_share instead. 
  handler::table_share is set in handler ctor, so this should be safe.
2013-09-20 14:47:38 +04:00
Sergey Vojtovich
d4f83cc40c MDEV-4911 - add KILL query id, and add query id information to processlist
- issue proper error message if query id is not found
- do not allow kill query id 0
- fixed ps-protocol and embedded tests
2013-09-16 18:14:46 +04:00
Alexander Barkov
2624022b53 Merge from 5.3
pending merges:
  Alexander Barkov 2013-09-16 MDEV-4843 Wrong data type for TIMESTAMP('200...
2013-09-16 10:51:03 +04:00
Alexander Barkov
5d7b97b89e MDEV-4843 Wrong data type for TIMESTAMP('2001-01-01','10:10:10') 2013-09-16 10:14:41 +04:00
Igor Babaev
b8af3bd4d6 Merge 5.3->5.5 2013-09-15 17:30:53 -07:00
Igor Babaev
996f6194c6 Fixed bug mdev-5015.
The patch for mdev-4355 had a defect: the cached values for bitmaps of
used tables were not updated when processing degenerate OR formulas.
2013-09-15 12:38:22 -07:00
Sergei Golubchik
e7c4e6d870 MDEV-5012 Server crashes in Item_ref::real_item on EXPLAIN with select subqueries or views, constant table, derived_merge+derived_with_keys
revert incorrect change, merged from mysql-5.5
2013-09-13 23:42:00 +02:00
Sergey Vojtovich
1a2a9d74fe MDEV-4911 - add KILL query id, and add query id information to processlist
It is now possible to kill query by query id. KILL syntax was extended to:
KILL [HARD | SOFT] [CONNECTION | QUERY [ID query_id]] [thread_id | USER user_name]

Added QUERY_ID column to INFORMATION_SCHEMA.PROCESSLIST.

Fixed tests affected by this change:
- added PROCESSLIST.QUERY_ID column
- ID is now keyword and is quoted in SHOW CREATE TABLE output
- PFS statement digest is calculated basing on token id
  (not token text). Token id has shifted for keywords residing
  after ID in keywords array.
2013-09-13 20:14:56 +04:00
Alexander Barkov
cf9cc19e91 MDEV-4724 Some temporal functions do not preserve microseconds 2013-09-13 14:43:10 +04:00
unknown
60ea100b03 merge 5.3->5.5 2013-09-13 13:19:29 +03:00
Alexander Barkov
51dcf4dcff Merge from 5.3.
pending merges:
  Alexander Barkov 2013-09-12 MDEV-4724 Some temporal functions do not pre...
2013-09-13 12:06:17 +04:00
unknown
7a80c534ad MDEV-4645: Incorrect reads of frozen binlog events; FDE corrupted in relay log
Currently several places use description_event->common_header_len instead of
  LOG_EVENT_MINIMAL_HEADER_LEN when parsing events with "frozen" headers (such
  as Start_event_v3 and its subclasses such as Format_description_log_event, as
  well as Rotate_event). This causes events with extra headers (which would otherwise
  be valid and those headers ignored) to be corrupted due to over-reading or skipping
  into the data portion of the log events.
  
  It is rewritten in some details patch of Jeremy Cole (See MDEV):
  - The virtual function returns length to avoid IFs (and only one call of the virtual function made)
  - Printing function avoids printing strings
2013-09-12 21:36:58 +03:00
Alexander Barkov
499ddea576 MDEV-4724 Some temporal functions do not preserve microseconds 2013-09-12 21:31:14 +04:00
unknown
1a01e3b959 MDEV-5005: Subquery in Procedure somehow affecting temporary table
Removed unneeded set of TABLE_LIST::skip_temporary flag.
2013-09-12 17:05:29 +03:00
Sergey Petrunya
33f807fd91 Merge 5.3 -> 5.5 2013-09-12 13:54:46 +04:00
Sergey Petrunya
7e4845beea MDEV-5011: ERROR Plugin 'MEMORY' has ref_count=1 after shutdown for SJM queries
- Provide a special execution path for cleanup of degenerate 
  non-merged semi-join children of degenerate selects.
2013-09-12 13:53:13 +04:00
Sergei Golubchik
62643f81e6 merge with 5.5-tokudb tree. In particular:
* add TokuDB, together with the ft-index library
* cmake support, auto-detecting whether tokudb can be built
* fix packaging - tokudb-engine.rpm, deb
* remove PBXT
* add jemalloc
* the server is built with jemalloc by default even if TokuDB is not built
* documentation files in RPM are installed in the correct location
* support for optional deb packages (tokudb has specific build requirements)
* move plugins from mariadb-server deb to appropriate debs (server/test/libmariadbclient)
* correct mariadb-test.deb to be not architecture-independent
* fix out-of-tree builds to never modify in-tree files
* new handler::prepare_index_scan() method
2013-09-10 23:02:25 +02:00
Alexander Barkov
8b5da9f73b Merge from 5.3
pending merges:
  Alexander Barkov 2013-09-09 MDEV-4863 COALESCE(time_or_datetime) returns...
2013-09-10 10:08:11 +04:00
Sergei Golubchik
9c98876ca1 tokudb patches for prepare range scan 2013-09-09 14:00:18 +02:00
Sergei Golubchik
00686e6d0e cmake fixes for tokudb
cmake/jemalloc.cmake:
  for dependencies to work, LIBJEMALLOC should be the target name, not the path
storage/tokudb/CMakeLists.txt:
  * check the preconditions
  * disable bdb tests (compilation errors)
  * set variable, instead of SET_PROPERTY. same effect,
    but doesn't fail when a plugin is disabled (that is, a target does not exist)
storage/tokudb/ft-index/CMakeLists.txt:
  cmake should not look into examples/ directory,
  there is hand-crafted examples/Makefile that
  cmake will overwrite
storage/tokudb/ft-index/buildheader/CMakeLists.txt:
  the syntax is ADD_EXECUTABLE(target source) and "source" is the file name
storage/tokudb/ft-index/cmake_modules/TokuMergeLibs.cmake:
  Libraries must be specified in the specific order,
  REMOVE_DUPLICATES cannot be used, because it destroys this order.
  
  (when OSLIBS contains "-lpthread -ljemalloc -lpthread", REMOVE_DUPLICATES
  makes it "-lpthread -ljemalloc". But a thread library *must* be *after* jemalloc)
storage/tokudb/ft-index/cmake_modules/TokuSetupCTest.cmake:
  * 'which' might print errors to stderr, they are not important, shut them up
  * we don't have TOKUDB_DATA, no need to warn about it
  * don't configure_file into itself (with input=output)
storage/tokudb/ft-index/cmake_modules/TokuThirdParty.cmake:
  jemalloc is built externally to tokudb/ft-index
storage/tokudb/ft-index/ft/CMakeLists.txt:
  the syntax is ADD_EXECUTABLE(target source) and "source" is the file name
storage/tokudb/ft-index/ft/tests/CMakeLists.txt:
  the syntax is ADD_EXECUTABLE(target source) and "source" is the file name
storage/tokudb/ft-index/locktree/tests/CMakeLists.txt:
  the syntax is ADD_EXECUTABLE(target source) and "source" is the file name
storage/tokudb/ft-index/portability/CMakeLists.txt:
  s/jemalloc/libjemalloc/
storage/tokudb/ft-index/portability/os_malloc.cc:
  unnecessary include file
storage/tokudb/ft-index/portability/tests/CMakeLists.txt:
  the syntax is ADD_EXECUTABLE(target source) and "source" is the file name
storage/tokudb/ft-index/src/tests/CMakeLists.txt:
  the syntax is ADD_EXECUTABLE(target source) and "source" is the file name
storage/tokudb/ft-index/util/tests/CMakeLists.txt:
  the syntax is ADD_EXECUTABLE(target source) and "source" is the file name
storage/tokudb/ft-index/utils/CMakeLists.txt:
  the syntax is ADD_EXECUTABLE(target source) and "source" is the file name
2013-09-09 13:57:22 +02:00
Alexey Botchkov
92265da9d7 MDEV-4472 Audit-plugin. Server-related part of the task.
file_logger became the service.
     Data like query_id now are sent to the audit plugin.
     Fix for MDEV-4770 ported from 10.0.
     Fix added for the read_maria_plugin_info().
     Log rotation can be disabled with 'set rotations=0'.
2013-09-09 16:56:35 +05:00
Sergei Golubchik
5bc410e022 workaround for partitioning bug MDEV-4466 (fixed in 10.0) 2013-09-09 13:34:17 +02:00
Alexander Barkov
c2b38529a9 MDEV-4863 COALESCE(time_or_datetime) returns wrong results in numeric context 2013-09-09 15:32:25 +04:00
Sergei Golubchik
b838d081ad mysql-5.5.33 merge 2013-09-06 22:31:30 +02:00
Igor Babaev
824db55ce5 Merge 5.3->5.5 2013-09-06 10:34:38 -07:00
Igor Babaev
02338228dd Fixed bug mdev-4996.
The fix for bug mdev-4971 not always correctly set the pointers to
inherited multiple equalities in objects of the Item_equal class.
2013-09-06 09:55:32 -07:00
Sergey Vojtovich
bbc9e57981 MDEV-4978 - Server cursor is broken with blobs in the select list,
ORDER BY does not work

Use "dynamic" row format (instead of "block") for MARIA internal
temporary tables created for cursors.

With "block" row format MARIA may shuffle rows, with "dynamic" row
format records are inserted sequentially (there are no gaps in data
file while we fill temporary tables).

This is needed to preserve row order when scanning materialized cursors.
2013-09-06 15:59:19 +04:00
unknown
ada15c7a0f Fix various places where code would work incorrectly if the common_header_len of events is different on master and slave
Patch developed with the help of Pavel Ivanov.

Also fix an uninitialised variable in queue_event().
2013-09-04 12:22:09 +02:00
Sergey Petrunya
92003f0166 MDEV-4836: Merge into 5.5-main 2013-09-03 18:41:07 +04:00
Igor Babaev
de1c060ecf Merge 2013-08-31 09:33:09 -07:00
Igor Babaev
880e166483 Merge 5.3->5.5 2013-08-31 08:18:25 -07:00