1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-06 05:42:06 +03:00
Commit Graph

22881 Commits

Author SHA1 Message Date
Ingo Struewing
a4abe291dc merge 2008-11-27 20:39:54 +01:00
Ingo Struewing
ccb1990531 2008-11-27 18:39:43 +01:00
Tatiana A. Nurnberg
8c0c30aa90 auto-merge 2008-11-27 17:32:34 +01:00
Tatiana A. Nurnberg
50cfde5328 auto-merge 2008-11-27 17:17:16 +01:00
Horst Hunger
5f678447cc due to merge. 2008-11-27 16:48:00 +01:00
Ingo Struewing
7bfc13296f merge 2008-11-27 16:28:50 +01:00
Guilhem Bichot
255f8feb4c Fix for BUG#40661 "Maria: crash in embedded server (when detecting deadlock?)"
bug is actually a weirdness in test system, so moving test portion into maria_notembedded.test

mysql-test/suite/maria/r/maria.result:
  result update
mysql-test/suite/maria/r/maria_notembedded.result:
  result update
mysql-test/suite/maria/t/maria.test:
      Removing test portion into maria_notembedded.test. Explanation below.
      Running maria.test with --mem --embedded --valgrind I got:
      ==378== Invalid read of size 4
      ==378==    at 0x857C755: _lf_pinbox_real_free (lf_alloc-pin.c:342)
      ==378==    by 0x857C640: _lf_pinbox_free (lf_alloc-pin.c:267)
      ==378==    by 0x857D50C: ldelete (lf_hash.c:226)
      ==378==    by 0x857DBC1: lf_hash_delete (lf_hash.c:429)
      ==378==    by 0x8243D82: unlock_lock_and_free_resource
      (waiting_threads.c:676)
      ==378==    by 0x8244A79: wt_thd_release (waiting_threads.c:948)
      ==378==    by 0x83F301D: wt_thd_release_self (trnman.c:98)
      ==378==    by 0x83F3D49: trnman_end_trn (trnman.c:431)
      ==378==    by 0x837C437: ma_commit (ma_commit.c:60)
      ==378==    by 0x835F082: ha_maria::external_lock(THD*, int)
      (ha_maria.cc:2387)
      ==378==    by 0x84D1011: handler::ha_external_lock(THD*, int)
      (handler.cc:4433)
      ==378==    by 0x856DA92: unlock_external(THD*, st_table**, unsigned)
      (lock.cc:786)
      ==378==    by 0x856DD6F: mysql_unlock_tables(THD*, st_mysql_lock*)
      (lock.cc:389)
      ==378==    by 0x8274A57: close_thread_tables(THD*) (sql_base.cc:1307)
      ==378==    by 0x82ABEC3: unlock_locked_tables(THD*) (sql_parse.cc:99)
      ==378==    by 0x82B0BB3: mysql_execute_command(THD*)
      (sql_parse.cc:3372)
      ==378==  Address 0x5894a0c is 164 bytes inside a block of size 184
      free'd
      ==378==    at 0x40233FC: free (vg_replace_malloc.c:323)
      ==378==    by 0x823CF92: my_thread_end (my_thr_init.c:348)
      ==378==    by 0x8200FEE: mysql_thread_end (libmysql.c:250)
      ==378==    by 0x81A9487: send_one_query (mysqltest.c:535)
      ==378==    by 0x4050111: start_thread (in /lib/libpthread-2.5.so)
      ==378==    by 0x41A52ED: clone (in /lib/libc-2.5.so)
      
      (among other errors). The line where the invalid read happens is:
        if (available_stack_size(&pinbox, *pins->stack_ends_here) >
      alloca_size)
      and stack_ends_here was previously set here:
        el->stack_ends_here= & my_thread_var->stack_ends_here;
      The mysqltest "send" command, in embedded mode, is implemented this way
      (mysqltest.c:do_send_query()): a *new OS thread* is created in
      mysqltest, and does this:
      
        mysql_thread_init();
        VOID(mysql_send_query(&cn->mysql, cn->cur_query,
      cn->cur_query_len));
        mysql_thread_end();
      
      So, con_d "send insert t1 values (2)" creates a new OS thread, which
      gets a thread-specific data (mysql_thread_init()), then sends the
      query; in particular, this sets el->stack_ends_here to a pointer inside
      the thread-specific data (see my_thread_var above), that is, thd->pins
      depends on the thread-specific data.
      This sent "insert" blocks as expected, thread-specific data is free()d
      (my_thread_end() above), OS thread terminates.
      Then "default" connection runs "insert t1 values (3)"
      which blocks on the 3 already inserted by the con_d.
      This blocking (see waiting_threads.c) creates a WT_RESOURCE, which has,
      as owner, con_d's WT_THD.
      When con_d calls "unlock tables" (see stack trace), it wants to release
      this resource, which involves con_d's thd->pins, so it ends up reading
      stack_ends_here which points inside the freed thread-specific data =>
      Valgrind error, crashes...
      So this is an effect of having one single connection (con_d) for which
      two queries:
      send insert t1 values (2)
      unlock tables
      are done by different OS threads. That is indeed weird design of
      mysqltest, and it breaks on the dependency of lf_alloc-pin.c on
      thread-specific data. It is maybe already explained in those comments
      in lf_alloc-pin.c:
      "  It is assumed that pins belong to a THD and are not transferable
        between THD's (LF_PINS::stack_ends_here being a primary reason
        for this limitation)."
      "    It is assumed that pins belong to a thread and are not
      transferable
          between threads."
      
      In correct usage of libmysqld (no two queries sent for one connection
      by two threads), this problem would not happen, so I call it a
      deficiency of the test system.
