HASH function returns different values for the same string value due to character sets --------------------------------------------------------------------------------------
Key: CORE-5030 URL: http://tracker.firebirdsql.org/browse/CORE-5030 Project: Firebird Core Issue Type: Bug Components: Engine Affects Versions: 2.5.5, 2.5.4 Environment: Windows 64 bit Reporter: Mark Jones Priority: Minor Using a different character set changes the resulting HASH value for the same string CREATE TABLE TEST ( TESTSTR1 VARCHAR(20) CHARACTER SET UTF8, TESTSTR2 VARCHAR(20) CHARACTER SET WIN1252 ); INSERT INTO TEST (TESTSTR1, TESTSTR2) VALUES ('€URO','€URO'); SELECT IIF(TESTSTR1 = TESTSTR2,'TRUE','FALSE') ISMATCH, HASH(TESTSTR1) HASH1, HASH(TESTSTR2) HASH2 FROM TEST; And we see the following output ISMATCH HASH1 HASH2 ------------------------------------- TRUE 246225519 547439 Also exhibits similar behaviour when using different client connection character sets and evaluating a static value, e.g. SELECT HASH('€URO') FROM RDB$DATABASE; isql -ch WIN1252.... HASH = 547439 isql -ch UTF8 ... HASH = 246225519 I guess that the solution would be to ensure that the HASH always converts text strings (or blob strings) to UTF8 before evaluating, although that would likely break existing systems that are expecting it to work the way that it does now... -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira ------------------------------------------------------------------------------ Go from Idea to Many App Stores Faster with Intel(R) XDK Give your users amazing mobile app experiences with Intel(R) XDK. Use one codebase in this all-in-one HTML5 development environment. Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs. http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140 Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel