Commit graph

54786 commits

Author SHA1 Message Date
Mikael Ronstrom
b353b37ddd merged a few more fixes of test cases for configuration changes 2008-10-15 23:07:17 +02:00
Mikael Ronstrom
c2703aaa61 merge test case changes for innodb thread concurrency 2008-10-15 22:48:40 +02:00
Mikael Ronstrom
349edf2747 merged Google background IO threads 2008-10-15 20:56:47 +02:00
Mikael Ronstrom
11b95b5d1c merged io rate patch from Google 2008-10-15 20:48:46 +02:00
Mikael Ronstrom
f9dee32aca merged fixes to the new default config values 2008-10-15 18:18:02 +02:00
Mikael Ronstrom
d24a6f321b Scaled back to number of open cached tables to 400 in open_cache as well as definition_cache
Also fixed test cases related to this
2008-10-15 18:09:03 +02:00
Mikael Ronstrom
54abde5e06 Google IO rate patch with a portability fix 2008-10-15 14:30:31 +02:00
Mikael Ronstrom
f9df209666 merge of patch for fix of bug#38551 2008-10-15 12:29:50 +02:00
Mikael Ronstrom
3f2ee360d1 merged configuration changes 2008-10-15 12:18:12 +02:00
Mikael Ronstrom
ff51b7d80a Patch to fix bug#38551 2008-10-15 12:03:45 +02:00
Mikael Ronstrom
0c7b710459 Merged patch for bug#38477 2008-10-15 11:57:31 +02:00
Mikael Ronstrom
26edf30866 Included patch for bug#38477 2008-10-15 11:50:21 +02:00
Mikael Ronstrom
7c1b5800f8 merge my-atomic patch 2008-10-15 11:20:47 +02:00
Mikael Ronstrom
c7f4a3da29 Changed configuration defaults for improved performance on modern computers
sql/mysql_priv.h:
  Change default number of open tables in cache and table definition cache size to 1024
storage/innobase/handler/ha_innodb.cc:
  Remove limitation in InnoDB by default on only 8 internal threads
2008-10-15 11:08:01 +02:00
Mikael Ronstrom
5c6d63b26d Merged Sparc Prefetch patch 2008-10-15 10:53:58 +02:00
Mikael Ronstrom
88640e3797 Merge in inline patch 2008-10-15 10:45:08 +02:00
Mikael Ronstrom
008a13b840 3 google patches
SMP patch
Rate IO patch
Multiple IO threads patch
2008-10-14 09:56:07 +02:00
Mikael Ronstrom
e82dac8dab Performance patch: Mysql atomic patch 2008-10-13 22:03:12 +02:00
Mikael Ronstrom
3c24289f24 Performance inline patch 2008-10-13 21:49:39 +02:00
Mikael Ronstrom
c2ad3cada0 Sparc prefetch patch 2008-10-13 21:46:29 +02:00
Georgi Kodinov
9daa56fd5c merged 5.0-bugteam to 5.1-bugteam 2008-09-10 12:55:38 +03:00
Georgi Kodinov
9d668de5c6 merged 5.1.29-rc into 5.1-bugteam 2008-09-10 12:44:21 +03:00
Georgi Kodinov
bed8cec485 merged 5.0-5.1.29-rc -> 5.0-bugteam 2008-09-10 12:40:58 +03:00
Evgeny Potemkin
70e2f814a7 Merge 2008-09-10 12:44:38 +04:00
Ramil Kalimullin
58a5d735a4 Merge 2008-09-09 21:24:33 +05:00
Ramil Kalimullin
eb2794d422 Merge 2008-09-09 20:52:38 +05:00
Martin Hansson
cfd4c976f6 Bug#35600: Auto merged. 2008-09-09 17:30:36 +02:00
Ramil Kalimullin
776793a97c Fix for bug#37526: asymertic operator <=> in trigger
Problem: <=> operator may return wrong results 
comparing NULL and a DATE/DATETIME/TIME value.

Fix: properly check NULLs.


mysql-test/r/type_datetime.result:
  Fix for bug#37526: asymertic operator <=> in trigger
    - test result.
mysql-test/t/type_datetime.test:
  Fix for bug#37526: asymertic operator <=> in trigger
    - test case.
sql/item_cmpfunc.cc:
  Fix for bug#37526: asymertic operator <=> in trigger
    - if is_nulls_eq is TRUE Arg_comparator::compare_datetime() 
  should return 1 only if both arguments are NULL.
