Looks good. Approved.
--
Øystein
On 10/19/10 08:45 AM, Tor Didriksen wrote:
> #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)
>
>
>
>
>
--
Øystein Grøvlen, Senior Staff Engineer
Sun Microsystems, Database Group
Trondheim, Norway