mysql-test/suite/maria/t/maria_notembedded.test:
  moving test portion into maria_notembedded.test
2008-11-27 16:13:02 +01:00
Sergey Glukhov
0385618e05 5.0-bugteam->5.1-bugteam merge 2008-11-27 19:03:13 +04:00
Sergey Glukhov
1182c0979a Bug#37284 Crash in Field_string::type()
The bug is repeatable with latest(1.0.1) InnoDB plugin on Linux, Win,
If MySQL is compiled with valgrind there are errors about
using of uninitialized variable(orig_table).
The fix is to set field->orig_table correct value.


mysql-test/r/innodb_mysql.result:
  test result
mysql-test/t/innodb_mysql.test:
  test case
sql/sql_base.cc:
  set field->orig_table to 'table' value because it may be bogus and
  it leads to crash on Field_string::type() function.
2008-11-27 18:54:23 +04:00
Horst Hunger
5cd6c94289 Fix for Bug#37766: Inserted review results.
Reason for the failing test was that "SELECT count(*) from mysql.general_log;" was not always
the same number. That was fixed by "...count(*)>4..." as the minimal fulfilled condition.
As Bug 35371 was fixed the testcase with "log_output = 'FILE'" was enabled and changed to have
always the same result.
2008-11-27 15:51:48 +01:00
Sergey Glukhov
9ac57f01d7 5.0-bugteam->5.1-bugteam merge 2008-11-27 18:11:54 +04:00
Sergey Glukhov
89d044062c Bug#37460 Assertion failed: !table->file || table->file->inited == handler::NONE
enable uncacheable flag if we update a view with check option
and check option has a subselect, otherwise, the check option
can be evaluated after the subselect was freed as independent
(See full_local in JOIN::join_free())


mysql-test/r/subselect.result:
  test result
mysql-test/t/subselect.test:
  test case
sql/mysql_priv.h:
  added UNCACHEABLE_CHECKOPTION flag
sql/sql_update.cc:
  enable uncacheable flag if we update a view with check option
  and check option has a subselect, otherwise, the check option
  can be evaluated after the subselect was freed as independent
  (See full_local in JOIN::join_free())
2008-11-27 17:57:34 +04:00
Tatiana A. Nurnberg
f6299c110a auto-merge 2008-11-27 14:50:28 +01:00
Tatiana A. Nurnberg
57ead840c5 auto-merge 2008-11-27 14:45:41 +01:00
Tatiana A. Nurnberg
733e7ce0fc auto-merge 2008-11-27 14:05:50 +01:00
Sergey Glukhov
910d41725d 5.0-bugteam->5.1-bugteam merge 2008-11-27 17:05:38 +04:00
Sergey Glukhov
fbbdb613d7 Bug#34825 perror on windows doesn't know about win32 error codes
extended perror to enable printing of Win32 system errors


