Commit graph

85577 commits

Author SHA1 Message Date
Alexander Barkov
032dc20541 MDEV-4425 Regexp enhancements
Mark a few PCRE CMake variables as advanced,
so the are not presented in cmake-gui by default.
2013-10-11 08:52:24 +04:00
Igor Babaev
7c87385e30 Fixed bug mdev-5105.
The bug caused a memory overwrite in the function update_ref_and_keys()
It happened due to a wrong value of SELECT_LEX::cond_count. This value
historically was calculated by the fix_fields method. Now the logic of
calling this method became too complicated and, as a result, this value
is calculated not always correctly.
The patch changes the way how and when  the values of SELECT_LEX::cond_count
and of SELECT_LEX::between_count are calculated. The new code does it just at
the beginning of update_ref_and_keys().
2013-10-10 10:08:26 -07:00
Sergey Petrunya
094f70fd19 MDEV-5106: Server crashes in Explain_union::print_explain on ER_TOO_BIG_SELECT
- Don't save UNION's EXPLAIN data if optimization failed with 
  an error. We could end up saving incomplete plan, which will 
  cause a crash when we attempt to print it.
2013-10-10 20:30:32 +04:00
Alexey Botchkov
508d40fbdb MDEV-4788 check mysql-5.5 changes in spatial.cc.
Additional patch for the 5.5.
2013-10-10 14:20:35 +05:00
Sergey Petrunya
582ecb2a25 MDEV-3798: EXPLAIN UPDATE/DELETE:
Backport mysql-test/t/myisam_explain_non_select_all.test from mysql-5.6
- the .result file was modified because MariaDB choses different 
  query plans in a number cases. Also, we don't have some of the 
  "incorrect EXPLAIN output" bugs that they still have.

The .test file and includes were taken verbatim with one 
exception: two tests were disabled with --disable parsing:

1. @@sql_safe_updates is not enforced EXPLAINs of multitable 
   updates. In MariaDB, the execution itself will produce 
   ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE, but EXPLAIN won't.
2. Their case #71 hits some old bug in MyISAM (See their comments
   in explain_non_select.inc for details).
2013-10-09 17:20:42 +04:00
Sergey Petrunya
7e919c52a5 MDEV-3798: EXPLAIN UPDATE/DELETE
- Produce correct `key_len` when type=index.
2013-10-09 17:15:34 +04:00
Alexey Botchkov
ae82601035 MDEV-3856 Import of a large polygon fails/hangs.
The Gis_point::init_from_wkt called the String::realloc(),
        and this call is quite slow in the DEBUG mode. Which makes
        loading the huge polygon hang forever.
        Fixed by using the String::realloc(size, inc_size) version instead
        as it's done for other spatial features.
2013-10-09 17:30:50 +05:00
Sergey Petrunya
3c6ac6694d MDEV-3798: EXPLAIN UPDATE/DELETE
- Produce correct #rows for ORDER BY ... LIMIT N queries that take advantage of 
  ordered index read to read only N rows.
2013-10-09 13:07:46 +04:00
Sergey Petrunya
161d687594 MDEV-3798: EXPLAIN UPDATE/DELETE
- Generate correct contents of `Extra` column for UPDATEs/DELETEs that use quick selects
- UPDATEs with used_key_is_modified=true will show "Using buffer"
2013-10-09 09:40:33 +04:00
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
Sergey Petrunya
69e6a2bb22 MDEV-3798: EXPLAIN UPDATE/DELETE
- Update test results after last few csets
- Generate correct value for `possible_keys` column for single table UPDATE/DELETE.
2013-10-08 16:13:49 +04:00
Sergey Petrunya
fda46df620 MDEV-3798: EXPLAIN UPDATE/DELETE
- if EXPLAIN DELETE prints "Deleting all rows", it should show the 
  expected number of rows in the rows column.
2013-10-08 14:26:14 +04:00
Sergey Petrunya
98a8642fe8 MDEV-3798: EXPLAIN UPDATE/DELETE
- Add support for EXPLAIN INSERT.
2013-10-07 17:29:51 +04:00
Sergey Petrunya
69393db3d1 MDEV-3798: EXPLAIN UPDATE/DELETE
- Better EXPLAIN-saving methods for quick selects
2013-10-07 13:58:47 +04:00
Sergey Petrunya
8346a498ea MDEV-3798: EXPLAIN UPDATE/DELETE
- Run probes like MYSQL_INSERT_SELECT_START or 
  MYSQL_MULTI_DELETE_START for EXPLAIN, too.
  We should run them, because 1. EXPLAIN SELECT does it, and 
  2. MySQL also does it.
