Commit graph

30374 commits

Author SHA1 Message Date
unknown
60bb69aa04 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  zippy.(none):/home/cmiller/work/mysql/mysql-5.0-maint


client/mysql.cc:
  Auto merged
2006-05-11 09:14:09 -04:00
unknown
aeaaa45626 BUG#7549: Missing error message for invalid view selection with subquery.
When a view statement is compiled on CREATE VIEW time, most of the 
optimizations should not be done. Finding the right optimization 
for a subquery is one of them.
Unfortunately the optimizer is resolving the column references of 
the left expression of IN subqueries in the process of deciding 
witch optimization to use (if needed). So there should be a 
special case in Item_in_subselect::fix_fields() : check the 
validity of the left expression of IN subqueries in CREATE VIEW 
mode and then proceed as normal. 


mysql-test/r/subselect.result:
  test case
mysql-test/r/view.result:
  chnaged explain due to column being resolved
mysql-test/t/subselect.test:
  test case
sql/item_subselect.cc:
  overloaded fix_fields to fix the left_expr in prepare_view_mode
sql/item_subselect.h:
  fix_fields overloaded so it can prepare left_expr
2006-05-11 15:30:54 +03:00
unknown
ec83dd7c61 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/mysql-4.1-10418
2006-05-11 12:48:49 +02:00
unknown
e42692c0a9 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/mysql-5.0-19263
2006-05-11 01:18:15 +02:00
unknown
0720c110ce Merge 2006-05-10 22:15:08 +02:00
unknown
bc1815aa3d mysql.spec.sh:
Compile in all character sets in Max (bug#14918)


support-files/mysql.spec.sh:
  Compile in all character sets in Max (bug#14918)
2006-05-10 21:53:01 +02:00
unknown
24a0b385fb Fix for BUG#18587: Function that accepts and returns TEXT
garbles data if longer than 766 chars.

The problem is that a stored routine returns BLOBs to the previous
caller, BLOBs are shallow-copied (i.e. only pointers to the data are
copied). The fix is to also copy data of BLOBs.


mysql-test/r/sp.result:
  Updated result file.
mysql-test/t/sp.test:
  Added a test case for BUG#18587.
sql/field_conv.cc:
  Do not jump to optimization if the field type is BLOB and
  the destination table requires copying of BLOBs.
sql/item_func.cc:
  Request copying BLOBs for the result table.
2006-05-10 23:16:30 +04:00
unknown
8db63fd52f Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  production.mysql.com:/usersnfs/rkalimullin/mysql-5.0
2006-05-10 18:52:31 +02:00
unknown
a8693be9d9 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  production.mysql.com:/usersnfs/rkalimullin/mysql-5.0
2006-05-10 17:09:15 +02:00
unknown
38447ae81a Make it compilable on Windows. 2006-05-10 18:53:28 +04:00
unknown
b02a34f2bf Merge cmiller@bk-internal.mysql.com:/home/bk/mysql-5.0
into  zippy.(none):/home/cmiller/mysql-5.0__bug19564
2006-05-10 10:47:01 -04:00
unknown
3fa6432b09 BUG#17379 Wrong reuse of E(#rows(range)) as E(#rows(ref(const))):
Re-work best_access_path() and find_best() to reuse E(#rows(range access)) as
E(#rows(ref[_or_null](const) access) only when it is appropriate.
[This is the final cumulative patch]


mysql-test/r/select.result:
  BUG#17379: Testcase
mysql-test/r/subselect.result:
  BUG#17379: Updated test results
mysql-test/t/select.test:
  BUG#17379: Testcase
sql/opt_range.cc:
  BUG#17379: Wrong reuse of E(#rows(range)) as E(#rows(ref(const))):
  Make range optimizer together with TABLE::quick_* also return TABLE::quick_n_ranges
sql/sql_select.cc:
  BUG#17379: Wrong reuse of E(#rows(range)) as E(#rows(ref(const))):
  Re-work best_access_path() to reuse E(#rows(range access)) as
  E(#rows(ref[_or_null](const) access) only when it is appropriate.
sql/table.h:
  BUG#17379: Wrong reuse of E(#rows(range)) as E(#rows(ref(const))):
  Make range optimizer together with TABLE::quick_* also return TABLE::quick_n_ranges
2006-05-10 17:40:20 +04:00
unknown
af4d487a96 Merge mysql.com:/usr/home/ram/work/mysql-4.1
into  mysql.com:/usr/home/ram/work/mysql-5.0


sql/item_timefunc.cc:
  Auto merged
mysql-test/r/func_time.result:
  merging
mysql-test/t/func_time.test:
  merging
2006-05-10 18:27:42 +05:00
unknown
fe578d38a1 Merge cmiller@bk-internal.mysql.com:/home/bk/mysql-5.0
into  zippy.(none):/home/cmiller/mysql-5.0__bug19564
2006-05-10 09:03:42 -04:00
unknown
2d53ffc0ac Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/home/dlenev/mysql-5.0-bg12472
2006-05-10 14:40:07 +04:00
unknown
f76e0def2d Commit forgotten changes for BUG#14106.
mysql-test/r/im_options_set.result:
  Fixed result file.
mysql-test/r/im_options_unset.result:
  Fixed result file.
2006-05-10 14:34:03 +04:00
unknown
fa1e23d991 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/home/dlenev/mysql-5.0-bg12472
2006-05-10 14:21:59 +04:00
unknown
82727c62cf Follow-up for the patch for bugs #12472/#15137 "CREATE TABLE ... SELECT ...
which explicitly or implicitly uses stored function gives 'Table not locked'
error"

Test case for these bugs crashed in --ps-protocol mode. The crash was caused
by incorrect usage of check_grant() routine from create_table_precheck()
routine. The former assumes that either number of tables to be inspected by
it is limited explicitly (i.e. is is not UINT_MAX) or table list used and
thd->lex->query_tables_own_last value correspond to each other.
create_table_precheck() was not fulfilling this condition and crash happened.
The fix simply sets number of tables to be inspected by check_grant() to 1.


sql/sql_parse.cc:
  create_table_precheck():
    At the moment when create_table_precheck() is called TABLE_LIST element
    representing table to be created does not belong to global table list
    therefore we should limit number of tables to be inspected by check_grant()
    explicitly (as in this case table list passed to this function does not
    correspond to thd->lex->query_tables_own_last value).
2006-05-10 14:12:32 +04:00
unknown
2038148c59 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/mnt/raid/MySQL/devel/5.0-bug14106
2006-05-10 13:39:38 +04:00
unknown
3f73225669 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/usr/home/ram/work/4.1.b18501


sql/item_timefunc.cc:
  Auto merged
2006-05-10 13:27:48 +05:00
unknown
588082712a Merge mysql.com:/home/kgeorge/mysql/5.0/clean
into  mysql.com:/home/kgeorge/mysql/5.0/B18068


sql/sql_select.cc:
  Auto merged
2006-05-10 09:38:40 +03:00
unknown
2e72ae3d81 Bug#19564: mysql displays NULL instead of space
Correct a bug (that I introduced, after using Oracle's database software for 
too many years) where the length of the database-sent data is incorrectly 
used to infer NULLness.


client/mysql.cc:
  No longer use the length of the data to infer whether it is NULL or not.
mysql-test/r/mysql.result:
  Add result and version marker, and correct previous result.
mysql-test/t/mysql.test:
  Add test and version marker
2006-05-09 22:35:51 -04:00
unknown
481493a6fc Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/psergey/mysql-5.0-best_access_path_j-push
2006-05-10 06:35:50 +04:00
unknown
2ba465f4c5 Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/psergey/mysql-5.0-best_access_path_j-push


sql/sql_select.cc:
  Auto merged
2006-05-10 04:14:09 +04:00
unknown
dac69dd4a2 Merge xiphis.org:/home/antony/work2/p1-bug10952.1
into  xiphis.org:/home/antony/work2/mysql-5.0-engines-merge
2006-05-09 15:12:32 -07:00
unknown
f61748b796 Merge acurtis@bk-internal:/home/bk/mysql-5.0-engines
into  xiphis.org:/home/antony/work2/p1-bug10952.1


sql/handler.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
2006-05-09 13:34:31 -07:00
unknown
6116d0176b bug#10952
"alter table from MyISAM to MERGE lost data without errors and warnings"
  Add new handlerton flag which prevent user from altering table storage
  engine to storage engines which would lose data. Both 'blackhole' and 
  'merge' are marked with the new flag.
  Tests included.


mysql-test/r/blackhole.result:
  test for bug#10952
mysql-test/r/merge.result:
  test for bug#10952
mysql-test/t/blackhole.test:
  test for bug#10952
mysql-test/t/merge.test:
  test for bug#10952
sql/ha_blackhole.cc:
  Bug#10952
    shouldn't be able to alter a table into a blackhole
sql/ha_myisammrg.cc:
  Bug#10952
    shouldn't be able to alter a table into a merge
sql/handler.h:
  Bug#10952
    new handlerton flag
sql/sql_table.cc:
  Bug#10952
    If alter is changing engine, check if new engine allows creating table
    via ALTER statement.
2006-05-09 13:31:46 -07:00
unknown
c23c38fa31 BUG#14157: utf8 encoding in binlog without set character_set_client e.g DROP temporary
Binlog lacks encoding info about DROPped temporary table.

Idea of the fix is to switch temporary to system_charset_info when a temporary table
is DROPped for binlog. Since that is the server, that automatically, but not the client, who generates the query
the binlog should be updated on the server's encoding for the coming DROP.
The `write_binlog_with_system_charset()' is introduced to replace similar problematic places in the code.


mysql-test/r/drop_temp_table.result:
  results changed
mysql-test/r/mix_innodb_myisam_binlog.result:
  results changed
mysql-test/r/mysqlbinlog.result:
  results changed
mysql-test/r/rpl_temporary.result:
  results changed
mysql-test/t/mysqlbinlog.test:
  Check roll-forward recovery from binlog where there are DROP temporary tables created
  in koi8r.
mysql-test/t/rpl_temporary.test:
  Check slave digests binlog with DROP temporary tables created in koi8r.
sql/mysql_priv.h:
  `write_binlog_with_system_charset()' is added to be called when a binlog event
  is created "implicitly" like DROP temporary table is case of closing connection.
sql/sql_base.cc:
  Idea of the fix is to switch temporary to system_charset_info when a temporary table
  is DROPped for binlog. Since that is the server, not the client, who generates the query
  the binlog should be updated on server's encoding for the coming DROP.
2006-05-09 23:01:31 +03:00
unknown
baae7a97d9 BUG#18068: SELECT DISTINCT (with duplicates and covering index)
When converting DISTINCT to GROUP BY where the columns are from the covering
index and they are quoted twice in the SELECT list the optimizer is creating
improper processing sequence. This is because of the fact that the columns
of the covering index are not recognized as such and treated as non-index
columns.

Generally speaking duplicate columns can safely be removed from the GROUP
BY/DISTINCT list because this will not add or remove new rows in the
resulting set. Duplicates can be removed even if they are not consecutive
(as is the case for ORDER BY, where the duplicate columns can be removed
only if they are consecutive).

So we can safely transform "SELECT DISTINCT a,a FROM ... ORDER BY a" to
"SELECT a,a FROM ... GROUP BY a ORDER BY a" instead of 
"SELECT a,a FROM .. GROUP BY a,a ORDER BY a". We can even transform 
"SELECT DISTINCT a,b,a FROM ... ORDER BY a,b" to
"SELECT a,b,a FROM ... GROUP BY a,b ORDER BY a,b".

The fix to this bug consists of checking for duplicate columns in the SELECT
list when constructing the GROUP BY list in transforming DISTINCT to GROUP
BY and skipping the ones that are already in.


mysql-test/r/distinct.result:
  test case for the bug without loose index scan
mysql-test/r/group_min_max.result:
  test case for the bug
mysql-test/t/distinct.test:
  test case for the bug without loose index scan
mysql-test/t/group_min_max.test:
  test case for the bug
sql/sql_select.cc:
  duplicates check and removal
2006-05-09 18:13:01 +03:00
unknown
cb5d6dbf51 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/home/dlenev/mysql-5.0-bg12472


sql/mysql_priv.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
mysql-test/r/sp.result:
  Manual merge.
mysql-test/t/sp.test:
  Manual merge.
2006-05-09 16:48:23 +04:00
unknown
4f15a043e2 Fix for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which explicitly
or implicitly uses stored function gives "Table not locked" error'

CREATE TABLE ... SELECT ... statement which was explicitly or implicitly
(through view) using stored function gave "Table not locked" error.

The actual bug resides in the current locking scheme of CREATE TABLE SELECT
code, which first opens and locks tables of the SELECT statement itself,
and then, having SELECT tables locked, creates the .FRM, opens the .FRM and
acquires lock on it. This scheme opens a possibility for a deadlock, which
was present and ignored since version 3.23 or earlier. This scheme also
conflicts with the invariant of the prelocking algorithm -- no table can
be open and locked while there are tables locked in prelocked mode.

The patch makes an exception for this invariant when doing CREATE TABLE ...
SELECT, thus extending the possibility of a deadlock to the prelocked mode.
We can't supply a better fix in 5.0.


mysql-test/r/sp.result:
  Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which
  explicitly or implicitly uses stored function gives "Table not locked" error'
mysql-test/t/sp.test:
  Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which
  explicitly or implicitly uses stored function gives "Table not locked" error'
sql/mysql_priv.h:
  Added flag which can be passed to open_table() routine in order to ignore
  set of locked tables and prelocked mode.
  We don't need declaration of create_table_from_items() any longer as it was
  moved into sql_insert.cc and made static.
sql/sql_base.cc:
  open_table():
    Added flag which allows open table ignoring set of locked tables and
    prelocked mode.
sql/sql_insert.cc:
  Moved create_table_from_items() from sql_table.cc to sql_insert.cc as it was
  not used outside of sql_insert.cc and contains code which is specific for
  CREATE TABLE ... SELECT.
  Also now when we are executing CREATE TABLE ... SELECT ... statement which
  SELECT part requires execution in prelocked mode we ignore set of locked
  tables in order to get access to the table we just have created.
  We probably don't want to do this if we are under real LOCK TABLES since
  it will widen window for deadlock too much.
sql/sql_table.cc:
  Moved create_table_from_items() routine into sql_insert.cc, since it was not
  used anywhere outside of this file and contains logic which is specific for
  CREATE TABLE ... SELECT statement.
2006-05-09 16:39:11 +04:00
unknown
3923cfd98a Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
2006-05-09 13:27:57 +02:00
unknown
2d54e69270 Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
2006-05-09 13:26:30 +02:00
unknown
d6c2616c3f Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/marty/MySQL/mysql-5.0
2006-05-09 12:36:38 +02:00
unknown
06d0f3fb22 Merge mysql.com:/home/marty/MySQL/mysql-4.1
into  mysql.com:/home/marty/MySQL/mysql-5.0


ndb/src/kernel/blocks/dbtc/DbtcInit.cpp:
  Auto merged
2006-05-09 12:17:38 +02:00
unknown
1bdb7f7789 bug #19623 UniqueHashIndexes resource leak: allocate array pool based on MaxNoOfTables 2006-05-09 11:55:41 +02:00
unknown
4a25f40090 BUG#16803 "ln -s /dev/null .mysql_history" doesn't work!
- Add a check to see if the .mysql_history file a symlink to /dev/null 
   and in such case, skip reading and writing to it. 
     


client/mysql.cc:
  Add check to detect if the "mysql_history" file is a symlink to /dev/null.
  In that case, don't create histfile variable.
  That will make read_history and write_history to be skipped.
2006-05-09 11:01:50 +02:00
unknown
c7e2527c9a Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0


sql/item_func.cc:
  Auto merged
sql/sql_acl.cc:
  Auto merged
2006-05-09 10:44:19 +02:00
unknown
0d3825a67e Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint


client/mysqltest.c:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
sql/mysql_priv.h:
  Auto merged
2006-05-09 08:26:25 +02:00
unknown
c06972bf2a Bug #1039: tmpdir and datadir not available via @@ system variable syntax
Bug #19606: ssl variables are not displayed in show variables
Bug #19616: log_queries_not_using_indexes  is not listed in show variables

  Make basedir, datadir, tmpdir, log_queries_not_using_indexes, ssl_ca,
  ssl_capath, ssl_cert, ssl_cipher, and ssl_key all available both from
  SHOW VARIABLES and as @@variables.

  As a side-effect of this change, log_queries_not_using_indexes can
  be changed at runtime (but only globally, not per-connection).


include/sslopt-longopts.h:
  Put options in alphabetical order
include/sslopt-vars.h:
  Allow define of SSL_VARS_NOT_STATIC to prevent variables from not being
  made static.
mysql-test/r/variables.result:
  Add new results
mysql-test/t/variables.test:
  Add new regression tests
sql/mysql_priv.h:
  Add extern for opt_log_queries_not_using_indexes
sql/mysqld.cc:
  Handle opt_log_queries_not_using_indexes as extern, and define
  SSL_VARS_NO_STATIC so they can be accessed outside of mysqld.cc
sql/set_var.cc:
  Handle basedir, datadir, tmpdir, log_queries_not_using_indexes, and
  various ssl settings so that they are accessible as server variables
  and listed in SHOW VARIABLES.
sql/set_var.h:
  Add new sys_var_constr_str_ptr class, for when we have a system variable
  that is only set via the command-line that is a pointer to a string.
2006-05-08 16:38:45 -07:00
unknown
42f20d7538 2006-05-09 00:11:54 +02:00
unknown
db122e949b Merge mysql.com:/Users/kent/mysql/bk/mysql-5.0-release
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new


configure.in:
  Auto merged
2006-05-09 00:02:33 +02:00
unknown
bc32493732 Remove valgrind and compiler warnings
Add function 'vio_end' that will cleanup resources allocated by vio and the components it uses.


include/violite.h:
  Import patch warnings.patch
libmysql/libmysql.c:
  Import patch warnings.patch
sql/mysqld.cc:
  Import patch warnings.patch
vio/test-ssl.c:
  Import patch warnings.patch
vio/test-sslclient.c:
  Import patch warnings.patch
vio/test-sslserver.c:
  Import patch warnings.patch
vio/vio.c:
  Import patch warnings.patch
vio/viosslfactories.c:
  Import patch warnings.patch
2006-05-08 17:14:06 +02:00
unknown
c593d1f1ca Merge neptunus.(none):/home/msvensson/mysql/my50-maint-bug18474
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
2006-05-08 16:44:37 +02:00
unknown
fa91c7bc60 Merge 192.168.0.20:mysql/my50-maint-yassl
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint


extra/yassl/src/ssl.cpp:
  Auto merged
extra/yassl/taocrypt/src/make.bat:
  Auto merged
extra/yassl/testsuite/test.hpp:
  Auto merged
2006-05-08 16:38:24 +02:00
unknown
1a97d50ba8 Bug#19263: variables.test doesn't clean up after itself
save global server variables before fiddling with them and restore them later


BitKeeper/deleted/.del-variables-master.opt~8a6cb6459b54545:
  Delete: mysql-test/t/variables-master.opt
mysql-test/r/variables.result:
  save and restore globals
mysql-test/t/variables.test:
  save and restore globals
2006-05-08 14:59:29 +02:00
unknown
82a3779449 Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0


support-files/mysql.spec.sh:
  Auto merged
ndb/src/mgmsrv/Services.cpp:
  merge
2006-05-08 07:56:26 +02:00
unknown
2dce78e8f6 Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1
into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1


support-files/mysql.spec.sh:
  Auto merged
2006-05-08 07:48:08 +02:00
unknown
dd934da915 Bug#10418: LOAD_FILE does not behave like in manual if file does not exist
load_file() string-function should return NULL rather than throw an error if
the file doesn't exist, as per the manual.


mysql-test/t/outfile.test:
  expect NULL rather than error if file given to load_file() doesn't exist
mysql-test/t/func_str.test:
  show that load_file() will return NULL rather than throw an error
  if file doesn't exist
mysql-test/r/outfile.result:
  expect NULL rather than error if file given to load_file() doesn't exist
mysql-test/r/func_str.result:
  expect NULL rather than error if file given to load_file() doesn't exist
sql/item_strfunc.cc:
  load_file() should return NULL as per the docs if file not found,
  rather than throw an error
2006-05-08 04:37:58 +02:00
unknown
47302570e6 Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0
into  rurik.mysql.com:/home/igor/mysql-5.0


mysql-test/r/rpl_user_variables.result:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
mysql-test/t/rpl_user_variables.test:
  Manual merge
2006-05-07 16:24:03 -07:00