extra/perror.c:
  extended perror to enable printing of Win32 system errors
mysql-test/r/perror-win.result:
  test result
mysql-test/t/perror-win.test:
  test case
2008-11-27 16:33:40 +04:00
Tatiana A. Nurnberg
61296d6db7 auto-merge 2008-11-27 12:33:04 +01:00
Ingo Struewing
41494f86f4 Bug#28234 - global/session scope - documentation vs implementation
Post-pushbuild fix.

- Windows does not have 'socket' system variable.
- Compiler warning in sql/slave.cc

mysql-test/r/variables.result:
  Bug#28234 - global/session scope - documentation vs implementation
  Updated test result.
mysql-test/t/variables.test:
  Bug#28234 - global/session scope - documentation vs implementation
  Removed test for 'socket' variable. Windows doesn't have it.
sql/slave.cc:
  Bug#28234 - global/session scope - documentation vs implementation
  Changed type of constant to avoid a compiler warning.
2008-11-27 11:50:28 +01:00
Patrick Crews
12758f9d6e merge 2008-11-26 16:52:53 -05:00
Patrick Crews
6fb5957f61 merge 2008-11-26 13:03:18 -05:00
Ingo Struewing
fd06e3e2ad merge 2008-11-26 17:15:00 +01:00
Matthias Leich
ee66061821 Merge latest Pushes into the GCA tree
(no conflicts)
2008-11-26 15:00:11 +01:00
Ingo Struewing
3fb68b5f94 merge 2008-11-26 12:32:22 +01:00
Horst Hunger
cff0a6b65c Fix for bug#37702: Inserted the review results into the patch. 2008-11-26 09:33:41 +01:00
Tatiana A. Nurnberg
d096079d33 Bug#37553: MySql Error Compare TimeDiff & Time
We pretended that TIMEDIFF() would always return positive results;
this gave strange results in comparisons of the TIMEDIFF(low,hi)<TIME(0)
type that rendered a negative result, but still gave false in comparison.
We also inadvertantly dropped the sign when converting times to
decimal.

CAST(time AS DECIMAL) handles signs of the times correctly.
TIMEDIFF() marked up as signed. Time/date comparison code switched to
signed for clarity.

mysql-test/r/func_sapdb.result:
  show that time-related comparisons work with negative
  time values now.
  show that converting time to DECIMAL no longer drops sign.
mysql-test/t/func_sapdb.test:
  show that time-related comparisons work with negative
  time values now.
  show that converting time to DECIMAL no longer drops sign.
sql/item_cmpfunc.cc:
  signed returns
sql/item_cmpfunc.h:
  signed now (time/date < > =)
sql/item_func.cc:
  signed now
sql/item_timefunc.h:
  Functions such as TIMEDIFF() return signed results!
  The file-comments pretended we were doing that all along, anyway...
sql/my_decimal.cc:
  heed sign when converting time to my_decimal;
  times may actually be negative!
  Needed for SELECT CAST(time('-73:42:12') AS DECIMAL);
sql/mysql_priv.h:
  using signed for dates and times now
2008-11-26 09:28:17 +01:00
Matthias Leich
525dccb295 Merge of fix for bug 40889 into GCA tree 2008-11-25 17:34:41 +01:00
Matthias Leich
aa819d1b7b Merge fix for bug 39854 into GCA tree 2008-11-25 15:30:04 +01:00
Ingo Struewing
a8d3f0325b Bug#41002 - symlink.test fails on symlinked datadir
symlink.test failed when run in an environment that has mysql-test/var
symlinked to elsewhere, e.g. a memory file system. This is the case
when running mysql-test-run --mem.

In this case the server does not detect that the directory specified
with a DATA/INDEX DIRECTORY clause is within its data home directory.
This problem was reported as Bug#39277 (Creation of table with data
and/or index files in data home directory succeeds). It was decided
that it will not be fixed in 5.1. Hence, the current behavior is
accepted for 5.1. It will be fixed in 6.0 though.