2013-10-07 13:20:22 +04:00
Sergey Petrunya
062b7bfa39 Better comments 2013-10-05 13:48:45 +04:00
Sergey Petrunya
abcf14e595 MDEV-3798: EXPLAIN UPDATE/DELETE
- Handle the case when EXPLAIN UPDATE/DELETE has pruned away all partitions.
2013-10-05 13:44:01 +04:00
Sergey Petrunya
72bc6d7364 MDEV-3798: EXPLAIN UPDATE/DELETE
- Address review feedback: more renames
2013-10-05 13:19:45 +04:00
Sergey Petrunya
6a7f8af3f9 MDEV-3798: EXPLAIN UPDATE/DELETE
- Address review feedback: rename files
2013-10-05 10:25:59 +04:00
Sergey Petrunya
fedf769f0b MDEV-3798: EXPLAIN UPDATE/DELETE
- Address review feedback: rename nearly any name used by the new EXPLAIN code.
2013-10-05 09:58:22 +04:00
Igor Babaev
ec226e553a Fixed bug mdev-5078.
For aggregated fields from views/derived tables the possible adjustment
of thd->lex->in_sum_func->max_arg_level in the function Item_field::fix_fields
must be done before we leave the function.
2013-10-04 09:51:07 -07:00
Sergey Petrunya
f5fba6564b MDEV-411: (different results for EXPLAIN and SHOW EXPLAIN)
- Added a testcase
2013-10-04 19:09:39 +04:00
Sergey Petrunya
5e4044e92c MDEV-5093, MDEV-5094:
- Make EXPLAIN {PARTITIONS,EXTENDED} {UPDATE,DELETE} work.
2013-10-04 18:50:47 +04:00
Alexander Barkov
43c09c15ff MDEV-4425 Regexp enhancements
Fixing compilation failure on Solaris.
The int64_t type was not defined because stdint.h was not included
due to a missing definition in pcre/config-cmake.h.in.
2013-10-04 09:57:30 +04:00
unknown
2f4db5348a MDEV-4981: Account for queries handled by query-cache in USER_STATISTICS (and in HOST_STATISTICS)
Added collection statistics for queries resolved via query cache.
2013-10-04 08:33:09 +03: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
30ad3354b9 MDEV-4425 Regexp enhancements
Adding tests with 0x00 characters from

Bug#70470 REGEXP fails to find matches after NUL character
2013-10-03 14:28:57 +04:00
Alexander Barkov
01f833569b MDEV-4425 Regexp enhancements
Adding more tests for case sensitivity,
with various collation and (?i) flags combinations.
2013-10-03 14:24:16 +04:00
Alexander Barkov
f37e0a885a MDEV-4425 Regexp enhancements
PCRE unit tests failed on Ubuntu Precise, because "source" 
is not a known command in "dash" (the default shell in Precise).

Changing "source" to ".", which should be understood in all shells.
2013-10-03 10:58:41 +04:00
Igor Babaev
00816a964f Fixed bug mdev-5028.
Apparently in a general case a short-cut for the distinct optimization
is invalid if join buffers are used to join tables after the tables whose
values are to selected.
2013-10-02 17:59:56 -07:00
Alexander Barkov
1a3bb9487d A follow-up for the previous commit:
MDEV-4425 Regexp enhancements
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 15:41:15 +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
d83648f25a MDEV-4425 Regexp enhancements
Removing pcre.h from the tree, it's generated from pcre.h.in
2013-10-02 10:07:24 +04:00
Alexander Barkov
bf41088491 MDEV-4424 Regexp enhancements
- Commenting out unused instructions in pcre/CMakeLists.txt
- Don't print PCRE configuration status by default.
2013-10-02 09:55:57 +04:00
Sergey Petrunya
6519ca51dd EXPLAIN UPDATE/DELETE
- Make EXPLAIN UPDATE/DELETE work inside SPs
- Return correct error code from mysql_delete()
- EXPLAIN <multi-DELETE> will create a multi_delete object (as it 
  affects the optimization). select_result will be only used for 
  producing EXPLAIN output.
2013-10-01 17:49:03 +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
ccb1344fe9 pcre: removing CMake-2.8 requirement.
It seems to compile/work fine with CMake-2.6.
2013-10-01 12:26:34 +04:00
Alexander Barkov
458b4da7f3 MDEV-4425: moving the bundled pcre include directory earlier,
to avoid system *.h files to be included (e.g. like on labrador).
2013-10-01 11:43:39 +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
6226043425 pcre: fixing a test failure in character_sets_dir_basic in this command:
--replace_regex /.prefix.sql.share.charsets[/\]/MYSQL_CHARSETSDIR/
select @@global.character_sets_dir;

The intention of the '[/\]' part was to replace both slash
'/' and backslash '\\', so it does not depend on the OS.

The pattern '[/\]' was actually wrong, because ']' is escaped
and should be considered as a part of the class, instead of
being a closing bracket for the class. However, due to some bug
in the old REGEX library it worked fine.

After switching to PCRE, mysqltest correctly complains about unbalaced '[]'.
The expected correct pattern should be '[/\\]'.
However, due to some bug in mysqltest, it eats consequetive baskslashes
in a strange way, so there is no a way to have to consequetive 
backslashes after unescaping.

Workaround:

using [[:punct:]] as a pattern that matches both slash and backslash,
which should be fine for this test purposes.
2013-09-30 14:59:01 +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
61a1c03694 pcre: fixing linking error one some systems:
libmysqld.a(pcre_exec.c.o): relocation R_X86_64_32S against
`_pcre_ucd_stage1' can not be used when making a shared object;
make[2]: Leaving directory `/mnt/buildbot/build/mariadb-10.0.3'
recompile with -fPIC

Changing ADD_LIBRARY(pcre) to ADD_CONVENIENCE_LIBRARY(pcre)
2013-09-30 11:29:32 +04:00
Alexander Barkov
d88c752612 Removing configuration switches that are not needed for MariaDB
from pcre/CMakeLists.txt
2013-09-27 18:13:46 +04:00
Alexander Barkov
69a641a500 pcre:
- do not install anything from pcre library
- do not build the c++ library
2013-09-27 17:04:30 +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
90b8fee692 pcre: Removing config.h from the tree, it's a generated file. 2013-09-27 14:26:52 +04:00
Vladislav Vaintroub
c8693bea40 MDEV-5076 : Build on FreeBSD - when looking for execinfo library, and execinfo.h header,
allow user-defined EXECINFO_ROOT prefix, in case library and header are not placed under /usr/local . This change was requested by FreeBSD maintainer.
2013-09-26 23:48:38 +02:00
Alexander Barkov
285e7aa179 MDEV-4425 REGEXP enhancements 2013-09-26 18:02:17 +04:00
Sergey Petrunya
e8eeb2e7f9 Update test results for the previous cset 2013-09-26 14:47:32 +04:00