2008-09-09 20:05:27 +05:00
Mats Kindahl
ac1bcc20d1 Merging with 5.1-5.1.29-rc 2008-09-09 14:46:18 +02:00
Martin Hansson
c0cfce21d6 Bug#35600: Security breach via view, I_S table and prepared
statement/stored procedure

View privileges are properly checked after the fix for bug no 
36086, so the method TABLE_LIST::get_db_name() must be used 
instead of field TABLE_LIST::db, as this only works for tables.
Bug appears when accessing views in prepared statements.

mysql-test/r/view_grant.result:
  Bug#35600: Extended existing test case.
mysql-test/t/view_grant.test:
  Bug#35600: Extended existing test result.
sql/sql_parse.cc:
  Bug#35600: Using method to retrieve database name instead of
  field.
2008-09-09 12:49:08 +02:00
Mats Kindahl
589355f0f5 Bug #39106:
SUPER is not required to change binlog format for session

A user without SUPER privileges can change the value of the
session variable BINLOG_FORMAT, causing problems for a DBA.

This changeset requires a user to have SUPER privileges to
change the value of the session variable BINLOG_FORMAT, and
not only the global variable BINLOG_FORMAT.


mysql-test/suite/binlog/t/binlog_grant.test:
  Adding test to test grants needed for SQL_LOG_BIN and BINLOG_FORMAT.
sql/set_var.cc:
  Adding code to check that user has SUPER permission
  needed to change the value of BINLOG_FORMAT.
sql/set_var.h:
  Adding function sys_var_thd_binlog_format::check()
2008-09-09 12:19:31 +02:00
Georgi Kodinov
dba247127f merge 5.1-5.1.29-rc to B38701 working tree 2008-09-08 14:51:09 +03:00
Ramil Kalimullin
8fb46a3d13 Merge 2008-09-08 15:57:06 +05:00
Martin Hansson
ee9528b0b9 Bug#36086: Auto merge. 2008-09-08 12:04:42 +02:00
Ramil Kalimullin
0a3af5f78e Merge 2008-09-08 14:55:38 +05:00
Georgi Kodinov
cc26bc9466 Bug #38701: Crash in String::append when inserting duplicate empty strings an uft8
SET col
                  
When reporting a duplicate key error the server was making incorrect assumptions 
on what the state of the value string to include in the error is.

Fixed by accessing the data in this string in a "safe" way (without relying on it
having a terminating 0).
      
Detected by code analysis and fixed a similar problem in reporting the foreign key
duplicate errors.

mysql-test/r/type_set.result:
  Bug #38701: test case
mysql-test/t/type_set.test:
  Bug #38701: test case
sql/handler.cc:
  Bug #38701: don't rely on the presence of a terminating 0 in the string
2008-09-05 18:21:59 +03:00
Narayanan V
860f74a8c1 updating server version number
configure.in:
  change server version number to 5.1.29
2008-09-05 20:20:26 +05:30
Narayanan V
16291bfd55 WL#4380: abi_check rule (using gcc -E) for storage engine API
Added a rule that uses gcc to generate preprocessor
output (gcc -E) that can be compared to an already
generated output using the diff utility.

icheck has been removed and replaced by gcc -E
because icheck does not support C++.

Makefile.am:
  Added a rule for checking that the abi/api
  has not changed.
  
  The following rules are followed in the rule in makefile.am
  
  1) Generate preprocessor output for the
     files that need to be tested for abi/ 
     api changes. use -nostdinc to prevent
     generation of preprocessor output for
     system headers. This results in
     messages in stderr saying that these
     headers were not found. Redirect the
     stderr output to /dev/null to prevent
     seeing these messages.
  2) sed the output to 
     2.1) remove blank lines and lines that
          begin with "# "
     2.2) When gcc -E is run on the Mac OS 
          and solaris sparc platforms it
          introduces a line of output that
          shows up as a difference between
          the .pp and .out files. Remove
          these OS specific preprocessor
          text inserted by the preprocessor.
  3) diff the generated file and the canons
     (.pp files already in the repository).
  4) delete the .out file that is generated.
     If the diff fails, the generated file 
     is not removed. This will be useful
     for analysis of ABI differences (e.g.
     using a visual diff tool).
  
  A ABI change that causes a build to fail will always be accompanied by new canons (.out files). The .out files that are not removed will be replaced as the new .pp files.
  
  e.g. If include/mysql/plugin.h has an ABI
       change then this rule would leave a
       <build directory>/abi_check.out file.
  
  A developer with a justified API change will then do a 
  
  mv <build directory>/abi_check.out include/mysql/plugin.pp 
  
  to replace the old canons with the new ones.
