List:Commits« Previous MessageNext Message »
From:Vladislav Vaintroub Date:September 8 2008 12:08pm
Subject:bzr push into mysql-6.0-falcon branch (vvaintroub:2812 to 2813)
View as plain text  
 2813 Vladislav Vaintroub	2008-09-08
      Add missing dependency to perror  to avoid  compile error in multiprocessor builds
modified:
  extra/CMakeLists.txt

 2812 lars-erik.bjork@stripped	2008-09-08
      This is a fix for bug#38304 - Data contents becomes NULL if
      column name in Falcon table uses accented letters.
            
      In StorageInterface::encodeRecord the value for fields with
      international character(s) in their names are coded as
      NULL (encodeNULL). This is because there is no entry for these
      fields in the fieldMap. The values for these fields are therefore
      never written to the database.
            
      When populating the fieldMap ( in StorageInterface::mapFields),
      the fieldId of every field is looked up by calling
      StorageTableShare::getFieldId, which in turn calls
      Table::findField.
            
      Table::findField, is not able to match the field name looked up
      in the SymbolManager (SymbolManager::getSymbol), with the field
      name in the Table.
            
      This is because SymbolManager::getSymbol tries to uppercase
      every Symbol it looks up, but the uppercasing does not handle
      international characters. The name it tries to look up, and
      eventually returns, is the partial name of the field, up to the
      first international character.
            
      Because we "can't find" the correct field, a NULL entry is added
      to the fieldMap for this field.
            
      According to Jim Starkey, the fix for this would be to replace
      the call to SymbolManager::getSymbol, with a call to
      SymbolManager::getString, which does not uppercase the input.
            
      This seems to work, and I have added a test-case that tests this
      for different combinations of the SQL modes (also suggested by
      Jim)
            
      There are some twenty different SQL modes, which would result in
      millions of different combinations, so I have picked the modes
      that to the best of my knowledge, are the most interesting ones.
added:
  mysql-test/suite/falcon/r/falcon_bug_38304.result
  mysql-test/suite/falcon/t/falcon_bug_38304.test
modified:
  storage/falcon/Table.cpp

=== modified file 'extra/CMakeLists.txt'
--- a/extra/CMakeLists.txt	2008-04-02 17:52:11 +0000
+++ b/extra/CMakeLists.txt	2008-09-08 12:07:15 +0000
@@ -42,6 +42,7 @@ ADD_EXECUTABLE(my_print_defaults my_prin
 TARGET_LINK_LIBRARIES(my_print_defaults strings mysys debug dbug taocrypt ws2_32)
 
 ADD_EXECUTABLE(perror perror.c)
+ADD_DEPENDENCIES(perror GenError)
 TARGET_LINK_LIBRARIES(perror strings mysys debug dbug ws2_32)
 
 ADD_EXECUTABLE(resolveip resolveip.c)

Thread
bzr push into mysql-6.0-falcon branch (vvaintroub:2812 to 2813) Vladislav Vaintroub8 Sep