Commit graph

11543 commits

Author SHA1 Message Date
unknown
29cdc47ecd Merge polly.(none):/home/kaa/src/opt/bug28837/my50-bug29131
into  polly.(none):/home/kaa/src/opt/mysql-5.0-opt


sql/ha_myisam.cc:
  Auto merged
mysql-test/r/merge.result:
  Manual merge.
mysql-test/r/myisam.result:
  Manual merge.
mysql-test/t/merge.test:
  Manual merge.
mysql-test/t/myisam.test:
  Manual merge.
2007-11-26 19:35:08 +03:00
unknown
67bf39f241 Fix for bug #28837: MyISAM storage engine error (134) doing delete with
self-join

When doing DELETE with self-join on a MyISAM or MERGE table, it could
happen that a record being retrieved in join_read_next_same() has
already been deleted by previous iterations. That caused the engine's
index_next_same() method to fail with HA_ERR_RECORD_DELETED error and
the whole DELETE query to be aborted with an error.

Fixed by suppressing the HA_ERR_RECORD_DELETED error in
hy_myisam::index_next_same() and ha_myisammrg::index_next_same(). Since
HA_ERR_RECORD_DELETED can only be returned by MyISAM, there is no point
in filtering this error in the SQL layer.


mysql-test/r/merge.result:
  Added a test case for bug #28837.
mysql-test/r/myisam.result:
  Added a test case for bug #28837.
mysql-test/t/merge.test:
  Added a test case for bug #28837.
mysql-test/t/myisam.test:
  Added a test case for bug #28837.
sql/ha_myisam.cc:
  Skip HA_ERR_RECORD_DELETED silently when calling mi_rnext_same().
sql/ha_myisammrg.cc:
  Skip HA_ERR_RECORD_DELETED silently when calling mi_rnext_same().
2007-11-26 18:58:54 +03:00
unknown
c81eb57b92 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B32036-5.0-opt
2007-11-26 15:57:47 +02:00
unknown
cf84ca46ba Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B32036-5.0-opt


mysql-test/r/subselect.result:
  merge of fix for bug 32036 to 5.0-opt
mysql-test/t/subselect.test:
  merge of fix for bug 32036 to 5.0-opt
2007-11-26 14:02:02 +02:00
unknown
f3f9855d13 Bug #32036: EXISTS within a WHERE clause with a UNION
crashes MySQL 5.122
There was a difference in how UNIONs are handled
on top level and when in sub-query.
Because the rules for sub-queries were syntactically
allowing cases that are not currently supported by
the server we had crashes (this bug) or wrong results
(bug 32051).
Fixed by making the syntax rules for UNIONs match the 
ones at top level.

These rules however do not support nesting UNIONs, e.g.
(SELECT a FROM t1 UNION ALL SELECT b FROM t2) 
 UNION
(SELECT c FROM t3 UNION ALL SELECT d FROM t4)
Supports for statements with nested UNIONs will be
added in a future version.


mysql-test/r/subselect.result:
  Bug #32036: test case
mysql-test/t/subselect.test:
  Bug #32036: test case
sql/sql_yacc.yy:
  Bug #32036: Make the syntax rules for UNIONs in subqueries the same
  as for top level UNIONs.
2007-11-26 13:36:24 +02:00
unknown
8fd43262dc Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B32268-5.0-opt


sql/sql_select.cc:
  Auto merged
2007-11-26 13:35:38 +02:00
unknown
c58de28410 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/30284/my50-30284


mysql-test/r/gis.result:
  merging
mysql-test/t/gis.test:
  merging
2007-11-24 15:02:29 +04:00
unknown
e4dc9a8e6e merging fix
mysql-test/r/gis.result:
  result fixed
mysql-test/t/gis.test:
  test fixed
2007-11-24 14:57:09 +04:00
unknown
d04f74b775 Merge mysql.com:/home/hf/work/30284/my41-30284
into  mysql.com:/home/hf/work/30284/my50-30284


