Loading sql/item_sum.h +7 −0 Original line number Diff line number Diff line Loading @@ -1116,6 +1116,13 @@ class Item_func_group_concat : public Item_sum enum Sumfunctype sum_func () const {return GROUP_CONCAT_FUNC;} const char *func_name() const { return "group_concat"; } 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) return FIELD_TYPE_BLOB; else return MYSQL_TYPE_VARCHAR; } void clear(); bool add(); void reset_field() { DBUG_ASSERT(0); } // not used Loading tests/mysql_client_test.c +35 −0 Original line number Diff line number Diff line Loading @@ -14841,6 +14841,40 @@ static void test_bug15613() } /* Bug#14169: type of group_concat() result changed to blob if tmp_table was used */ static void test_bug14169() { MYSQL_STMT *stmt; const char *stmt_text; MYSQL_RES *res; MYSQL_FIELD *field; int rc; myheader("test_bug14169"); rc= mysql_query(mysql, "drop table if exists t1"); myquery(rc); rc= mysql_query(mysql, "set session group_concat_max_len=1024"); myquery(rc); rc= mysql_query(mysql, "create table t1 (f1 int unsigned, f2 varchar(255))"); myquery(rc); rc= mysql_query(mysql, "insert into t1 values (1,repeat('a',255))," "(2,repeat('b',255))"); myquery(rc); stmt= mysql_stmt_init(mysql); stmt_text= "select f2,group_concat(f1) from t1 group by f2"; rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text)); myquery(rc); res= mysql_stmt_result_metadata(stmt); field= mysql_fetch_fields(res); if (!opt_silent) printf("GROUP_CONCAT() result type %i", field[1].type); DIE_UNLESS(field[1].type == MYSQL_TYPE_BLOB); rc= mysql_query(mysql, "drop table t1"); myquery(rc); }/* Read and parse arguments and MySQL options from my.cnf */ Loading Loading @@ -15105,6 +15139,7 @@ static struct my_tests_st my_tests[]= { { "test_bug16143", test_bug16143 }, { "test_bug16144", test_bug16144 }, { "test_bug15613", test_bug15613 }, { "test_bug14169", test_bug14169 }, { 0, 0 } }; Loading Loading
sql/item_sum.h +7 −0 Original line number Diff line number Diff line Loading @@ -1116,6 +1116,13 @@ class Item_func_group_concat : public Item_sum enum Sumfunctype sum_func () const {return GROUP_CONCAT_FUNC;} const char *func_name() const { return "group_concat"; } 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) return FIELD_TYPE_BLOB; else return MYSQL_TYPE_VARCHAR; } void clear(); bool add(); void reset_field() { DBUG_ASSERT(0); } // not used Loading
tests/mysql_client_test.c +35 −0 Original line number Diff line number Diff line Loading @@ -14841,6 +14841,40 @@ static void test_bug15613() } /* Bug#14169: type of group_concat() result changed to blob if tmp_table was used */ static void test_bug14169() { MYSQL_STMT *stmt; const char *stmt_text; MYSQL_RES *res; MYSQL_FIELD *field; int rc; myheader("test_bug14169"); rc= mysql_query(mysql, "drop table if exists t1"); myquery(rc); rc= mysql_query(mysql, "set session group_concat_max_len=1024"); myquery(rc); rc= mysql_query(mysql, "create table t1 (f1 int unsigned, f2 varchar(255))"); myquery(rc); rc= mysql_query(mysql, "insert into t1 values (1,repeat('a',255))," "(2,repeat('b',255))"); myquery(rc); stmt= mysql_stmt_init(mysql); stmt_text= "select f2,group_concat(f1) from t1 group by f2"; rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text)); myquery(rc); res= mysql_stmt_result_metadata(stmt); field= mysql_fetch_fields(res); if (!opt_silent) printf("GROUP_CONCAT() result type %i", field[1].type); DIE_UNLESS(field[1].type == MYSQL_TYPE_BLOB); rc= mysql_query(mysql, "drop table t1"); myquery(rc); }/* Read and parse arguments and MySQL options from my.cnf */ Loading Loading @@ -15105,6 +15139,7 @@ static struct my_tests_st my_tests[]= { { "test_bug16143", test_bug16143 }, { "test_bug16144", test_bug16144 }, { "test_bug15613", test_bug15613 }, { "test_bug14169", test_bug14169 }, { 0, 0 } }; Loading