List:Commits« Previous MessageNext Message »
From:Georgi Kodinov Date:September 15 2008 8:08am
Subject:bzr push into mysql-5.1-bugteam branch (kgeorge:2673 to 2676)
View as plain text  
 2676 Georgi Kodinov	2008-09-10 [merge]
      merged 5.0-5.1.29-rc -> 5.0-bugteam
modified:
  mysql-test/r/create.result
  mysql-test/r/default.result
  mysql-test/r/func_regexp.result
  mysql-test/r/type_datetime.result
  mysql-test/t/create.test
  mysql-test/t/default.test
  mysql-test/t/func_regexp.test
  mysql-test/t/type_datetime.test
  sql/item.cc
  sql/item_cmpfunc.cc
  sql/item_cmpfunc.h
  sql/sql_insert.cc

 2675 Vladislav Vaintroub	2008-09-01
      Bug#37226 Explicit call of my_thread_init() on Windows for every new thread.
      Bug#33031 app linked to libmysql.lib crash if run as service in vista under 
      localsystem
        
      
      There are some problems using DllMain hook functions on Windows that 
      automatically do global and per-thread initialization for libmysqld.dll
      
      1)per-thread initialization(DLL_THREAD_ATTACH)
      MySQL internally counts number of active threads that and causes a delay in in 
      my_end() if not all threads are exited. But,there are threads that can be 
      started either by Windows internally (often in TCP/IP scenarios) or by user 
      himself - those threads are not necessarily using libmysql.dll functionality, 
      but nonetheless the contribute to the count of open threads.
      
      2)process-initialization (DLL_PROCESS_ATTACH)
      my_init() calls WSAStartup that itself loads DLLs and can lead to a deadlock in 
      Windows loader.
      
      Fix is to remove dll initialization code from libmysql.dll in general case. I
      still leave an environment variable LIBMYSQL_DLLINIT, which if set to any value 
      will cause the old behavior (DLL init hooks will be called). This env.variable 
      exists only to prevent breakage of existing Windows-only applications that 
      don't do mysql_thread_init() and work ok today. Use of LIBMYSQL_DLLINIT is 
      discouraged and it will be removed in 6.0
modified:
  libmysql/dll.c

 2674 Davi Arnaut	2008-09-01
      Restore tree name after merge from main.
modified:
  .bzr-mysql/default.conf

 2673 Vladislav Vaintroub	2008-09-01 [merge]
      merge
removed:
  mysql-test/t/rpl_view-slave.opt
modified:
  include/my_sys.h
  include/myisam.h
  myisam/mi_check.c
  myisam/mi_create.c
  myisam/mi_open.c
  myisam/mi_static.c
  myisam/myisamchk.c
  myisam/myisamdef.h
  myisam/rt_index.c
  mysql-test/r/group_min_max.result
  mysql-test/r/myisam.result
  mysql-test/r/rpl_log.result
  mysql-test/r/symlink.result
  mysql-test/r/type_bit.result
  mysql-test/r/udf.result
  mysql-test/t/disabled.def
  mysql-test/t/group_min_max.test
  mysql-test/t/myisam.test
  mysql-test/t/rpl_ddl.test
  mysql-test/t/rpl_log-slave.opt
  mysql-test/t/rpl_log.test
  mysql-test/t/symlink.test
  mysql-test/t/type_bit.test
  mysys/my_symlink.c
  mysys/thr_lock.c
  sql/field.h
  sql/mysql_priv.h
  sql/mysqld.cc
  sql/opt_range.cc
  sql/opt_range.h
  sql/set_var.cc
  sql/sql_parse.cc
  sql/sql_select.cc
  sql/sql_udf.cc
  sql/unireg.h

=== modified file '.bzr-mysql/default.conf'
--- a/.bzr-mysql/default.conf	2008-08-15 17:55:05 +0000
+++ b/.bzr-mysql/default.conf	2008-09-01 20:11:42 +0000
@@ -1,4 +1,4 @@
 [MYSQL]
 post_commit_to = "commits@stripped"
 post_push_to = "commits@stripped"
-tree_name = "mysql-5.0"
+tree_name = "mysql-5.1-bugteam"

=== modified file 'CMakeLists.txt'
--- a/CMakeLists.txt	2008-03-27 22:35:56 +0000
+++ b/CMakeLists.txt	2008-04-07 22:40:37 +0000
@@ -82,18 +82,18 @@ SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAK
 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805")
 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805")
 
-IF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
+# Disable warnings in Visual Studio 8 and above
+IF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
     SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
     SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996")
     SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996")
     SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996")
     SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996")
     SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996")
-ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
-
-IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR 
-   CMAKE_GENERATOR MATCHES "Visual Studio 8")
+ENDIF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
 
+# Settings for Visual Studio 7 and above.  
+IF(MSVC)
     # replace /MDd with /MTd
     STRING(REPLACE "/MD"  "/MT"  CMAKE_C_FLAGS_RELEASE          ${CMAKE_C_FLAGS_RELEASE})
     STRING(REPLACE "/MD"  "/MT"  CMAKE_C_FLAGS_RELWITHDEBINFO   ${CMAKE_C_FLAGS_RELWITHDEBINFO})
@@ -123,9 +123,7 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studi
     IF(NOT tmp_manifest)
         SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
     ENDIF(NOT tmp_manifest)
-
-ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR 
-      CMAKE_GENERATOR MATCHES "Visual Studio 8")
+ENDIF(MSVC)
 
 ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
 