myisam/mi_check.c:
  Auto merged
mysql-test/t/gis.test:
  Auto merged
mysql-test/r/gis.result:
  SCCS merged
2007-11-24 14:47:32 +04:00
unknown
10c1aa796a Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B32400-5.0-opt


tests/mysql_client_test.c:
  Auto merged
mysql-test/r/subselect.result:
  SCCS merged
mysql-test/t/subselect.test:
  SCCS merged
2007-11-23 15:30:16 +02:00
unknown
a197c4e95d opt_range.cc:
Fix for the bug#31048 for 64bit platforms.
subselect.test, subselect.result:
  Corrected text case for the bug#31048.


mysql-test/t/subselect.test:
  Corrected text case for the bug#31048.
mysql-test/r/subselect.result:
  Corrected text case for the bug#31048.
sql/opt_range.cc:
  Fix for the bug#31048 for 64bit platforms.
2007-11-23 00:16:17 +03:00
unknown
a7c04594b8 Fixed bug #32556: assert in "using index for group-by" :
is_last_prefix <= 0, file .\opt_range.cc.

SELECT ... GROUP BY bit field failed with an assertion if the
bit length of that field was not divisible by 8.



sql/key.cc:
  Fixed bug #32556.
  Copying of "uneven" bits of a bit field was duplicated in the
  key_copy() and in the Field_bit::get_key_image().
  So, instead of copying of the rest of a bit field, 
  Field_bit::get_key_image() copied "uneven" bits to key image again,
  and the lowest field byte was not copied to key at all.
  
  Duplicated code has been removed from the key_copy function.
mysql-test/t/type_bit.test:
  Added test case for bug #32556.
mysql-test/r/type_bit.result:
  Added test case for bug #32556.
2007-11-21 22:56:42 +04:00
unknown
bb3e878159 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B30788-5.0-opt


sql/item.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
mysql-test/r/subselect.result:
  merge of 5.0-opt
mysql-test/t/subselect.test:
  merge of 5.0-opt
2007-11-21 11:46:15 +02:00
unknown
e9832ceeac Bug #30788: Inconsistent retrieval of char/varchar
Index lookup does not always guarantee that we can
simply remove the relevant conditions from the WHERE
clause. Reasons can be e.g. conversion errors, 
partial indexes etc. 
The optimizer was removing these parts of the WHERE 
condition without any further checking.
This leads to "false positives" when using indexes.
Fixed by checking the index reference conditions
(using WHERE) when using indexes with sub-queries.


mysql-test/r/subselect.result:
  Bug #30788: 
   - using where
   - test case
mysql-test/r/subselect3.result:
  Bug #30788: using where
mysql-test/t/subselect.test:
  Bug #30788: test case
sql/item.h:
  Bug #30788: 
   - Declare eq() method of Item_cache descendants : this is used in
   test_if_ref()
   - preserve the field that is being cached for type comparisions
sql/sql_select.cc:
  Bug #30788: Don't remove the WHERE when using index lookup 
  with subqueries.
2007-11-21 11:40:05 +02:00
unknown
870d46819e Bug #32400: Complex SELECT query returns correct result
only on some occasions

Referencing an element from the SELECT list in a WHERE 
clause is not permitted. The namespace of the WHERE
clause is the table columns only. This was not enforced
correctly when resolving outer references in sub-queries.

Fixed by not allowing references to aliases in a 
sub-query in WHERE.


mysql-test/include/ps_query.inc:
  Bug #32400: fixed old test queries
mysql-test/r/ps_2myisam.result:
  Bug #32400: fixed old test queries
mysql-test/r/ps_3innodb.result:
  Bug #32400: fixed old test queries
mysql-test/r/ps_4heap.result:
  Bug #32400: fixed old test queries
mysql-test/r/ps_5merge.result:
  Bug #32400: fixed old test queries
mysql-test/r/ps_6bdb.result:
  Bug #32400: fixed old test queries
