List:Commits« Previous MessageNext Message »
From:Georgi Kodinov Date:July 15 2010 3:46pm
Subject:bzr push into mysql-5.1-bugteam branch (Georgi.Kodinov:3486 to 3487)
Bug#53814
View as plain text  
 3487 Georgi Kodinov	2010-06-23
      Bug #53814: NUMERIC_PRECISION for unsigned bigint field is 19, 
      should be 20
      
      Fixed the numeric precision of the unsigned BIGINT column to 
      be 20 instead of 19.

    modified:
      mysql-test/r/information_schema.result
      mysql-test/t/information_schema.test
      sql/sql_show.cc
 3486 Alexey Kopytov	2010-07-15 [merge]
      Manual merge.

    modified:
      sql/opt_range.cc
=== modified file 'mysql-test/r/information_schema.result'
--- a/mysql-test/r/information_schema.result	2010-06-25 08:01:47 +0000
+++ b/mysql-test/r/information_schema.result	2010-06-23 16:25:31 +0000
@@ -1757,4 +1757,21 @@ WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_N
 COLUMN_DEFAULT	TABLE_NAME
 NULL	variables
 DROP TABLE variables;
+#
+# Bug #53814: NUMERIC_PRECISION for unsigned bigint field is 19, 
+# should be 20
+#
+CREATE TABLE ubig (a BIGINT, b BIGINT UNSIGNED);
+SELECT TABLE_NAME, COLUMN_NAME, NUMERIC_PRECISION 
+FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='ubig';
+TABLE_NAME	COLUMN_NAME	NUMERIC_PRECISION
+ubig	a	19
+ubig	b	20
+INSERT INTO ubig VALUES (0xFFFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFFFF);
+Warnings:
+Warning	1264	Out of range value for column 'a' at row 1
+SELECT length(CAST(b AS CHAR)) FROM ubig;
+length(CAST(b AS CHAR))
+20
+DROP TABLE ubig;
 End of 5.1 tests.

=== modified file 'mysql-test/t/information_schema.test'
--- a/mysql-test/t/information_schema.test	2010-06-25 08:01:47 +0000
+++ b/mysql-test/t/information_schema.test	2010-06-23 16:25:31 +0000
@@ -1455,6 +1455,22 @@ FROM INFORMATION_SCHEMA.COLUMNS
 WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'variables';
 DROP TABLE variables;
 
+--echo #
+--echo # Bug #53814: NUMERIC_PRECISION for unsigned bigint field is 19, 
+--echo # should be 20
+--echo #
+
+CREATE TABLE ubig (a BIGINT, b BIGINT UNSIGNED);
+
+SELECT TABLE_NAME, COLUMN_NAME, NUMERIC_PRECISION 
+  FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='ubig';
+
+INSERT INTO ubig VALUES (0xFFFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFFFF);
+SELECT length(CAST(b AS CHAR)) FROM ubig;
+
+DROP TABLE ubig;
+
+
 --echo End of 5.1 tests.
 
 # Wait till all disconnects are completed

=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc	2010-07-14 12:27:13 +0000
+++ b/sql/sql_show.cc	2010-06-23 16:25:31 +0000
@@ -3965,10 +3965,13 @@ static int get_schema_column_record(THD 
     case MYSQL_TYPE_TINY:
     case MYSQL_TYPE_SHORT:
     case MYSQL_TYPE_LONG:
-    case MYSQL_TYPE_LONGLONG:
     case MYSQL_TYPE_INT24:
       field_length= field->max_display_length() - 1;
       break;
+    case MYSQL_TYPE_LONGLONG:
+      field_length= field->max_display_length() - 
+        ((field->flags & UNSIGNED_FLAG) ? 0 : 1);
+      break;
     case MYSQL_TYPE_BIT:
       field_length= field->max_display_length();
       decimals= -1;                             // return NULL


Attachment: [text/bzr-bundle] bzr/georgi.kodinov@oracle.com-20100623162531-k6ursow03ih7f1lb.bundle
Thread
bzr push into mysql-5.1-bugteam branch (Georgi.Kodinov:3486 to 3487)Bug#53814Georgi Kodinov15 Jul