MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:kgeorge Date:April 11 2007 10:58am
Subject:bk commit into 5.0 tree (gkodinov:1.2444) BUG#27530
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of kgeorge. When kgeorge does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-04-11 13:58:16+03:00, gkodinov@stripped +3 -0
  Bug #27530:
  The function CRC32() returns unsigned integer.
  But the metadata (the unsigned flag) for the 
  function was set incorrectly.
  As a result type arithmetics based on the 
  function's metadata (like finding the concise
  type of an temporary table column to hold the result)
  returned incorrect results.
  Fixed by returning correct type information.
  
  This fix is based on code contributed by Martin Friebe
  (martin@stripped) on 2007-03-30.  

  mysql-test/r/func_str.result@stripped, 2007-04-11 13:58:15+03:00, gkodinov@stripped +69 -0
    Bug #27530: test case

  mysql-test/t/func_str.test@stripped, 2007-04-11 13:58:15+03:00, gkodinov@stripped +18 -0
    Bug #27530: test case

  sql/item_strfunc.h@stripped, 2007-04-11 13:58:15+03:00, gkodinov@stripped +1 -1
    Bug #27530: Marked CRC32() as returning unsigned

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	gkodinov
# Host:	magare.gmz
# Root:	/home/kgeorge/mysql/work/B27530-5.0-opt

--- 1.121/sql/item_strfunc.h	2007-03-02 12:14:49 +02:00
+++ 1.122/sql/item_strfunc.h	2007-04-11 13:58:15 +03:00
@@ -790,7 +790,7 @@ class Item_func_crc32 :public Item_int_f
 {
   String value;
 public:
-  Item_func_crc32(Item *a) :Item_int_func(a) {}
+  Item_func_crc32(Item *a) :Item_int_func(a) { unsigned_flag= 1; }
   const char *func_name() const { return "crc32"; }
   void fix_length_and_dec() { max_length=10; }
   longlong val_int();

--- 1.132/mysql-test/r/func_str.result	2007-03-28 10:34:02 +03:00
+++ 1.133/mysql-test/r/func_str.result	2007-04-11 13:58:15 +03:00
@@ -1992,4 +1992,73 @@ abc
 SELECT INSERT('abc', 6, 3, '1234');
 INSERT('abc', 6, 3, '1234')
 abc
+CREATE TABLE t1 (a INT);
+CREATE VIEW v1 AS SELECT CRC32(a) AS C FROM t1;
+INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+SELECT CRC32(a), COUNT(*) FROM t1 GROUP BY 1;
+CRC32(a)	COUNT(*)
+450215437	1
+498629140	1
+1790921346	1
+1842515611	1
+2212294583	1
+2226203566	1
+2366072709	1
+2707236321	1
+4088798008	1
+4194326291	1
+SELECT CRC32(a), COUNT(*) FROM t1 GROUP BY 1 ORDER BY 1;
+CRC32(a)	COUNT(*)
+450215437	1
+498629140	1
+1790921346	1
+1842515611	1
+2212294583	1
+2226203566	1
+2366072709	1
+2707236321	1
+4088798008	1
+4194326291	1
+SELECT * FROM (SELECT CRC32(a) FROM t1) t2;
+CRC32(a)
+2212294583
+450215437
+1842515611
+4088798008
+2226203566
+498629140
+1790921346
+4194326291
+2366072709
+2707236321
+CREATE TABLE t2 SELECT CRC32(a) FROM t1;
+desc t2;
+Field	Type	Null	Key	Default	Extra
+CRC32(a)	int(10) unsigned	YES		NULL	
+SELECT * FROM v1;
+C
+2212294583
+450215437
+1842515611
+4088798008
+2226203566
+498629140
+1790921346
+4194326291
+2366072709
+2707236321
+SELECT * FROM (SELECT * FROM v1) x;
+C
+2212294583
+450215437
+1842515611
+4088798008
+2226203566
+498629140
+1790921346
+4194326291
+2366072709
+2707236321
+DROP TABLE t1, t2;
+DROP VIEW v1;
 End of 5.0 tests

--- 1.104/mysql-test/t/func_str.test	2007-03-28 10:34:02 +03:00
+++ 1.105/mysql-test/t/func_str.test	2007-04-11 13:58:15 +03:00
@@ -1058,4 +1058,22 @@ SELECT INSERT('abc', 4, 3, '1234');
 SELECT INSERT('abc', 5, 3, '1234');
 SELECT INSERT('abc', 6, 3, '1234');
 
+#
+# Bug #27530: Grouping on crc32, or create table select crc32
+#
+CREATE TABLE t1 (a INT);
+CREATE VIEW v1 AS SELECT CRC32(a) AS C FROM t1;
+
+INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+SELECT CRC32(a), COUNT(*) FROM t1 GROUP BY 1;
+SELECT CRC32(a), COUNT(*) FROM t1 GROUP BY 1 ORDER BY 1;
+SELECT * FROM (SELECT CRC32(a) FROM t1) t2;
+CREATE TABLE t2 SELECT CRC32(a) FROM t1;
+desc t2;
+SELECT * FROM v1;
+SELECT * FROM (SELECT * FROM v1) x;
+
+DROP TABLE t1, t2;
+DROP VIEW v1;
+
 --echo End of 5.0 tests
Thread
bk commit into 5.0 tree (gkodinov:1.2444) BUG#27530kgeorge11 Apr