mysql-test/r/ps_7ndb.result:
  Bug #32400: fixed old test queries
mysql-test/r/subselect.result:
  Bug #32400: test case
mysql-test/t/subselect.test:
  Bug #32400: test case
sql/item.cc:
  Bug #32400: don't allow references to aliases in WHERE
tests/mysql_client_test.c:
  Bug #32400: fixed old test queries
2007-11-20 19:18:21 +02:00
unknown
2fd89a7239 Merge gleb.loc:/work/bk/5.0-opt-32533
into  gleb.loc:/work/bk/5.0-opt
2007-11-20 20:46:30 +04:00
unknown
0a91f285ad Fixed bug #32533.
8bit escape characters, termination and enclosed characters
were silently ignored by SELECT INTO query, but LOAD DATA INFILE
algorithm is 8bit-clean, so data was corrupted during 
encoding.


sql/sql_class.cc:
  Fixed bug #32533.
  SELECT INTO OUTFILE encoding was not 8bit clear, it
  has been fixed for a symmetry with the LOAD DATA INFILE
  decoding algorithm.
mysql-test/t/outfile_loaddata.test:
  Added test case for bug #32533.
mysql-test/r/outfile_loaddata.result:
  Added test case for bug #32533.
2007-11-20 20:15:20 +04:00
unknown
429abc5845 Bug #32268: Indexed queries give bogus MIN and MAX results
Loose index scan does the grouping so the temp table does 
not need to do it, even when sorting.
Fixed by checking if the grouping is already done before
doing sorting and grouping in a temp table and do only 
sorting.


mysql-test/r/group_min_max.result:
  Bug #32268: test case
mysql-test/t/group_min_max.test:
  Bug #32268: test case
sql/sql_select.cc:
  Bug #32268: don't group in the temp table if already done
2007-11-20 16:07:24 +02:00
unknown
a8dd1299cc test case added for the bug #31155
mysql-test/r/gis.result:
  test result complete
mysql-test/t/gis.test:
  test case added for the bug
2007-11-20 17:04:24 +04:00
unknown
b3347a6a98 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/work/31048-bug-5.0-opt-mysql


sql/item_subselect.cc:
  Auto merged
mysql-test/r/subselect.result:
  Manual merge
mysql-test/t/subselect.test:
  Manual merge
2007-11-19 21:15:53 +00:00
unknown
13105534fa Bug#31048: Many nested subqueries may cause server crash.
This bug is actually two. The first one manifests itself on an EXPLAIN
SELECT query with nested subqueries that employs the filesort algorithm.
The whole SELECT under explain is marked as UNCACHEABLE_EXPLAIN to preserve
some temporary structures for explain. As a side-effect of this values of
nested subqueries weren't cached and subqueries were re-evaluated many
times. Each time buffer for filesort was allocated but wasn't freed because
freeing occurs at the end of topmost SELECT. Thus all available memory was
eaten up step by step and OOM event occur.
The second bug manifests itself on SELECT queries with conditions where
a subquery result is compared with a key field and the subquery itself also
has such condition. When a long chain of such nested subqueries is present
the stack overrun occur. This happens because at some point the range optimizer
temporary puts the PARAM structure on the stack. Its size if about 8K and
the stack is exhausted very fast.

Now the subselect_single_select_engine::exec function allows subquery result
caching when the UNCACHEABLE_EXPLAIN flag is set.
Now the SQL_SELECT::test_quick_select function calls the check_stack_overrun
function for stack checking purposes to prevent server crash.


mysql-test/t/subselect.test:
  Added a test case for the bug#31048: Many nested subqueries may cause server crash.
mysql-test/r/subselect.result:
  Added a test case for the bug#31048: Many nested subqueries may cause server crash.
sql/opt_range.cc:
  Bug#31048: Many nested subqueries may cause server crash.
  Now the SQL_SELECT::test_quick_select function calls the check_stack_overrun
  function for stack checking purposes to preven server crash.