=== removed file 'extra/yassl/taocrypt/taocrypt.vcproj'
--- a/extra/yassl/taocrypt/taocrypt.vcproj	2007-03-19 15:18:10 +0000
+++ b/extra/yassl/taocrypt/taocrypt.vcproj	1970-01-01 00:00:00 +0000
@@ -1,268 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="taocrypt"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory=".\debug_obj"
-			IntermediateDirectory=".\debug_obj"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="include,mySTL"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
-				ExceptionHandling="FALSE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\debug_obj/taocrypt.pch"
-				AssemblerListingLocation=".\debug_obj/"
-				ObjectFile=".\debug_obj/"
-				ProgramDataBaseFileName=".\debug_obj/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="4"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\debug_obj\taocrypt.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\release_obj"
-			IntermediateDirectory=".\release_obj"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="include,mySTL"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\release_obj/taocrypt.pch"
-				AssemblerListingLocation=".\release_obj/"
-				ObjectFile=".\release_obj/"
-				ProgramDataBaseFileName=".\release_obj/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\release_obj\taocrypt.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
-			<File
-				RelativePath="src\aes.cpp">
-			</File>
-			<File
-				RelativePath="src\aestables.cpp">
-			</File>
-			<File
-				RelativePath="src\algebra.cpp">
-			</File>
-			<File
-				RelativePath="src\arc4.cpp">
-			</File>
-			<File
-				RelativePath="src\asn.cpp">
-			</File>
-			<File
-				RelativePath="src\coding.cpp">
-			</File>
-			<File
-				RelativePath="src\des.cpp">
-			</File>
-			<File
-				RelativePath="src\dh.cpp">
-			</File>
-			<File
-				RelativePath="src\dsa.cpp">
-			</File>
-			<File
-				RelativePath="src\file.cpp">
-			</File>
-			<File
-				RelativePath="src\hash.cpp">
-			</File>
-			<File
-				RelativePath="src\integer.cpp">
-			</File>
-			<File
-				RelativePath="src\md2.cpp">
-			</File>
-			<File
-				RelativePath="src\md4.cpp">
-			</File>
-			<File
-				RelativePath="src\md5.cpp">
-			</File>
-			<File
-				RelativePath="src\misc.cpp">
-			</File>
-			<File
-				RelativePath="src\random.cpp">
-			</File>
-			<File
-				RelativePath="src\ripemd.cpp">
-			</File>
-			<File
-				RelativePath="src\rsa.cpp">
-			</File>
-			<File
-				RelativePath="src\sha.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl">
-			<File
-				RelativePath="include\aes.hpp">
-			</File>
-			<File
-				RelativePath="include\algebra.hpp">
-			</File>
-			<File
-				RelativePath="include\arc4.hpp">
-			</File>
-			<File
-				RelativePath="include\asn.hpp">
-			</File>
-			<File
-				RelativePath="include\block.hpp">
-			</File>
-			<File
-				RelativePath="include\coding.hpp">
-			</File>
-			<File
-				RelativePath="include\des.hpp">
-			</File>
-			<File
-				RelativePath="include\dh.hpp">
-			</File>
-			<File
-				RelativePath="include\dsa.hpp">
-			</File>
-			<File
-				RelativePath="include\error.hpp">
-			</File>
-			<File
-				RelativePath="include\file.hpp">
-			</File>
-			<File
-				RelativePath="include\hash.hpp">
-			</File>
-			<File
-				RelativePath="include\hmac.hpp">
-			</File>
-			<File
-				RelativePath="include\integer.hpp">
-			</File>
-			<File
-				RelativePath="include\md2.hpp">
-			</File>
-			<File
-				RelativePath="include\md4.hpp">
-			</File>
-			<File
-				RelativePath="include\md5.hpp">
-			</File>
-			<File
-				RelativePath="include\misc.hpp">
-			</File>
-			<File
-				RelativePath="include\modarith.hpp">
-			</File>
-			<File
-				RelativePath="include\modes.hpp">
-			</File>
-			<File
-				RelativePath="include\random.hpp">
-			</File>
-			<File
-				RelativePath="include\ripemd.hpp">
-			</File>
-			<File
-				RelativePath="include\rsa.hpp">
-			</File>
-			<File
-				RelativePath="include\sha.hpp">
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>

=== removed file 'extra/yassl/yassl.vcproj'
--- a/extra/yassl/yassl.vcproj	2007-03-19 15:18:10 +0000
+++ b/extra/yassl/yassl.vcproj	1970-01-01 00:00:00 +0000
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="yassl"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory=".\debug_obj"
-			IntermediateDirectory=".\debug_obj"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="include,taocrypt\include,taocrypt\mySTL"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;YASSL_PREFIX"
-				ExceptionHandling="FALSE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\debug_obj/yassl.pch"
-				AssemblerListingLocation=".\debug_obj/"
-				ObjectFile=".\debug_obj/"
-				ProgramDataBaseFileName=".\debug_obj/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="4"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\debug_obj\yassl.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\release_obj"
-			IntermediateDirectory=".\release_obj"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="include,taocrypt\include,taocrypt\mySTL"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;YASSL_PREFIX"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\release_obj/yassl.pch"
-				AssemblerListingLocation=".\release_obj/"
-				ObjectFile=".\release_obj/"
-				ProgramDataBaseFileName=".\release_obj/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\release_obj\yassl.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
-			<File
-				RelativePath="src\buffer.cpp">
-			</File>
-			<File
-				RelativePath="src\cert_wrapper.cpp">
-			</File>
-			<File
-				RelativePath="src\crypto_wrapper.cpp">
-			</File>
-			<File
-				RelativePath="src\handshake.cpp">
-			</File>
-			<File
-				RelativePath="src\lock.cpp">
-			</File>
-			<File
-				RelativePath="src\log.cpp">
-			</File>
-			<File
-				RelativePath="src\socket_wrapper.cpp">
-			</File>
-			<File
-				RelativePath="src\ssl.cpp">
-			</File>
-			<File
-				RelativePath="src\timer.cpp">
-			</File>
-			<File
-				RelativePath="src\yassl_error.cpp">
-			</File>
-			<File
-				RelativePath="src\yassl_imp.cpp">
-			</File>
-			<File
-				RelativePath="src\yassl_int.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl">
-			<File
-				RelativePath="include\buffer.hpp">
-			</File>
-			<File
-				RelativePath="include\cert_wrapper.hpp">
-			</File>
-			<File
-				RelativePath="include\crypto_wrapper.hpp">
-			</File>
-			<File
-				RelativePath="include\factory.hpp">
-			</File>
-			<File
-				RelativePath="include\handshake.hpp">
-			</File>
-			<File
-				RelativePath="include\lock.hpp">
-			</File>
-			<File
-				RelativePath="include\log.hpp">
-			</File>
-			<File
-				RelativePath="include\socket_wrapper.hpp">
-			</File>
-			<File
-				RelativePath="include\timer.hpp">
-			</File>
-			<File
-				RelativePath="include\yassl_error.hpp">
-			</File>
-			<File
-				RelativePath="include\yassl_imp.hpp">
-			</File>
-			<File
-				RelativePath="include\yassl_int.hpp">
-			</File>
-			<File
-				RelativePath="include\yassl_types.hpp">
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>