Fixed the test case so that it works in both environments. 1. When no
symbolic link is involved, the server notices that the data/index
directory is in its data hone directory and rejects the CREATE/ALTER
TABLE statement. 2. When the data home directory is symlinked, it
does not notice the problem and executes the statement sucessfully.


mysql-test/r/symlink.result:
  Bug#41002 - symlink.test fails on symlinked datadir
  Updated test result.
mysql-test/t/symlink.test:
  Bug#41002 - symlink.test fails on symlinked datadir
  Adjusted the test case to the accepted behavior.
  It needs to accept success and failure of some statements.
2008-11-25 15:06:31 +01:00
Matthias Leich
1a19341c0d Merge of fix for bug 40644 into GCA tree 2008-11-25 14:35:04 +01:00
Matthias Leich
53b9d62632 Merge of fix for bug 39979 into GCA tree 2008-11-25 13:48:08 +01:00
Matthias Leich
a03ede9bda Merge 5.0 -> 51. of fix for bug 26890 2008-11-25 13:17:50 +01:00
Matthias Leich
ddf5c19272 Merge of fix for Bug 26890 into GCA tree 2008-11-25 12:52:32 +01:00
Guilhem Bichot
3c1e153a82 Manually applying the patch for BUG40954 "Crash in MyISAM index code with concurrency test using partitioned tables"
so that it stops crashing pushbuild2/5.1-maria and we can see the other failures which it hid.

mysql-test/r/partition.result:
  Manually applying the patch for BUG40954 "Crash in MyISAM index code with concurrency test using partitioned tables"
mysql-test/t/partition.test:
  Manually applying the patch for BUG40954 "Crash in MyISAM index code with concurrency test using partitioned tables"
sql/ha_partition.cc:
  Manually applying the patch for BUG40954 "Crash in MyISAM index code with concurrency test using partitioned tables"
2008-11-25 10:05:48 +01:00
Ingo Struewing
eefbc08bc5 merge 2008-11-25 09:29:58 +01:00
Ingo Struewing
f65bd582be merge 2008-11-25 09:27:40 +01:00
Mattias Jonsson
d47f9233f4 merge 2008-11-24 23:18:45 +01:00
Patrick Crews
10548a6ee9 Merge 5.0->5.1 2008-11-24 16:56:48 -05:00
Patrick Crews
2578609322 Bug#40866: mysql-test-run's check of tests provides false failures due to timestamp
Altering how MTR checks global variable status to exclude timestamp
Changed SQL statements to update style.
2008-11-24 16:53:32 -05:00
Mattias Jonsson
d5057740a0 Bug#40954: Crash in MyISAM index code with concurrency test using partitioned tables
Problem was usage of read_range_first with an empty key.

Solution was to not to give a key if it was empty.

mysql-test/r/partition.result:
  Bug#40954: Crash in MyISAM index code with concurrency test using partitioned tables
  
  Updated test result.
mysql-test/t/partition.test:
  Bug#40954: Crash in MyISAM index code with concurrency test using partitioned tables
  
  Added test case
2008-11-24 17:24:03 +01:00
Georgi Kodinov
f31d305238 merged bug 39656 to 5.1-bugteam 2008-11-24 18:00:09 +02:00
Georgi Kodinov
c9be1c9f88 merged bug 39656 to 5.0-bugteam 2008-11-24 17:38:52 +02:00
Georgi Kodinov
d795963cba Bug #39656: Behaviour different for agg functions with & without where -
ONLY_FULL_GROUP_BY

The check for non-aggregated columns in queries with aggregate function, but without
GROUP BY was treating all the parts of the query as if they are in the SELECT list.
Fixed by ignoring the non-aggregated fields in the WHERE clause.

mysql-test/r/func_group.result:
  Bug #39656: test case
mysql-test/t/func_group.test:
  Bug #39656: test case
sql/sql_select.cc:
  Bug #39656: ignore the new non-aggregated column refs in a WHERE
  by saving the state so far and then adding only the new values of the other
  parts of the bitmask.
2008-11-24 17:30:47 +02:00
Guilhem Bichot
d55161b75a Two tests which I recently copied from MyISAM to Maria take much longer in Maria (20x, 15 minutes)
so cause timeouts. Probably normal as ALTER TABLE does many syncs in Maria, but have to mark them "big"
for pushbuild2.