configure.in:
  1) Removed the part of the file that was
     icheck related
  2) Added an entry for the configure
     variable DIFF
  3) Ensured that the abi_check rule is run
     only if gcc is available
include/Makefile.am:
  1) Removed the icheck related entries
include/mysql.h.pp:
  The pre-processor output cannon file for
  include/mysql.h
include/mysql/plugin.h.pp:
  The pre-processor output cannon file
  for include/mysql/plugin.h
include/mysql_h.ic:
  Removed the cannon file related to icheck.
sql/mysql_priv.h.pp:
  The pre-processor output cannon file for
  sql/mysql_priv.h
2008-09-05 20:14:30 +05:30
Georgi Kodinov
ccfceec1f2 merged 5.1-main -> 5.1-bugteam 2008-09-05 16:24:54 +03:00
Evgeny Potemkin
1588c116ba Bug#37908: Skipped access right check caused server crash.
The check_table_access function initializes per-table grant info and performs
access rights check. It wasn't called for SHOW STATUS statement thus left
grants info uninitialized. In some cases this led to server crash. In other
cases it allowed a user to check for presence/absence of arbitrary values in
any tables.
      
Now the check_table_access function is called prior to the statement
processing.


mysql-test/r/status.result:
  Added a test case for the bug#37908.
mysql-test/t/status.test:
  Added a test case for the bug#37908.
sql/sql_parse.cc:
  Bug#37908: Skipped access right check caused server crash.
  Now the check_table_access function is called when the SHOW STATUS statement
  uses any table except information.STATUS.
sql/sql_yacc.yy:
  Bug#37908: Skipped access right check caused server crash.
  For the SHOW PROCEDURE/FUNCTION STATUS the 'mysql.proc' table isn't added
  to the table list anymore as there is no need.
2008-09-05 14:44:16 +04:00
Ramil Kalimullin
bf2f368087 After-merge fix. 2008-09-05 14:06:24 +05:00
Ramil Kalimullin
bef0ee999d Merge 2008-09-05 13:36:02 +05:00
Ramil Kalimullin
788be2aebd Fix for bug #39021: SELECT REGEXP BINARY NULL never returns
Problem: SELECT ... REGEXP BINARY NULL may lead to server crash/hang.

Fix: properly handle NULL regular expressions.


mysql-test/r/func_regexp.result:
  Fix for bug #39021: SELECT REGEXP BINARY NULL never returns
    - test result.
mysql-test/t/func_regexp.test:
  Fix for bug #39021: SELECT REGEXP BINARY NULL never returns
    - test case.
sql/item_cmpfunc.cc:
  Fix for bug #39021: SELECT REGEXP BINARY NULL never returns
    - checking regular expressions' null_value
  we tested it without a val_xxx() call before, which is wrong.
  Now Item_func_regex::regcomp() returns -1 in the case
  and allows to handle NULL expessions properly.
sql/item_cmpfunc.h:
  Fix for bug #39021: SELECT REGEXP BINARY NULL never returns
    - checking regular expressions' null_value
  we tested it without a val_xxx() call before, which is wrong.
  Now Item_func_regex::regcomp() returns -1 in the case
  and allows to handle NULL expessions properly.
2008-09-05 13:30:01 +05:00
Ramil Kalimullin
bcbff0b93b Merge 2008-09-05 12:48:56 +05:00
Narayanan V
06ec4b2d2e merging mysql-5.1->mysql-5.1-sea 2008-09-04 17:23:16 +05:30
Mats Kindahl
dbbb48c3c7 BUG#32709: Assertion failed: trx_data->empty(), file log.cc
Incremental fixes: updating a comment and fixing a result file.

sql/sql_class.h:
  Changing comment.
2008-09-03 22:52:54 +02:00
Mats Kindahl
02a4354044 Bug #32709: Assertion failed: trx_data->empty(), file log.cc
The assertion indicates that some data was left in the transaction
cache when the server was shut down, which means that a previous
statement did not commit or rollback correctly.

What happened was that a bug in the rollback of a transactional
table caused the transaction cache to be emptied, but not reset.
The error can be triggered by having a failing UPDATE or INSERT,
on a transactional table, causing an implicit rollback.

