- 06 Oct, 2015 1 commit
-
-
Sreeharsha Ramanavarapu authored
CONVERT_CHARSET_PARTITION_CONSTANT: SQL/SQL_PARTITION..CC:202 Issue: ----- This problem happens under the following conditions: 1) A table partitioned with a character column as the key. 2) The expressions specified in the partition definition requires a charset conversion. This can happen when the server's default collation is different from the expression's collation. 3) INSERT DELAYED is used to insert data into the table. SOLUTION: --------- While creating the delayed_insert object, initialize it with the relevant select_lex.
-
- 01 Oct, 2015 1 commit
-
-
Sreeharsha Ramanavarapu authored
UPDATE VIEW USING OUTER SUBQUERY Issue: ----- While resolving a column which refers to a table/view in an outer query, it's respecitve item object is marked with the outer query's select_lex object. But when the column refers to a view or if the column is part of a subquery in the HAVING clause, an Item_ref object is created. While the reference to the outer query is stored by the Item_ref object, the same is not stored in it's real_item. This creates a problem with the IN-TO-EXISTS optmization. When there is an index over the column in the inner query, it will be considered since the column's real_item object will be mistaken for a local field. This will lead to a crash. SOLUTION: --------- Under the current design, the only way to fix this issue is to check the reginfo.join_tab for a NULL value. If yes, the query should not be worrying about the key use. The testcase and comments added as part of the fix for Bug#17766653 have been backported.
-
- 30 Sep, 2015 2 commits
-
-
Gipson Pulla authored
-
Balasubramanian Kandasamy authored
As MySQL Connector C 6.1 is end of life, added conflict with mysql-connector-c-shared dependencies
-
- 22 Sep, 2015 3 commits
-
-
Aditya A authored
FILE PROBLEM In 5.5 when doing doing a rename of a column ,we ignore the case between old and new column names while comparing them,so if the change is just the case then we don't even mark the field FIELD_IS_RENAMED ,we just update the frm file ,but don't recreate the table as is the norm when alter is used.This leads to inconsistency in the innodb data dictionary which causes index creation to fail. FIX According to the documentation any innodb column rename should trigger rebuild of the table. Therefore for innodb tables we will do a strcmp() between the column names and if there is case change in column name we will trigger a rebuild.
-
Arun Kuruvila authored
Description: The command FLUSH DES_KEY_FILE is expected to reload the DES keys from the file that was specified with the "--des-key-file" option at server startup. But it is not behaving as expected. Analysis: The des file reload is defined within a wrong conditional directive, rendering the command ineffective. Macro "OPENSSL" was used instead of "HAVE_OPENSSL" macro. Fix: "OPENSSL" macro is changed to "HAVE_OPENSSL".
-
Annamalai Gurusami authored
Note: Backporting the patch from mysql-5.6. Problem: A CREATE TABLE with an invalid table name is detected at SQL layer. So the table name is reset to an empty string. But the storage engine is called with this empty table name. The table name is specified as "database/table". So, in the given scenario we get only "database/". Solution: Within InnoDB, detect this error and report it to higher layer. rb#9274 approved by jimmy.
-
- 18 Sep, 2015 5 commits
-
-
Robert Golebiowski authored
(cherry picked from commit 7f9941eab55ed672bfcccd382dafbdbcfdc75aaa)
-
Robert Golebiowski authored
INITIAL STARTUP Updated yassl to yassl-2.3.7e (cherry picked from commit 6e21c8c04b922bdb60b6a7c174709d2e1bdd3618)
-
Robert Golebiowski authored
-
Robert Golebiowski authored
INITIAL STARTUP Updated yassl to yassl-2.3.7e
-
Sreeharsha Ramanavarapu authored
__MEMMOVE_SSSE3_BACK FROM STRING::COPY Issue: ----- While using row comparators, the store_value functions call val_xxx functions in the prepare phase. This can cause valgrind issues. SOLUTION: --------- Setting up of the comparators should be done by alloc_comparators in the prepare phase. Also, make sure store_value will be called only during execute phase. This is a backport of the fix for Bug#17755540.
-
- 16 Sep, 2015 1 commit
-
-
Shishir Jaiswal authored
MYSQLD. DESCRIPTION =========== Crash occurs when daemon_example plugin is uninstalled immediately after its installed. This can be reproduced by installing and uninstalling the plugin repeatedly. ANALYSIS ======== The daemon_example_plugin_deinit() function of the daemon example plugin calls pthread_cancel() but doesn't wait for the worker thread to actually complete before deallocating the data buffer and closing the file that it writes to. This is causing SEGFAULT! FIX === Added a pthread_join() to wait for the thread to complete before doing the cleanup work. Removed a stray 'x' variable from the example code. NOTE ==== Have made an entry in .opt file as given below: --plugin-dir=$DAEMONEXAMPLE_DIR This is done so that the program takes plugin directory as ../<dbg>/plugin/daemon_example/ instead of ../lib/plugin/
-
- 11 Sep, 2015 1 commit
-
-
Marko Mäkelä authored
recv_find_max_checkpoint(): Amend the error message to give advice about downgrading. The 5.7.9 redo log format was intentionally changed so that older MySQL versions will not find a valid redo log checkpoint.
-
- 04 Sep, 2015 1 commit
-
-
Arun Kuruvila authored
PID_FILE CHECK LEADS TO OOM SIG 11 Description:- A server started with 'query_alloc_block_size' option set to a certain range of negative values on a machine without enough memory may lead to OOM. Analysis:- Server uses 'strtoull()' to convert server variable values of type 'GET_UINT', 'GET_ULONG' or 'GET_ULL' from string to unsigned long long. According to the man page, 'strtoull()' function returns either the result of the conversion or, if there was a leading minus sign, the negation of the result of the conversion represented as an unsigned value, unless the original(nonnegated) value would overflow; in the latter case, strtoull() returns ULLONG_MAX and sets errno to ERANGE. So 'strtoull()' converts a small negative value to a larger postive value. For example string '-1125899906842624' will be converted to an unsigned value, '18445618173802708992' (ulonglong typecast of '-1125899906842624'). So a server started with 'query_alloc_block_size' set to "-1125899906842624" on a machine without enough memory will lead to OOM since server allocates '18445618173802708992' bytes(17178820608 GB) for query allocation block. Fix:- When server is started with any server variable, of type "GET_UINT", "GET_ULONG" or "GET_ULL", set to a negative value, a warning, "option xxx: value -yyy adjusted to zzz" is thrown and the value is adjusted to the lowest possible value for that variable. The dynamic server variable which is configured through the client exhibit the same behavior as fix made for variables configured during the server start up.
-
- 01 Sep, 2015 2 commits
-
-
Balasubramanian Kandasamy authored
-
Balasubramanian Kandasamy authored
-
- 31 Aug, 2015 1 commit
-
-
Murthy Narkedimilli authored
-
- 26 Aug, 2015 1 commit
-
-
Balasubramanian Kandasamy authored
-
- 25 Aug, 2015 1 commit
-
-
Nisha Gopalakrishnan authored
FIELD_ITERATOR_TABLE::END_OF_FIELDS Note: This a backport of the patch for bug#19894987 to MySQL-5.5
-
- 21 Aug, 2015 1 commit
-
-
Arun Kuruvila authored
PROBLEMS Description:- Server variable "--lower_case_tables_names" when set to "0" on windows platform which does not support case sensitive file operations leads to problems. A warning message is printed in the error log while starting the server with "--lower_case_tables_names=0". Also according to the documentation, seting "lower_case_tables_names" to "0" on a case-insensitive filesystem might lead to index corruption. Analysis:- The problem reported in the bug is:- Creating an INNODB table 'a' and executing a query, "INSERT INTO a SELECT a FROM A;" on a server started with "--lower_case_tables_names=0" and running on a case-insensitive filesystem leads innodb to flat spin. Optimizer thinks that "a" and "A" are two different tables as the variable "lower_case_table_names" is set to "0". As a result, optimizer comes up with a plan which does not need a temporary table. If the same table is used in select and insert, a temporary table is needed. This incorrect optimizer plan leads to infinite insertions. Fix:- If the server is started with "--lower_case_tables_names" set to 0 on a case-insensitive filesystem, an error, "The server option 'lower_case_table_names'is configured to use case sensitive table names but the data directory is on a case-insensitive file system which is an unsupported combination. Please consider either using a case sensitive file system for your data directory or switching to a case-insensitive table name mode.", is printed in the server error log and the server exits.
-
- 19 Aug, 2015 1 commit
-
-
Lars Tangvald authored
Syncs "official" and our own Docker images
-
- 18 Aug, 2015 2 commits
-
-
Shishir Jaiswal authored
DESCRIPTION =========== Inability of mysql LOAD XML command to handle empty XML tags i.e. <row><tag/></row>. Also the behaviour is wrong and (different than above) when there is a space in empty tag i.e. <row><tag /></row> ANALYSIS ======== In read_xml() the case where we encounter a close tag ('/') we're decreasing the 'level' blindly which is wrong. Actually when its an without-space-empty-tag (succeeding char is '>'), we need to skip the decrement. In other words whenever we hit a close tag ('/'), decrease the 'level' only when (i) It's not an (without space) empty tag i.e. <tag/> or, (ii) It is of format <row col="val" .../> FIX === The switch case for '/' is modified. We've removed the blind decrement of 'level'. We do it only when its not an without-space-empty-tag. Also we are setting 'in_tag' to false to let program know that we're done reading current tag (required in the case of format <row col="val" .../>)
-
Karthik Kamath authored
VIEW It appears that the code refactoring done as part of the patch for the MySQL BUG#11749859 fixed this issue. This issue is not reproducible on MySQL 5.5+ versions now. As part of this patch, the test file "mysqldump.test" has been updated to remove the comment which was referring to the bug and also the line which suppresses the warning.
-
- 17 Aug, 2015 2 commits
-
-
Mithun C Y authored
-
Mithun C Y authored
Analysis : ========== During JOIN::prepare of sub-query which creates the derived tables we call setup_procedure. Here we call fix_fields for parameters of procedure clause. Calling setup_procedure at this point may cause issue. If sub-query is one of parameter being fixed it might lead to complicated dependencies on derived tables being prepared. SOLUTION : ========== In 5.6 with WL#6242, we have made procedure clause parameters can only be NUM, so sub-queries are not allowed as parameters. So in 5.5 we can block sub-queries in procedure clause parameters. This eliminates above conflicting dependencies.
-
- 12 Aug, 2015 1 commit
-
-
Aditya A authored
PROBLEM Whenever we insert in unique secondary index we take shared locks on all possible duplicate record present in the table. But while during a replace on the unique secondary index , we take exclusive and locks on the all duplicate record. When the records are deleted, they are first delete marked and later purged by the purge thread. While purging the record we call the lock_update_delete() which in turn calls lock_rec_inherit_to_gap() to inherit locks of the deleted records. In repeatable read mode we inherit all the locks from the record to the next record but in the read commited mode we skip inherting them as gap type locks. We make a exception here if the lock on the records is in shared mode ,we assume that it is set during insert for unique secondary index and needs to be inherited to stop constraint violation. We didnt handle the case when exclusive locks are set during replace, we skip inheriting locks of these records and hence causing constraint violation. FIX While inheriting the locks,check whether the transaction is allowed to do TRX_DUP_REPLACE/TRX_DUP_IGNORE, if true inherit the locks. [ Revewied by Jimmy #rb9709]
-
- 10 Aug, 2015 1 commit
-
-
Shaohua Wang authored
The root cause is that x86 has a stronger memory model than the ARM processors. And the GCC builtins didn't issue the correct fences when setting/unsetting the lock word. In particular during the mutex release. The solution is rewriting atomic TAS operations: replace '__sync_' by '__atomic_' if possible. Reviewed-by: Sunny Bains <sunny.bains@oracle.com> Reviewed-by: Bin Su <bin.x.su@oracle.com> Reviewed-by: Debarun Banerjee <debarun.banerjee@oracle.com> Reviewed-by: Krunal Bauskar <krunal.bauskar@oracle.com> RB: 9782 RB: 9665 RB: 9783
-
- 07 Aug, 2015 2 commits
-
-
Ajo Robert authored
-
Ajo Robert authored
send_result_set_metadata Analysis -------- Cursor inside trigger accessing NEW/OLD row leads server exit. The reason for the bug was that implementation of function create_tmp_table() was not considering Item::TRIGGER_FIELD_ITEM as possible alternative for type of class being instantiated. This was resulting in a mismatch between a number of columns in result list and temp table definition. This mismatch leads to the failure of assertion DBUG_ASSERT(send_result_set_metadata.elements == item_list.elements) in the method Materialized_cursor::send_result_set_metadata in debug mode. Fix: --- Added code to consider Item::TRIGGER_FIELD_ITEM as valid type while creating fields.
-
- 05 Aug, 2015 2 commits
-
-
sayantan dutta authored
(cherry picked from commit 1bfe5f724bc4c24da635f632247e7d263aa53970) Conflicts: mysql-test/lib/mtr_cases.pm
-
sayantan dutta authored
(cherry picked from commit 3eb933e0eb55f962404a04741767177e12a9885f) Conflicts: mysql-test/mysql-test-run.pl
-
- 04 Aug, 2015 2 commits
-
-
Mithun C Y authored
-
Mithun C Y authored
Issue: A select for update subquery in having clause resulted deadlock and its transaction was rolled back by innodb. val_XXX interfaces do not handle errors and it do not propogate errors to its caller. sub_select did not see this error when it called evaluate_join_record and later made a call to innodb. As transaction is rolled back innodb asserted. Fix: Now evaluate_join_record checks if there is any error reported and then return the same to its caller.
-
- 03 Aug, 2015 4 commits
-
-
Sreeharsha Ramanavarapu authored
-
Sreeharsha Ramanavarapu authored
FIND_USED_PARTITIONS | SQL/OPT_RANGE.CC:3884 Post-push fix.
-
Sreeharsha Ramanavarapu authored
-
Sreeharsha Ramanavarapu authored
FIND_USED_PARTITIONS | SQL/OPT_RANGE.CC:3884 Issue: ----- During partition pruning, first we identify the partition in which row can reside and then identify the subpartition. If we find a partition but not the subpartion then we hit a debug assert. While finding the subpartition we check the current thread's error status in part_val_int() function after some operation. In this case the thread's error status is already set to an error (multiple rows returned) so the function returns no partition found and results in incorrect behavior. SOLUTION: --------- Currently any error encountered in part_val_int is considered a "partition not found" type error. Instead of an assert, a check needs to be done and a valid error returned.
-
- 29 Jul, 2015 2 commits
-
-
Thirunarayanan Balathandayuthapani authored
-
Thirunarayanan Balathandayuthapani authored
INSERT INDEX RECORD Problem: ======= IBUF_BITMAP_FREE bit in ibuf bitmap array is used to indicate the free space available in leaf page. IBUF_BITMAP_FREE bit indicates free space more than actual existing free space for the leaf page. Solution: ========= Ibuf_bitmap_array is not updated for the secondary index leaf page when insert operation is done by updating a delete marked existing record in the index. Reviewed-by: Jimmy Yang <jimmy.yang@oracle.com> RB: 9544
-