Commit graph

20912 commits

Author SHA1 Message Date
unknown
1401c2c71c Better comments for void Item::top_level_item() 2006-07-04 13:28:30 +04:00
unknown
0770db0450 bug 20317 (test fails in embedded for different number of threads is
running)

I decided to make ps_1general test independent from actual number of
threads running


mysql-test/r/ps_1general.result:
  result fixed
mysql-test/t/ps_1general.test:
  as i think we don't really care about the number of threads running
  i just replace the number with '#'
2006-07-03 14:54:09 +05:00
unknown
861096a58f Bug#19006: 4.0 valgrind problems (in test func_str)
On exactly-sized Strings, the String::c_ptr() function peeked beyond the
end of the buffer, possibly into unititialized space to see whether the 
buffer was NUL-terminated.

In a place that did peek improperly, we now use a c_ptr_safe() function, 
which doesn't peek where it shouldn't.


client/sql_string.h:
  Back-port String::c_ptr_safe().
sql/item_func.h:
  Describe side-effect behavior.
sql/item_strfunc.cc:
  Use the "_safe" version of c_ptr to avoid looking for a terminating 
  NUL character outside the initialized memory area.  Valgrind hates it 
  when one does that, and it theoretically could lead to a SEGV.
sql/sql_string.h:
  Back-port String::c_ptr_safe().
2006-07-01 14:31:52 -04:00
unknown
4ffd445b56 Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/psergey/mysql-4.1-bug16168-push


sql/opt_range.cc:
  Auto merged