=== modified file 'libmysql/dll.c'
--- a/libmysql/dll.c	2004-08-18 17:57:55 +0000
+++ b/libmysql/dll.c	2008-09-01 21:46:37 +0000
@@ -89,9 +89,20 @@ BOOL APIENTRY LibMain(HANDLE hInst,DWORD
   UNREFERENCED_PARAMETER(lpReserved);
 } /* LibMain */
 
+
+static BOOL do_libmain;
 int __stdcall DllMain(HANDLE hInst,DWORD ul_reason_being_called,LPVOID lpReserved)
 {
-  return LibMain(hInst,ul_reason_being_called,lpReserved);
+  /*
+    Unless environment variable LIBMYSQL_DLLINIT is set, do nothing.
+    The environment variable is checked once, during the first call to DllMain()
+    (in DLL_PROCESS_ATTACH hook).
+  */
+  if (ul_reason_being_called == DLL_PROCESS_ATTACH)
+    do_libmain = (getenv("LIBMYSQL_DLLINIT") != NULL);
+  if (do_libmain)
+    return LibMain(hInst,ul_reason_being_called,lpReserved);
+  return TRUE;
 }
 
 #elif defined(WINDOWS)

=== modified file 'mysql-test/r/create.result'
--- a/mysql-test/r/create.result	2008-02-01 08:00:40 +0000
+++ b/mysql-test/r/create.result	2008-09-03 10:17:19 +0000
@@ -1546,4 +1546,15 @@ SHOW INDEX FROM t1;
 Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment
 t1	1	c1	1	c1	A	NULL	NULL	NULL	YES	BTREE	
 DROP TABLE t1;
+CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL);
+INSERT IGNORE INTO t1 (b) VALUES (5);
+CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
+SELECT a FROM t1;
+CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
+SELECT a FROM t1;
+ERROR 23000: Duplicate entry '1' for key 1
+CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
+SELECT a FROM t1;
+ERROR 23000: Duplicate entry '1' for key 1
+DROP TABLE t1, t2;
 End of 5.0 tests

=== modified file 'mysql-test/r/default.result'
--- a/mysql-test/r/default.result	2007-09-20 08:54:46 +0000
+++ b/mysql-test/r/default.result	2008-09-03 07:32:43 +0000
@@ -205,4 +205,19 @@ Warnings:
 Warning	1364	Field 'id' doesn't have a default value
 drop view v1;
 drop table t1;
+create table t1 (a int unique);
+create table t2 (b int default 10);
+insert into t1 (a) values (1);
+insert into t2 (b) values (1);
+insert into t1 (a) select b from t2 on duplicate key update a=default;
+select * from t1;
+a
+NULL
+insert into t1 (a) values (1);
+insert into t1 (a) select b from t2 on duplicate key update a=default(b);
+select * from t1;
+a
+NULL
+10
+drop table t1, t2;
 End of 5.0 tests.

=== modified file 'mysql-test/r/func_regexp.result'
--- a/mysql-test/r/func_regexp.result	2007-10-30 08:21:44 +0000
+++ b/mysql-test/r/func_regexp.result	2008-09-05 08:30:01 +0000
@@ -114,4 +114,16 @@ End of 4.1 tests
 SELECT 1 REGEXP NULL;
 1 REGEXP NULL
 NULL
+SELECT '' REGEXP BINARY NULL;
+'' REGEXP BINARY NULL
+NULL
+SELECT NULL REGEXP BINARY NULL;
+NULL REGEXP BINARY NULL
+NULL
+SELECT 'A' REGEXP BINARY NULL;
+'A' REGEXP BINARY NULL
+NULL
+SELECT "ABC" REGEXP BINARY NULL;
+"ABC" REGEXP BINARY NULL
+NULL
 End of 5.0 tests

=== modified file 'mysql-test/r/rpl_log.result'
--- a/mysql-test/r/rpl_log.result	2006-10-19 09:35:10 +0000
+++ b/mysql-test/r/rpl_log.result	2008-04-03 21:16:55 +0000
@@ -7,7 +7,7 @@ start slave;
 stop slave;
 reset master;
 reset slave;
-reset master;
+start slave;
 create table t1(n int not null auto_increment primary key);
 insert into t1 values (NULL);
 drop table t1;
@@ -25,8 +25,8 @@ master-bin.000001	219	Intvar	1	247	INSER
 master-bin.000001	247	Query	1	338	use `test`; insert into t1 values (NULL)
 master-bin.000001	338	Query	1	414	use `test`; drop table t1
 master-bin.000001	414	Query	1	517	use `test`; create table t1 (word char(20) not null)