sql/item_subselect.cc:
  Bug31048: Many nested subqueries may cause server crash.
  Now the subselect_single_select_engine::exec function allows subquery result
  caching when the UNCACHEABLE_EXPLAIN flag is set.
2007-11-19 20:00:25 +00:00
unknown
ea73989828 Fixed bug #32282: TEXT silently truncates when value is exactly 65536
bytes length.

The server has been modified to report warnings on truncation to
65536 bytes as usual.



sql/sql_string.cc:
  Fixed bug #32282.
  The well_formed_copy_nchars function returned an incorrect value
  of copied bytes of the truncated input string: extra length of
  the first truncated character added to the *from_end_pos pointer.
  That has been fixed.
mysql-test/r/type_blob.result:
  Added test case for bug #32282.
mysql-test/t/type_blob.test:
  Added test case for bug #32282.
2007-11-19 21:34:21 +04:00
unknown
da1efa3387 Bug #30284 spatial key corruption.
SPATIAL key is fine actually, but the chk_key() function
mistakenly returns error. It tries to compare checksums
of btree and SPATIAL keys while the checksum for the SPATIAL isn't
calculated (always 0). Same thing with FULLTEXT keys is handled
using full_text_keys counter, so fixed by counting both
SPATIAL and FULLTEXT keys in that counter.


myisam/mi_check.c:
  Bug #30284 spatial key corruption
  
  full_text_keys counts both FULL_TEXT and SPATIAL keys
mysql-test/r/gis.result:
  Bug #30284 spatial key corruption
  
  test result
mysql-test/t/gis.test:
  Bug #30284 spatial key corruption.
  
  test case
2007-11-19 11:03:03 +04:00
unknown
f978c7cd86 Merge gleb.loc:/work/bk/5.0-opt-32335
into  gleb.loc:/work/bk/5.0-opt
2007-11-18 00:08:41 +04:00
unknown
99054db64c Fixed bug #32335.
Comparison of a BIGINT NOT NULL column with a constant arithmetic
expression that evaluates to NULL caused error 1048: "Column '...'
cannot be null".

Made convert_constant_item() check if the constant expression is NULL
before attempting to store it in a field. Attempts to store NULL in a
NOT NULL field caused query errors.


sql/item_cmpfunc.cc:
  Fixed bug #32335.
  1. Made convert_constant_item() check if the constant expression is NULL
     before attempting to store it in a field. Attempts to store NULL in
     a NOT NULL field caused query errors.
  
  2. Also minor bug has been fixed: the thd->count_cuted_fields value
     was not restored in case of successful conversion.
mysql-test/t/select.test:
  Added test case for bug #32335.
mysql-test/r/select.result:
  Added test case for bug #32335.
2007-11-18 00:02:55 +04:00
unknown
dd07707b0c Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/31158/my50-31158


sql/field.cc:
  Auto merged
2007-11-17 20:23:15 +04:00
unknown
8a8d634b23 merging 2007-11-17 17:11:05 +04:00
unknown
75b8713b48 Merge mysql.com:/home/hf/work/31158/my41-31158
into  mysql.com:/home/hf/work/31158/my50-31158


mysql-test/t/gis.test:
  Auto merged
sql/field.h:
  Auto merged
sql/item_geofunc.cc:
  Auto merged
mysql-test/r/gis.result:
  merging
sql/field.cc:
  merging
2007-11-17 16:48:57 +04:00
unknown
4b48eb6f1e Merge polly.(none):/home/kaa/src/opt/bug32241/my50-bug29131
into  polly.(none):/home/kaa/src/opt/mysql-5.0-opt


sql/sql_select.cc:
  Auto merged
2007-11-16 14:24:06 +03:00
unknown
1c1dd1f25c Fix for bug #32241: memory corruption due to large index map in 'Range
checked for each record'

