diff options
author | unknown <anozdrin@mysql.com> | 2006-05-10 23:16:30 +0400 |
---|---|---|
committer | unknown <anozdrin@mysql.com> | 2006-05-10 23:16:30 +0400 |
commit | 24a0b385fb48f3d4ace7df12d7115c80d3f4b0be (patch) | |
tree | eee71724a8803bced338d450083b960c7efcab22 /sql/field_conv.cc | |
parent | 38447ae81ad2fc08f654fd4a759c6446f31f2026 (diff) | |
download | mariadb-git-24a0b385fb48f3d4ace7df12d7115c80d3f4b0be.tar.gz |
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.
Diffstat (limited to 'sql/field_conv.cc')
-rw-r--r-- | sql/field_conv.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sql/field_conv.cc b/sql/field_conv.cc index 895f022624c..4e977c06180 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -642,7 +642,8 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*) void field_conv(Field *to,Field *from) { - if (to->real_type() == from->real_type()) + if (to->real_type() == from->real_type() && + !(to->type() == FIELD_TYPE_BLOB && to->table->copy_blobs)) { if (to->pack_length() == from->pack_length() && !(to->flags & UNSIGNED_FLAG && !(from->flags & UNSIGNED_FLAG)) && |