#At file:///export/home/didrik/repo/5.5-bugteam-bug57203/ based on revid:davi.arnaut@stripped
3251 Tor Didriksen 2010-10-19
Bug #57203 Assertion `field_length <= 255' failed.
After the fix for
Bug #55077 Assertion failed: width > 0 && to != ((void *)0), file .\dtoa.c
we no longer try to allocate a string of length 'field_length'
so the asserts are relevant only for ZEROFILL columns.
@ mysql-test/r/select.result
Add test case for Bug#57203
@ mysql-test/t/select.test
Add test case for Bug#57203
@ sql/field.cc
Rewrite the DBUG_ASSERTS on field_length.
modified:
mysql-test/r/select.result
mysql-test/t/select.test
sql/field.cc
=== modified file 'mysql-test/r/select.result'
--- a/mysql-test/r/select.result 2010-09-28 15:15:58 +0000
+++ b/mysql-test/r/select.result 2010-10-19 06:45:18 +0000
@@ -4887,3 +4887,22 @@ col_int_key
DROP VIEW view_t1;
DROP TABLE t1;
# End of test BUG#54515
+#
+# Bug #57203 Assertion `field_length <= 255' failed.
+#
+SELECT coalesce((avg(distinct (geomfromtext("point(25379 -22010)")))))
+UNION ALL
+SELECT coalesce((avg(distinct (geomfromtext("point(25379 -22010)")))))
+AS foo
+;
+coalesce((avg(distinct (geomfromtext("point(25379 -22010)")))))
+0.0000
+0.0000
+CREATE table t1(a text);
+INSERT INTO t1 VALUES (''), ('');
+SELECT avg(distinct(t1.a)) FROM t1, t1 t2
+GROUP BY t2.a ORDER BY t1.a;
+avg(distinct(t1.a))
+0
+DROP TABLE t1;
+# End of test BUG#57203
=== modified file 'mysql-test/t/select.test'
--- a/mysql-test/t/select.test 2010-09-09 15:00:33 +0000
+++ b/mysql-test/t/select.test 2010-10-19 06:45:18 +0000
@@ -4147,3 +4147,22 @@ DROP VIEW view_t1;
DROP TABLE t1;
--echo # End of test BUG#54515
+
+--echo #
+--echo # Bug #57203 Assertion `field_length <= 255' failed.
+--echo #
+
+SELECT coalesce((avg(distinct (geomfromtext("point(25379 -22010)")))))
+UNION ALL
+SELECT coalesce((avg(distinct (geomfromtext("point(25379 -22010)")))))
+AS foo
+;
+
+CREATE table t1(a text);
+INSERT INTO t1 VALUES (''), ('');
+SELECT avg(distinct(t1.a)) FROM t1, t1 t2
+GROUP BY t2.a ORDER BY t1.a;
+
+DROP TABLE t1;
+
+--echo # End of test BUG#57203
=== modified file 'sql/field.cc'
--- a/sql/field.cc 2010-09-29 14:26:32 +0000
+++ b/sql/field.cc 2010-10-19 06:45:18 +0000
@@ -4189,7 +4189,7 @@ String *Field_float::val_str(String *val
String *val_ptr __attribute__((unused)))
{
ASSERT_COLUMN_MARKED_FOR_READ;
- DBUG_ASSERT(field_length <= MAX_FIELD_CHARLENGTH);
+ DBUG_ASSERT(!zerofill || field_length <= MAX_FIELD_CHARLENGTH);
float nr;
#ifdef WORDS_BIGENDIAN
if (table->s->db_low_byte_first)
@@ -4512,7 +4512,7 @@ String *Field_double::val_str(String *va
String *val_ptr __attribute__((unused)))
{
ASSERT_COLUMN_MARKED_FOR_READ;
- DBUG_ASSERT(field_length <= MAX_FIELD_CHARLENGTH);
+ DBUG_ASSERT(!zerofill || field_length <= MAX_FIELD_CHARLENGTH);
double nr;
#ifdef WORDS_BIGENDIAN
if (table->s->db_low_byte_first)
Attachment: [text/bzr-bundle] bzr/tor.didriksen@oracle.com-20101019064518-wd3027xobmdnfv4w.bundle