Fixed by always flushing the pending event to reset the state
properly.


mysql-test/extra/rpl_tests/rpl_row_basic.test:
  Testing that a failed update (that writes some rows to the
  transaction cache) does not cause the transaction cache to
  hold on to the data or forget to reset the transaction cache.
sql/log.cc:
  Added call to remove pending event when the transaction cache
  is emptied instead of written to binary log. The call will also
  clear the outstanding table map count so that the cache is not
  left it in a state of "empty but not reset".
  
  Added function MYSQL_BIN_LOG::remove_pending_rows_event().
sql/log.h:
  Added function MYSQL_BIN_LOG::remove_pending_rows_event().
sql/sql_class.cc:
  Adding function THD::binlog_remove_pending_rows_event().
sql/sql_class.h:
  Adding function THD::binlog_remove_pending_rows_event().
2008-09-03 22:04:07 +02:00
Martin Hansson
3bad2119f9 Bug#36086: SELECT * from views don't check column grants
This patch also fixes bugs 36963 and 35600.
                      
- In many places a view was confused with an anonymous derived
  table, i.e. access checking was skipped. Fixed by introducing a
  predicate to tell the difference between named and anonymous
  derived tables.
                      
- When inserting fields for "SELECT * ", there was no 
  distinction between base tables and views, where one should be
  made. View privileges are checked elsewhere.

mysql-test/include/grant_cache.inc:
  Bug#36086: Changed test case.
mysql-test/r/grant2.result:
  Bug#36086: Changed test result.
mysql-test/r/grant_cache_no_prot.result:
  Bug#36086: Changed test result.
mysql-test/r/grant_cache_ps_prot.result:
  Bug#36086: Changed test result.
mysql-test/r/view_grant.result:
  Bug#36086: Test result.
mysql-test/t/grant2.test:
  Bug#36086: Changed test case.
mysql-test/t/view_grant.test:
  Bug#36086: Test case.
sql/item.cc:
  Bug#36086: Replaced conditional with new methods.
sql/sql_acl.cc:
  Bug no 35600: 
  In mysql_table_grant:
    Replaced conditional with the new accessor method.
  
  In check_grant:
   - Changed the requirement table->derived != null to 
     checking all anonymous derived tables.
   - Use of the accessor methods for getting object and database 
     names.
      
  Bug#36086: In check_grant_all_columns:
    - Updated comment. This function is now called for views
      as well.
    - The error message should not disclose any column names 
      unless the user has privilege to see all column names.
    - Changed names of Field_iterator_table_ref methods.
sql/sql_base.cc:
  Bug no 36963: In insert_fields()
    - Commented.
    - We should call check_grant_all_columns() for views in  
      this case.        
    - Changed names of Field_iterator_table_ref methods.
    - We should not disclose column names in the error message
      when the user has no approprate privilege.
sql/sql_cache.cc:
  Bug#36086: Replaced test with new predicate method.
sql/sql_derived.cc:
  Bug#36086: commenting only. Updated and doxygenated
  comment for mysql_derived_prepare().
sql/sql_parse.cc:
  Bug no 35600: 
  - In check_single_table_access:
    Due to the bug, check_grant would raise an error for a
    SHOW CREATE TABLE command for a TEMPTABLE view. It should in
    fact not be be invoked in this case. This table privilege
    is checked already.
    There is a test case for this in information_schema_db.test.
      
  - In check_access: replaced table->derived
sql/table.cc:
  Bug#36086: 
  
  - In TABLE_LIST::set_underlying_merge(): 
    Commenting only. Doxygenated, corrected spelling,
    added.
  
  - Renamed table_name() and db_name() methods of 
    Field_iterator_table_ref in order to be consistent
    with new methods in TABLE_LIST.
sql/table.h:
  Bug#36086: 
    - Commented GRANT_INFO.
    - Added a predicate is_anonymous_derived_table() to    
      TABLE_LIST.
    - Added get_table_name() and get_db_name() to   
      TABLE_LIST in order to hide the disparate   
      representation of these properties.
2008-09-03 16:45:40 +02:00
Andrei Elkin
d62f27a90a merging with 5.1.29. 2008-09-03 14:43:26 +03:00
Mats Kindahl
1017b6c8be Updating result files for rpl_ndb test suite. 2008-09-03 12:27:01 +02:00