mysql-test/suite/parts/t/partition_alter2_1_maria.test:
  test takes 15 minutes with Maria (ALTER TABLE does many syncs in Maria)
mysql-test/suite/parts/t/partition_alter2_2_maria.test:
  test takes 15 minutes with Maria (ALTER TABLE does many syncs in Maria)
2008-11-24 15:53:10 +01:00
Guilhem Bichot
1889e8b075 Under Windows one can get \ instead of / in file names in error messages (fix for pushbuild warning)
mysql-test/lib/mtr_report.pl:
  Under Windows one can get \ instead of / in file names in error messages
2008-11-24 14:57:34 +01:00
Ingo Struewing
f92c573145 Bug#28234 - global/session scope - documentation vs implementation
Several system variables did not behave like system variables should do.
When trying to SET them or use them in SELECT, they were reported as
"unknown system variable". But they appeared in SHOW VARIABLES.

This has been fixed by removing the "fixed_vars" array of variables
and integrating the variables into the normal system variables chain.
All of these variables do now behave as read-only global-only
variables. Trying to SET them tells they are read-only, trying to
SELECT the session value tells they are global only. Selecting the
global value works. It delivers the same value as SHOW VARIABLES.


mysql-test/r/variables-notembedded.result:
  Bug#28234 - global/session scope - documentation vs implementation
  New test result.
mysql-test/r/variables.result:
  Bug#28234 - global/session scope - documentation vs implementation
  New test result.
mysql-test/t/variables-notembedded.test:
  Bug#28234 - global/session scope - documentation vs implementation
  Added a test for each moved variable that is not present in an
  embedded server.
mysql-test/t/variables.test:
  Bug#28234 - global/session scope - documentation vs implementation
  Added a test for each moved variable that is also present in an
  embedded server.
sql/item_func.cc:
  Bug#28234 - global/session scope - documentation vs implementation
  Added SHOW_BOOL to some Item_func_get_system_var methods.
sql/set_var.cc:
  Bug#28234 - global/session scope - documentation vs implementation
  Moved all variables from the "fixed_vars" array into the normal
  system variables chain by using the new variable class sys_var_const.
  Removed the fixed_show_vars array and its initialization in
  enumerate_sys_vars().
  Removed mysql_append_static_vars(), which added fixed_vars arrays
  to the fixed_show_vars array.
sql/set_var.h:
  Bug#28234 - global/session scope - documentation vs implementation
  Added the new system variable class sys_var_const.
  Removed declaration of mysql_append_static_vars().
sql/slave.cc:
  Bug#28234 - global/session scope - documentation vs implementation
  Moved the definition of show_slave_skip_errors() from sql_repl.cc
  to here and renamed it to print_slave_skip_errors().
  Changed print_slave_skip_errors() to create a static buffer with
  a printable version of the error numbers set.
  Added a call of print_slave_skip_errors() to init_slave_skip_errors().
sql/slave.h:
  Bug#28234 - global/session scope - documentation vs implementation
  Added declaration of slave_skip_error_names.
sql/sql_repl.cc:
  Bug#28234 - global/session scope - documentation vs implementation
  Moved all variables from the "fixed_vars" array into the normal
  system variables chain by using the new variable class sys_var_const.
  Moved the definition of show_slave_skip_errors() to slave.cc and
  modified it to compute the string once at server initialization only.
  Removed the call to mysql_append_static_vars().
2008-11-22 00:22:21 +01:00
Matthias Leich
80a0a5793d Fox for Bug#40889 funcs_1: wrong code within triggers_03e_db_level.inc causes warnings 2008-11-21 22:36:29 +01:00
Matthias Leich
d082cf340c - Fix for Bug#39854 events_scheduling fails sporadically on pushbuild
- restore original state of event_scheduler at the end of the test
- minor fixes around comments, formatting
2008-11-21 22:28:23 +01:00
Horst Hunger
f5890962fe Due to merges. 2008-11-21 17:36:18 +01:00
Horst Hunger
caf290203f Fix for bug#36873 containing the review results. 2008-11-21 15:36:13 +01:00