The problem was in incorrectly calculated length of the buffer used to
store a hexadecimal representation of an index map in
select_describe(). This could result in buffer overrun and stack
corruption under some circumstances.

Fixed by correcting the calculation.


mysql-test/r/explain.result:
  Added a test case for bug #32241.
mysql-test/t/explain.test:
  Added a test case for bug #32241.
sql/sql_select.cc:
  Corrected the buffer length calculation. Count one hex digit as 4 bits,
  not 8.
2007-11-16 13:58:09 +03:00
unknown
dbd0f06981 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B31928-5.0-opt


mysql-test/r/type_date.result:
  Auto merged
mysql-test/t/type_date.test:
  Auto merged
2007-11-15 17:30:08 +02:00
unknown
bed60e0175 Merge mysql.com:/home/gluh/MySQL/Merge/5.0
into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt


mysql-test/t/subselect.test:
  Auto merged
mysql-test/t/variables.test:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
mysql-test/r/select.result:
  manual merge
mysql-test/t/select.test:
  manual merge
2007-11-14 17:26:22 +04:00
unknown
2e01bfc4f4 Merge mysql.com:/home/gluh/MySQL/Merge/4.1
into  mysql.com:/home/gluh/MySQL/Merge/4.1-opt
2007-11-14 17:22:03 +04:00
unknown
c07ae79662 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/31305/my50-31305
2007-11-13 23:13:59 +04:00
unknown
9248b402d8 Merge bk@192.168.21.1:mysql-4.1-opt
into  mysql.com:/home/hf/work/31305/my41-31305
2007-11-13 23:12:55 +04:00
unknown
4bc635e2f1 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B31562-5.0-opt


sql/item.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-11-13 19:00:45 +02:00
unknown
170ae2d252 Bug #31562: HAVING and lower case
The columns in HAVING can reference the GROUP BY and 
SELECT columns. There can be "table" prefixes when
referencing these columns. And these "table" prefixes
in HAVING use the table alias if available.
This means that table aliases are subject to the same
storage rules as table names and are dependent on 
lower_case_table_names in the same way as the table 
names are.
Fixed by :
1. Treating table aliases as table names
and make them lowercase when printing out the SQL
statement for view persistence.
2. Using case insensitive comparison for table 
aliases when requested by lower_case_table_names


mysql-test/r/lowercase_view.result:
  Bug #31562: test case
mysql-test/t/lowercase_view.test:
  Bug #31562: test case
sql/item.cc:
  Bug #31562: lower_case_table_name contious comparison
  when searching in GROUP BY
sql/sql_base.cc:
  Bug #31562: lower_case_table_name contious comparison
  when searching in SELECT
sql/sql_select.cc:
  Bug #31562: treat table aliases as table names
  and make them lowercase when printing
2007-11-13 11:39:52 +02:00
unknown
eb347921b7 Bug #31158 Spatial, Union, LONGBLOB vs BLOB bug (crops data)
max_length parameter for BLOB-returning functions must be big enough
for any possible content. Otherwise the field created for a table
will be too small.


mysql-test/r/gis.result:
  Bug #31158  Spatial, Union, LONGBLOB vs BLOB bug (crops data)
  
  test result
mysql-test/t/gis.test:
  Bug #31158  Spatial, Union, LONGBLOB vs BLOB bug (crops data)
  
  test case
sql/field.cc:
  Bug #31158  Spatial, Union, LONGBLOB vs BLOB bug (crops data)
  
  max_field_size used instead of numeric value
sql/field.h:
  Bug #31158  Spatial, Union, LONGBLOB vs BLOB bug (crops data)
  
  max_field_size constant defined
sql/item_geofunc.cc:
  Bug #31158  Spatial, Union, LONGBLOB vs BLOB bug (crops data)
  
  max_length parameter fixed
