summaryrefslogtreecommitdiff
path: root/sql/sql_show.cc
diff options
context:
space:
mode:
authorcmiller@zippy.cornsilk.net <>2007-04-03 19:47:19 -0400
committercmiller@zippy.cornsilk.net <>2007-04-03 19:47:19 -0400
commitb7a27a6b96097fd3770ba137e9fbacb69f23711f (patch)
tree8a3490f272c92cc40cf82bbf54e1b39fd58c0372 /sql/sql_show.cc
parentad181bb037e396a8ce20c8bb60a5507a357b2cd7 (diff)
downloadmariadb-git-b7a27a6b96097fd3770ba137e9fbacb69f23711f.tar.gz
Backport:
B-g#26600: table PROFILING in INFORMATION SCHEMA has wrong data type B-g#27047[partial]: INFORMATION_SCHEMA table cannot have BIGINT \ fields No Information_schema table has ever needed floating-point data before. Transforming all floating point to a string and back to a number causes a real data problem on Windows, where the libc may pad the exponent with more leading zeroes than we expect and the significant digits are truncated away. This also makes interpreting an unimplemented type as a string into a fatal error in debug builds. Thus, we will catch problems when we try to use those types in new I_S tables.
Diffstat (limited to 'sql/sql_show.cc')
-rw-r--r--sql/sql_show.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index cc3dd79d2ae..7da4ac55e92 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -3605,7 +3605,16 @@ TABLE *create_schema_table(THD *thd, TABLE_LIST *table_list)
DBUG_RETURN(0);
}
break;
+ case MYSQL_TYPE_FLOAT:
+ case MYSQL_TYPE_DOUBLE:
+ if ((item= new Item_float(fields_info->field_name, 0.0, NOT_FIXED_DEC,
+ fields_info->field_length)) == NULL)
+ DBUG_RETURN(NULL);
+ break;
default:
+ /* Don't let unimplemented types pass through. Could be a grave error. */
+ DBUG_ASSERT(fields_info->field_type == MYSQL_TYPE_STRING);
+
/* this should be changed when Item_empty_string is fixed(in 4.1) */
if (!(item= new Item_empty_string("", 0, cs)))
{