-master-bin.000001	517	Begin_load_query	1	1121	;file_id=1;block_len=581
-master-bin.000001	1121	Execute_load_query	1	1269	use `test`; load data infile '../std_data_ln/words.dat' into table t1 ignore 1 lines ;file_id=1
+master-bin.000001	517	Begin_load_query	1	1121	;file_id=#;block_len=#
+master-bin.000001	1121	Execute_load_query	1	1269	use `test`; load data infile 'words.dat' into table t1 ignore 1 lines ;file_id=#
 master-bin.000001	1269	Query	1	1345	use `test`; drop table t1
 show binlog events from 98 limit 1;
 Log_name	Pos	Event_type	Server_id	End_log_pos	Info
@@ -41,7 +41,6 @@ master-bin.000001	247	Query	1	338	use `t
 flush logs;
 create table t5 (a int);
 drop table t5;
-start slave;
 flush logs;
 stop slave;
 create table t1 (n int);
@@ -55,8 +54,8 @@ master-bin.000001	219	Intvar	1	247	INSER
 master-bin.000001	247	Query	1	338	use `test`; insert into t1 values (NULL)
 master-bin.000001	338	Query	1	414	use `test`; drop table t1
 master-bin.000001	414	Query	1	517	use `test`; create table t1 (word char(20) not null)
-master-bin.000001	517	Begin_load_query	1	1121	;file_id=1;block_len=581
-master-bin.000001	1121	Execute_load_query	1	1269	use `test`; load data infile '../std_data_ln/words.dat' into table t1 ignore 1 lines ;file_id=1
+master-bin.000001	517	Begin_load_query	1	1121	;file_id=#;block_len=#
+master-bin.000001	1121	Execute_load_query	1	1269	use `test`; load data infile 'words.dat' into table t1 ignore 1 lines ;file_id=#
 master-bin.000001	1269	Query	1	1345	use `test`; drop table t1
 master-bin.000001	1345	Rotate	1	1389	master-bin.000002;pos=4
 show binlog events in 'master-bin.000002';
@@ -84,8 +83,8 @@ slave-bin.000001	219	Intvar	1	247	INSERT
 slave-bin.000001	247	Query	1	338	use `test`; insert into t1 values (NULL)
 slave-bin.000001	338	Query	1	414	use `test`; drop table t1
 slave-bin.000001	414	Query	1	517	use `test`; create table t1 (word char(20) not null)
-slave-bin.000001	517	Begin_load_query	1	1121	;file_id=1;block_len=581
-slave-bin.000001	1121	Execute_load_query	1	1271	use `test`; load data INFILE '../tmp/SQL_LOAD-2-1-1.data' INTO table t1 ignore 1 lines ;file_id=1
+slave-bin.000001	517	Begin_load_query	1	1121	;file_id=#;block_len=#
+slave-bin.000001	1121	Execute_load_query	1	1271	use `test`; load data INFILE 'words.dat' INTO table t1 ignore 1 lines ;file_id=#
 slave-bin.000001	1271	Query	1	1347	use `test`; drop table t1
 slave-bin.000001	1347	Query	1	1433	use `test`; create table t5 (a int)
 slave-bin.000001	1433	Query	1	1509	use `test`; drop table t5

=== modified file 'mysql-test/r/type_datetime.result'
--- a/mysql-test/r/type_datetime.result	2007-12-08 21:05:00 +0000
+++ b/mysql-test/r/type_datetime.result	2008-09-09 15:05:27 +0000
@@ -560,4 +560,27 @@ select * from t2
 where id in (select id from t2 as x1 where (t2.cur_date is null));
 id	cur_date
 drop table t1,t2;
+SELECT 
+CAST('NULL' AS DATE) <=> CAST('2008-01-01' AS DATE) n1, 
+CAST('2008-01-01' AS DATE) <=> CAST('NULL' AS DATE) n2,
+CAST('NULL' AS DATE) <=> CAST('NULL' AS DATE) n3,
+CAST('NULL' AS DATE) <> CAST('2008-01-01' AS DATE) n4, 
+CAST('2008-01-01' AS DATE) <> CAST('NULL' AS DATE) n5,
+CAST('NULL' AS DATE) <> CAST('NULL' AS DATE) n6,
+CAST('NULL' AS DATE) < CAST('2008-01-01' AS DATE) n7, 
+CAST('2008-01-01' AS DATE) < CAST('NULL' AS DATE) n8,
+CAST('NULL' AS DATE) < CAST('NULL' AS DATE) n9;
+n1	n2	n3	n4	n5	n6	n7	n8	n9
+0	0	1	NULL	NULL	NULL	NULL	NULL	NULL
+Warnings:
+Warning	1292	Truncated incorrect datetime value: 'NULL'
+Warning	1292	Truncated incorrect datetime value: 'NULL'
+Warning	1292	Truncated incorrect datetime value: 'NULL'
+Warning	1292	Truncated incorrect datetime value: 'NULL'
+Warning	1292	Truncated incorrect datetime value: 'NULL'
+Warning	1292	Truncated incorrect datetime value: 'NULL'
+Warning	1292	Truncated incorrect datetime value: 'NULL'
+Warning	1292	Truncated incorrect datetime value: 'NULL'
+Warning	1292	Truncated incorrect datetime value: 'NULL'
+Warning	1292	Truncated incorrect datetime value: 'NULL'
 End of 5.0 tests

=== modified file 'mysql-test/t/create.test'
--- a/mysql-test/t/create.test	2008-02-01 08:00:40 +0000
+++ b/mysql-test/t/create.test	2008-09-03 10:17:19 +0000
@@ -1172,4 +1172,22 @@ SHOW INDEX FROM t1;
 DROP TABLE t1;
 
 
+#
+# Bug#38821: Assert table->auto_increment_field_not_null failed in open_table()
+#
+CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL);
+INSERT IGNORE INTO t1 (b) VALUES (5);
+
+CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
+  SELECT a FROM t1;
+--error 1062
+CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
+  SELECT a FROM t1;
+--error 1062
+CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
+  SELECT a FROM t1;
+
+DROP TABLE t1, t2;
+
+
 --echo End of 5.0 tests

=== modified file 'mysql-test/t/default.test'
--- a/mysql-test/t/default.test	2007-02-12 11:41:36 +0000
+++ b/mysql-test/t/default.test	2008-09-03 07:32:43 +0000
@@ -145,5 +145,24 @@ insert into t1 values(default);
 drop view v1;
 drop table t1;
 
+#
+# Bug #39002: crash with
+#             INSERT ... SELECT ... ON DUPLICATE KEY UPDATE col=DEFAULT
+#
+
+create table t1 (a int unique);
+create table t2 (b int default 10);
+insert into t1 (a) values (1);
+insert into t2 (b) values (1);
+
+insert into t1 (a) select b from t2 on duplicate key update a=default;
+select * from t1;
+
+insert into t1 (a) values (1);
+insert into t1 (a) select b from t2 on duplicate key update a=default(b);
+select * from t1;
+
+drop table t1, t2;
+
 --echo End of 5.0 tests.
 

=== modified file 'mysql-test/t/disabled.def'
--- a/mysql-test/t/disabled.def	2007-11-28 08:48:06 +0000
+++ b/mysql-test/t/disabled.def	2008-04-07 11:59:51 +0000
@@ -17,8 +17,6 @@ im_options_set       : Bug#20294: Instan
 im_options_unset     : Bug#20294: Instance manager tests fail randomly
 im_utils             : Bug#20294: Instance manager tests fail randomly
 grant_cache          : Bug#32651: grant_cache.test fails
-rpl_log              : Bug#32653: rpl_log.test fails randomly
-rpl_view             : Bug#32654: rpl_view.test fails randomly
 ndb_backup_print     : Bug#32357: ndb_backup_print test fails sometimes in pushbuild
 rpl_log_pos          : Bug#8693 Test 'rpl_log_pos' fails sometimes
 kill                 : Bug#29149 Test "kill" fails on Windows

=== modified file 'mysql-test/t/func_regexp.test'
--- a/mysql-test/t/func_regexp.test	2007-10-30 08:21:44 +0000
+++ b/mysql-test/t/func_regexp.test	2008-09-05 08:30:01 +0000
@@ -64,4 +64,14 @@ drop table t1;
 
 SELECT 1 REGEXP NULL;
 
+
+#
+# Bug #39021: SELECT REGEXP BINARY NULL never returns
+#
+
+SELECT '' REGEXP BINARY NULL;
+SELECT NULL REGEXP BINARY NULL;
+SELECT 'A' REGEXP BINARY NULL;
+SELECT "ABC" REGEXP BINARY NULL;
+
 --echo End of 5.0 tests

=== modified file 'mysql-test/t/rpl_ddl.test'
--- a/mysql-test/t/rpl_ddl.test	2005-10-13 09:12:17 +0000
+++ b/mysql-test/t/rpl_ddl.test	2008-08-22 17:49:51 +0000
@@ -55,6 +55,18 @@ DROP DATABASE IF EXISTS mysqltest3;
 CREATE DATABASE mysqltest1;
 CREATE DATABASE mysqltest2;
 CREATE TABLE mysqltest1.t1 (f1 BIGINT) ENGINE= "InnoDB";
+# Prevent Bug#26687 rpl_ddl test fails if run with --innodb option
+# The current testscripts + the expected result need that the slave uses MyISAM
+# for the table mysqltest.t1.
+sync_slave_with_master;
+connection slave;
+if (`SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
+     WHERE TABLE_SCHEMA = 'mysqltest1' AND TABLE_NAME = 't1'
+           AND ENGINE <> 'MyISAM'`)
+{
+   skip This test needs on slave side: InnoDB disabled, default engine: MyISAM;
+}
+connection master;
 INSERT INTO mysqltest1.t1 SET f1= 0;
 CREATE TABLE mysqltest1.t2 (f1 BIGINT) ENGINE= "InnoDB";
 CREATE TABLE mysqltest1.t3 (f1 BIGINT) ENGINE= "InnoDB";

=== modified file 'mysql-test/t/rpl_log-slave.opt'
--- a/mysql-test/t/rpl_log-slave.opt	2003-08-20 22:23:39 +0000
+++ b/mysql-test/t/rpl_log-slave.opt	2008-04-03 21:16:55 +0000
@@ -1 +1 @@
-
+--log-slave-updates

=== modified file 'mysql-test/t/rpl_log.test'
--- a/mysql-test/t/rpl_log.test	2006-10-19 09:35:10 +0000
+++ b/mysql-test/t/rpl_log.test	2008-04-03 21:16:55 +0000
@@ -13,22 +13,15 @@ save_master_pos;
 connection slave;
 sync_with_master;
 stop slave;
+--source include/wait_for_slave_to_stop.inc
 reset master;
 reset slave;
-# We are going to read the slave's binlog which contains file_id (for some LOAD
-# DATA INFILE); to make it repeatable (not influenced by other tests), we need
-# to stop and start the slave, to be sure file_id will start from 1.
-#  This can be done with 'server_stop slave', but
-# this would require the manager, so most of the time the test will be skipped
-# :(
-# To workaround this, I (Guilhem) add a (empty) rpl_log-slave.opt (because when
-# mysql-test-run finds such a file it restarts the slave before doing the
-# test). That's not very elegant but I could find no better way, sorry.
+start slave;
+--source include/wait_for_slave_to_start.inc
 
 let $VERSION=`select version()`;
 
 connection master;
-reset master;
 create table t1(n int not null auto_increment primary key);
 insert into t1 values (NULL);
 drop table t1;
@@ -37,6 +30,7 @@ load data infile '../std_data_ln/words.d
 select count(*) from t1;
 drop table t1;
 --replace_result $VERSION VERSION
+--replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /infile '.+'/infile 'words.dat'/
 show binlog events;
 show binlog events from 98 limit 1;
 show binlog events from 98 limit 2;
@@ -69,10 +63,10 @@ connection slave;
 # Note that the above 'slave start' will cause a 3rd rotate event (a fake one)
 # to go into the relay log (the master always sends a fake one when replication
 # starts). 
-start slave;
 sync_with_master;
 flush logs;
 stop slave;
+--source include/wait_for_slave_to_stop.inc
 connection master;
 
 # Create some entries for second log
@@ -81,6 +75,7 @@ create table t1 (n int);
 insert into t1 values (1);
 drop table t1;
 --replace_result $VERSION VERSION
+--replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /infile '.+'/infile 'words.dat'/
 show binlog events;
 --replace_result $VERSION VERSION
 show binlog events in 'master-bin.000002';
@@ -88,9 +83,11 @@ show binary logs;
 save_master_pos;
 connection slave;
 start slave;
+--source include/wait_for_slave_to_start.inc
 sync_with_master;
 show binary logs;
 --replace_result $MASTER_MYPORT MASTER_PORT $VERSION VERSION
+--replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /INFILE '.+'/INFILE 'words.dat'/
 show binlog events in 'slave-bin.000001' from 4;
 --replace_result $MASTER_MYPORT MASTER_PORT $VERSION VERSION
 show binlog events in 'slave-bin.000002' from 4;

=== removed file 'mysql-test/t/rpl_view-slave.opt'
--- a/mysql-test/t/rpl_view-slave.opt	2006-04-14 09:13:26 +0000
+++ b/mysql-test/t/rpl_view-slave.opt	1970-01-01 00:00:00 +0000
@@ -1 +0,0 @@
---replicate-ignore-table=test.foo

=== modified file 'mysql-test/t/type_datetime.test'
--- a/mysql-test/t/type_datetime.test	2007-12-13 10:52:49 +0000
+++ b/mysql-test/t/type_datetime.test	2008-09-09 15:05:27 +0000
@@ -388,4 +388,20 @@ where id in (select id from t2 as x1 whe
 
 drop table t1,t2;
 
+
+#
+# Bug #37526: asymertic operator <=> in trigger
+#
+SELECT 
+  CAST('NULL' AS DATE) <=> CAST('2008-01-01' AS DATE) n1, 
+  CAST('2008-01-01' AS DATE) <=> CAST('NULL' AS DATE) n2,
+  CAST('NULL' AS DATE) <=> CAST('NULL' AS DATE) n3,
+  CAST('NULL' AS DATE) <> CAST('2008-01-01' AS DATE) n4, 
+  CAST('2008-01-01' AS DATE) <> CAST('NULL' AS DATE) n5,
+  CAST('NULL' AS DATE) <> CAST('NULL' AS DATE) n6,
+  CAST('NULL' AS DATE) < CAST('2008-01-01' AS DATE) n7, 
+  CAST('2008-01-01' AS DATE) < CAST('NULL' AS DATE) n8,
+  CAST('NULL' AS DATE) < CAST('NULL' AS DATE) n9;
+
+
 --echo End of 5.0 tests

=== removed file 'server-tools/instance-manager/mysqlmanager.vcproj'
--- a/server-tools/instance-manager/mysqlmanager.vcproj	2007-03-19 15:18:10 +0000
+++ b/server-tools/instance-manager/mysqlmanager.vcproj	1970-01-01 00:00:00 +0000
@@ -1,382 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="mysqlmanager"
-	ProjectGUID="{6D524B3E-210A-4FCD-8D41-FEC0D21E83AC}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory=".\debug_obj"
-			IntermediateDirectory=".\debug_obj"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="..\..\include,../../extra/yassl/include"
-				PreprocessorDefinitions="MYSQL_INSTANCE_MANAGER;MYSQL_SERVER;_DEBUG;SAFEMALLOC;SAFE_MUTEX;_WINDOWS;CONSOLE"
-				MinimalRebuild="TRUE"
-				ExceptionHandling="FALSE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib"
-				OutputFile=".\debug/mysqlmanager.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile=".\debug/mysqlmanager.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\debug/mysqlmanager.map"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\release_obj"
-			IntermediateDirectory=".\release_obj"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories="..\..\include,../../extra/yassl/include"
-				PreprocessorDefinitions="MYSQL_INSTANCE_MANAGER;MYSQL_SERVER;_WINDOWS;CONSOLE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib"
-				OutputFile=".\release/mysqlmanager.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile=".\release/mysqlmanager.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\release/mysqlmanager.map"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath=".\buffer.cpp">
-			</File>
-			<File
-				RelativePath="..\..\sql\client.c">
-				<FileConfiguration
-					Name="Debug|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\command.cpp">
-			</File>
-			<File
-				RelativePath=".\commands.cpp">
-			</File>
-			<File
-				RelativePath="..\..\libmysql\get_password.c">
-				<FileConfiguration
-					Name="Debug|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\guardian.cpp">
-			</File>
-			<File
-				RelativePath=".\IMService.cpp">
-			</File>
-			<File
-				RelativePath=".\instance.cpp">
-			</File>
-			<File
-				RelativePath=".\instance_map.cpp">
-			</File>
-			<File
-				RelativePath=".\instance_options.cpp">
-			</File>
-			<File
-				RelativePath=".\listener.cpp">
-			</File>
-			<File
-				RelativePath=".\log.cpp">
-			</File>
-			<File
-				RelativePath=".\manager.cpp">
-			</File>
-			<File
-				RelativePath=".\messages.cpp">
-			</File>
-			<File
-				RelativePath="..\..\sql\mini_client_errors.c">
-				<FileConfiguration
-					Name="Debug|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\mysql_connection.cpp">
-				<FileConfiguration
-					Name="Debug|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\mysqlmanager.cpp">
-			</File>
-			<File
-				RelativePath="..\..\sql\net_serv.cpp">
-				<FileConfiguration
-					Name="Debug|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\options.cpp">
-			</File>
-			<File
-				RelativePath="..\..\sql\pack.c">
-				<FileConfiguration
-					Name="Debug|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\parse.cpp">
-			</File>
-			<File
-				RelativePath=".\parse_output.cpp">
-			</File>
-			<File
-				RelativePath="..\..\sql\password.c">
-				<FileConfiguration
-					Name="Debug|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)/$(InputName)1.obj"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\priv.cpp">
-			</File>
-			<File
-				RelativePath=".\protocol.cpp">
-			</File>
-			<File
-				RelativePath="..\..\sql\sql_state.c">
-			</File>
-			<File
-				RelativePath=".\thread_registry.cpp">
-			</File>
-			<File
-				RelativePath=".\user_map.cpp">
-			</File>
-			<File
-				RelativePath=".\WindowsService.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-			<File
-				RelativePath=".\buffer.h">
-			</File>
-			<File
-				RelativePath=".\command.h">
-			</File>
-			<File
-				RelativePath=".\commands.h">
-			</File>
-			<File
-				RelativePath=".\factory.h">
-			</File>
-			<File
-				RelativePath=".\guardian.h">
-			</File>
-			<File
-				RelativePath=".\IMService.h">
-			</File>
-			<File
-				RelativePath=".\instance.h">
-			</File>
-			<File
-				RelativePath=".\instance_map.h">
-			</File>
-			<File
-				RelativePath=".\instance_options.h">
-			</File>
-			<File
-				RelativePath=".\listener.h">
-			</File>
-			<File
-				RelativePath=".\log.h">
-			</File>
-			<File
-				RelativePath=".\manager.h">
-			</File>
-			<File
-				RelativePath=".\messages.h">
-			</File>
-			<File
-				RelativePath=".\mysql_connection.h">
-			</File>
-			<File
-				RelativePath=".\mysql_manager_error.h">
-			</File>
-			<File
-				RelativePath=".\options.h">
-			</File>
-			<File
-				RelativePath=".\parse.h">
-			</File>
-			<File
-				RelativePath=".\parse_output.h">
-			</File>
-			<File
-				RelativePath=".\portability.h">
-			</File>
-			<File
-				RelativePath=".\priv.h">
-			</File>
-			<File
-				RelativePath=".\protocol.h">
-			</File>
-			<File
-				RelativePath=".\thread_registry.h">
-			</File>
-			<File
-				RelativePath=".\user_map.h">
-			</File>
-			<File
-				RelativePath=".\WindowsService.h">
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>

=== modified file 'sql/item.cc'
--- a/sql/item.cc	2008-08-20 09:49:28 +0000
+++ b/sql/item.cc	2008-09-03 07:59:48 +0000
@@ -6046,6 +6046,13 @@ Item *Item_default_value::transform(Item
 {
   DBUG_ASSERT(!current_thd->is_stmt_prepare());
 
+  /*
+    If the value of arg is NULL, then this object represents a constant,
+    so further transformation is unnecessary (and impossible).
+  */
+  if (!arg)
+    return 0;
+
   Item *new_item= arg->transform(transformer, args);
   if (!new_item)
     return 0;

=== modified file 'sql/item_cmpfunc.cc'
--- a/sql/item_cmpfunc.cc	2008-07-30 11:07:37 +0000
+++ b/sql/item_cmpfunc.cc	2008-09-09 15:05:27 +0000
@@ -966,19 +966,24 @@ get_datetime_value(THD *thd, Item ***ite
        1    if items are equal or both are null
        0    otherwise
     If is_nulls_eq is FALSE:
-      -1   a < b or one of items is null
+      -1   a < b or at least one item is null
        0   a == b
        1   a > b
+    See the table:
+    is_nulls_eq | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
+    a_is_null   | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
+    b_is_null   | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
+    result      | 1 | 0 | 0 |0/1|-1 |-1 |-1 |-1/0/1|
 */
 
 int Arg_comparator::compare_datetime()
 {
-  bool is_null= FALSE;
+  bool a_is_null, b_is_null;
   ulonglong a_value, b_value;
 
   /* Get DATE/DATETIME/TIME value of the 'a' item. */
-  a_value= (*get_value_func)(thd, &a, &a_cache, *b, &is_null);
-  if (!is_nulls_eq && is_null)
+  a_value= (*get_value_func)(thd, &a, &a_cache, *b, &a_is_null);
+  if (!is_nulls_eq && a_is_null)
   {
     if (owner)
       owner->null_value= 1;
@@ -986,14 +991,15 @@ int Arg_comparator::compare_datetime()
   }
 
   /* Get DATE/DATETIME/TIME value of the 'b' item. */
-  b_value= (*get_value_func)(thd, &b, &b_cache, *a, &is_null);
-  if (is_null)
+  b_value= (*get_value_func)(thd, &b, &b_cache, *a, &b_is_null);
+  if (a_is_null || b_is_null)
   {
     if (owner)
       owner->null_value= is_nulls_eq ? 0 : 1;
-    return is_nulls_eq ? 1 : -1;
+    return is_nulls_eq ? (a_is_null == b_is_null) : -1;
   }
 
+  /* Here we have two not-NULL values. */
   if (owner)
     owner->null_value= 0;
 
@@ -4341,8 +4347,20 @@ void Item_func_like::cleanup()
 
 #ifdef USE_REGEX
 
-bool
-Item_func_regex::regcomp(bool send_error)
+/**
+  @brief Compile regular expression.
+
+  @param[in]    send_error     send error message if any.
+
+  @details Make necessary character set conversion then 
+  compile regular expression passed in the args[1].
+
+  @retval    0     success.
+  @retval    1     error occurred.
+  @retval   -1     given null regular expression.
+ */
+
+int Item_func_regex::regcomp(bool send_error)
 {
   char buff[MAX_FIELD_WIDTH];
   String tmp(buff,sizeof(buff),&my_charset_bin);
@@ -4350,12 +4368,12 @@ Item_func_regex::regcomp(bool send_error
   int error;
 
   if (args[1]->null_value)
-    return TRUE;
+    return -1;
 
   if (regex_compiled)
   {
     if (!stringcmp(res, &prev_regexp))
-      return FALSE;
+      return 0;
     prev_regexp.copy(*res);
     my_regfree(&preg);
     regex_compiled= 0;
@@ -4367,7 +4385,7 @@ Item_func_regex::regcomp(bool send_error
     uint dummy_errors;
     if (conv.copy(res->ptr(), res->length(), res->charset(),
                   regex_lib_charset, &dummy_errors))
-      return TRUE;
+      return 1;
     res= &conv;
   }
 
@@ -4379,10 +4397,10 @@ Item_func_regex::regcomp(bool send_error
       (void) my_regerror(error, &preg, buff, sizeof(buff));
       my_error(ER_REGEXP_ERROR, MYF(0), buff);
     }
-    return TRUE;
+    return 1;
   }
   regex_compiled= 1;
-  return FALSE;
+  return 0;
 }
 
 
@@ -4420,13 +4438,14 @@ Item_func_regex::fix_fields(THD *thd, It
   const_item_cache=args[0]->const_item() && args[1]->const_item();
   if (!regex_compiled && args[1]->const_item())
   {
-    if (args[1]->null_value)
+    int comp_res= regcomp(TRUE);
+    if (comp_res == -1)
     {						// Will always return NULL
       maybe_null=1;
       fixed= 1;
       return FALSE;
     }
-    if (regcomp(TRUE))
+    else if (comp_res)
       return TRUE;
     regex_is_const= 1;
     maybe_null= args[0]->maybe_null;

=== modified file 'sql/item_cmpfunc.h'
--- a/sql/item_cmpfunc.h	2008-01-23 15:03:58 +0000
+++ b/sql/item_cmpfunc.h	2008-09-05 08:30:01 +0000
@@ -1323,7 +1323,7 @@ class Item_func_regex :public Item_bool_
   CHARSET_INFO *regex_lib_charset;
   int regex_lib_flags;
   String conv;
-  bool regcomp(bool send_error);
+  int regcomp(bool send_error);
 public:
   Item_func_regex(Item *a,Item *b) :Item_bool_func(a,b),
     regex_compiled(0),regex_is_const(0) {}

=== modified file 'sql/sql_insert.cc'
--- a/sql/sql_insert.cc	2008-03-28 13:34:06 +0000
+++ b/sql/sql_insert.cc	2008-09-03 10:17:19 +0000
@@ -2897,7 +2897,11 @@ bool select_insert::send_data(List<Item>
       DBUG_RETURN(1);
     }
   }
-  if (!(error= write_record(thd, table, &info)))
+  
+  error= write_record(thd, table, &info);
+  table->auto_increment_field_not_null= FALSE;
+  
+  if (!error)
   {
     if (table->triggers || info.handle_duplicates == DUP_UPDATE)
     {

=== added file 'win/build-vs9.bat'
--- a/win/build-vs9.bat	1970-01-01 00:00:00 +0000
+++ b/win/build-vs9.bat	2008-08-21 17:11:17 +0000
@@ -0,0 +1,18 @@
+@echo off
+
+REM Copyright (C) 2006 MySQL AB
+REM 
+REM This program is free software; you can redistribute it and/or modify
+REM it under the terms of the GNU General Public License as published by
+REM the Free Software Foundation; version 2 of the License.
+REM 
+REM This program is distributed in the hope that it will be useful,
+REM but WITHOUT ANY WARRANTY; without even the implied warranty of
+REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+REM GNU General Public License for more details.
+REM 
+REM You should have received a copy of the GNU General Public License
+REM along with this program; if not, write to the Free Software
+REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+cmake -G "Visual Studio 9 2008"
+

=== added file 'win/build-vs9_x64.bat'
--- a/win/build-vs9_x64.bat	1970-01-01 00:00:00 +0000
+++ b/win/build-vs9_x64.bat	2008-08-21 17:11:17 +0000
@@ -0,0 +1,18 @@
+@echo off
+
+REM Copyright (C) 2006 MySQL AB
+REM 
+REM This program is free software; you can redistribute it and/or modify
+REM it under the terms of the GNU General Public License as published by
+REM the Free Software Foundation; version 2 of the License.
+REM 
+REM This program is distributed in the hope that it will be useful,
+REM but WITHOUT ANY WARRANTY; without even the implied warranty of
+REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+REM GNU General Public License for more details.
+REM 
+REM You should have received a copy of the GNU General Public License
+REM along with this program; if not, write to the Free Software
+REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+cmake -G "Visual Studio 9 2008 Win64"
+

=== modified file 'zlib/zutil.h'
--- a/zlib/zutil.h	2005-09-21 22:17:48 +0000
+++ b/zlib/zutil.h	2008-04-07 05:32:59 +0000
@@ -194,7 +194,7 @@ extern const char * const z_errmsg[10]; 
 #  ifdef __TURBOC__
 #    define NO_vsnprintf
 #  endif
-#  ifdef WIN32
+#  if defined(WIN32) && (!defined(_MSC_VER) || _MSC_VER < 1500)
      /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
 #    if !defined(vsnprintf) && !defined(NO_vsnprintf)
 #      define vsnprintf _vsnprintf

Thread
bzr push into mysql-5.1-bugteam branch (kgeorge:2673 to 2676) Georgi Kodinov15 Sep