mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Add column names for metadata when running mysql with -T
Change metadata info so that that MIN() and code MAX() reports that they can return NULL. Bug #324 client/mysql.cc: Add column names for metadata when running with -T mysql-test/r/show_check.result: test case for bug fix mysql-test/t/show_check.test: test case for bug fix sql/item_sum.cc: Change metadata info so that that MIN() and code MAX() reports that they can return NULL. Bug #324 sql/sql_load.cc: Removed not needed line
This commit is contained in:
@ -1580,11 +1580,12 @@ print_field_types(MYSQL_RES *result)
|
|||||||
MYSQL_FIELD *field;
|
MYSQL_FIELD *field;
|
||||||
while ((field = mysql_fetch_field(result)))
|
while ((field = mysql_fetch_field(result)))
|
||||||
{
|
{
|
||||||
tee_fprintf(PAGER,"%s '%s' %d %d %d %d %d\n",
|
tee_fprintf(PAGER,"Name: '%s'\nTable: '%s'\nType: %d\nLength: %d\nMax length: %d\nIs_null: %d\nFlags: %d\nDecimals: %d\n\n",
|
||||||
field->name,
|
field->name,
|
||||||
field->table ? "" : field->table,
|
field->table ? "" : field->table,
|
||||||
(int) field->type,
|
(int) field->type,
|
||||||
field->length, field->max_length,
|
field->length, field->max_length,
|
||||||
|
!IS_NOT_NULL(field->flags),
|
||||||
field->flags, field->decimals);
|
field->flags, field->decimals);
|
||||||
}
|
}
|
||||||
tee_puts("", PAGER);
|
tee_puts("", PAGER);
|
||||||
|
@ -212,6 +212,12 @@ select * from t1;
|
|||||||
type_bool type_tiny type_short type_mediumint type_bigint type_decimal type_numeric empty_char type_char type_varchar type_timestamp type_date type_time type_datetime type_year type_enum type_set type_tinyblob type_blob type_medium_blob type_long_blob
|
type_bool type_tiny type_short type_mediumint type_bigint type_decimal type_numeric empty_char type_char type_varchar type_timestamp type_date type_time type_datetime type_year type_enum type_set type_tinyblob type_blob type_medium_blob type_long_blob
|
||||||
0 1 NULL NULL NULL NULL NULL NULL NULL NULL 20030207100001 0000-00-00 00:00:00 0000-00-00 00:00:00 NULL NULL NULL NULL NULL NULL NULL
|
0 1 NULL NULL NULL NULL NULL NULL NULL NULL 20030207100001 0000-00-00 00:00:00 0000-00-00 00:00:00 NULL NULL NULL NULL NULL NULL NULL
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a int not null);
|
||||||
|
create table t2 select max(a) from t1;
|
||||||
|
show columns from t2;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
max(a) bigint(20) YES NULL
|
||||||
|
drop table t1,t2;
|
||||||
create table t1 (c decimal, d double, f float, r real);
|
create table t1 (c decimal, d double, f float, r real);
|
||||||
show columns from t1;
|
show columns from t1;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
|
@ -114,6 +114,13 @@ insert into t1 (type_timestamp) values ("2003-02-07 10:00:01");
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check metadata
|
||||||
|
#
|
||||||
|
create table t1 (a int not null);
|
||||||
|
create table t2 select max(a) from t1;
|
||||||
|
show columns from t2;
|
||||||
|
drop table t1,t2;
|
||||||
|
|
||||||
# Check auto conversions of types
|
# Check auto conversions of types
|
||||||
|
|
||||||
|
@ -46,7 +46,11 @@ Item_sum::Item_sum(List<Item> &list)
|
|||||||
void Item_sum::make_field(Send_field *tmp_field)
|
void Item_sum::make_field(Send_field *tmp_field)
|
||||||
{
|
{
|
||||||
if (args[0]->type() == Item::FIELD_ITEM && keep_field_type())
|
if (args[0]->type() == Item::FIELD_ITEM && keep_field_type())
|
||||||
|
{
|
||||||
((Item_field*) args[0])->field->make_field(tmp_field);
|
((Item_field*) args[0])->field->make_field(tmp_field);
|
||||||
|
if (maybe_null)
|
||||||
|
tmp_field->flags&= ~NOT_NULL_FLAG;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tmp_field->flags=0;
|
tmp_field->flags=0;
|
||||||
@ -158,7 +162,8 @@ Item_sum_hybrid::fix_fields(THD *thd,TABLE_LIST *tables)
|
|||||||
else
|
else
|
||||||
max_length=item->max_length;
|
max_length=item->max_length;
|
||||||
decimals=item->decimals;
|
decimals=item->decimals;
|
||||||
maybe_null=item->maybe_null;
|
/* MIN/MAX can return NULL for empty set indepedent of the used column */
|
||||||
|
maybe_null= 1;
|
||||||
binary=item->binary;
|
binary=item->binary;
|
||||||
unsigned_flag=item->unsigned_flag;
|
unsigned_flag=item->unsigned_flag;
|
||||||
result_field=0;
|
result_field=0;
|
||||||
|
@ -165,7 +165,6 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
read_file_from_client=0;
|
|
||||||
#ifdef DONT_ALLOW_FULL_LOAD_DATA_PATHS
|
#ifdef DONT_ALLOW_FULL_LOAD_DATA_PATHS
|
||||||
ex->file_name+=dirname_length(ex->file_name);
|
ex->file_name+=dirname_length(ex->file_name);
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user