summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2006-04-20 00:42:12 -0700
committerunknown <igor@rurik.mysql.com>2006-04-20 00:42:12 -0700
commitb30d80e826cfe4925e381ab79e7342e0a5486e94 (patch)
treea71191d4453a2d4235cc3a616d5e9556bc54acd0
parent0775a7122250c8cf9d8e61dcd24ea0a17921a387 (diff)
downloadmariadb-git-b30d80e826cfe4925e381ab79e7342e0a5486e94.tar.gz
Post merge fix
-rw-r--r--mysql-test/r/func_gconcat.result2
-rw-r--r--sql/item_func.cc5
-rw-r--r--sql/item_sum.cc4
-rw-r--r--sql/item_sum.h4
-rw-r--r--sql/sql_select.cc19
5 files changed, 12 insertions, 22 deletions
diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result
index 9ff41cc0b52..d8a539da3fe 100644
--- a/mysql-test/r/func_gconcat.result
+++ b/mysql-test/r/func_gconcat.result
@@ -616,7 +616,7 @@ insert into t1 values (1,repeat('a',255)),(2,repeat('b',255));
select f2,group_concat(f1) from t1 group by f2;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 t1 f2 f2 253 255 255 Y 0 0 8
-def group_concat(f1) 252 400 1 Y 128 0 63
+def group_concat(f1) 253 400 1 Y 128 0 63
f2 group_concat(f1)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 2
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 56409a329f1..4bdb62c6e7a 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -380,10 +380,7 @@ Field *Item_func::tmp_table_field(TABLE *t_arg)
res= new Field_double(max_length, maybe_null, name, t_arg, decimals);
break;
case STRING_RESULT:
- if (max_length/collation.collation->mbmaxlen > CONVERT_IF_BIGGER_TO_BLOB)
- res= new Field_blob(max_length, maybe_null, name, t_arg, collation.collation);
- else
- res= new Field_string(max_length, maybe_null, name, t_arg, collation.collation);
+ res= make_string_field(t_arg);
break;
case DECIMAL_RESULT:
res= new Field_new_decimal(my_decimal_precision_to_length(decimal_precision(),
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index 8826144266e..962454e237e 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -377,12 +377,12 @@ Field *Item_sum::create_tmp_field(bool group, TABLE *table,
case INT_RESULT:
return new Field_longlong(max_length,maybe_null,name,table,unsigned_flag);
case STRING_RESULT:
- if (max_length > 255 && convert_blob_length)
+ if (max_length/collation.collation->mbmaxlen > 255 && convert_blob_length)
return new Field_varstring(convert_blob_length, maybe_null,
name, table,
collation.collation);
return make_string_field(table);
- case DECIMAL_RESULT:
+case DECIMAL_RESULT:
return new Field_new_decimal(max_length, maybe_null, name, table,
decimals, unsigned_flag);
case ROW_RESULT:
diff --git a/sql/item_sum.h b/sql/item_sum.h
index 77b6ac57e79..f4ff257aa4e 100644
--- a/sql/item_sum.h
+++ b/sql/item_sum.h
@@ -1121,10 +1121,10 @@ public:
virtual Item_result result_type () const { return STRING_RESULT; }
enum_field_types field_type() const
{
- if (max_length/collation.collation->mbmaxlen > CONVERT_IF_BIGGER_TO_BLOB)
+ if (max_length/collation.collation->mbmaxlen > CONVERT_IF_BIGGER_TO_BLOB )
return FIELD_TYPE_BLOB;
else
- return MYSQL_TYPE_VAR_STRING;
+ return MYSQL_TYPE_VARCHAR;
}
void clear();
bool add();
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 5b796aeb4c1..0211539e784 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -8245,20 +8245,13 @@ static Field *create_tmp_field_from_item(THD *thd, Item *item, TABLE *table,
if ((type= item->field_type()) == MYSQL_TYPE_DATETIME ||
type == MYSQL_TYPE_TIME || type == MYSQL_TYPE_DATE)
new_field= item->tmp_table_field_from_field_type(table);
- else if (item->max_length/item->collation.collation->mbmaxlen >
- CONVERT_IF_BIGGER_TO_BLOB)
- {
- if (convert_blob_length)
- new_field= new Field_varstring(convert_blob_length, maybe_null,
- item->name, table,
- item->collation.collation);
- else
- new_field= new Field_blob(item->max_length, maybe_null, item->name,
- table, item->collation.collation);
- }
+ else if (item->max_length/item->collation.collation->mbmaxlen > 255 &&
+ convert_blob_length)
+ new_field= new Field_varstring(convert_blob_length, maybe_null,
+ item->name, table,
+ item->collation.collation);
else
- new_field= new Field_string(item->max_length, maybe_null, item->name,
- table, item->collation.collation);
+ new_field= item->make_string_field(table);
break;
case DECIMAL_RESULT:
new_field= new Field_new_decimal(item->max_length, maybe_null, item->name,