2006-07-01 01:55:43 +04:00
unknown
17986f7cae Merge monty@192.168.0.9:/home/my/mysql-4.1
into  mysql.com:/home/my/mysql-4.1
2006-06-30 19:15:18 +03:00
unknown
e0171231a5 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/my/mysql-4.1
2006-06-30 19:15:17 +03:00
unknown
a6d2cafd9c Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main
2006-06-30 18:15:16 +02:00
unknown
7ee6a11cf6 Merge monty@192.168.0.9:/home/my/mysql-4.1
into  mysql.com:/home/my/mysql-4.1
2006-06-30 18:44:15 +03:00
unknown
66a59b10e9 Reverted wrong bug fix (Bug#11228)
mysql-test/r/key.result:
  Fixed result after removing wrong bug fix
mysql-test/t/key.test:
  Added SHOW CREATE TABLE, which is the proper way to check for table definitions
sql/table.cc:
  Reverted wrong bug fix.
  The intention with the original code was to show that MySQL treats the first
  given unique key as a primary key. Clients can use the marked primary key as a
  real primary key to validate row changes in case of conflicting updates.  The
  ODBC driver (and other drivers) may also use this fact to optimize/check
  updates and handle conflicts.  The marked key also shows what some engines, like InnoDB or NDB,
  will use as it's internal primary key.
  
  For checking if someone has declared a true PRIMARY KEY, one should use 'SHOW CREATE TABLE'
2006-06-30 18:29:27 +03:00
unknown
e410532ae1 Merge poseidon.ndb.mysql.com:/home/tomas/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main


sql/ha_ndbcluster.cc:
  Auto merged
2006-06-30 16:26:33 +02:00
unknown
437afbfda8 adopted ndb handler code for tables without primary key and with unique index
- added missing retrieval of hidden primary key
2006-06-30 16:25:07 +02:00
unknown
4354d94045 Merge perch.ndb.mysql.com:/home/jonas/src/41-work
into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1
2006-06-30 11:25:14 +02:00
unknown
af751eebf3 Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1
into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1
2006-06-30 11:16:39 +02:00
unknown
618bd69d75 Merge mysql.com:/home/tomash/src/mysql_ab/mysql-4.1
into  mysql.com:/home/tomash/src/mysql_ab/mysql-4.1-bug20152
2006-06-30 12:54:11 +04:00
unknown
8615559038 bug #20152: mysql_stmt_execute() overwrites parameter buffers
When using a parameter bind MYSQL_TYPE_DATE in a prepared statement,
the time part of the MYSQL_TIME buffer was written to zero in
mysql_stmt_execute(). The param_store_date() function in libmysql.c
worked directly on the provided buffer.
Changed to use a copy of the buffer.


libmysql/libmysql.c:
  fix for bug #20152
tests/mysql_client_test.c:
  added test for bug#20152
2006-06-30 12:52:05 +04:00
unknown
652a02f6e1 ndb - bug#20774
crash if system restart with more than 4096 fragments
  solution: continueb enable expand check loop


ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  continueb enable expand check loop
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  continueb enable expand check loop
2006-06-30 09:41:41 +02:00
unknown
633cbfb571 BUG#16168: Wrong results from range optimizer, "Use_count: Wrong count for key ..." warnings:
- Added comments.
 - Make SEL_ARG::clone() set SEL_ARG::elements in the created copy.


mysql-test/r/range.result:
  BUG#16168: Testcase
mysql-test/t/range.test:
  BUG#16168: Testcase
2006-06-30 09:05:12 +04:00
unknown
0343a80b02 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/my/mysql-4.1
2006-06-30 04:27:19 +03:00
unknown
c8a5b35d85 Merge monty@192.168.0.9:/home/my/mysql-4.1
into  mysql.com:/home/my/mysql-4.1
2006-06-30 04:26:41 +03:00
unknown
c5ed64a416 Don't read ~/.my.cnf in mysqldump.test
heap/hp_test1.c:
  Changed type from last commit
mysql-test/mysql-test-run.sh:
  Fixed problem with running with --gdb and two masters
  Don't disable ndb becasue we run gdb
mysql-test/t/mysqldump.test:
  Don't read ~/.my.cnf
sql/ha_ndbcluster.cc:
  Portability fix
2006-06-30 04:10:27 +03:00
unknown
6946f03e6c Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/my/mysql-4.1
2006-06-30 02:44:13 +03:00
unknown
2a100c1c5c Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1
into sunlight.local:/local_work/autopush/merge-4.1
2006-06-30 03:34:54 +04:00
unknown
77deeb7ee6 Fixed include file usage
hp_test2 now works again
Fixed wrong cast, which caused problems with gcc 4.0 and floats in prepared statements (Bug #19694)


heap/hp_test1.c:
  Portability fix
heap/hp_test2.c:
  Added max_table_size (fixes that hp_test2 works again)
include/my_global.h:
  Fixed wrong cast, which caused problems with gcc 4.0 (Bug #19694)
mysys/my_handler.c:
  Added missing include file
strings/strtod.c:
  Fixed include files
2006-06-30 02:25:35 +03:00
unknown
194c63482f Merge mysql.com:/mnt/storeage/mysql-4.1
into  mysql.com:/mnt/storeage/mysql-4.1_bug19298
2006-06-29 17:30:50 -04:00
unknown
52a1639b0e Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1
into moonbone.local:/work/merge-4.1
2006-06-30 01:12:16 +04:00
unknown
3c79d36a97 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main
2006-06-29 23:12:15 +02:00
unknown
f26639c9f2 Bug#20328 mysql client: dumb about trailing spaces on help command.
client/mysql.cc:
  Remove trailing spaces from help arguments in com_server_help. 
  Disregard trailing spaces from command in com_help.
mysql-test/r/mysql_client.result:
  Test trailing spaces on the help command.
mysql-test/t/mysql_client.test:
  Result trailing spaces on the help command.
2006-06-29 17:06:28 -04:00
unknown
5d506d6b62 Bug #19202 Incorrect errorhandling in select count(*) wrt temporary error 2006-06-29 20:55:21 +02:00
unknown
9303456fcf Merge perch.ndb.mysql.com:/home/jonas/src/41-work
into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1
2006-06-29 16:31:12 +02:00
unknown
1025ffd02e Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1
into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1


ndb/src/mgmsrv/ConfigInfo.cpp:
  Auto merged
2006-06-29 16:25:45 +02:00
unknown
6efd848ce7 ndb - autotest
Fix testNodeRestart -n DuringLCP and others (add stopTest() at end of test :-))


ndb/test/ndbapi/testNodeRestart.cpp:
  Fix testNodeRestart -n DuringLCP and others
2006-06-29 16:20:18 +02:00
unknown
d94521c32d Merge mysql.com:/home/stewart/Documents/MySQL/4.1/ndb
into  mysql.com:/home/stewart/Documents/MySQL/4.1/main
2006-06-29 22:30:51 +10:00
unknown
1ae69b6b1a Merge mysql.com:/home/kgeorge/mysql/4.1/teamclean
into  mysql.com:/home/kgeorge/mysql/4.1/warnings
2006-06-29 10:36:08 +03:00
unknown
7aa26e2645 Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert"
It was possible that fetching a record by an exact key value 
(including the record pointer) could return a record with a 
different key value. This happened only if a concurrent insert 
added a record with the searched key value after the fetching 
statement locked the table for read.

The search succeded on the key value, but the record was
rejected as it was past the file length that was remembered
at start of the fetching statement. With other words it was 
rejected as being a concurrently inserted record.

The action to recover from this problem was to fetch the 
record that is pointed at by the next key of the index. 
This was repeated until a record below the file length was 
found.

I do now avoid this loop if an exact match was searched. 
If this match is beyond the file length, it is now treated 
as "key not found". There cannot be another key with the 
same record pointer.


myisam/mi_rkey.c:
  Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert"
  Added a check for exact key match before searching for
  the next key that was not concurrently inserted. If an
  exact key match finds a concurrently inserted row, this
  must be treated as "key not found".
sql/sql_class.cc:
  Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert"
  Fixed some DBUG_ENTER strings.
2006-06-28 18:55:30 +02:00
unknown
9ad8a373f1 Bug#19835 - Binary copy of corrupted tables crash the server when issuing a query
A corrupt table with dynamic record format can crash the 
server when trying to select from it.
        
I fixed the crash that resulted from the particular type 
of corruption that has been reported for this bug.

No test case. To test it, one needs a table with a very special
corruption. The bug report contains a file with such a table.


myisam/mi_dynrec.c:
  Bug#19835 - Binary copy of corrupted tables crash the server when issuing a query
  Added a protection against corrupted records. A dynamic 
  record header with invalid 'next' pointer could trigger 
  the assert in _mi_get_block_info(). Now I avoid this by 
  reporting a corruption error.
2006-06-28 16:07:39 +02:00
unknown
730d16614d gcc 4.1 linux warning fixes backported from 5.0.
sql/item_cmpfunc.h:
  gcc 4.1 linux warning fixes backported from 5.0
sql/opt_range.cc:
  gcc 4.1 linux warning fixes.
sql/spatial.h:
  gcc 4.1 linux warning fixes backported from 5.0
sql/sql_select.h:
  gcc 4.1 linux warning fixes.
sql/sql_update.cc:
  gcc 4.1 linux warning fixes.
2006-06-28 16:28:29 +03:00
unknown
0b235009e6 Bug#17877 - Corrupted spatial index
CHECK TABLE could complain about a fully intact spatial index.
A wrong comparison operator was used for table checking. 
The result was that it checked for non-matching spatial keys. 
This succeeded if at least two different keys were present, 
but failed if only the matching key was present.

I fixed the key comparison.


myisam/mi_check.c:
  Bug#17877 - Corrupted spatial index
  Fixed the comparison operator for checking a spatial index.
  Using MBR_EQUAL | MBR_DATA to compare for equality and
  include the data pointer in the comparison. The latter
  finds the index entry that points to the current record.
  This is necessary for non-unique indexes.
  
  The old operator, SEARCH_SAME, is unknown to the rtree
  search functions and handled like MBR_DISJOINT.
myisam/mi_key.c:
  Bug#17877 - Corrupted spatial index
  Added a missing DBUG_RETURN.
myisam/rt_index.c:
  Bug#17877 - Corrupted spatial index
  Included the data pointer in the copy of the search key.
  This is necessary for searching the index entry that points
  to a specific record if the search_flag contains MBR_DATA.
myisam/rt_mbr.c:
  Bug#17877 - Corrupted spatial index
  Extended the RT_CMP() macro with an assert for an 
  unexpected comparison operator.
mysql-test/r/gis-rtree.result:
  Bug#17877 - Corrupted spatial index
  The test result.
mysql-test/t/gis-rtree.test:
  Bug#17877 - Corrupted spatial index
  The test case.
2006-06-28 14:27:37 +02:00
unknown
07a0e614b9 Merge mysql.com:/home/stewart/Documents/MySQL/4.1/ndb
into  mysql.com:/home/stewart/Documents/MySQL/4.1/merge
2006-06-28 22:21:42 +10:00
unknown
a0837ecec4 BUG#19894 Data nodes fail during loading data if NoOfFragmentLogFiles=1
change default minimum to 3

bug is *very* timing dependent, unable to reproduce here, but theoretically possible.


ndb/src/mgmsrv/ConfigInfo.cpp:
  change minimum NoOfFragmentLogFiles to 3
2006-06-28 21:52:24 +10:00
unknown
9596ca0d7d Merge perch.ndb.mysql.com:/home/jonas/src/41-work
into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1
2006-06-28 08:39:34 +02:00
unknown
0f9725ad1f Bug#16180 Setting SQL_LOG_OFF without SUPER privilege is silently ignored
mysql-test/r/grant2.result:
  Added results for bug#16180
mysql-test/t/grant2.test:
  Added test for bug# 16180
sql/set_var.cc:
  Verify user has appropiate rights before setting the sql_log_off system variable.
2006-06-27 20:10:49 -04:00
unknown
7b064953d2 Bug#19298 mysqld_safe still uses obsolete --skip-locking parameter
configure.in:
  Replaced skip-locking with newer skip-external-locking option.  Removed extra quotes.
scripts/mysqld_safe-watch.sh:
  Replaced skip-locking with newer skip-external-locking option.
2006-06-27 18:07:23 -04:00
unknown
f4a07612ef BUG#1662 - ALTER TABLE LIKE ignores DATA/INDEX DIRECTPORY
Produce a warning if DATA/INDEX DIRECTORY is specified in
ALTER TABLE statement.

Ignoring of these options is documented in the symbolic links
section of the manual.


mysql-test/r/symlink.result:
  Modified test result according to fix for BUG#1662.
sql/sql_parse.cc:
  Produce a warning if DATA/INDEX DIRECTORY is specified in
  ALTER TABLE statement.
2006-06-27 22:22:43 +05:00
unknown
30b1d65856 Move "mysqldumpslow" from the client RPM to the server RPM (bug#20216),
manual merge from 4.0.


support-files/mysql.spec.sh:
  Manual merge of the fix for bug#20216.
  (became necessary because 4.0 and 4.1 spec files use different file sort order).
2006-06-27 18:36:41 +02:00
unknown
d8e9dd6110 Move "mysqldumpslow" from the client RPM to the server RPM (bug#20216). 2006-06-27 18:17:53 +02:00
unknown
2eb16be095 Merge mysql.com:/home/kgeorge/mysql/4.1/teamclean
into  mysql.com:/home/kgeorge/mysql/4.1/B16458
2006-06-27 18:47:22 +03:00
unknown
82d127b55b Dec. 31st, 9999 is still a valid date, only starting with Jan 1st 10000 things become invalid (Bug #12356)
mysql-test/r/func_sapdb.result:
  test cases for date range edge cases added
mysql-test/r/func_time.result:
  test cases for date range edge cases added
mysql-test/t/func_sapdb.test:
  test cases for date range edge cases added
mysql-test/t/func_time.test:
  test cases for date range edge cases added
2006-06-27 19:33:59 +04:00
unknown
4b36c1d8ff Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error
'SELECT DISTINCT a,b FROM t1' should not use temp table if there is unique 
index (or primary key) on a.
There are a number of other similar cases that can be calculated without the
use of a temp table : multi-part unique indexes, primary keys or using GROUP BY 
instead of DISTINCT.
When a GROUP BY/DISTINCT clause contains all key parts of a unique
index, then it is guaranteed that the fields of the clause will be
unique, therefore we can optimize away GROUP BY/DISTINCT altogether.
This optimization has two effects:
* there is no need to create a temporary table to compute the
   GROUP/DISTINCT operation (or the temporary table will be smaller if only GROUP 
   is removed and DISTINCT stays or if DISTINCT is removed and GROUP BY stays)
* this causes the statement in effect to become updatable in Connector/Java
because the result set columns will be direct reference to the primary key of 
the table (instead to the temporary table that it currently references). 

Implemented a check that will optimize away GROUP BY/DISTINCT for queries like 
the above.
Currently it will work only for single non-constant table in the FROM clause.


mysql-test/r/distinct.result:
  Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error
    - test case
mysql-test/t/distinct.test:
  Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error
    - test case
sql/sql_select.cc:
  Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error
    - disable GROUP BY if contains the fields of a unique index.
2006-06-27 17:40:19 +03:00
unknown
79952ec0d0 Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/hf/work/mysql-4.1.clean
2006-06-27 15:12:13 +05:00
unknown
16ce188ded Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent queries to fail
Very complex select statements can create temporary tables
that are too big to be represented as a MyISAM table.

This was not checked at table creation time, but only at
open time. The result was an attempt to delete the 
"impossible" table.

But if the server is built --with-raid, MyISAM tries to 
open the table before deleting the files. It needs to find 
out if the table uses the raid support and how many raid 
chunks there are. This is done with an open "for repair",
which will almost always succeed.

But in this case we have an "impossible" table. The open
failed. Hence the files were not deleted. Also the error
message was a bit unspecific.

I turned an open error in this situation into the assumption 
of having no raid support on the table. Thus the normal data 
file is tried to be deleted. This may however leave existing 
raid chunks behind.

I also added a check in mi_create() to prevent the creation
of an "impossible" table. A more decriptive error message is
given in this case.

No test case. The required select statement is way too
large for the test suite. I added a test script to the
bug report.


myisam/mi_create.c:
  Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent queries to fail
  Added a check to mi_create() that the table description
  header of the index file does not exceed 64KB. The header
  has only 16 bits to encode its length.
myisam/mi_delete_table.c:
  Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent queries to fail
  Interpret error in table open as not having a raid
  configuration on the tbale. Thus try to delete the
  normal data file, but leave behind raid chunks if 
  they exist.
2006-06-27 11:26:41 +02:00