2007-11-13 10:51:47 +04:00
unknown
001c78e29e Merge mattiasj@bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  mattiasj-laptop.(none):/home/mattiasj/clones/mysql-5.0-engines_with_main
2007-11-12 22:47:48 +01:00
unknown
53907ce85f Merge mattiasj-laptop.(none):/home/mattiasj/clones/mysql-5.0-main
into  mattiasj-laptop.(none):/home/mattiasj/clones/mysql-5.0-engines_with_main
2007-11-12 21:42:27 +01:00
unknown
2aa5037c7a Merge mysql.com:/home/svoj/devel/mysql/BUG32111/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG32111/mysql-5.0-engines


mysql-test/r/symlink.result:
  Auto merged
mysql-test/t/symlink.test:
  Auto merged
2007-11-12 21:54:04 +04:00
unknown
9f9ff46120 symlink.test, symlink.result:
Use proper variable for test.


mysql-test/t/symlink.test:
  Use proper variable for test.
mysql-test/r/symlink.result:
  Use proper variable for test.
2007-11-12 21:52:30 +04:00
unknown
c63fd4dd32 Merge mysql.com:/home/svoj/devel/mysql/BUG32111/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG32111/mysql-5.0-engines


mysql-test/r/symlink.result:
  Auto merged
mysql-test/t/symlink.test:
  Auto merged
mysys/my_symlink2.c:
  Auto merged
2007-11-12 15:16:00 +04:00
unknown
88701b45a9 After merge fix. 2007-11-12 15:15:16 +04:00
unknown
a1e38552bb Merge mysql.com:/home/svoj/devel/mysql/BUG32111/mysql-4.0
into  mysql.com:/home/svoj/devel/mysql/BUG32111/mysql-4.1-engines


mysys/my_symlink2.c:
  Auto merged
mysql-test/r/symlink.result:
  SCCS merged
mysql-test/t/symlink.test:
  SCCS merged
2007-11-12 15:02:42 +04:00
unknown
26ebe887c4 Merge polly.(none):/home/kaa/src/opt/bug30666/my50-bug29131
into  polly.(none):/home/kaa/src/opt/mysql-5.0-opt


sql/sql_select.cc:
  Auto merged
mysql-test/r/select.result:
  Manual merge.
mysql-test/t/select.test:
  Manual merge.
2007-11-12 12:29:20 +03:00
unknown
04e51e2447 Merge mysql.com:/home/hf/work/31305/my41-31305
into  mysql.com:/home/hf/work/31305/my50-31305


BitKeeper/etc/ignore:
  auto-union
myisam/mi_dynrec.c:
  Auto merged
2007-11-12 13:06:27 +04:00
unknown
cb927e2f45 Bug #31305 myisam tables crash when they are near capacity.
When we insert a record into MYISAM table which is almost 'full',
we first write record data in the free space inside a file, and then
check if we have enough space after the end of the file.
So if we don't have the space, table will left corrupted.
Similar error also happens when we updata MYISAM tables.

Fixed by modifying write_dynamic_record and update_dynamic_record functions
to check for free space before writing parts of a record


BitKeeper/etc/ignore:
  Added libmysql_r/client_settings.h libmysqld/ha_blackhole.cc to the ignore list
myisam/mi_dynrec.c:
  Bug #31305 myisam tables crash when they are near capacity.
  
  now we check space left in table in write_dynamic_record
  and update_dynamic_record functions.
  If we don't have enough room for the new (updated) record, return with the
  error.
mysql-test/r/almost_full.result:
  New BitKeeper file ``mysql-test/r/almost_full.result''
mysql-test/t/almost_full.test:
  New BitKeeper file ``mysql-test/t/almost_full.test''
2007-11-12 13:00:22 +04:00
unknown
7e71e24c38 Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-11-11 00:01:24 +04:00
unknown
747cb198b6 Merge gleb.loc:/home/uchum/work/bk/5.0-opt-28076
into  gleb.loc:/home/uchum/work/bk/5.0-opt


sql/item_cmpfunc.cc:
  Auto merged
2007-11-10 23:58:22 +04:00