mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge jmiller@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into mysql.com:/home/ndbdev/jmiller/clones/mysql-5.1-new
This commit is contained in:
@ -3,6 +3,7 @@
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="mysqlslap"
|
||||
ProjectGUID="{2E9332CF-072A-4381-BF37-17C5AB4F8583}"
|
||||
SccProjectName=""
|
||||
SccLocalPath="">
|
||||
<Platforms>
|
||||
@ -39,7 +40,7 @@
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="wsock32.lib odbc32.lib odbccp32.lib"
|
||||
AdditionalDependencies="wsock32.lib odbc32.lib odbccp32.lib mysqlclient.lib mysys.lib"
|
||||
OutputFile="../client_release/mysqlslap.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
@ -101,7 +102,7 @@
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="wsock32.lib odbc32.lib odbccp32.lib"
|
||||
AdditionalDependencies="wsock32.lib odbc32.lib odbccp32.lib mysqlclient.lib mysys.lib"
|
||||
OutputFile="../client_classic/mysqlslap.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
@ -161,7 +162,7 @@
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="wsock32.lib odbc32.lib odbccp32.lib"
|
||||
AdditionalDependencies="wsock32.lib odbc32.lib odbccp32.lib mysqlclient.lib mysys.lib"
|
||||
OutputFile="../client_debug/mysqlslap.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
|
@ -22,16 +22,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmysqld", "libmysqld\libm
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859}
|
||||
{207E9014-C4D1-4F6D-B76F-BC7DD7E31113} = {207E9014-C4D1-4F6D-B76F-BC7DD7E31113}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
{BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}
|
||||
{DB28DE80-837F-4497-9AA9-CC0A20584C98} = {DB28DE80-837F-4497-9AA9-CC0A20584C98}
|
||||
{433BCD9B-15C5-4B11-B8BE-825EA98EACE6} = {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}
|
||||
{8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF}
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF}
|
||||
{B3BFA8E5-90CF-4794-96E0-0B03ACA57A30} = {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}
|
||||
{8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B} = {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}
|
||||
{FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE}
|
||||
{86276BF8-FB93-49C8-8157-4F2181375CD0} = {86276BF8-FB93-49C8-8157-4F2181375CD0}
|
||||
{8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B} = {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
{433BCD9B-15C5-4B11-B8BE-825EA98EACE6} = {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}
|
||||
{B3BFA8E5-90CF-4794-96E0-0B03ACA57A30} = {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myTest", "libmysqltest\myTest.vcproj", "{2794E434-7CCE-44DB-B2FB-789ABE53D6B9}"
|
||||
@ -49,36 +49,36 @@ EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisam_ftdump", "myisam_ftdump\myisam_ftdump.vcproj", "{4C5D0EB1-B953-4BE9-A48B-4F3A874E6635}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF}
|
||||
{FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisamchk", "myisamchk\myisamchk.vcproj", "{87CD9881-D234-4306-BBC6-0668C6168C0F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
{8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF}
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF}
|
||||
{FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisamlog", "myisamlog\myisamlog.vcproj", "{194F5EE6-9440-4298-A6FE-A9B4B480B44C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
{8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF}
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF}
|
||||
{FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myisampack", "myisampack\myisampack.vcproj", "{EF833A1E-E358-4B6C-9C27-9489E85041CC}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
{8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF}
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF}
|
||||
{FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE}
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysql", "client\mysql.vcproj", "{F9868FD3-7AE2-486D-BAB3-A299E11F6AC1}"
|
||||
@ -124,14 +124,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqld", "sql\mysqld.vcproj
|
||||
{13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD} = {13A3EB35-EF87-42DC-AFD6-CDF5EFB228AD}
|
||||
{BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}
|
||||
{DB28DE80-837F-4497-9AA9-CC0A20584C98} = {DB28DE80-837F-4497-9AA9-CC0A20584C98}
|
||||
{433BCD9B-15C5-4B11-B8BE-825EA98EACE6} = {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}
|
||||
{8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF}
|
||||
{F74653C4-8003-4A79-8F53-FC69E0AD7A9B} = {F74653C4-8003-4A79-8F53-FC69E0AD7A9B}
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539} = {6B6812DB-636E-465D-B53D-5012F237E539}
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF}
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B} = {4471CADD-737B-4AD7-A108-2FBAA1C4B03B}
|
||||
{B3BFA8E5-90CF-4794-96E0-0B03ACA57A30} = {B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}
|
||||
{8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B} = {8A3A2CF1-E581-47CC-95DD-1D0DA85BE83B}
|
||||
{FC369DF4-AEB7-4531-BF34-A638C4363BFE} = {FC369DF4-AEB7-4531-BF34-A638C4363BFE}
|
||||
{86276BF8-FB93-49C8-8157-4F2181375CD0} = {86276BF8-FB93-49C8-8157-4F2181375CD0}
|
||||
{433BCD9B-15C5-4B11-B8BE-825EA98EACE6} = {433BCD9B-15C5-4B11-B8BE-825EA98EACE6}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqldemb", "mysqldemb\mysqldemb.vcproj", "{37D9BA79-302E-4582-A545-CB5FF7982EA3}"
|
||||
@ -286,6 +288,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdb", "storage\bdb\bdb.vcpr
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mysqlslap", "client\mysqlslap.vcproj", "{2E9332CF-072A-4381-BF37-17C5AB4F8583}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "archive", "storage\archive\archive.vcproj", "{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example", "storage\example\example.vcproj", "{6B6812DB-636E-465D-B53D-5012F237E539}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
classic = classic
|
||||
@ -1033,7 +1047,7 @@ Global
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.ActiveCfg = TLS|Win32
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.classic nt.Build.0 = TLS|Win32
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug.ActiveCfg = TLS_DEBUG|Win32
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug.Build.0 = TLS_debug|Win32
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug.Build.0 = TLS_DEBUG|Win32
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Classic.ActiveCfg = Release|Win32
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Classic.Build.0 = Release|Win32
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Embedded_Debug.ActiveCfg = Debug|Win32
|
||||
@ -1654,6 +1668,114 @@ Global
|
||||
{B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.TLS.Build.0 = Debug|Win32
|
||||
{B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.TLS_DEBUG.ActiveCfg = Debug|Win32
|
||||
{B3BFA8E5-90CF-4794-96E0-0B03ACA57A30}.TLS_DEBUG.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.classic.ActiveCfg = classic|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.classic.Build.0 = classic|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.classic nt.ActiveCfg = classic|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.classic nt.Build.0 = classic|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Debug.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Debug.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Classic.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Classic.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Debug.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Debug.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Pro.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Pro.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_ProGPL.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_ProGPL.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Release.ActiveCfg = Release|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Embedded_Release.Build.0 = Release|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Max.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Max.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Max nt.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Max nt.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.nt.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.nt.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro gpl.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro gpl.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro gpl nt.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro gpl nt.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro nt.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.pro nt.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Release.ActiveCfg = Release|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.Release.Build.0 = Release|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.TLS.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.TLS.Build.0 = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.TLS_DEBUG.ActiveCfg = Debug|Win32
|
||||
{2E9332CF-072A-4381-BF37-17C5AB4F8583}.TLS_DEBUG.Build.0 = Debug|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.classic.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.classic.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.classic nt.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.classic nt.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Debug.ActiveCfg = Debug|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Debug.Build.0 = Debug|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Classic.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Classic.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Debug.ActiveCfg = Debug|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Debug.Build.0 = Debug|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Pro.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Pro.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_ProGPL.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_ProGPL.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Release.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Embedded_Release.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Max.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Max.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Max nt.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Max nt.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.nt.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.nt.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro gpl.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro gpl.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro gpl nt.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro gpl nt.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro nt.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.pro nt.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Release.ActiveCfg = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.Release.Build.0 = Release|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.TLS.ActiveCfg = TLS|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.TLS.Build.0 = TLS|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.TLS_DEBUG.ActiveCfg = TLS_DEBUG|Win32
|
||||
{4471CADD-737B-4AD7-A108-2FBAA1C4B03B}.TLS_DEBUG.Build.0 = TLS_DEBUG|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.classic.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.classic.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.classic nt.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.classic nt.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Debug.ActiveCfg = Debug|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Debug.Build.0 = Debug|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Classic.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Classic.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Debug.ActiveCfg = Debug|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Debug.Build.0 = Debug|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Pro.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Pro.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_ProGPL.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_ProGPL.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Release.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Embedded_Release.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Max.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Max.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Max nt.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Max nt.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.nt.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.nt.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.pro.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.pro.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.pro gpl.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.pro gpl.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.pro gpl nt.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.pro gpl nt.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.pro nt.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.pro nt.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Release.ActiveCfg = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.Release.Build.0 = Release|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.TLS.ActiveCfg = TLS|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.TLS.Build.0 = TLS|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.TLS_DEBUG.ActiveCfg = TLS_DEBUG|Win32
|
||||
{6B6812DB-636E-465D-B53D-5012F237E539}.TLS_DEBUG.Build.0 = TLS_DEBUG|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
|
@ -229,6 +229,141 @@
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\mysys\my_new.cpp">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="classic|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\mysys\my_bit.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="classic|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\mysys\my_bitmap.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="classic|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\mysys\my_vle.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="classic|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\mysys\base64.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="classic|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\client\mysqlbinlog.cpp">
|
||||
<FileConfiguration
|
||||
|
@ -75,7 +75,7 @@
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="../include,../regex,../libmysqld,../sql,../zlib"
|
||||
PreprocessorDefinitions="WIN32;_LIB;SIGNAL_WITH_VIO_CLOSE;EMBEDDED_LIBRARY;USE_TLS;__WIN__;USE_SYMDIR;MYSQL_SERVER;LICENSE=Commercial;HAVE_DLOPEN;HAVE_INNOBASE_DB;DBUG_OFF;NDEBUG;_WINDOWS;_CONSOLE;WITH_INNOBASE_STORAGE_ENGINE"
|
||||
PreprocessorDefinitions="WIN32;_LIB;SIGNAL_WITH_VIO_CLOSE;EMBEDDED_LIBRARY;USE_TLS;__WIN__;USE_SYMDIR;MYSQL_SERVER;LICENSE=Commercial;HAVE_DLOPEN;HAVE_INNOBASE_DB;DBUG_OFF;NDEBUG;_WINDOWS;_CONSOLE;WITH_INNOBASE_STORAGE_ENGINE;HAVE_ROW_BASED_REPLICATION"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
@ -125,7 +125,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../zlib,../include,../regex,../libmysqld,../sql,../storage/bdb/build_win32"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;USE_SYMDIR;SIGNAL_WITH_VIO_CLOSE;HAVE_DLOPEN;EMBEDDED_LIBRARY;MYSQL_SERVER;HAVE_INNOBASE_DB;USE_TLS;__WIN__;WITH_INNOBASE_STORAGE_ENGINE"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;USE_SYMDIR;SIGNAL_WITH_VIO_CLOSE;HAVE_DLOPEN;EMBEDDED_LIBRARY;MYSQL_SERVER;HAVE_INNOBASE_DB;USE_TLS;__WIN__;WITH_INNOBASE_STORAGE_ENGINE;HAVE_ROW_BASED_REPLICATION"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\Debug/mysqldemb.pch"
|
||||
@ -176,7 +176,7 @@
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="../include,../regex,../libmysqld,../sql,../storage/bdb/build_win32,../zlib"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;SIGNAL_WITH_VIO_CLOSE;HAVE_DLOPEN;EMBEDDED_LIBRARY;MYSQL_SERVER;HAVE_INNOBASE_DB;DBUG_OFF;USE_TLS;__WIN__;WITH_INNOBASE_STORAGE_ENGINE"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;SIGNAL_WITH_VIO_CLOSE;HAVE_DLOPEN;EMBEDDED_LIBRARY;MYSQL_SERVER;HAVE_INNOBASE_DB;DBUG_OFF;USE_TLS;__WIN__;WITH_INNOBASE_STORAGE_ENGINE;HAVE_ROW_BASED_REPLICATION"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
|
@ -305,6 +305,50 @@
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="base64.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Max|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="TLS_DEBUG|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
BrowseInformation="1"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="TLS|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="charset-def.c">
|
||||
<FileConfiguration
|
||||
@ -4267,6 +4311,49 @@
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="my_vle.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Max|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="TLS_DEBUG|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="TLS|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="mysys_priv.h">
|
||||
</File>
|
||||
|
@ -87,7 +87,7 @@
|
||||
InlineFunctionExpansion="1"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../storage/bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib"
|
||||
PreprocessorDefinitions="NDEBUG;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN;WITH_INNOBASE_STORAGE_ENGINE;WITH_BERKELEY_STORAGE_ENGINE;WITH_ARCHIVE_STORAGE_ENGINE;WITH_BLACKHOLE_STORAGE_ENGINE;WITH_EXAMPLE_STORAGE_ENGINE;WITH_FEDERATED_STORAGE_ENGINE;WITH_PARTITION_STORAGE_ENGINE"
|
||||
PreprocessorDefinitions="NDEBUG;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN;WITH_INNOBASE_STORAGE_ENGINE;WITH_BERKELEY_STORAGE_ENGINE;WITH_ARCHIVE_STORAGE_ENGINE;WITH_BLACKHOLE_STORAGE_ENGINE;WITH_EXAMPLE_STORAGE_ENGINE;WITH_FEDERATED_STORAGE_ENGINE;WITH_PARTITION_STORAGE_ENGINE;HAVE_ROW_BASED_REPLICATION"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
@ -148,7 +148,7 @@
|
||||
InlineFunctionExpansion="1"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../storage/bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib"
|
||||
PreprocessorDefinitions="NDEBUG;__NT__;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN;WITH_INNOBASE_STORAGE_ENGINE;WITH_BERKELEY_STORAGE_ENGINE;WITH_ARCHIVE_STORAGE_ENGINE;WITH_BLACKHOLE_STORAGE_ENGINE;WITH_EXAMPLE_STORAGE_ENGINE;WITH_FEDERATED_STORAGE_ENGINE;WITH_PARTITION_STORAGE_ENGINE"
|
||||
PreprocessorDefinitions="NDEBUG;__NT__;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN;WITH_INNOBASE_STORAGE_ENGINE;WITH_BERKELEY_STORAGE_ENGINE;WITH_ARCHIVE_STORAGE_ENGINE;WITH_BLACKHOLE_STORAGE_ENGINE;WITH_EXAMPLE_STORAGE_ENGINE;WITH_FEDERATED_STORAGE_ENGINE;WITH_PARTITION_STORAGE_ENGINE;HAVE_ROW_BASED_REPLICATION"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
@ -336,7 +336,7 @@
|
||||
Optimization="0"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../storage/bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib"
|
||||
PreprocessorDefinitions="_DEBUG;SAFEMALLOC;SAFE_MUTEX;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN;WITH_INNOBASE_STORAGE_ENGINE;WITH_BERKELEY_STORAGE_ENGINE;WITH_ARCHIVE_STORAGE_ENGINE;WITH_BLACKHOLE_STORAGE_ENGINE;WITH_EXAMPLE_STORAGE_ENGINE;WITH_FEDERATED_STORAGE_ENGINE;WITH_PARTITION_STORAGE_ENGINE"
|
||||
PreprocessorDefinitions="_DEBUG;SAFEMALLOC;SAFE_MUTEX;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN;WITH_INNOBASE_STORAGE_ENGINE;WITH_BERKELEY_STORAGE_ENGINE;WITH_ARCHIVE_STORAGE_ENGINE;WITH_BLACKHOLE_STORAGE_ENGINE;WITH_EXAMPLE_STORAGE_ENGINE;WITH_FEDERATED_STORAGE_ENGINE;WITH_PARTITION_STORAGE_ENGINE;HAVE_ROW_BASED_REPLICATION"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\debug/mysqld.pch"
|
||||
AssemblerListingLocation=".\debug/"
|
||||
@ -3242,6 +3242,82 @@
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="item_xmlfunc.cpp">
|
||||
<FileConfiguration
|
||||
Name="classic nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Max|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Max nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="pro nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
OptimizeForProcessor="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="pro|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="classic|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="key.cpp">
|
||||
<FileConfiguration
|
||||
@ -4907,6 +4983,81 @@
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rpl_tblmap.cpp">
|
||||
<FileConfiguration
|
||||
Name="classic nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Max|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Max nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="pro nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="pro|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="classic|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="set_var.cpp">
|
||||
<FileConfiguration
|
||||
@ -8306,6 +8457,81 @@
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="sql_binlog.cpp">
|
||||
<FileConfiguration
|
||||
Name="classic nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Max|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Max nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="pro nt|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="pro|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="classic|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="sql_yacc.cpp">
|
||||
<FileConfiguration
|
||||
|
257
VC++Files/storage/archive/archive.vcproj
Normal file
257
VC++Files/storage/archive/archive.vcproj
Normal file
@ -0,0 +1,257 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="archive"
|
||||
ProjectGUID="{4471CADD-737B-4ad7-A108-2FBAA1C4B03B}"
|
||||
SccProjectName=""
|
||||
SccLocalPath="">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\release"
|
||||
IntermediateDirectory=".\release"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../../zlib,../../include"
|
||||
PreprocessorDefinitions="DBUG_OFF;_WINDOWS;NDEBUG"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
PrecompiledHeaderFile=".\release/archive.pch"
|
||||
AssemblerListingLocation=".\release/"
|
||||
ObjectFile=".\release/"
|
||||
ProgramDataBaseFileName=".\release/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\lib_release\archive.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="TLS_DEBUG|Win32"
|
||||
OutputDirectory=".\archive___Win32_TLS_DEBUG"
|
||||
IntermediateDirectory=".\archive___Win32_TLS_DEBUG"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../../zlib,../../include"
|
||||
PreprocessorDefinitions="_DEBUG;SAFEMALLOC;SAFE_MUTEX;_WINDOWS;USE_TLS"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\archive___Win32_TLS_DEBUG/archive.pch"
|
||||
AssemblerListingLocation=".\archive___Win32_TLS_DEBUG/"
|
||||
ObjectFile=".\archive___Win32_TLS_DEBUG/"
|
||||
ProgramDataBaseFileName=".\archive___Win32_TLS_DEBUG/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
DebugInformationFormat="1"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\lib_debug\archive_tls.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="TLS|Win32"
|
||||
OutputDirectory=".\archive___Win32_TLS"
|
||||
IntermediateDirectory=".\archive___Win32_TLS"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../../zlib,../../include"
|
||||
PreprocessorDefinitions="DBUG_OFF;_WINDOWS;NDEBUG;USE_TLS"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
PrecompiledHeaderFile=".\archive___Win32_TLS/archive.pch"
|
||||
AssemblerListingLocation=".\archive___Win32_TLS/"
|
||||
ObjectFile=".\archive___Win32_TLS/"
|
||||
ProgramDataBaseFileName=".\archive___Win32_TLS/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\lib_release\archive_tls.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\debug"
|
||||
IntermediateDirectory=".\debug"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../../zlib,../../include"
|
||||
PreprocessorDefinitions="_DEBUG;SAFEMALLOC;SAFE_MUTEX;_WINDOWS"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\debug/archive.pch"
|
||||
AssemblerListingLocation=".\debug/"
|
||||
ObjectFile=".\debug/"
|
||||
ProgramDataBaseFileName=".\debug/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
DebugInformationFormat="1"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\lib_debug\archive.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="azlib.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="azio.c">
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="TLS_DEBUG|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="TLS|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
257
VC++Files/storage/example/example.vcproj
Normal file
257
VC++Files/storage/example/example.vcproj
Normal file
@ -0,0 +1,257 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="example"
|
||||
ProjectGUID="{6B6812DB-636E-465d-B53D-5012F237E539}"
|
||||
SccProjectName=""
|
||||
SccLocalPath="">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\release"
|
||||
IntermediateDirectory=".\release"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../../include,../../regex,../../sql"
|
||||
PreprocessorDefinitions="DBUG_OFF;_WINDOWS;NDEBUG"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
PrecompiledHeaderFile=".\release/example.pch"
|
||||
AssemblerListingLocation=".\release/"
|
||||
ObjectFile=".\release/"
|
||||
ProgramDataBaseFileName=".\release/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\lib_release\example.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="TLS_DEBUG|Win32"
|
||||
OutputDirectory=".\example___Win32_TLS_DEBUG"
|
||||
IntermediateDirectory=".\example___Win32_TLS_DEBUG"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../../include,../../regex,../../sql"
|
||||
PreprocessorDefinitions="_DEBUG;SAFEMALLOC;SAFE_MUTEX;_WINDOWS;USE_TLS"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\example___Win32_TLS_DEBUG/example.pch"
|
||||
AssemblerListingLocation=".\example___Win32_TLS_DEBUG/"
|
||||
ObjectFile=".\example___Win32_TLS_DEBUG/"
|
||||
ProgramDataBaseFileName=".\example___Win32_TLS_DEBUG/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
DebugInformationFormat="1"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\lib_debug\example_tls.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="TLS|Win32"
|
||||
OutputDirectory=".\example___Win32_TLS"
|
||||
IntermediateDirectory=".\example___Win32_TLS"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../../include,../../regex,../../sql"
|
||||
PreprocessorDefinitions="DBUG_OFF;_WINDOWS;NDEBUG;USE_TLS"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
PrecompiledHeaderFile=".\example___Win32_TLS/example.pch"
|
||||
AssemblerListingLocation=".\example___Win32_TLS/"
|
||||
ObjectFile=".\example___Win32_TLS/"
|
||||
ProgramDataBaseFileName=".\example___Win32_TLS/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\lib_release\example_tls.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\debug"
|
||||
IntermediateDirectory=".\debug"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
OptimizeForProcessor="2"
|
||||
AdditionalIncludeDirectories="../../include,../../regex,../../sql"
|
||||
PreprocessorDefinitions="_DEBUG;SAFEMALLOC;SAFE_MUTEX;_WINDOWS"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\debug/example.pch"
|
||||
AssemblerListingLocation=".\debug/"
|
||||
ObjectFile=".\debug/"
|
||||
ProgramDataBaseFileName=".\debug/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
DebugInformationFormat="1"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\lib_debug\example.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="ha_example.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ha_example.cpp">
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="TLS_DEBUG|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="TLS|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
@ -48,7 +48,7 @@ mysqlbinlog_SOURCES = mysqlbinlog.cc $(top_srcdir)/mysys/mf_tempdir.c \
|
||||
$(top_srcdir)/mysys/my_vle.c \
|
||||
$(top_srcdir)/mysys/base64.c
|
||||
mysqlbinlog_LDADD = $(LDADD) $(CXXLDFLAGS)
|
||||
mysqlslap_LDADD = $(LDADD) $(CXXLDFLAGS) -lpthread
|
||||
mysqlslap_LDADD = $(LDADD) $(CXXLDFLAGS) $(CLIENT_THREAD_LIBS)
|
||||
mysqltestmanager_pwgen_SOURCES = mysqlmanager-pwgen.c
|
||||
mysqltestmanagerc_SOURCES= mysqlmanagerc.c $(yassl_dummy_link_fix)
|
||||
mysqlcheck_SOURCES= mysqlcheck.c $(yassl_dummy_link_fix)
|
||||
|
@ -85,13 +85,25 @@ TODO:
|
||||
#include <stdarg.h>
|
||||
#include <sslopt-vars.h>
|
||||
#include <sys/types.h>
|
||||
#ifndef __WIN__
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
#include <ctype.h>
|
||||
#include <my_pthread.h>
|
||||
|
||||
#define MYSLAPLOCK "/myslaplock.lck"
|
||||
#define MYSLAPLOCK_DIR "/tmp"
|
||||
|
||||
#ifdef __WIN__
|
||||
#define srandom srand
|
||||
#define random rand
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SMEM
|
||||
static char *shared_memory_base_name=0;
|
||||
#endif
|
||||
|
||||
static char **defaults_argv;
|
||||
|
||||
static char *host= NULL, *opt_password= NULL, *user= NULL,
|
||||
@ -213,6 +225,17 @@ static long int timedif(struct timeval a, struct timeval b)
|
||||
return s + us;
|
||||
}
|
||||
|
||||
#ifdef __WIN__
|
||||
static int gettimeofday(struct timeval *tp, void *tzp)
|
||||
{
|
||||
unsigned int ticks;
|
||||
ticks= GetTickCount();
|
||||
tp->tv_usec= ticks*1000;
|
||||
tp->tv_sec= ticks/1000;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
@ -222,7 +245,10 @@ int main(int argc, char **argv)
|
||||
unsigned long long client_limit;
|
||||
statement *eptr;
|
||||
|
||||
DBUG_ENTER("main");
|
||||
#ifdef __WIN__
|
||||
opt_use_threads= 1;
|
||||
#endif
|
||||
|
||||
MY_INIT(argv[0]);
|
||||
|
||||
/* Seed the random number generator if we will be using it. */
|
||||
@ -353,12 +379,14 @@ int main(int argc, char **argv)
|
||||
free_defaults(defaults_argv);
|
||||
my_end(0);
|
||||
|
||||
DBUG_RETURN(0); /* No compiler warnings */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static struct my_option my_long_options[] =
|
||||
{
|
||||
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"auto-generate-sql", 'a',
|
||||
"Generate SQL where not supplied by file or command line.",
|
||||
(gptr*) &auto_generate_sql, (gptr*) &auto_generate_sql,
|
||||
@ -375,7 +403,8 @@ static struct my_option my_long_options[] =
|
||||
{"create-schema", OPT_CREATE_SLAP_SCHEMA, "Schema to run tests in.",
|
||||
(gptr*) &create_schema_string, (gptr*) &create_schema_string, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"csv", OPT_CREATE_SLAP_SCHEMA, "Schema to run tests in.",
|
||||
{"csv", OPT_CREATE_SLAP_SCHEMA,
|
||||
"Generate CSV output to named file or to stdout if no file is named.",
|
||||
(gptr*) &opt_csv_str, (gptr*) &opt_csv_str, 0, GET_STR,
|
||||
OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||
@ -388,8 +417,6 @@ static struct my_option my_long_options[] =
|
||||
{"engine", 'e', "Storage engine to use for creating the table.",
|
||||
(gptr*) &default_engine, (gptr*) &default_engine, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"host", 'h', "Connect to host.", (gptr*) &host, (gptr*) &host, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"iterations", 'i', "Number of times too run the tests.", (gptr*) &iterations,
|
||||
@ -402,28 +429,28 @@ static struct my_option my_long_options[] =
|
||||
(gptr*) &num_char_cols, (gptr*) &num_char_cols, 0, GET_UINT, REQUIRED_ARG,
|
||||
1, 0, 0, 0, 0, 0},
|
||||
{"number-int-cols", 'y',
|
||||
"Number of VARCHAR columns to create table with if specifying \
|
||||
--sql-generate-sql.", (gptr*) &num_int_cols, (gptr*) &num_int_cols, 0,
|
||||
"Number of VARCHAR columns to create table with if specifying "
|
||||
"--sql-generate-sql.", (gptr*) &num_int_cols, (gptr*) &num_int_cols, 0,
|
||||
GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0},
|
||||
{"number-of-query", OPT_MYSQL_NUMBER_OF_QUERY,
|
||||
{"number-of-queries", OPT_MYSQL_NUMBER_OF_QUERY,
|
||||
"Limit each client to this number of queries (this is not exact).",
|
||||
(gptr*) &num_of_query, (gptr*) &num_of_query, 0,
|
||||
GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"only-print", OPT_MYSQL_ONLY_PRINT,
|
||||
"This causes mysqlslap to not connect to the databases, but instead print \
|
||||
out what it would have done instead.",
|
||||
"This causes mysqlslap to not connect to the databases, but instead print "
|
||||
"out what it would have done instead.",
|
||||
(gptr*) &opt_only_print, (gptr*) &opt_only_print, 0, GET_BOOL, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"password", 'p',
|
||||
"Password to use when connecting to server. If password is not given it's \
|
||||
asked from the tty.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0,
|
||||
0},
|
||||
"Password to use when connecting to server. If password is not given it's "
|
||||
"asked from the tty.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#ifdef __WIN__
|
||||
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0,
|
||||
0},
|
||||
{"preserve-schema", OPT_MYSQL_PRESERVE_SCHEMA,
|
||||
"Preserve the schema from the mysqlslap run.",
|
||||
(gptr*) &opt_preserve, (gptr*) &opt_preserve, 0, GET_BOOL,
|
||||
@ -434,33 +461,33 @@ static struct my_option my_long_options[] =
|
||||
{"query", 'q', "Query to run or file containing query to run.",
|
||||
(gptr*) &user_supplied_query, (gptr*) &user_supplied_query,
|
||||
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"silent", 's', "Run program in silent mode - no output.",
|
||||
(gptr*) &opt_silent, (gptr*) &opt_silent, 0, GET_BOOL, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
#ifdef HAVE_SMEM
|
||||
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
|
||||
"Base name of shared memory.", (gptr*) &shared_memory_base_name,
|
||||
(gptr*) &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"silent", 's', "Run program in silent mode - no output.",
|
||||
(gptr*) &opt_silent, (gptr*) &opt_silent, 0, GET_BOOL, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"slave", OPT_MYSQL_SLAP_SLAVE, "Follow master locks for other slap clients",
|
||||
(gptr*) &opt_slave, (gptr*) &opt_slave, 0, GET_BOOL, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"socket", 'S', "Socket file to use for connection.",
|
||||
(gptr*) &opt_mysql_unix_port, (gptr*) &opt_mysql_unix_port, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#include <sslopt-longopts.h>
|
||||
{"use-threads", OPT_USE_THREADS,
|
||||
"Use pthread calls instead of fork() calls (default on Windows)",
|
||||
(gptr*) &opt_use_threads, (gptr*) &opt_use_threads, 0,
|
||||
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#include <sslopt-longopts.h>
|
||||
#ifndef DONT_ALLOW_USER_CHANGE
|
||||
{"user", 'u', "User for login if not current user.", (gptr*) &user,
|
||||
(gptr*) &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"verbose", 'v',
|
||||
"More verbose output; You can use this multiple times to get even more \
|
||||
verbose output.", (gptr*) &verbose, (gptr*) &verbose, 0,
|
||||
"More verbose output; You can use this multiple times to get even more "
|
||||
"verbose output.", (gptr*) &verbose, (gptr*) &verbose, 0,
|
||||
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
@ -936,7 +963,6 @@ drop_schema(MYSQL *mysql, const char *db)
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit)
|
||||
{
|
||||
@ -980,6 +1006,7 @@ run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit)
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifndef __WIN__
|
||||
else
|
||||
{
|
||||
fflush(NULL);
|
||||
@ -1020,6 +1047,7 @@ run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Lets release use some clients! */
|
||||
if (!opt_slave)
|
||||
@ -1041,6 +1069,7 @@ run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit)
|
||||
}
|
||||
my_lock(lock_file, F_UNLCK, 0, F_TO_EOF, MYF(0));
|
||||
}
|
||||
#ifndef __WIN__
|
||||
else
|
||||
{
|
||||
WAIT:
|
||||
@ -1051,6 +1080,7 @@ WAIT:
|
||||
DBUG_PRINT("info", ("Parent: child %d status %d", pid, status));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
gettimeofday(&end_time, NULL);
|
||||
|
||||
my_close(lock_file, MYF(0));
|
||||
|
@ -39,7 +39,10 @@ then
|
||||
AC_DEFINE([$5])
|
||||
mysql_se_decls="${mysql_se_decls},$6"
|
||||
mysql_se_htons="${mysql_se_htons},&$6"
|
||||
if test "$8" != "no"
|
||||
then
|
||||
mysql_se_objs="$mysql_se_objs $8"
|
||||
fi
|
||||
mysql_se_dirs="$mysql_se_dirs $7"
|
||||
mysql_se_libs="$mysql_se_libs $9"
|
||||
else
|
||||
|
@ -1420,6 +1420,7 @@ AC_MSG_CHECKING("named thread libs:")
|
||||
if test "$with_named_thread" != "no"
|
||||
then
|
||||
LIBS="$with_named_thread $LIBS $with_named_thread"
|
||||
CLIENT_THREAD_LIBS="$with_named_thread"
|
||||
with_posix_threads="yes"
|
||||
AC_MSG_RESULT("$with_named_thread")
|
||||
else
|
||||
@ -1436,6 +1437,7 @@ else
|
||||
AC_MSG_CHECKING("for pthread_create in -lpthread");
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lpthread"
|
||||
CLIENT_THREAD_LIBS="-lpthread"
|
||||
AC_TRY_LINK(
|
||||
[#include <pthread.h>],
|
||||
[ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
|
||||
@ -1444,6 +1446,7 @@ else
|
||||
if test "$with_posix_threads" = "no"
|
||||
then
|
||||
LIBS=" $ac_save_LIBS -lpthreads"
|
||||
CLIENT_THREAD_LIBS="-lpthreads"
|
||||
AC_MSG_CHECKING("for pthread_create in -lpthreads");
|
||||
AC_TRY_LINK(
|
||||
[#include <pthread.h>],
|
||||
@ -1454,6 +1457,7 @@ else
|
||||
then
|
||||
# This is for FreeBSD
|
||||
LIBS="$ac_save_LIBS -pthread"
|
||||
CLIENT_THREAD_LIBS="-pthread"
|
||||
AC_MSG_CHECKING("for pthread_create in -pthread");
|
||||
AC_TRY_LINK(
|
||||
[#include <pthread.h>],
|
||||
@ -2437,7 +2441,8 @@ MYSQL_STORAGE_ENGINE(archive,,,,,,storage/archive,,
|
||||
\$(top_builddir)/storage/archive/libarchive.a, [
|
||||
AC_CONFIG_FILES(storage/archive/Makefile)
|
||||
])
|
||||
MYSQL_STORAGE_ENGINE(csv,,,,,no,storage/csv,,,[
|
||||
MYSQL_STORAGE_ENGINE(csv,,,"yes",,tina_hton,storage/csv,no,
|
||||
\$(top_builddir)/storage/csv/libcsv.a,[
|
||||
AC_CONFIG_FILES(storage/csv/Makefile)
|
||||
])
|
||||
MYSQL_STORAGE_ENGINE(blackhole)
|
||||
@ -2469,6 +2474,7 @@ fi
|
||||
CLIENT_LIBS="$NON_THREADED_LIBS $openssl_libs $ZLIB_LIBS $STATIC_NSS_FLAGS"
|
||||
|
||||
AC_SUBST(CLIENT_LIBS)
|
||||
AC_SUBST(CLIENT_THREAD_LIBS)
|
||||
AC_SUBST(NON_THREADED_LIBS)
|
||||
AC_SUBST(STATIC_NSS_FLAGS)
|
||||
AC_SUBST(sql_client_dirs)
|
||||
|
@ -876,9 +876,10 @@ static void usage(void)
|
||||
{
|
||||
DBUG_ENTER("usage");
|
||||
print_version();
|
||||
printf("This software comes with ABSOLUTELY NO WARRANTY. This is free "
|
||||
"software,\nand you are welcome to modify and redistribute it under "
|
||||
"the GPL license\nUsage:\n");
|
||||
printf("This software comes with ABSOLUTELY NO WARRANTY. "
|
||||
"This is free software,\n"
|
||||
"and you are welcome to modify and redistribute it under the GPL license.\n"
|
||||
"Usage:\n");
|
||||
my_print_help(my_long_options);
|
||||
my_print_variables(my_long_options);
|
||||
DBUG_VOID_RETURN;
|
||||
|
@ -353,6 +353,9 @@ inline double ulonglong2double(ulonglong value)
|
||||
#define HAVE_VIO_READ_BUFF
|
||||
#define HAVE_STRNLEN
|
||||
|
||||
#define strcasecmp stricmp
|
||||
#define strncasecmp strnicmp
|
||||
|
||||
#ifndef __NT__
|
||||
#undef FILE_SHARE_DELETE
|
||||
#define FILE_SHARE_DELETE 0 /* Not implemented on Win 98/ME */
|
||||
|
@ -67,6 +67,7 @@ extern MY_UNICASE_INFO *my_unicase_turkish[256];
|
||||
#define MY_CS_READY 256 /* if a charset is initialized */
|
||||
#define MY_CS_AVAILABLE 512 /* If either compiled-in or loaded*/
|
||||
#define MY_CS_CSSORT 1024 /* if case sensitive sort order */
|
||||
#define MY_CS_HIDDEN 2048 /* don't display in SHOW */
|
||||
#define MY_CHARSET_UNDEFINED 0
|
||||
|
||||
|
||||
|
@ -161,7 +161,12 @@ enum ha_extra_function {
|
||||
handling on the slave
|
||||
*/
|
||||
HA_EXTRA_IGNORE_NO_KEY,
|
||||
HA_EXTRA_NO_IGNORE_NO_KEY
|
||||
HA_EXTRA_NO_IGNORE_NO_KEY,
|
||||
/*
|
||||
Mark the table as a log table. For some handlers (e.g. CSV) this results
|
||||
in a special locking for the table.
|
||||
*/
|
||||
HA_EXTRA_MARK_AS_LOG_TABLE
|
||||
};
|
||||
|
||||
/* The following is parameter to ha_panic() */
|
||||
|
@ -806,6 +806,9 @@ extern void print_defaults(const char *conf_file, const char **groups);
|
||||
extern my_bool my_compress(byte *, ulong *, ulong *);
|
||||
extern my_bool my_uncompress(byte *, ulong *, ulong *);
|
||||
extern byte *my_compress_alloc(const byte *packet, ulong *len, ulong *complen);
|
||||
extern int packfrm(const void *, uint, const void **, uint *);
|
||||
extern int unpackfrm(const void **, uint *, const void *);
|
||||
|
||||
extern ha_checksum my_checksum(ha_checksum crc, const byte *mem, uint count);
|
||||
extern uint my_bit_log2(ulong value);
|
||||
extern uint my_count_bits(ulonglong v);
|
||||
|
@ -130,14 +130,14 @@ typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */
|
||||
|
||||
#include "my_alloc.h"
|
||||
|
||||
typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
|
||||
typedef struct st_mysql_data {
|
||||
my_ulonglong rows;
|
||||
unsigned int fields;
|
||||
MYSQL_ROWS *data;
|
||||
MEM_ROOT alloc;
|
||||
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)
|
||||
MYSQL_ROWS **prev_ptr;
|
||||
#endif
|
||||
/* extra info for embedded library */
|
||||
struct embedded_query_result *embedded_info;
|
||||
} MYSQL_DATA;
|
||||
|
||||
enum mysql_option
|
||||
@ -287,6 +287,8 @@ typedef struct st_mysql
|
||||
from mysql_stmt_close if close had to cancel result set of this object.
|
||||
*/
|
||||
my_bool *unbuffered_fetch_owner;
|
||||
/* needed for embedded server - no net buffer to store the 'info' */
|
||||
char *info_buffer;
|
||||
} MYSQL;
|
||||
|
||||
typedef struct st_mysql_res {
|
||||
@ -755,6 +757,7 @@ typedef struct st_mysql_methods
|
||||
const char *(*read_statistics)(MYSQL *mysql);
|
||||
my_bool (*next_result)(MYSQL *mysql);
|
||||
int (*read_change_user_result)(MYSQL *mysql, char *buff, const char *passwd);
|
||||
int (*read_rows_from_cursor)(MYSQL_STMT *stmt);
|
||||
#endif
|
||||
} MYSQL_METHODS;
|
||||
|
||||
|
@ -143,10 +143,12 @@ void thr_unlock(THR_LOCK_DATA *data);
|
||||
enum enum_thr_lock_result thr_multi_lock(THR_LOCK_DATA **data,
|
||||
uint count, THR_LOCK_OWNER *owner);
|
||||
void thr_multi_unlock(THR_LOCK_DATA **data,uint count);
|
||||
void thr_abort_locks(THR_LOCK *lock);
|
||||
void thr_abort_locks(THR_LOCK *lock, bool upgrade_lock);
|
||||
my_bool thr_abort_locks_for_thread(THR_LOCK *lock, pthread_t thread);
|
||||
void thr_print_locks(void); /* For debugging */
|
||||
my_bool thr_upgrade_write_delay_lock(THR_LOCK_DATA *data);
|
||||
void thr_downgrade_write_lock(THR_LOCK_DATA *data,
|
||||
enum thr_lock_type new_lock_type);
|
||||
my_bool thr_reschedule_write_lock(THR_LOCK_DATA *data);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -2722,13 +2722,13 @@ stmt_read_row_from_cursor(MYSQL_STMT *stmt, unsigned char **row)
|
||||
/* Send row request to the server */
|
||||
int4store(buff, stmt->stmt_id);
|
||||
int4store(buff + 4, stmt->prefetch_rows); /* number of rows to fetch */
|
||||
if (cli_advanced_command(mysql, COM_STMT_FETCH, buff, sizeof(buff),
|
||||
NullS, 0, 1))
|
||||
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_FETCH,
|
||||
buff, sizeof(buff), NullS, 0, 1))
|
||||
{
|
||||
set_stmt_errmsg(stmt, net->last_error, net->last_errno, net->sqlstate);
|
||||
return 1;
|
||||
}
|
||||
if (cli_read_binary_rows(stmt))
|
||||
if ((*mysql->methods->read_rows_from_cursor)(stmt))
|
||||
return 1;
|
||||
stmt->server_status= mysql->server_status;
|
||||
|
||||
@ -5101,9 +5101,9 @@ my_bool STDCALL mysql_autocommit(MYSQL * mysql, my_bool auto_mode)
|
||||
DBUG_ENTER("mysql_autocommit");
|
||||
DBUG_PRINT("enter", ("mode : %d", auto_mode));
|
||||
|
||||
if (auto_mode) /* set to true */
|
||||
DBUG_RETURN((my_bool) mysql_real_query(mysql, "set autocommit=1", 16));
|
||||
DBUG_RETURN((my_bool) mysql_real_query(mysql, "set autocommit=0", 16));
|
||||
DBUG_RETURN((my_bool) mysql_real_query(mysql, auto_mode ?
|
||||
"set autocommit=1":"set autocommit=0",
|
||||
16));
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,6 +18,7 @@
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
#include <mysql.h>
|
||||
#include "emb_qcache.h"
|
||||
#include "embedded_priv.h"
|
||||
|
||||
void Querycache_stream::store_char(char c)
|
||||
{
|
||||
@ -284,22 +285,25 @@ int Querycache_stream::load_column(MEM_ROOT *alloc, char** column)
|
||||
|
||||
uint emb_count_querycache_size(THD *thd)
|
||||
{
|
||||
uint result;
|
||||
MYSQL *mysql= thd->mysql;
|
||||
MYSQL_FIELD *field= mysql->fields;
|
||||
MYSQL_FIELD *field_end= field + mysql->field_count;
|
||||
MYSQL_ROWS *cur_row=NULL;
|
||||
my_ulonglong n_rows=0;
|
||||
uint result= 0;
|
||||
MYSQL_FIELD *field;
|
||||
MYSQL_FIELD *field_end;
|
||||
MYSQL_ROWS *cur_row;
|
||||
my_ulonglong n_rows;
|
||||
MYSQL_DATA *data= thd->first_data;
|
||||
|
||||
while (data->embedded_info->next)
|
||||
data= data->embedded_info->next;
|
||||
field= data->embedded_info->fields_list;
|
||||
field_end= field + data->fields;
|
||||
|
||||
if (!field)
|
||||
return 0;
|
||||
if (thd->data)
|
||||
{
|
||||
*thd->data->prev_ptr= NULL; // this marks the last record
|
||||
cur_row= thd->data->data;
|
||||
n_rows= thd->data->rows;
|
||||
}
|
||||
result= (uint) (4+8 + (42 + 4*n_rows)*mysql->field_count);
|
||||
return result;
|
||||
*data->embedded_info->prev_ptr= NULL; // this marks the last record
|
||||
cur_row= data->data;
|
||||
n_rows= data->rows;
|
||||
/* n_fields + n_rows + (field_info + strlen * n_rows) * n_fields */
|
||||
result+= (uint) (4+8 + (42 + 4*n_rows)*data->fields);
|
||||
|
||||
for(; field < field_end; field++)
|
||||
{
|
||||
@ -313,7 +317,7 @@ uint emb_count_querycache_size(THD *thd)
|
||||
for (; cur_row; cur_row=cur_row->next)
|
||||
{
|
||||
MYSQL_ROW col= cur_row->data;
|
||||
MYSQL_ROW col_end= col + mysql->field_count;
|
||||
MYSQL_ROW col_end= col + data->fields;
|
||||
for (; col < col_end; col++)
|
||||
if (*col)
|
||||
result+= *(uint *)((*col) - sizeof(uint));
|
||||
@ -323,24 +327,28 @@ uint emb_count_querycache_size(THD *thd)
|
||||
|
||||
void emb_store_querycache_result(Querycache_stream *dst, THD *thd)
|
||||
{
|
||||
MYSQL *mysql= thd->mysql;
|
||||
MYSQL_FIELD *field= mysql->fields;
|
||||
MYSQL_FIELD *field_end= field + mysql->field_count;
|
||||
MYSQL_ROWS *cur_row= NULL;
|
||||
my_ulonglong n_rows= 0;
|
||||
MYSQL_FIELD *field;
|
||||
MYSQL_FIELD *field_end;
|
||||
MYSQL_ROWS *cur_row;
|
||||
my_ulonglong n_rows;
|
||||
MYSQL_DATA *data= thd->first_data;
|
||||
|
||||
DBUG_ENTER("emb_store_querycache_result");
|
||||
|
||||
while (data->embedded_info->next)
|
||||
data= data->embedded_info->next;
|
||||
field= data->embedded_info->fields_list;
|
||||
field_end= field + data->fields;
|
||||
|
||||
if (!field)
|
||||
return;
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
if (thd->data)
|
||||
{
|
||||
*thd->data->prev_ptr= NULL; // this marks the last record
|
||||
cur_row= thd->data->data;
|
||||
n_rows= thd->data->rows;
|
||||
}
|
||||
*data->embedded_info->prev_ptr= NULL; // this marks the last record
|
||||
cur_row= data->data;
|
||||
n_rows= data->rows;
|
||||
|
||||
dst->store_int((uint)mysql->field_count);
|
||||
dst->store_ll((uint)n_rows);
|
||||
dst->store_int((uint)data->fields);
|
||||
dst->store_ll((ulonglong)n_rows);
|
||||
|
||||
for(; field < field_end; field++)
|
||||
{
|
||||
@ -356,14 +364,13 @@ void emb_store_querycache_result(Querycache_stream *dst, THD *thd)
|
||||
dst->store_str(field->org_table, field->org_table_length);
|
||||
dst->store_str(field->db, field->db_length);
|
||||
dst->store_str(field->catalog, field->catalog_length);
|
||||
|
||||
dst->store_safe_str(field->def, field->def_length);
|
||||
}
|
||||
|
||||
for (; cur_row; cur_row=cur_row->next)
|
||||
{
|
||||
MYSQL_ROW col= cur_row->data;
|
||||
MYSQL_ROW col_end= col + mysql->field_count;
|
||||
MYSQL_ROW col_end= col + data->fields;
|
||||
for (; col < col_end; col++)
|
||||
{
|
||||
uint len= *col ? *(uint *)((*col) - sizeof(uint)) : 0;
|
||||
@ -371,28 +378,34 @@ void emb_store_querycache_result(Querycache_stream *dst, THD *thd)
|
||||
}
|
||||
}
|
||||
DBUG_ASSERT(emb_count_querycache_size(thd) == dst->stored_size);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
int emb_load_querycache_result(THD *thd, Querycache_stream *src)
|
||||
{
|
||||
MYSQL *mysql= thd->mysql;
|
||||
MYSQL_DATA *data;
|
||||
MYSQL_DATA *data= thd->alloc_new_dataset();
|
||||
MYSQL_FIELD *field;
|
||||
MYSQL_FIELD *field_end;
|
||||
MEM_ROOT *f_alloc= &mysql->field_alloc;
|
||||
MEM_ROOT *f_alloc;
|
||||
MYSQL_ROWS *row, *end_row;
|
||||
MYSQL_ROWS **prev_row;
|
||||
ulonglong rows;
|
||||
MYSQL_ROW columns;
|
||||
DBUG_ENTER("emb_load_querycache_result");
|
||||
|
||||
mysql->field_count= src->load_int();
|
||||
if (!data)
|
||||
goto err;
|
||||
init_alloc_root(&data->alloc, 8192,0);
|
||||
f_alloc= &data->alloc;
|
||||
|
||||
data->fields= src->load_int();
|
||||
rows= src->load_ll();
|
||||
|
||||
if (!(field= (MYSQL_FIELD *)
|
||||
alloc_root(&mysql->field_alloc,mysql->field_count*sizeof(MYSQL_FIELD))))
|
||||
alloc_root(f_alloc,data->fields*sizeof(MYSQL_FIELD))))
|
||||
goto err;
|
||||
mysql->fields= field;
|
||||
for(field_end= field+mysql->field_count; field < field_end; field++)
|
||||
data->embedded_info->fields_list= field;
|
||||
for(field_end= field+data->fields; field < field_end; field++)
|
||||
{
|
||||
field->length= src->load_int();
|
||||
field->max_length= (unsigned int)src->load_int();
|
||||
@ -411,38 +424,34 @@ int emb_load_querycache_result(THD *thd, Querycache_stream *src)
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!rows)
|
||||
return 0;
|
||||
if (!(data= (MYSQL_DATA*)my_malloc(sizeof(MYSQL_DATA),
|
||||
MYF(MY_WME | MY_ZEROFILL))))
|
||||
goto err;
|
||||
thd->data= data;
|
||||
init_alloc_root(&data->alloc, 8192,0);
|
||||
row= (MYSQL_ROWS *)alloc_root(&data->alloc, (uint) (rows * sizeof(MYSQL_ROWS) +
|
||||
rows * (mysql->field_count+1)*sizeof(char*)));
|
||||
row= (MYSQL_ROWS *)alloc_root(&data->alloc,
|
||||
(uint) (rows * sizeof(MYSQL_ROWS) +
|
||||
rows*(data->fields+1)*sizeof(char*)));
|
||||
end_row= row + rows;
|
||||
columns= (MYSQL_ROW)end_row;
|
||||
|
||||
data->rows= rows;
|
||||
data->fields= mysql->field_count;
|
||||
data->data= row;
|
||||
if (!rows)
|
||||
goto return_ok;
|
||||
|
||||
for (prev_row= &row->next; row < end_row; prev_row= &row->next, row++)
|
||||
{
|
||||
*prev_row= row;
|
||||
row->data= columns;
|
||||
MYSQL_ROW col_end= columns + mysql->field_count;
|
||||
MYSQL_ROW col_end= columns + data->fields;
|
||||
for (; columns < col_end; columns++)
|
||||
src->load_column(&data->alloc, columns);
|
||||
|
||||
*(columns++)= NULL;
|
||||
}
|
||||
*prev_row= NULL;
|
||||
data->prev_ptr= prev_row;
|
||||
|
||||
return 0;
|
||||
data->embedded_info->prev_ptr= prev_row;
|
||||
return_ok:
|
||||
send_eof(thd);
|
||||
DBUG_RETURN(0);
|
||||
err:
|
||||
return 1;
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
#endif /*HAVE_QUERY_CACHE*/
|
||||
|
@ -16,18 +16,25 @@
|
||||
|
||||
/* Prototypes for the embedded version of MySQL */
|
||||
|
||||
#include <my_global.h>
|
||||
#include <mysql.h>
|
||||
#include <mysql_embed.h>
|
||||
#include <mysqld_error.h>
|
||||
#include <my_pthread.h>
|
||||
|
||||
C_MODE_START
|
||||
void lib_connection_phase(NET *net, int phase);
|
||||
void init_embedded_mysql(MYSQL *mysql, int client_flag, char *db);
|
||||
void *create_embedded_thd(int client_flag, char *db);
|
||||
int check_embedded_connection(MYSQL *mysql);
|
||||
void free_old_query(MYSQL *mysql);
|
||||
void embedded_get_error(MYSQL *mysql);
|
||||
extern MYSQL_METHODS embedded_methods;
|
||||
|
||||
/* This one is used by embedded library to gather returning data */
|
||||
typedef struct embedded_query_result
|
||||
{
|
||||
MYSQL_ROWS **prev_ptr;
|
||||
unsigned int warning_count, server_status;
|
||||
struct st_mysql_data *next;
|
||||
my_ulonglong affected_rows, insert_id;
|
||||
char info[MYSQL_ERRMSG_SIZE];
|
||||
MYSQL_FIELD *fields_list;
|
||||
unsigned int last_errno;
|
||||
char sqlstate[SQLSTATE_LENGTH+1];
|
||||
} EQR;
|
||||
|
||||
C_MODE_END
|
||||
|
@ -42,21 +42,48 @@ C_MODE_START
|
||||
#undef ER
|
||||
#include "errmsg.h"
|
||||
#include <sql_common.h>
|
||||
#include "embedded_priv.h"
|
||||
|
||||
void embedded_get_error(MYSQL *mysql)
|
||||
static my_bool emb_read_query_result(MYSQL *mysql);
|
||||
|
||||
void THD::clear_data_list()
|
||||
{
|
||||
while (first_data)
|
||||
{
|
||||
MYSQL_DATA *data= first_data;
|
||||
first_data= data->embedded_info->next;
|
||||
free_rows(data);
|
||||
}
|
||||
data_tail= &first_data;
|
||||
free_rows(cur_data);
|
||||
cur_data= 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Reads error information from the MYSQL_DATA and puts
|
||||
it into proper MYSQL members
|
||||
|
||||
SYNOPSIS
|
||||
embedded_get_error()
|
||||
mysql connection handler
|
||||
data query result
|
||||
|
||||
NOTES
|
||||
after that function error information will be accessible
|
||||
with usual functions like mysql_error()
|
||||
data is my_free-d in this function
|
||||
most of the data is stored in data->embedded_info structure
|
||||
*/
|
||||
|
||||
void embedded_get_error(MYSQL *mysql, MYSQL_DATA *data)
|
||||
{
|
||||
THD *thd=(THD *) mysql->thd;
|
||||
NET *net= &mysql->net;
|
||||
if ((net->last_errno= thd->net.last_errno))
|
||||
{
|
||||
memcpy(net->last_error, thd->net.last_error, sizeof(net->last_error));
|
||||
memcpy(net->sqlstate, thd->net.sqlstate, sizeof(net->sqlstate));
|
||||
}
|
||||
else
|
||||
{
|
||||
net->last_error[0]= 0;
|
||||
strmov(net->sqlstate, not_error_sqlstate);
|
||||
}
|
||||
struct embedded_query_result *ei= data->embedded_info;
|
||||
net->last_errno= ei->last_errno;
|
||||
strmake(net->last_error, ei->info, sizeof(net->last_error));
|
||||
memcpy(net->sqlstate, ei->sqlstate, sizeof(net->sqlstate));
|
||||
my_free((gptr) data, MYF(0));
|
||||
}
|
||||
|
||||
static my_bool
|
||||
@ -68,11 +95,7 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
|
||||
THD *thd=(THD *) mysql->thd;
|
||||
NET *net= &mysql->net;
|
||||
|
||||
if (thd->data)
|
||||
{
|
||||
free_rows(thd->data);
|
||||
thd->data= 0;
|
||||
}
|
||||
thd->clear_data_list();
|
||||
/* Check that we are calling the client functions in right order */
|
||||
if (mysql->status != MYSQL_STATUS_READY)
|
||||
{
|
||||
@ -104,83 +127,101 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
|
||||
arg_length= header_length;
|
||||
}
|
||||
|
||||
thd->net.no_send_error= 0;
|
||||
result= dispatch_command(command, thd, (char *) arg, arg_length + 1);
|
||||
thd->cur_data= 0;
|
||||
|
||||
if (!skip_check)
|
||||
result= thd->net.last_errno ? -1 : 0;
|
||||
|
||||
/*
|
||||
If mysql->field_count is set it means the parsing of the query was OK
|
||||
and metadata was returned (see Protocol::send_fields).
|
||||
In this case we postpone the error to be returned in mysql_stmt_store_result
|
||||
(see emb_read_rows) to behave just as standalone server.
|
||||
*/
|
||||
if (!mysql->field_count)
|
||||
embedded_get_error(mysql);
|
||||
mysql->server_status= thd->server_status;
|
||||
mysql->warning_count= ((THD*)mysql->thd)->total_warn_count;
|
||||
return result;
|
||||
}
|
||||
|
||||
static void emb_flush_use_result(MYSQL *mysql)
|
||||
{
|
||||
MYSQL_DATA *data= ((THD*)(mysql->thd))->data;
|
||||
|
||||
if (data)
|
||||
THD *thd= (THD*) mysql->thd;
|
||||
if (thd->cur_data)
|
||||
{
|
||||
free_rows(thd->cur_data);
|
||||
thd->cur_data= 0;
|
||||
}
|
||||
else if (thd->first_data)
|
||||
{
|
||||
MYSQL_DATA *data= thd->first_data;
|
||||
thd->first_data= data->embedded_info->next;
|
||||
free_rows(data);
|
||||
((THD*)(mysql->thd))->data= NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
reads dataset from the next query result
|
||||
|
||||
SYNOPSIS
|
||||
emb_read_rows()
|
||||
mysql connection handle
|
||||
other parameters are not used
|
||||
|
||||
NOTES
|
||||
It just gets next MYSQL_DATA from the result's queue
|
||||
|
||||
RETURN
|
||||
pointer to MYSQL_DATA with the coming recordset
|
||||
*/
|
||||
|
||||
static MYSQL_DATA *
|
||||
emb_read_rows(MYSQL *mysql, MYSQL_FIELD *mysql_fields __attribute__((unused)),
|
||||
unsigned int fields __attribute__((unused)))
|
||||
{
|
||||
MYSQL_DATA *result= ((THD*)mysql->thd)->data;
|
||||
embedded_get_error(mysql);
|
||||
if (mysql->net.last_errno)
|
||||
return NULL;
|
||||
if (!result)
|
||||
MYSQL_DATA *result= ((THD*)mysql->thd)->cur_data;
|
||||
((THD*)mysql->thd)->cur_data= 0;
|
||||
if (result->embedded_info->last_errno)
|
||||
{
|
||||
if (!(result=(MYSQL_DATA*) my_malloc(sizeof(MYSQL_DATA),
|
||||
MYF(MY_WME | MY_ZEROFILL))))
|
||||
{
|
||||
NET *net = &mysql->net;
|
||||
net->last_errno=CR_OUT_OF_MEMORY;
|
||||
strmov(net->sqlstate, unknown_sqlstate);
|
||||
strmov(net->last_error,ER(net->last_errno));
|
||||
embedded_get_error(mysql, result);
|
||||
return NULL;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
*result->prev_ptr= NULL;
|
||||
((THD*)mysql->thd)->data= NULL;
|
||||
*result->embedded_info->prev_ptr= NULL;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static MYSQL_FIELD *emb_list_fields(MYSQL *mysql)
|
||||
{
|
||||
MYSQL_DATA *res;
|
||||
if (emb_read_query_result(mysql))
|
||||
return 0;
|
||||
res= ((THD*) mysql->thd)->cur_data;
|
||||
((THD*) mysql->thd)->cur_data= 0;
|
||||
mysql->field_alloc= res->alloc;
|
||||
my_free((gptr) res,MYF(0));
|
||||
mysql->status= MYSQL_STATUS_READY;
|
||||
return mysql->fields;
|
||||
}
|
||||
|
||||
static my_bool emb_read_prepare_result(MYSQL *mysql, MYSQL_STMT *stmt)
|
||||
{
|
||||
THD *thd= (THD*) mysql->thd;
|
||||
if (mysql->net.last_errno)
|
||||
return 1;
|
||||
MYSQL_DATA *res;
|
||||
|
||||
stmt->stmt_id= thd->client_stmt_id;
|
||||
stmt->param_count= thd->client_param_count;
|
||||
stmt->field_count= mysql->field_count;
|
||||
stmt->field_count= 0;
|
||||
|
||||
if (stmt->field_count != 0)
|
||||
if (thd->first_data)
|
||||
{
|
||||
if (emb_read_query_result(mysql))
|
||||
return 1;
|
||||
stmt->field_count= mysql->field_count;
|
||||
mysql->status= MYSQL_STATUS_READY;
|
||||
res= thd->cur_data;
|
||||
thd->cur_data= NULL;
|
||||
if (!(mysql->server_status & SERVER_STATUS_AUTOCOMMIT))
|
||||
mysql->server_status|= SERVER_STATUS_IN_TRANS;
|
||||
|
||||
stmt->fields= mysql->fields;
|
||||
stmt->mem_root= mysql->field_alloc;
|
||||
stmt->mem_root= res->alloc;
|
||||
mysql->fields= NULL;
|
||||
my_free((gptr) res,MYF(0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -201,13 +242,42 @@ static void emb_fetch_lengths(ulong *to, MYSQL_ROW column,
|
||||
*to= *column ? *(uint *)((*column) - sizeof(uint)) : 0;
|
||||
}
|
||||
|
||||
static my_bool emb_mysql_read_query_result(MYSQL *mysql)
|
||||
static my_bool emb_read_query_result(MYSQL *mysql)
|
||||
{
|
||||
if (mysql->net.last_errno)
|
||||
return -1;
|
||||
THD *thd= (THD*) mysql->thd;
|
||||
MYSQL_DATA *res= thd->first_data;
|
||||
DBUG_ASSERT(!thd->cur_data);
|
||||
thd->first_data= res->embedded_info->next;
|
||||
if (res->embedded_info->last_errno &&
|
||||
!res->embedded_info->fields_list)
|
||||
{
|
||||
embedded_get_error(mysql, res);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (mysql->field_count)
|
||||
mysql->warning_count= res->embedded_info->warning_count;
|
||||
mysql->server_status= res->embedded_info->server_status;
|
||||
mysql->field_count= res->fields;
|
||||
mysql->fields= res->embedded_info->fields_list;
|
||||
mysql->affected_rows= res->embedded_info->affected_rows;
|
||||
mysql->insert_id= res->embedded_info->insert_id;
|
||||
mysql->net.last_errno= 0;
|
||||
mysql->net.last_error[0]= 0;
|
||||
mysql->info= 0;
|
||||
|
||||
if (res->embedded_info->info[0])
|
||||
{
|
||||
strmake(mysql->info_buffer, res->embedded_info->info, MYSQL_ERRMSG_SIZE-1);
|
||||
mysql->info= mysql->info_buffer;
|
||||
}
|
||||
|
||||
if (res->embedded_info->fields_list)
|
||||
{
|
||||
mysql->status=MYSQL_STATUS_GET_RESULT;
|
||||
thd->cur_data= res;
|
||||
}
|
||||
else
|
||||
my_free((gptr) res, MYF(0));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -215,14 +285,18 @@ static my_bool emb_mysql_read_query_result(MYSQL *mysql)
|
||||
static int emb_stmt_execute(MYSQL_STMT *stmt)
|
||||
{
|
||||
DBUG_ENTER("emb_stmt_execute");
|
||||
char header[4];
|
||||
char header[5];
|
||||
MYSQL_DATA *res;
|
||||
THD *thd;
|
||||
|
||||
int4store(header, stmt->stmt_id);
|
||||
THD *thd= (THD*)stmt->mysql->thd;
|
||||
header[4]= stmt->flags;
|
||||
thd= (THD*)stmt->mysql->thd;
|
||||
thd->client_param_count= stmt->param_count;
|
||||
thd->client_params= stmt->params;
|
||||
if (emb_advanced_command(stmt->mysql, COM_STMT_EXECUTE,0,0,
|
||||
header, sizeof(header), 1) ||
|
||||
emb_mysql_read_query_result(stmt->mysql))
|
||||
emb_read_query_result(stmt->mysql))
|
||||
{
|
||||
NET *net= &stmt->mysql->net;
|
||||
set_stmt_errmsg(stmt, net->last_error, net->last_errno, net->sqlstate);
|
||||
@ -230,6 +304,8 @@ static int emb_stmt_execute(MYSQL_STMT *stmt)
|
||||
}
|
||||
stmt->affected_rows= stmt->mysql->affected_rows;
|
||||
stmt->insert_id= stmt->mysql->insert_id;
|
||||
stmt->server_status= stmt->mysql->server_status;
|
||||
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
@ -240,22 +316,53 @@ int emb_read_binary_rows(MYSQL_STMT *stmt)
|
||||
return 1;
|
||||
stmt->result= *data;
|
||||
my_free((char *) data, MYF(0));
|
||||
set_stmt_errmsg(stmt, stmt->mysql->net.last_error,
|
||||
stmt->mysql->net.last_errno, stmt->mysql->net.sqlstate);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int emb_read_rows_from_cursor(MYSQL_STMT *stmt)
|
||||
{
|
||||
MYSQL *mysql= stmt->mysql;
|
||||
THD *thd= (THD*) mysql->thd;
|
||||
MYSQL_DATA *res= thd->first_data;
|
||||
DBUG_ASSERT(!thd->first_data->embedded_info->next);
|
||||
thd->first_data= 0;
|
||||
if (res->embedded_info->last_errno)
|
||||
{
|
||||
embedded_get_error(mysql, res);
|
||||
set_stmt_errmsg(stmt, mysql->net.last_error,
|
||||
mysql->net.last_errno, mysql->net.sqlstate);
|
||||
return 1;
|
||||
}
|
||||
|
||||
thd->cur_data= res;
|
||||
mysql->warning_count= res->embedded_info->warning_count;
|
||||
mysql->server_status= res->embedded_info->server_status;
|
||||
mysql->net.last_errno= 0;
|
||||
mysql->net.last_error[0]= 0;
|
||||
|
||||
return emb_read_binary_rows(stmt);
|
||||
}
|
||||
|
||||
int emb_unbuffered_fetch(MYSQL *mysql, char **row)
|
||||
{
|
||||
MYSQL_DATA *data= ((THD*)mysql->thd)->data;
|
||||
embedded_get_error(mysql);
|
||||
if (mysql->net.last_errno)
|
||||
return mysql->net.last_errno;
|
||||
THD *thd= (THD*) mysql->thd;
|
||||
MYSQL_DATA *data= thd->cur_data;
|
||||
if (data && data->embedded_info->last_errno)
|
||||
{
|
||||
embedded_get_error(mysql, data);
|
||||
thd->cur_data= 0;
|
||||
return 1;
|
||||
}
|
||||
if (!data || !data->data)
|
||||
{
|
||||
*row= NULL;
|
||||
if (data)
|
||||
{
|
||||
thd->cur_data= thd->first_data;
|
||||
thd->first_data= data->embedded_info->next;
|
||||
free_rows(data);
|
||||
((THD*)mysql->thd)->data= NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -269,9 +376,9 @@ int emb_unbuffered_fetch(MYSQL *mysql, char **row)
|
||||
static void emb_free_embedded_thd(MYSQL *mysql)
|
||||
{
|
||||
THD *thd= (THD*)mysql->thd;
|
||||
if (thd->data)
|
||||
free_rows(thd->data);
|
||||
thd->clear_data_list();
|
||||
thread_count--;
|
||||
thd->store_globals();
|
||||
delete thd;
|
||||
mysql->thd=0;
|
||||
}
|
||||
@ -283,23 +390,11 @@ static const char * emb_read_statistics(MYSQL *mysql)
|
||||
}
|
||||
|
||||
|
||||
static MYSQL_RES * emb_mysql_store_result(MYSQL *mysql)
|
||||
static MYSQL_RES * emb_store_result(MYSQL *mysql)
|
||||
{
|
||||
return mysql_store_result(mysql);
|
||||
}
|
||||
|
||||
my_bool emb_next_result(MYSQL *mysql)
|
||||
{
|
||||
THD *thd= (THD*)mysql->thd;
|
||||
DBUG_ENTER("emb_next_result");
|
||||
|
||||
if (emb_advanced_command(mysql, COM_QUERY,0,0,
|
||||
thd->query_rest.ptr(),thd->query_rest.length(),1) ||
|
||||
emb_mysql_read_query_result(mysql))
|
||||
DBUG_RETURN(1);
|
||||
|
||||
DBUG_RETURN(0); /* No more results */
|
||||
}
|
||||
|
||||
int emb_read_change_user_result(MYSQL *mysql,
|
||||
char *buff __attribute__((unused)),
|
||||
@ -310,10 +405,10 @@ int emb_read_change_user_result(MYSQL *mysql,
|
||||
|
||||
MYSQL_METHODS embedded_methods=
|
||||
{
|
||||
emb_mysql_read_query_result,
|
||||
emb_read_query_result,
|
||||
emb_advanced_command,
|
||||
emb_read_rows,
|
||||
emb_mysql_store_result,
|
||||
emb_store_result,
|
||||
emb_fetch_lengths,
|
||||
emb_flush_use_result,
|
||||
emb_list_fields,
|
||||
@ -323,8 +418,9 @@ MYSQL_METHODS embedded_methods=
|
||||
emb_unbuffered_fetch,
|
||||
emb_free_embedded_thd,
|
||||
emb_read_statistics,
|
||||
emb_next_result,
|
||||
emb_read_change_user_result
|
||||
emb_read_query_result,
|
||||
emb_read_change_user_result,
|
||||
emb_read_rows_from_cursor
|
||||
};
|
||||
|
||||
C_MODE_END
|
||||
@ -395,6 +491,12 @@ int init_embedded_server(int argc, char **argv, char **groups)
|
||||
|
||||
my_progname= (char *)"mysql_embedded";
|
||||
|
||||
/*
|
||||
Perform basic logger initialization logger. Should be called after
|
||||
MY_INIT, as it initializes mutexes. Log tables are inited later.
|
||||
*/
|
||||
logger.init_base();
|
||||
|
||||
if (init_common_variables("my", *argcp, *argvp, (const char **)groups))
|
||||
{
|
||||
mysql_server_end();
|
||||
@ -483,6 +585,7 @@ void init_embedded_mysql(MYSQL *mysql, int client_flag, char *db)
|
||||
THD *thd = (THD *)mysql->thd;
|
||||
thd->mysql= mysql;
|
||||
mysql->server_version= server_version;
|
||||
init_alloc_root(&mysql->field_alloc, 8192, 0);
|
||||
}
|
||||
|
||||
void *create_embedded_thd(int client_flag, char *db)
|
||||
@ -490,6 +593,7 @@ void *create_embedded_thd(int client_flag, char *db)
|
||||
THD * thd= new THD;
|
||||
thd->thread_id= thread_id++;
|
||||
|
||||
thd->thread_stack= (char*) &thd;
|
||||
if (thd->store_globals())
|
||||
{
|
||||
fprintf(stderr,"store_globals failed.\n");
|
||||
@ -498,7 +602,6 @@ void *create_embedded_thd(int client_flag, char *db)
|
||||
|
||||
thd->mysys_var= my_thread_var;
|
||||
thd->dbug_thread_id= my_thread_id();
|
||||
thd->thread_stack= (char*) &thd;
|
||||
|
||||
/* TODO - add init_connect command execution */
|
||||
|
||||
@ -517,9 +620,10 @@ void *create_embedded_thd(int client_flag, char *db)
|
||||
thd->security_ctx->db_access= DB_ACLS;
|
||||
thd->security_ctx->master_access= ~NO_ACCESS;
|
||||
#endif
|
||||
thd->net.query_cache_query= 0;
|
||||
|
||||
thd->data= 0;
|
||||
thd->cur_data= 0;
|
||||
thd->first_data= 0;
|
||||
thd->data_tail= &thd->first_data;
|
||||
bzero((char*) &thd->net, sizeof(thd->net));
|
||||
|
||||
thread_count++;
|
||||
return thd;
|
||||
@ -531,11 +635,15 @@ err:
|
||||
#ifdef NO_EMBEDDED_ACCESS_CHECKS
|
||||
int check_embedded_connection(MYSQL *mysql)
|
||||
{
|
||||
int result;
|
||||
THD *thd= (THD*)mysql->thd;
|
||||
Security_context *sctx= thd->security_ctx;
|
||||
sctx->host_or_ip= sctx->host= (char*) my_localhost;
|
||||
strmake(sctx->priv_host, (char*) my_localhost, MAX_HOSTNAME-1);
|
||||
sctx->priv_user= sctx->user= my_strdup(mysql->user, MYF(0));
|
||||
return check_user(thd, COM_CONNECT, NULL, 0, thd->db, true);
|
||||
result= check_user(thd, COM_CONNECT, NULL, 0, thd->db, true);
|
||||
emb_read_query_result(mysql);
|
||||
return result;
|
||||
}
|
||||
|
||||
#else
|
||||
@ -616,26 +724,147 @@ static char *dup_str_aux(MEM_ROOT *root, const char *from, uint length,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
creates new result and hooks it to the list
|
||||
|
||||
SYNOPSIS
|
||||
alloc_new_dataset()
|
||||
|
||||
NOTES
|
||||
allocs the MYSQL_DATA + embedded_query_result couple
|
||||
to store the next query result,
|
||||
links these two and attach it to the THD::data_tail
|
||||
|
||||
RETURN
|
||||
pointer to the newly created query result
|
||||
*/
|
||||
|
||||
MYSQL_DATA *THD::alloc_new_dataset()
|
||||
{
|
||||
MYSQL_DATA *data;
|
||||
struct embedded_query_result *emb_data;
|
||||
if (!my_multi_malloc(MYF(MY_WME | MY_ZEROFILL),
|
||||
&data, sizeof(*data),
|
||||
&emb_data, sizeof(*emb_data),
|
||||
NULL))
|
||||
return NULL;
|
||||
|
||||
emb_data->prev_ptr= &data->data;
|
||||
cur_data= data;
|
||||
*data_tail= data;
|
||||
data_tail= &emb_data->next;
|
||||
data->embedded_info= emb_data;
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
stores server_status and warning_count in the current
|
||||
query result structures
|
||||
|
||||
SYNOPSIS
|
||||
write_eof_packet()
|
||||
thd current thread
|
||||
|
||||
NOTES
|
||||
should be called to after we get the recordset-result
|
||||
|
||||
*/
|
||||
|
||||
static void write_eof_packet(THD *thd)
|
||||
{
|
||||
/*
|
||||
The following test should never be true, but it's better to do it
|
||||
because if 'is_fatal_error' is set the server is not going to execute
|
||||
other queries (see the if test in dispatch_command / COM_QUERY)
|
||||
*/
|
||||
if (thd->is_fatal_error)
|
||||
thd->server_status&= ~SERVER_MORE_RESULTS_EXISTS;
|
||||
thd->cur_data->embedded_info->server_status= thd->server_status;
|
||||
/*
|
||||
Don't send warn count during SP execution, as the warn_list
|
||||
is cleared between substatements, and mysqltest gets confused
|
||||
*/
|
||||
thd->cur_data->embedded_info->warning_count=
|
||||
(thd->spcont ? 0 : min(thd->total_warn_count, 65535));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
allocs new query result and initialises Protocol::alloc
|
||||
|
||||
SYNOPSIS
|
||||
Protocol::begin_dataset()
|
||||
|
||||
RETURN
|
||||
0 if success
|
||||
1 if memory allocation failed
|
||||
*/
|
||||
|
||||
int Protocol::begin_dataset()
|
||||
{
|
||||
MYSQL_DATA *data= thd->alloc_new_dataset();
|
||||
if (!data)
|
||||
return 1;
|
||||
alloc= &data->alloc;
|
||||
init_alloc_root(alloc,8192,0); /* Assume rowlength < 8192 */
|
||||
alloc->min_malloc=sizeof(MYSQL_ROWS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
remove last row of current recordset
|
||||
|
||||
SYNOPSIS
|
||||
Protocol_simple::remove_last_row()
|
||||
|
||||
NOTES
|
||||
does the loop from the beginning of the current recordset to
|
||||
the last record and cuts it off.
|
||||
Not supposed to be frequently called.
|
||||
*/
|
||||
|
||||
void Protocol_simple::remove_last_row()
|
||||
{
|
||||
MYSQL_DATA *data= thd->cur_data;
|
||||
MYSQL_ROWS **last_row_hook= &data->data;
|
||||
uint count= data->rows;
|
||||
DBUG_ENTER("Protocol_simple::remove_last_row");
|
||||
while (--count)
|
||||
last_row_hook= &(*last_row_hook)->next;
|
||||
|
||||
*last_row_hook= 0;
|
||||
data->embedded_info->prev_ptr= last_row_hook;
|
||||
data->rows--;
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
bool Protocol::send_fields(List<Item> *list, uint flags)
|
||||
{
|
||||
List_iterator_fast<Item> it(*list);
|
||||
Item *item;
|
||||
MYSQL_FIELD *client_field;
|
||||
MYSQL *mysql= thd->mysql;
|
||||
MEM_ROOT *field_alloc;
|
||||
CHARSET_INFO *thd_cs= thd->variables.character_set_results;
|
||||
CHARSET_INFO *cs= system_charset_info;
|
||||
|
||||
MYSQL_DATA *data;
|
||||
DBUG_ENTER("send_fields");
|
||||
|
||||
if (!mysql) // bootstrap file handling
|
||||
if (!thd->mysql) // bootstrap file handling
|
||||
DBUG_RETURN(0);
|
||||
|
||||
field_count= list->elements;
|
||||
field_alloc= &mysql->field_alloc;
|
||||
if (!(client_field= thd->mysql->fields=
|
||||
(MYSQL_FIELD *)alloc_root(field_alloc,
|
||||
sizeof(MYSQL_FIELD) * field_count)))
|
||||
if (begin_dataset())
|
||||
goto err;
|
||||
|
||||
data= thd->cur_data;
|
||||
data->fields= field_count= list->elements;
|
||||
field_alloc= &data->alloc;
|
||||
|
||||
if (!(client_field= data->embedded_info->fields_list=
|
||||
(MYSQL_FIELD*)alloc_root(field_alloc, sizeof(MYSQL_FIELD)*field_count)))
|
||||
goto err;
|
||||
|
||||
while ((item= it++))
|
||||
@ -643,6 +872,10 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
|
||||
Send_field server_field;
|
||||
item->make_field(&server_field);
|
||||
|
||||
/* Keep things compatible for old clients */
|
||||
if (server_field.type == MYSQL_TYPE_VARCHAR)
|
||||
server_field.type= MYSQL_TYPE_VAR_STRING;
|
||||
|
||||
client_field->db= dup_str_aux(field_alloc, server_field.db_name,
|
||||
strlen(server_field.db_name), cs, thd_cs);
|
||||
client_field->table= dup_str_aux(field_alloc, server_field.table_name,
|
||||
@ -703,7 +936,9 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
|
||||
client_field->max_length= 0;
|
||||
++client_field;
|
||||
}
|
||||
thd->mysql->field_count= field_count;
|
||||
|
||||
if (flags & SEND_EOF)
|
||||
write_eof_packet(thd);
|
||||
|
||||
DBUG_RETURN(prepare_for_send(list));
|
||||
err:
|
||||
@ -723,25 +958,11 @@ bool Protocol::write()
|
||||
bool Protocol_prep::write()
|
||||
{
|
||||
MYSQL_ROWS *cur;
|
||||
MYSQL_DATA *data= thd->data;
|
||||
|
||||
if (!data)
|
||||
{
|
||||
if (!(data= (MYSQL_DATA*) my_malloc(sizeof(MYSQL_DATA),
|
||||
MYF(MY_WME | MY_ZEROFILL))))
|
||||
return true;
|
||||
|
||||
alloc= &data->alloc;
|
||||
init_alloc_root(alloc,8192,0); /* Assume rowlength < 8192 */
|
||||
alloc->min_malloc=sizeof(MYSQL_ROWS);
|
||||
data->rows=0;
|
||||
data->fields=field_count;
|
||||
data->prev_ptr= &data->data;
|
||||
thd->data= data;
|
||||
}
|
||||
MYSQL_DATA *data= thd->cur_data;
|
||||
|
||||
data->rows++;
|
||||
if (!(cur= (MYSQL_ROWS *)alloc_root(alloc, sizeof(MYSQL_ROWS)+packet->length())))
|
||||
if (!(cur= (MYSQL_ROWS *)alloc_root(alloc,
|
||||
sizeof(MYSQL_ROWS)+packet->length())))
|
||||
{
|
||||
my_error(ER_OUT_OF_RESOURCES,MYF(0));
|
||||
return true;
|
||||
@ -750,8 +971,8 @@ bool Protocol_prep::write()
|
||||
memcpy(cur->data, packet->ptr()+1, packet->length()-1);
|
||||
cur->length= packet->length(); /* To allow us to do sanity checks */
|
||||
|
||||
*data->prev_ptr= cur;
|
||||
data->prev_ptr= &cur->next;
|
||||
*data->embedded_info->prev_ptr= cur;
|
||||
data->embedded_info->prev_ptr= &cur->next;
|
||||
cur->next= 0;
|
||||
|
||||
return false;
|
||||
@ -761,46 +982,52 @@ void
|
||||
send_ok(THD *thd,ha_rows affected_rows,ulonglong id,const char *message)
|
||||
{
|
||||
DBUG_ENTER("send_ok");
|
||||
MYSQL *mysql= current_thd->mysql;
|
||||
MYSQL_DATA *data;
|
||||
MYSQL *mysql= thd->mysql;
|
||||
|
||||
if (!mysql) // bootstrap file handling
|
||||
DBUG_VOID_RETURN;
|
||||
mysql->affected_rows= affected_rows;
|
||||
mysql->insert_id= id;
|
||||
if (thd->net.no_send_ok) // hack for re-parsing queries
|
||||
DBUG_VOID_RETURN;
|
||||
if (!(data= thd->alloc_new_dataset()))
|
||||
return;
|
||||
data->embedded_info->affected_rows= affected_rows;
|
||||
data->embedded_info->insert_id= id;
|
||||
if (message)
|
||||
{
|
||||
strmake(thd->net.last_error, message, sizeof(thd->net.last_error)-1);
|
||||
mysql->info= thd->net.last_error;
|
||||
}
|
||||
strmake(data->embedded_info->info, message,
|
||||
sizeof(data->embedded_info->info)-1);
|
||||
|
||||
write_eof_packet(thd);
|
||||
thd->cur_data= 0;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
send_eof(THD *thd)
|
||||
{
|
||||
write_eof_packet(thd);
|
||||
thd->cur_data= 0;
|
||||
}
|
||||
|
||||
|
||||
void net_send_error_packet(THD *thd, uint sql_errno, const char *err)
|
||||
{
|
||||
MYSQL_DATA *data= thd->cur_data ? thd->cur_data : thd->alloc_new_dataset();
|
||||
struct embedded_query_result *ei= data->embedded_info;
|
||||
|
||||
ei->last_errno= sql_errno;
|
||||
strmake(ei->info, err, sizeof(ei->info)-1);
|
||||
strmov(ei->sqlstate, mysql_errno_to_sqlstate(sql_errno));
|
||||
thd->cur_data= 0;
|
||||
}
|
||||
|
||||
|
||||
void Protocol_simple::prepare_for_resend()
|
||||
{
|
||||
MYSQL_ROWS *cur;
|
||||
MYSQL_DATA *data= thd->data;
|
||||
|
||||
MYSQL_DATA *data= thd->cur_data;
|
||||
DBUG_ENTER("send_data");
|
||||
|
||||
if (!data)
|
||||
{
|
||||
if (!(data= (MYSQL_DATA*) my_malloc(sizeof(MYSQL_DATA),
|
||||
MYF(MY_WME | MY_ZEROFILL))))
|
||||
goto err;
|
||||
|
||||
alloc= &data->alloc;
|
||||
init_alloc_root(alloc,8192,0); /* Assume rowlength < 8192 */
|
||||
alloc->min_malloc=sizeof(MYSQL_ROWS);
|
||||
data->rows=0;
|
||||
data->fields=field_count;
|
||||
data->prev_ptr= &data->data;
|
||||
thd->data= data;
|
||||
}
|
||||
|
||||
data->rows++;
|
||||
if (!(cur= (MYSQL_ROWS *)alloc_root(alloc, sizeof(MYSQL_ROWS)+(field_count + 1) * sizeof(char *))))
|
||||
{
|
||||
@ -809,10 +1036,10 @@ void Protocol_simple::prepare_for_resend()
|
||||
}
|
||||
cur->data= (MYSQL_ROW)(((char *)cur) + sizeof(MYSQL_ROWS));
|
||||
|
||||
*data->prev_ptr= cur;
|
||||
data->prev_ptr= &cur->next;
|
||||
*data->embedded_info->prev_ptr= cur;
|
||||
data->embedded_info->prev_ptr= &cur->next;
|
||||
next_field=cur->data;
|
||||
next_mysql_field= thd->mysql->fields;
|
||||
next_mysql_field= data->embedded_info->fields_list;
|
||||
err:
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
@ -14,6 +14,11 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#include <my_global.h>
|
||||
#include <mysql.h>
|
||||
#include <mysql_embed.h>
|
||||
#include <mysqld_error.h>
|
||||
#include <my_pthread.h>
|
||||
#include "embedded_priv.h"
|
||||
#include <my_sys.h>
|
||||
#include <mysys_err.h>
|
||||
@ -193,6 +198,11 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
||||
|
||||
if (!user)
|
||||
user= "";
|
||||
/*
|
||||
We need to alloc some space for mysql->info but don't want to
|
||||
put extra 'my_free's in mysql_close.
|
||||
So we alloc it with the 'user' string to be freed at once
|
||||
*/
|
||||
mysql->user= my_strdup(user, MYF(0));
|
||||
|
||||
port=0;
|
||||
@ -207,6 +217,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
||||
if (db)
|
||||
client_flag|=CLIENT_CONNECT_WITH_DB;
|
||||
|
||||
mysql->info_buffer= my_malloc(MYSQL_ERRMSG_SIZE, MYF(0));
|
||||
mysql->thd= create_embedded_thd(client_flag, db_name);
|
||||
|
||||
init_embedded_mysql(mysql, client_flag, db_name);
|
||||
@ -243,7 +254,6 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
||||
DBUG_RETURN(mysql);
|
||||
|
||||
error:
|
||||
embedded_get_error(mysql);
|
||||
DBUG_PRINT("error",("message: %u (%s)", mysql->net.last_errno,
|
||||
mysql->net.last_error));
|
||||
{
|
||||
|
@ -3,5 +3,12 @@
|
||||
|
||||
--source include/not_windows.inc
|
||||
|
||||
# check that CSV engine was compiled in, as IM the test suite uses
|
||||
# logs tables-specific option and the option is not present if CSV
|
||||
# (and => the log tables) are not in.
|
||||
# NOTE: In future we should remove this check and make the test suite
|
||||
# to pass correct opyions to IM depending on the CSV presence
|
||||
--source include/have_csv.inc
|
||||
|
||||
--connection default
|
||||
--disconnect dflt_server_con
|
||||
|
750
mysql-test/include/partition_1.inc
Normal file
750
mysql-test/include/partition_1.inc
Normal file
@ -0,0 +1,750 @@
|
||||
-- source include/have_partition.inc
|
||||
|
||||
# include/partition_1.inc
|
||||
#
|
||||
# Partitionong tests
|
||||
#
|
||||
# Attention: The variable
|
||||
# $engine -- Storage engine to be tested.
|
||||
# must be set within the script sourcing this file.
|
||||
#
|
||||
--disable_abort_on_error
|
||||
SET AUTOCOMMIT= 1;
|
||||
|
||||
##### Disabled testcases, because of open bugs #####
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # There are several testcases disabled because ouf the open bugs
|
||||
--echo # #15407 , #15408 , #15890 , #15961 , #13447 , #15966 , #15968, #16370
|
||||
--echo #------------------------------------------------------------------------
|
||||
# Bug#15407 Partitions: crash if subpartition
|
||||
let $fixed_bug15407= 0;
|
||||
# Bug#15408 Partitions: subpartition names are not unique
|
||||
let $fixed_bug15408= 0;
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
let $fixed_bug15890= 0;
|
||||
# Bug#15961 Partitions: Creation of subpart. table without subpart. rule not rejected
|
||||
let $fixed_bug15961= 0;
|
||||
# Bug#13447 Partitions: crash with alter table
|
||||
let $fixed_bug13447= 0;
|
||||
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
|
||||
let $fixed_bug15966= 0;
|
||||
# Bug#15968 Partitions: crash when INSERT with f1 = -1 into PARTITION BY HASH(f1)
|
||||
let $fixed_bug15968= 0;
|
||||
# Bug #16370 Partitions: subpartitions names not mentioned in SHOW CREATE TABLE output
|
||||
let $fixed_bug16370= 0;
|
||||
|
||||
##### Option, for displaying files #####
|
||||
#
|
||||
# Attention: Displaying the directory content via "ls var/master-data/test/t*"
|
||||
# is probably not portable.
|
||||
# let $ls= 0; disables the execution of "ls ....."
|
||||
let $ls= 0;
|
||||
|
||||
################################################################################
|
||||
# Partitioning syntax
|
||||
#
|
||||
# CREATE TABLE .... (column-list ..)
|
||||
# PARTITION BY
|
||||
# KEY '(' ( column-list ) ')'
|
||||
# | RANGE '(' ( expr ) ')'
|
||||
# | LIST '(' ( expr ) ')'
|
||||
# | HASH '(' ( expr ) ')'
|
||||
# [PARTITIONS num ]
|
||||
# [SUBPARTITION BY
|
||||
# KEY '(' ( column-list ) ')'
|
||||
# | HASH '(' ( expr ) ')'
|
||||
# [SUBPARTITIONS num ]
|
||||
# ]
|
||||
# [ '('
|
||||
# ( PARTITION logical-name
|
||||
# [ VALUES LESS THAN '(' ( expr | MAX_VALUE ) ')' ]
|
||||
# [ VALUES IN '(' (expr)+ ')' ]
|
||||
# [ TABLESPACE tablespace-name ]
|
||||
# [ [ STORAGE ] ENGINE [ '=' ] storage-engine-name ]
|
||||
# [ NODEGROUP nodegroup-id ]
|
||||
# [ '('
|
||||
# ( SUBPARTITION logical-name
|
||||
# [ TABLESPACE tablespace-name ]
|
||||
# [ STORAGE ENGINE = storage-engine-name ]
|
||||
# [ NODEGROUP nodegroup-id ]
|
||||
# )+
|
||||
# ')'
|
||||
# )+
|
||||
# ')'
|
||||
# ]
|
||||
################################################################################
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 0. Setting of auxiliary variables + Creation of an auxiliary table
|
||||
--echo # needed in all testcases
|
||||
--echo #------------------------------------------------------------------------
|
||||
let $max_row= `SELECT @max_row`;
|
||||
let $max_row_div2= `SELECT @max_row DIV 2`;
|
||||
let $max_row_div3= `SELECT @max_row DIV 3`;
|
||||
let $max_row_div4= `SELECT @max_row DIV 4`;
|
||||
let $max_int_4= 2147483647;
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t0_template;
|
||||
--enable_warnings
|
||||
CREATE TABLE t0_template ( f1 INTEGER, f2 char(20), PRIMARY KEY(f1))
|
||||
ENGINE = MEMORY;
|
||||
--echo # Logging of <max_row> INSERTs into t0_template suppressed
|
||||
--disable_query_log
|
||||
let $num= $max_row;
|
||||
while ($num)
|
||||
{
|
||||
eval INSERT INTO t0_template SET f1 = $num, f2 = '---$num---';
|
||||
|
||||
dec $num;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 1. Some syntax checks
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 1.1 Subpartioned table without subpartitioning rule must be rejected
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
if ($fixed_bug15961)
|
||||
{
|
||||
# Bug#15961 Partitions: Creation of subpart. table without subpart. rule not rejected
|
||||
--error 9999
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
( PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11));
|
||||
}
|
||||
--echo # FIXME Implement testcases, where it is checked that all create and
|
||||
--echo # alter table statements
|
||||
--echo # - with missing mandatory parameters are rejected
|
||||
--echo # - with optional parameters are accepted
|
||||
--echo # - with wrong combinations of optional parameters are rejected
|
||||
--echo # - ............
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 2. Checks where the engine is assigned on all supported (CREATE TABLE
|
||||
--echo # statement) positions + basic operations on the tables
|
||||
--echo # Storage engine mixups are currently (2005-12-23) not supported
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
--echo # 2.1 non partitioned table (for comparison)
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine;
|
||||
# MLML Full size (as check of check routine)
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.2 Assignment of storage engine just after column list only
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine
|
||||
PARTITION BY HASH(f1) PARTITIONS 2;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.3 Assignment of storage engine just after partition or subpartition
|
||||
--echo # name only
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 STORAGE ENGINE = $engine,
|
||||
PARTITION part2 STORAGE ENGINE = $engine
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.4 Some but not all named partitions or subpartitions get a storage
|
||||
--echo # engine assigned
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 STORAGE ENGINE = $engine,
|
||||
PARTITION part2
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 ,
|
||||
PARTITION part2 STORAGE ENGINE = $engine
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21,
|
||||
SUBPARTITION subpart22 )
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.5 Storage engine assignment after partition name + after name of
|
||||
--echo # subpartitions belonging to another partition
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2) ENGINE = $engine
|
||||
(SUBPARTITION subpart11,
|
||||
SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4) ENGINE = $engine
|
||||
(SUBPARTITION subpart21,
|
||||
SUBPARTITION subpart22)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.6 Precedence of storage engine assignments
|
||||
--echo # 2.6.1 Storage engine assignment after column list + after partition
|
||||
--echo # or subpartition name
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 STORAGE ENGINE = $engine,
|
||||
PARTITION part2 STORAGE ENGINE = $engine
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
--echo # 2.6.2 Storage engine assignment after partition name + after
|
||||
--echo # subpartition name
|
||||
# in partition part + in sub partition part
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2) STORAGE ENGINE = $engine
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 2.7 Session default engine differs from engine used within create table
|
||||
eval SET SESSION storage_engine=$engine_other;
|
||||
if ($fixed_bug15966)
|
||||
{
|
||||
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) ( PARTITION part1 ENGINE = $engine);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine));
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
}
|
||||
eval SET SESSION storage_engine=$engine;
|
||||
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 3. Check assigning the number of partitions and subpartitions
|
||||
--echo # with and without named partitions/subpartitions
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
--echo # 3.1 (positive) without partition/subpartition number assignment
|
||||
--echo # 3.1.1 no partition number, no named partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
--echo # 3.1.2 no partition number, named partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part2);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
# Attention: Several combinations are impossible
|
||||
# If subpartitioning exists
|
||||
# - partitioning algorithm must be RANGE or LIST
|
||||
# This implies the assignment of named partitions.
|
||||
# - subpartitioning algorithm must be HASH or KEY
|
||||
--echo # 3.1.3 variations on no partition/subpartition number, named partitions,
|
||||
--echo # different subpartitions are/are not named
|
||||
#
|
||||
# Partition name -- "properties"
|
||||
# part1 -- first/non last
|
||||
# part2 -- non first/non last
|
||||
# part3 -- non first/ last
|
||||
#
|
||||
# Testpattern:
|
||||
# named subpartitions in
|
||||
# Partition part1 part2 part3
|
||||
# N N N
|
||||
# N N Y
|
||||
# N Y N
|
||||
# N Y Y
|
||||
# Y N N
|
||||
# Y N Y
|
||||
# Y Y N
|
||||
# Y Y Y
|
||||
--disable_query_log
|
||||
let $part0= CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) SUBPARTITION BY HASH(f1);
|
||||
#
|
||||
eval SET @aux = '(PARTITION part1 VALUES LESS THAN ($max_row_div2),';
|
||||
let $part1_N= `SELECT @AUX`;
|
||||
eval SET @aux = '(PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 , SUBPARTITION subpart12 ),';
|
||||
let $part1_Y= `SELECT @AUX`;
|
||||
#
|
||||
eval SET @aux = 'PARTITION part2 VALUES LESS THAN ($max_row),';
|
||||
let $part2_N= `SELECT @AUX`;
|
||||
eval SET @aux = 'PARTITION part2 VALUES LESS THAN ($max_row)
|
||||
(SUBPARTITION subpart21 , SUBPARTITION subpart22 ),';
|
||||
let $part2_Y= `SELECT @AUX`;
|
||||
#
|
||||
eval SET @aux = 'PARTITION part3 VALUES LESS THAN ($max_int_4))';
|
||||
let $part3_N= `SELECT @AUX`;
|
||||
eval SET @aux = 'PARTITION part3 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart31 , SUBPARTITION subpart32 ))';
|
||||
let $part3_Y= `SELECT @AUX`;
|
||||
--enable_query_log
|
||||
|
||||
eval $part0 $part1_N $part2_N $part3_N ;
|
||||
DROP TABLE t1;
|
||||
# Bug#15407 Partitions: crash if subpartition
|
||||
if ($fixed_bug15407)
|
||||
{
|
||||
eval $part0 $part1_N $part2_N $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_N $part2_Y $part3_N ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_N $part2_Y $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_Y $part2_N $part3_N ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_Y $part2_N $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_Y $part2_Y $part3_N ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
}
|
||||
eval $part0 $part1_Y $part2_Y $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 3.2 partition/subpartition numbers good and bad values and notations
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
--echo # 3.2.1 partition/subpartition numbers INTEGER notation
|
||||
# ML: "positive/negative" is my private judgement. It need no to correspond
|
||||
# with the server response.
|
||||
# (positive) number = 2
|
||||
let $part_number= 2;
|
||||
--source include/partition_11.inc
|
||||
# (positive) special case number = 1
|
||||
let $part_number= 1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 0 is non sense
|
||||
let $part_number= 0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) -1 is non sense
|
||||
let $part_number= -1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 1000000 is too huge
|
||||
let $part_number= 1000000;
|
||||
--source include/partition_11.inc
|
||||
|
||||
if ($fixed_bug15890)
|
||||
{
|
||||
--echo # 3.2.2 partition/subpartition numbers DECIMAL notation
|
||||
# (positive) number = 2.0
|
||||
let $part_number= 2.0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) -2.0 is non sense
|
||||
let $part_number= -2.0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) case number = 0.0 is non sense
|
||||
let $part_number= 0.0;
|
||||
--source include/partition_11.inc
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
# (negative) number = 1.5 is non sense
|
||||
let $part_number= 1.5;
|
||||
--source include/partition_11.inc
|
||||
# (negative) number is too huge
|
||||
let $part_number= 999999999999999999999999999999.999999999999999999999999999999;
|
||||
--source include/partition_11.inc
|
||||
# (negative) number is nearly zero
|
||||
let $part_number= 0.000000000000000000000000000001;
|
||||
--source include/partition_11.inc
|
||||
|
||||
--echo # 3.2.3 partition/subpartition numbers FLOAT notation
|
||||
##### FLOAT notation
|
||||
# (positive) number = 2.0E+0
|
||||
let $part_number= 2.0E+0;
|
||||
--source include/partition_11.inc
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
# (positive) number = 0.2E+1
|
||||
let $part_number= 0.2E+1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) -2.0E+0 is non sense
|
||||
let $part_number= -2.0E+0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 0.15E+1 is non sense
|
||||
let $part_number= 0.15E+1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 0.0E+300 is zero
|
||||
let $part_number= 0.0E+300;
|
||||
--source include/partition_11.inc
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
# (negative) 1E+300 is too huge
|
||||
let $part_number= 1E+300;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 1E-300 is nearly zero
|
||||
let $part_number= 1E-300;
|
||||
--source include/partition_11.inc
|
||||
}
|
||||
|
||||
--echo # 3.2.4 partition/subpartition numbers STRING notation
|
||||
##### STRING notation
|
||||
# (negative?) case number = '2'
|
||||
let $part_number= '2';
|
||||
--source include/partition_11.inc
|
||||
# (negative?) case number = '2.0'
|
||||
let $part_number= '2.0';
|
||||
--source include/partition_11.inc
|
||||
# (negative?) case number = '0.2E+1'
|
||||
let $part_number= '0.2E+1';
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with digit, but 'A' follows
|
||||
let $part_number= '2A';
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with 'A', but digit follows
|
||||
let $part_number= 'A2';
|
||||
--source include/partition_11.inc
|
||||
# (negative) empty string
|
||||
let $part_number= '';
|
||||
--source include/partition_11.inc
|
||||
# (negative) string without any digits
|
||||
let $part_number= 'GARBAGE';
|
||||
--source include/partition_11.inc
|
||||
|
||||
--echo # 3.2.5 partition/subpartition numbers other notations
|
||||
# (negative) Strings starts with digit, but 'A' follows
|
||||
let $part_number= 2A;
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with 'A', but digit follows
|
||||
let $part_number= A2;
|
||||
--source include/partition_11.inc
|
||||
# (negative) string without any digits
|
||||
let $part_number= GARBAGE;
|
||||
--source include/partition_11.inc
|
||||
|
||||
# (negative?) double quotes
|
||||
let $part_number= "2";
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with digit, but 'A' follows
|
||||
let $part_number= "2A";
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with 'A', but digit follows
|
||||
let $part_number= "A2";
|
||||
--source include/partition_11.inc
|
||||
# (negative) string without any digits
|
||||
let $part_number= "GARBAGE";
|
||||
--source include/partition_11.inc
|
||||
|
||||
--echo # 3.3 Mixups of assigned partition/subpartition numbers and names
|
||||
--echo # 3.3.1 (positive) number of partition/subpartition
|
||||
--echo # = number of named partition/subpartition
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS 2 ( PARTITION part1, PARTITION part2 ) ;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) PARTITIONS 2
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
--source include/partition_layout.inc
|
||||
DROP TABLE t1;
|
||||
--echo # 3.3.2 (positive) number of partition/subpartition ,
|
||||
--echo # 0 (= no) named partition/subpartition
|
||||
--echo # already checked above
|
||||
--echo # 3.3.3 (negative) number of partitions/subpartitions
|
||||
--echo # > number of named partitions/subpartitions
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS 2 ( PARTITION part1 ) ;
|
||||
# Wrong number of named subpartitions in first partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11 ),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
# Wrong number of named subpartitions in non first/non last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2000)
|
||||
(SUBPARTITION subpart21 ),
|
||||
PARTITION part3 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart31, SUBPARTITION subpart32)
|
||||
);
|
||||
# Wrong number of named subpartitions in last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) PARTITIONS 2
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21 )
|
||||
);
|
||||
--echo # 3.3.4 (negative) number of partitions < number of named partitions
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS 1 ( PARTITION part1, PARTITION part2 ) ;
|
||||
# Wrong number of named subpartitions in first partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
# Wrong number of named subpartitions in non first/non last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2000)
|
||||
(SUBPARTITION subpart21 ),
|
||||
PARTITION part3 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart31, SUBPARTITION subpart32)
|
||||
);
|
||||
# Wrong number of named subpartitions in last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 4. Checks of logical partition/subpartition name
|
||||
--echo # file name clashes during CREATE TABLE
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
--echo # 4.1 (negative) A partition name used more than once
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part1);
|
||||
#
|
||||
if ($fixed_bug15408)
|
||||
{
|
||||
# Bug#15408 Partitions: subpartition names are not unique
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart11)
|
||||
);
|
||||
}
|
||||
--echo # FIXME Implement testcases with filename problems
|
||||
--echo # existing file of other table --- partition/subpartition file name
|
||||
--echo # partition/subpartition file name --- file of the same table
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 5. Alter table experiments
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
--echo # 5.1 alter table add partition
|
||||
--echo # 5.1.1 (negative) add partition to non partitioned table
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20));
|
||||
--source include/partition_layout.inc
|
||||
# MyISAM gets ER_PARTITION_MGMT_ON_NONPARTITIONED and NDB 1005
|
||||
# The error code of NDB differs, because all NDB tables are partitioned even
|
||||
# if the CREATE TABLE does not contain a partitioning clause.
|
||||
--error ER_PARTITION_MGMT_ON_NONPARTITIONED,1005
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
|
||||
--source include/partition_layout.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.2 Add one partition to a table with one partition
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1);
|
||||
--source include/partition_layout.inc
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
--disable_query_log
|
||||
eval SELECT $engine = 'NDB' INTO @aux;
|
||||
let $my_exit= `SELECT @aux`;
|
||||
if ($my_exit)
|
||||
{
|
||||
exit;
|
||||
}
|
||||
--enable_query_log
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
|
||||
--source include/partition_12.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.3 Several times add one partition to a table with some partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part3);
|
||||
--source include/partition_layout.inc
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
# Partition name before first existing partition name
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part0);
|
||||
--source include/partition_12.inc
|
||||
DELETE FROM t1;
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
# Partition name between existing partition names
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part2);
|
||||
--source include/partition_12.inc
|
||||
DELETE FROM t1;
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
if ($fixed_bug13447)
|
||||
{
|
||||
# Partition name after all existing partition names
|
||||
# Bug#13447 Partitions: crash with alter table
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part4);
|
||||
}
|
||||
--source include/partition_12.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.4 Add several partitions to a table with some partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part3);
|
||||
--source include/partition_layout.inc
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
if ($fixed_bug13447)
|
||||
{
|
||||
# Bug#13447 Partitions: crash with alter table
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part0, PARTITION part2, PARTITION part4);
|
||||
}
|
||||
--source include/partition_12.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.5 (negative) Add partitions to a table with some partitions
|
||||
--echo # clash on new and already existing partition names
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part2, PARTITION part3);
|
||||
# Clash on first/non last partition name
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
|
||||
# Clash on non first/non last partition name
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part2);
|
||||
# Clash on non first/last partition name
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part3);
|
||||
# Clash on all partition names
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1, PARTITION part2, PARTITION part3);
|
||||
DROP TABLE t1;
|
||||
|
||||
# FIXME Is there any way to add a subpartition to an already existing partition
|
||||
|
||||
--echo # 5.2 alter table add subpartition
|
||||
--echo # 5.2.1 Add one subpartition to a table with subpartitioning rule and
|
||||
--echo # no explicit defined subpartitions
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
(PARTITION part1 VALUES LESS THAN ($max_row_div2));
|
||||
if ($fixed_bug16370)
|
||||
{
|
||||
--source include/partition_layout.inc
|
||||
}
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
eval ALTER TABLE t1 ADD PARTITION (PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21));
|
||||
if ($fixed_bug16370)
|
||||
{
|
||||
--source include/partition_12.inc
|
||||
}
|
||||
DROP TABLE t1;
|
||||
DROP TABLE if exists t0_template;
|
73
mysql-test/include/partition_10.inc
Normal file
73
mysql-test/include/partition_10.inc
Normal file
@ -0,0 +1,73 @@
|
||||
# include/partition_10.inc
|
||||
#
|
||||
# Do some basic checks on a table.
|
||||
#
|
||||
# FIXME: Do not write the statements and results, if SQL return code = 0
|
||||
# and result set like expected. Write a message, that all is like
|
||||
# expected instead.
|
||||
#
|
||||
# All SELECTs are so written, that we get my_value = 1, when everything
|
||||
# is like expected.
|
||||
#
|
||||
|
||||
--source include/partition_layout.inc
|
||||
|
||||
####### Variations with multiple records
|
||||
# Select on empty table
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1;
|
||||
# (mass) Insert of $max_row records
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Update $max_row_div4 * 2 + 1 records
|
||||
eval UPDATE t1 SET f1 = f1 + $max_row
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 AND $max_row_div2 + $max_row_div4;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row_div2 + $max_row_div4 + $max_row )
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Delete $max_row_div4 * 2 + 1 records
|
||||
eval DELETE FROM t1
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 + $max_row AND $max_row_div2 + $max_row_div4 + $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row - $max_row_div4 - $max_row_div4 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
|
||||
####### Variations with single records
|
||||
# Insert one record at beginning
|
||||
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
|
||||
# Select this record
|
||||
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
|
||||
# Insert one record at end
|
||||
eval INSERT INTO t1 SET f1 = $max_row + 1, f2 = '#######';
|
||||
# Select this record
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Update one record
|
||||
eval UPDATE t1 SET f1 = $max_row + 2, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = 0 AND f2 = '#######';
|
||||
# Select
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
# Bug #15968: Partitions: crash when INSERT with f1 = -1 into PARTITION BY HASH(f1)
|
||||
eval UPDATE t1 SET f1 = 0 - 1, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Select
|
||||
SELECT COUNT(*) AS my_value FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Delete
|
||||
eval DELETE FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
DELETE FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Select
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
|
||||
|
||||
# Truncate
|
||||
TRUNCATE t1;
|
||||
# Select on empty table
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1;
|
34
mysql-test/include/partition_11.inc
Normal file
34
mysql-test/include/partition_11.inc
Normal file
@ -0,0 +1,34 @@
|
||||
# include/partition_11.inc
|
||||
#
|
||||
# Try to create a table with the given partition number
|
||||
#
|
||||
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS $part_number;
|
||||
--disable_query_log
|
||||
eval SET @my_errno= $mysql_errno ;
|
||||
let $run= `SELECT @my_errno = 0`;
|
||||
--enable_query_log
|
||||
#
|
||||
# If this operation was successfull, check + drop this table
|
||||
if ($run)
|
||||
{
|
||||
--source include/partition_10.inc
|
||||
eval DROP TABLE t1;
|
||||
}
|
||||
#### Try to create a table with the given subpartition number
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) SUBPARTITION BY HASH(f1)
|
||||
SUBPARTITIONS $part_number
|
||||
(PARTITION part1 VALUES LESS THAN ($max_row_div2), PARTITION part2 VALUES LESS THAN ($max_int_4));
|
||||
--disable_query_log
|
||||
eval SET @my_errno= $mysql_errno ;
|
||||
let $run= `SELECT @my_errno = 0`;
|
||||
--enable_query_log
|
||||
#
|
||||
# If this operation was successfull, check + drop this table
|
||||
if ($run)
|
||||
{
|
||||
--source include/partition_10.inc
|
||||
eval DROP TABLE t1;
|
||||
}
|
65
mysql-test/include/partition_12.inc
Normal file
65
mysql-test/include/partition_12.inc
Normal file
@ -0,0 +1,65 @@
|
||||
# include/partition_12.inc
|
||||
#
|
||||
# Do some basic things on a table, if the SQL command executed just before
|
||||
# sourcing this file was successful.
|
||||
#
|
||||
|
||||
--source include/partition_layout.inc
|
||||
|
||||
####### Variations with multiple records
|
||||
# (mass) Insert max_row_div2 + 1 records
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN $max_row_div2 AND $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Update $max_row_div4 * 2 + 1 records
|
||||
eval UPDATE t1 SET f1 = f1 + $max_row
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 AND $max_row_div2 + $max_row_div4;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row_div2 + $max_row_div4 + $max_row )
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Delete $max_row_div4 * 2 + 1 records
|
||||
eval DELETE FROM t1
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 + $max_row AND $max_row_div2 + $max_row_div4 + $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row - $max_row_div4 - $max_row_div4 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
|
||||
####### Variations with single records
|
||||
# Insert one record at beginning
|
||||
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
|
||||
# Select this record
|
||||
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
|
||||
# Insert one record at end
|
||||
eval INSERT INTO t1 SET f1 = $max_row + 1, f2 = '#######';
|
||||
# Select this record
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Update one record
|
||||
eval UPDATE t1 SET f1 = $max_row + 2, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = 0 AND f2 = '#######';
|
||||
# Select
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
# Bug #15968: Partitions: crash when INSERT with f1 = -1 into PARTITION BY HASH(f1)
|
||||
eval UPDATE t1 SET f1 = 0 - 1, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Select
|
||||
SELECT COUNT(*) AS my_value FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Delete
|
||||
eval DELETE FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
DELETE FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Select
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
|
||||
|
||||
# Truncate
|
||||
TRUNCATE t1;
|
||||
# Select on empty table
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1;
|
13
mysql-test/include/partition_layout.inc
Normal file
13
mysql-test/include/partition_layout.inc
Normal file
@ -0,0 +1,13 @@
|
||||
# include/partition_layout.inc
|
||||
#
|
||||
# Print partitioning related informations about the table t1
|
||||
#
|
||||
|
||||
eval SHOW CREATE TABLE t1;
|
||||
|
||||
# Optional (most probably issues with separators and case sensitivity)
|
||||
# listing of files belonging to the table t1
|
||||
if ($ls)
|
||||
{
|
||||
--exec ls var/master-data/test/t1*
|
||||
}
|
@ -13,3 +13,5 @@ show create table columns_priv;
|
||||
show create table procs_priv;
|
||||
show create table proc;
|
||||
show create table event;
|
||||
show create table general_log;
|
||||
show create table slow_log;
|
||||
|
@ -570,6 +570,10 @@ CREATE TABLE proc (
|
||||
) character set utf8 comment='Stored Procedures';
|
||||
|
||||
|
||||
CREATE PROCEDURE create_log_tables() BEGIN DECLARE is_csv_enabled int DEFAULT 0; SELECT @@have_csv = 'YES' INTO is_csv_enabled; IF (is_csv_enabled) THEN CREATE TABLE general_log (event_time TIMESTAMP NOT NULL, user_host MEDIUMTEXT, thread_id INTEGER, server_id INTEGER, command_type VARCHAR(64), argument MEDIUMTEXT) engine=CSV CHARACTER SET utf8 comment='General log'; CREATE TABLE slow_log (start_time TIMESTAMP NOT NULL, user_host MEDIUMTEXT NOT NULL, query_time TIME NOT NULL, lock_time TIME NOT NULL, rows_sent INTEGER NOT NULL, rows_examined INTEGER NOT NULL, db VARCHAR(512), last_insert_id INTEGER, insert_id INTEGER, server_id INTEGER, sql_text MEDIUMTEXT NOT NULL) engine=CSV CHARACTER SET utf8 comment='Slow log'; END IF; END;
|
||||
CALL create_log_tables();
|
||||
DROP PROCEDURE create_log_tables;
|
||||
|
||||
CREATE TABLE event (
|
||||
db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',
|
||||
name char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',
|
||||
|
@ -517,6 +517,7 @@ sub command_line_setup () {
|
||||
$opt_master_myport= $ENV{'MTR_BUILD_THREAD'} * 40 + 8120;
|
||||
$opt_slave_myport= $opt_master_myport + 16;
|
||||
$opt_ndbcluster_port= $opt_master_myport + 24;
|
||||
$opt_ndbcluster_port_slave= $opt_master_myport + 32;
|
||||
$im_port= $opt_master_myport + 10;
|
||||
$im_mysqld1_port= $opt_master_myport + 12;
|
||||
$im_mysqld2_port= $opt_master_myport + 14;
|
||||
@ -711,6 +712,8 @@ sub command_line_setup () {
|
||||
$glob_use_embedded_server= 1;
|
||||
push(@glob_test_mode, "embedded");
|
||||
$opt_skip_rpl= 1; # We never run replication with embedded
|
||||
$opt_skip_ndbcluster= 1; # Avoid auto detection
|
||||
$opt_skip_ssl= 1;
|
||||
|
||||
if ( $opt_extern )
|
||||
{
|
||||
@ -909,6 +912,7 @@ sub command_line_setup () {
|
||||
path_datadir => "$opt_vardir/im_mysqld_1.data",
|
||||
path_sock => "$sockdir/mysqld_1.sock",
|
||||
path_pid => "$opt_vardir/run/mysqld_1.pid",
|
||||
old_log_format => 1
|
||||
};
|
||||
|
||||
$instance_manager->{'instances'}->[1]=
|
||||
@ -919,6 +923,7 @@ sub command_line_setup () {
|
||||
path_sock => "$sockdir/mysqld_2.sock",
|
||||
path_pid => "$opt_vardir/run/mysqld_2.pid",
|
||||
nonguarded => 1,
|
||||
old_log_format => 1
|
||||
};
|
||||
|
||||
if ( $opt_extern )
|
||||
@ -1118,6 +1123,9 @@ sub environment_setup () {
|
||||
# $ENV{'MYSQL_TCP_PORT'}= '@MYSQL_TCP_PORT@'; # FIXME
|
||||
$ENV{'MYSQL_TCP_PORT'}= 3306;
|
||||
|
||||
$ENV{'NDBCLUSTER_PORT'}= $opt_ndbcluster_port;
|
||||
$ENV{'NDBCLUSTER_PORT_SLAVE'}=$opt_ndbcluster_port_slave;
|
||||
|
||||
$ENV{'IM_PATH_PID'}= $instance_manager->{path_pid};
|
||||
|
||||
$ENV{'IM_MYSQLD1_SOCK'}= $instance_manager->{instances}->[0]->{path_sock};
|
||||
@ -1142,7 +1150,8 @@ sub environment_setup () {
|
||||
print "Using MASTER_MYPORT = $ENV{MASTER_MYPORT}\n";
|
||||
print "Using MASTER_MYPORT1 = $ENV{MASTER_MYPORT1}\n";
|
||||
print "Using SLAVE_MYPORT = $ENV{SLAVE_MYPORT}\n";
|
||||
print "Using NDBCLUSTER_PORT = $opt_ndbcluster_port\n";
|
||||
print "Using NDBCLUSTER_PORT = $ENV{NDBCLUSTER_PORT}\n";
|
||||
print "Using NDBCLUSTER_PORT_SLAVE = $ENV{NDBCLUSTER_PORT_SLAVE}\n";
|
||||
print "Using IM_MYSQLD1_PORT = $ENV{'IM_MYSQLD1_PORT'}\n";
|
||||
print "Using IM_MYSQLD2_PORT = $ENV{'IM_MYSQLD2_PORT'}\n";
|
||||
}
|
||||
@ -1364,7 +1373,8 @@ sub ndbcluster_install () {
|
||||
"--data-dir=$opt_vardir",
|
||||
"--verbose=2",
|
||||
$ndbcluster_opts,
|
||||
"--initial"],
|
||||
"--initial",
|
||||
"--relative-config-data-dir"],
|
||||
"", "", "", "") )
|
||||
{
|
||||
mtr_error("Error ndbcluster_install");
|
||||
@ -1456,7 +1466,8 @@ sub ndbcluster_install_slave () {
|
||||
"--verbose=2",
|
||||
"--small",
|
||||
"--ndbd-nodes=1",
|
||||
"--initial"],
|
||||
"--initial",
|
||||
"--relative-config-data-dir"],
|
||||
"", "", "", "") )
|
||||
{
|
||||
mtr_error("Error ndbcluster_install_slave");
|
||||
@ -1821,6 +1832,7 @@ EOF
|
||||
;
|
||||
|
||||
print OUT "nonguarded\n" if $instance->{'nonguarded'};
|
||||
print OUT "old-log-format\n" if $instance->{'old_log_format'};
|
||||
print OUT "\n";
|
||||
}
|
||||
|
||||
|
@ -268,9 +268,11 @@ USE_RUNNING_SERVER=0
|
||||
USE_NDBCLUSTER=@USE_NDBCLUSTER@
|
||||
USE_NDBCLUSTER_SLAVE=@USE_NDBCLUSTER@
|
||||
USE_NDBCLUSTER_ALL=0
|
||||
USE_NDBCLUSTER_ONLY=0
|
||||
USE_RUNNING_NDBCLUSTER=""
|
||||
USE_RUNNING_NDBCLUSTER_SLAVE=""
|
||||
NDB_EXTRA_TEST=0
|
||||
NDB_VERBOSE=0
|
||||
NDBCLUSTER_EXTRA_OPTS=""
|
||||
USE_PURIFY=""
|
||||
PURIFY_LOGS=""
|
||||
@ -297,6 +299,7 @@ TEST_MODE=""
|
||||
NDB_MGM_EXTRA_OPTS=
|
||||
NDB_MGMD_EXTRA_OPTS=
|
||||
NDBD_EXTRA_OPTS=
|
||||
MASTER_MYSQLDBINLOG=1
|
||||
SLAVE_MYSQLDBINLOG=1
|
||||
|
||||
DO_STRESS=""
|
||||
@ -316,6 +319,8 @@ while test $# -gt 0; do
|
||||
USE_EMBEDDED_SERVER=1
|
||||
USE_MANAGER=0 NO_SLAVE=1
|
||||
USE_RUNNING_SERVER=0
|
||||
USE_NDBCLUSTER=""
|
||||
USE_NDBCLUSTER_SLAVE=""
|
||||
TEST_MODE="$TEST_MODE embedded" ;;
|
||||
--purify)
|
||||
USE_PURIFY=1
|
||||
@ -341,6 +346,10 @@ while test $# -gt 0; do
|
||||
USE_NDBCLUSTER="--ndbcluster"
|
||||
USE_NDBCLUSTER_SLAVE="--ndbcluster"
|
||||
USE_NDBCLUSTER_ALL=1 ;;
|
||||
--with-ndbcluster-only)
|
||||
USE_NDBCLUSTER="--ndbcluster"
|
||||
USE_NDBCLUSTER_SLAVE="--ndbcluster"
|
||||
USE_NDBCLUSTER_ONLY=1 ;;
|
||||
--ndb-connectstring=*)
|
||||
USE_NDBCLUSTER="--ndbcluster" ;
|
||||
USE_RUNNING_NDBCLUSTER=`$ECHO "$1" | $SED -e "s;--ndb-connectstring=;;"` ;;
|
||||
@ -351,6 +360,8 @@ while test $# -gt 0; do
|
||||
NDBCLUSTER_EXTRA_OPTS=" "
|
||||
NDB_EXTRA_TEST=1 ;
|
||||
;;
|
||||
--ndb-verbose)
|
||||
NDB_VERBOSE=2 ;;
|
||||
--ndb_mgm-extra-opts=*)
|
||||
NDB_MGM_EXTRA_OPTS=`$ECHO "$1" | $SED -e "s;--ndb_mgm-extra-opts=;;"` ;;
|
||||
--ndb_mgmd-extra-opts=*)
|
||||
@ -543,6 +554,7 @@ while test $# -gt 0; do
|
||||
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-ndbcluster"
|
||||
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-ndbcluster"
|
||||
;;
|
||||
--skip-master-binlog) MASTER_MYSQLDBINLOG=0 ;;
|
||||
--skip-slave-binlog) SLAVE_MYSQLDBINLOG=0 ;;
|
||||
--skip-*)
|
||||
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT $1"
|
||||
@ -1266,8 +1278,10 @@ start_ndbcluster()
|
||||
then
|
||||
NDBCLUSTER_EXTRA_OPTS="--small"
|
||||
fi
|
||||
OPTS="$NDBCLUSTER_OPTS $NDBCLUSTER_EXTRA_OPTS --verbose=2 --initial"
|
||||
OPTS="$NDBCLUSTER_OPTS $NDBCLUSTER_EXTRA_OPTS --verbose=$NDB_VERBOSE --initial --relative-config-data-dir"
|
||||
if [ "x$NDB_VERBOSE" != "x0" ] ; then
|
||||
echo "Starting master ndbcluster " $OPTS
|
||||
fi
|
||||
./ndb/ndbcluster $OPTS || NDB_STATUS_OK=0
|
||||
if [ x$NDB_STATUS_OK != x1 ] ; then
|
||||
if [ x$FORCE != x1 ] ; then
|
||||
@ -1351,9 +1365,13 @@ start_master()
|
||||
then
|
||||
CURR_MASTER_MYSQLD_TRACE="$EXTRA_MASTER_MYSQLD_TRACE$1"
|
||||
fi
|
||||
if [ x$MASTER_MYSQLDBINLOG = x1 ]
|
||||
then
|
||||
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1"
|
||||
fi
|
||||
if [ -z "$DO_BENCH" -a -z "$DO_STRESS" ]
|
||||
then
|
||||
master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1 \
|
||||
master_args="--no-defaults \
|
||||
--server-id=$id \
|
||||
--basedir=$MY_BASEDIR \
|
||||
--port=$this_master_myport \
|
||||
@ -1379,7 +1397,7 @@ start_master()
|
||||
$EXTRA_MASTER_MYSQLD_OPT $EXTRA_MASTER_OPT \
|
||||
$NOT_FIRST_MASTER_EXTRA_OPTS $CURR_MASTER_MYSQLD_TRACE"
|
||||
else
|
||||
master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1 \
|
||||
master_args="--no-defaults \
|
||||
--server-id=$id --rpl-recovery-rank=1 \
|
||||
--basedir=$MY_BASEDIR --init-rpl-role=master \
|
||||
--port=$this_master_myport \
|
||||
@ -1493,8 +1511,10 @@ start_slave()
|
||||
NDBCLUSTER_EXTRA_OPTS="--small"
|
||||
fi
|
||||
|
||||
OPTS="$NDBCLUSTER_OPTS_SLAVE --initial $NDBCLUSTER_EXTRA_OPTS --ndbd-nodes=1 --verbose=2"
|
||||
OPTS="$NDBCLUSTER_OPTS_SLAVE --initial $NDBCLUSTER_EXTRA_OPTS --ndbd-nodes=1 --verbose=$NDB_VERBOSE --relative-config-data-dir"
|
||||
if [ "x$NDB_VERBOSE" != "x0" ] ; then
|
||||
echo "Starting slave ndbcluster " $OPTS
|
||||
fi
|
||||
./ndb/ndbcluster $OPTS \
|
||||
|| NDB_SLAVE_STATUS_OK=0
|
||||
# > /dev/null 2>&1 || NDB_SLAVE_STATUS_OK=0
|
||||
@ -1750,6 +1770,10 @@ run_testcase ()
|
||||
if [ "x$USE_NDBCLUSTER_ALL" = "x1" ] ; then
|
||||
NDBCLUSTER_TEST=1
|
||||
fi
|
||||
if [ "x$USE_NDBCLUSTER_ONLY" = "x1" -a "x$NDBCLUSTER_TEST" != "x1" ] ; then
|
||||
skip_test $tname
|
||||
return
|
||||
fi
|
||||
if [ "$USE_MANAGER" = 1 ] ; then
|
||||
many_slaves=`$EXPR \( \( $tname : rpl_failsafe \) != 0 \) \| \( \( $tname : rpl_chain_temp_table \) != 0 \)`
|
||||
fi
|
||||
|
@ -52,6 +52,7 @@ initial_ndb=
|
||||
status_ndb=
|
||||
ndb_diskless=0
|
||||
ndbd_nodes=2
|
||||
relative_config_data_dir=
|
||||
|
||||
ndb_no_ord=512
|
||||
ndb_no_attr=2048
|
||||
@ -89,7 +90,7 @@ while test $# -gt 0; do
|
||||
--small)
|
||||
ndb_no_ord=32
|
||||
ndb_con_op=5000
|
||||
ndb_dmem=10M
|
||||
ndb_dmem=20M
|
||||
ndb_imem=1M
|
||||
ndb_pbmem=4M
|
||||
;;
|
||||
@ -99,6 +100,9 @@ while test $# -gt 0; do
|
||||
--data-dir=*)
|
||||
fsdir=`echo "$1" | sed -e "s;--data-dir=;;"`
|
||||
;;
|
||||
--relative-config-data-dir)
|
||||
relative_config_data_dir=1
|
||||
;;
|
||||
--port=*)
|
||||
port=`echo "$1" | sed -e "s;--port=;;"`
|
||||
;;
|
||||
@ -196,6 +200,11 @@ fi
|
||||
# Start management server as deamon
|
||||
|
||||
# Edit file system path and ports in config file
|
||||
if [ $relative_config_data_dir ] ; then
|
||||
config_fs_ndb="."
|
||||
else
|
||||
config_fs_ndb=$fs_ndb
|
||||
fi
|
||||
if [ $initial_ndb ] ; then
|
||||
rm -rf $fs_ndb/ndb_* 2>&1 | cat > /dev/null
|
||||
sed \
|
||||
@ -206,7 +215,7 @@ if [ $initial_ndb ] ; then
|
||||
-e s,"CHOOSE_IndexMemory","$ndb_imem",g \
|
||||
-e s,"CHOOSE_Diskless","$ndb_diskless",g \
|
||||
-e s,"CHOOSE_HOSTNAME_".*,"$ndb_host",g \
|
||||
-e s,"CHOOSE_FILESYSTEM","$fs_ndb",g \
|
||||
-e s,"CHOOSE_FILESYSTEM","$config_fs_ndb",g \
|
||||
-e s,"CHOOSE_PORT_MGM","$ndb_mgmd_port",g \
|
||||
-e s,"CHOOSE_DiskPageBufferMemory","$ndb_pbmem",g \
|
||||
< "$config_ini" \
|
||||
|
@ -5,6 +5,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -13,6 +14,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
@ -34,6 +36,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -42,6 +45,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
@ -71,6 +75,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -79,6 +84,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
|
@ -4976,6 +4976,23 @@ c1
|
||||
4
|
||||
5
|
||||
DROP TABLE bug14672;
|
||||
CREATE TABLE test_concurrent_insert ( val integer ) ENGINE = CSV;
|
||||
LOCK TABLES test_concurrent_insert READ LOCAL;
|
||||
INSERT INTO test_concurrent_insert VALUES (1);
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
val
|
||||
1
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
val
|
||||
UNLOCK TABLES;
|
||||
LOCK TABLES test_concurrent_insert WRITE;
|
||||
INSERT INTO test_concurrent_insert VALUES (2);
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
val
|
||||
1
|
||||
2
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE test_concurrent_insert;
|
||||
create table t1 (a int) engine=csv;
|
||||
insert t1 values (1);
|
||||
delete from t1;
|
||||
|
17
mysql-test/r/ctype_cp932_notembedded.result
Normal file
17
mysql-test/r/ctype_cp932_notembedded.result
Normal file
@ -0,0 +1,17 @@
|
||||
drop table if exists t1;
|
||||
set names cp932;
|
||||
set character_set_database = cp932;
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1(f1 blob);
|
||||
PREPARE stmt1 FROM 'INSERT INTO t1 VALUES(?)';
|
||||
SET @var1= x'8300';
|
||||
EXECUTE stmt1 USING @var1;
|
||||
SHOW BINLOG EVENTS FROM 102;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1(f1 blob)
|
||||
master-bin.000001 # Table_map 1 # test.t1
|
||||
master-bin.000001 # Write_rows 1 #
|
||||
SELECT HEX(f1) FROM t1;
|
||||
HEX(f1)
|
||||
8300
|
||||
DROP table t1;
|
@ -21,6 +21,7 @@ skip-stack-trace VALUE
|
||||
skip-innodb VALUE
|
||||
skip-bdb VALUE
|
||||
skip-ndbcluster VALUE
|
||||
old-log-format VALUE
|
||||
SHOW INSTANCE OPTIONS mysqld2;
|
||||
option_name value
|
||||
instance_name VALUE
|
||||
@ -41,6 +42,7 @@ skip-stack-trace VALUE
|
||||
skip-innodb VALUE
|
||||
skip-bdb VALUE
|
||||
skip-ndbcluster VALUE
|
||||
old-log-format VALUE
|
||||
START INSTANCE mysqld2;
|
||||
STOP INSTANCE mysqld2;
|
||||
SHOW mysqld1 LOG FILES;
|
||||
|
@ -62,6 +62,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -70,6 +71,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
@ -732,7 +734,7 @@ CREATE TABLE t_crashme ( f1 BIGINT);
|
||||
CREATE VIEW a1 (t_CRASHME) AS SELECT f1 FROM t_crashme GROUP BY f1;
|
||||
CREATE VIEW a2 AS SELECT t_CRASHME FROM a1;
|
||||
count(*)
|
||||
107
|
||||
109
|
||||
drop view a2, a1;
|
||||
drop table t_crashme;
|
||||
select table_schema,table_name, column_name from
|
||||
@ -816,7 +818,7 @@ SELECT table_schema, count(*) FROM information_schema.TABLES GROUP BY TABLE_SCHE
|
||||
table_schema count(*)
|
||||
cluster_replication 1
|
||||
information_schema 19
|
||||
mysql 19
|
||||
mysql 21
|
||||
create table t1 (i int, j int);
|
||||
create trigger trg1 before insert on t1 for each row
|
||||
begin
|
||||
|
@ -2635,25 +2635,6 @@ checksum table t1;
|
||||
Table Checksum
|
||||
test.t1 2050879373
|
||||
drop table t1;
|
||||
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
|
||||
insert t1 values (1,100);
|
||||
create function f1 () returns integer begin
|
||||
declare var1 int;
|
||||
select col2 into var1 from t1 where col1=1 for update;
|
||||
return var1;
|
||||
end|
|
||||
start transaction;
|
||||
select f1();
|
||||
f1()
|
||||
100
|
||||
update t1 set col2=0 where col1=1;
|
||||
select * from t1;
|
||||
col1 col2
|
||||
1 100
|
||||
rollback;
|
||||
rollback;
|
||||
drop table t1;
|
||||
drop function f1;
|
||||
create table t1 (
|
||||
a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2))
|
||||
) character set utf8 engine = innodb;
|
||||
|
19
mysql-test/r/innodb_notembedded.result
Normal file
19
mysql-test/r/innodb_notembedded.result
Normal file
@ -0,0 +1,19 @@
|
||||
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
|
||||
insert t1 values (1,100);
|
||||
create function f1 () returns integer begin
|
||||
declare var1 int;
|
||||
select col2 into var1 from t1 where col1=1 for update;
|
||||
return var1;
|
||||
end|
|
||||
start transaction;
|
||||
select f1();
|
||||
f1()
|
||||
100
|
||||
update t1 set col2=0 where col1=1;
|
||||
select * from t1;
|
||||
col1 col2
|
||||
1 100
|
||||
rollback;
|
||||
rollback;
|
||||
drop table t1;
|
||||
drop function f1;
|
@ -139,3 +139,30 @@ a b c
|
||||
10 NULL Ten
|
||||
15 NULL Fifteen
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET NAMES latin1;
|
||||
SET character_set_filesystem=filename;
|
||||
select @@character_set_filesystem;
|
||||
@@character_set_filesystem
|
||||
filename
|
||||
SELECT * INTO OUTFILE 't-1' FROM t1;
|
||||
DELETE FROM t1;
|
||||
LOAD DATA INFILE 't-1' INTO TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
DELETE FROM t1;
|
||||
SET character_set_filesystem=latin1;
|
||||
select @@character_set_filesystem;
|
||||
@@character_set_filesystem
|
||||
latin1
|
||||
LOAD DATA INFILE 't@002d1' INTO TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
DROP TABLE t1;
|
||||
SET character_set_filesystem=default;
|
||||
select @@character_set_filesystem;
|
||||
@@character_set_filesystem
|
||||
binary
|
||||
|
54
mysql-test/r/log_tables.result
Normal file
54
mysql-test/r/log_tables.result
Normal file
@ -0,0 +1,54 @@
|
||||
use mysql;
|
||||
truncate table general_log;
|
||||
select * from general_log;
|
||||
event_time user_host thread_id server_id command_type argument
|
||||
TIMESTAMP root[root] @ localhost [] 1 1 Query select * from general_log
|
||||
truncate table slow_log;
|
||||
select * from slow_log;
|
||||
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
||||
truncate table general_log;
|
||||
select * from general_log where argument like '%general_log%';
|
||||
event_time user_host thread_id server_id command_type argument
|
||||
TIMESTAMP root[root] @ localhost [] 1 1 Query select * from general_log where argument like '%general_log%'
|
||||
create table join_test (verbose_comment varchar (80), command_type varchar(64));
|
||||
insert into join_test values ("User performed a usual SQL query", "Query");
|
||||
insert into join_test values ("New DB connection was registered", "Connect");
|
||||
insert into join_test values ("Get the table info", "Field List");
|
||||
select verbose_comment, user_host, argument
|
||||
from mysql.general_log join join_test
|
||||
on (mysql.general_log.command_type = join_test.command_type);
|
||||
verbose_comment user_host argument
|
||||
User performed a usual SQL query root[root] @ localhost [] select * from general_log where argument like '%general_log%'
|
||||
User performed a usual SQL query root[root] @ localhost [] create table join_test (verbose_comment varchar (80), command_type varchar(64))
|
||||
User performed a usual SQL query root[root] @ localhost [] insert into join_test values ("User performed a usual SQL query", "Query")
|
||||
User performed a usual SQL query root[root] @ localhost [] insert into join_test values ("New DB connection was registered", "Connect")
|
||||
User performed a usual SQL query root[root] @ localhost [] insert into join_test values ("Get the table info", "Field List")
|
||||
User performed a usual SQL query root[root] @ localhost [] select verbose_comment, user_host, argument
|
||||
from mysql.general_log join join_test
|
||||
on (mysql.general_log.command_type = join_test.command_type)
|
||||
drop table join_test;
|
||||
flush logs;
|
||||
lock tables mysql.general_log WRITE;
|
||||
ERROR HY000: You can't write-lock a log table. Only read access is possible.
|
||||
lock tables mysql.slow_log WRITE;
|
||||
ERROR HY000: You can't write-lock a log table. Only read access is possible.
|
||||
lock tables mysql.general_log READ;
|
||||
ERROR HY000: You can't use usual read lock with log tables. Try READ LOCAL instead.
|
||||
lock tables mysql.slow_log READ;
|
||||
ERROR HY000: You can't use usual read lock with log tables. Try READ LOCAL instead.
|
||||
lock tables mysql.slow_log READ LOCAL, mysql.general_log READ LOCAL;
|
||||
unlock tables;
|
||||
lock tables mysql.general_log READ LOCAL;
|
||||
flush logs;
|
||||
unlock tables;
|
||||
select "Mark that we woke up from flush logs in the test"
|
||||
as "test passed";
|
||||
test passed
|
||||
Mark that we woke up from flush logs in the test
|
||||
lock tables mysql.general_log READ LOCAL;
|
||||
truncate mysql.general_log;
|
||||
unlock tables;
|
||||
select "Mark that we woke up from TRUNCATE in the test"
|
||||
as "test passed";
|
||||
test passed
|
||||
Mark that we woke up from TRUNCATE in the test
|
@ -3,6 +3,8 @@ mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
mysql.func OK
|
||||
mysql.general_log
|
||||
note : The storage engine for the table doesn't support optimize
|
||||
mysql.help_category OK
|
||||
mysql.help_keyword OK
|
||||
mysql.help_relation OK
|
||||
@ -11,6 +13,8 @@ mysql.host OK
|
||||
mysql.plugin OK
|
||||
mysql.proc OK
|
||||
mysql.procs_priv OK
|
||||
mysql.slow_log
|
||||
note : The storage engine for the table doesn't support optimize
|
||||
mysql.tables_priv OK
|
||||
mysql.time_zone OK
|
||||
mysql.time_zone_leap_second OK
|
||||
@ -22,6 +26,8 @@ mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
mysql.func OK
|
||||
mysql.general_log
|
||||
note : The storage engine for the table doesn't support optimize
|
||||
mysql.help_category OK
|
||||
mysql.help_keyword OK
|
||||
mysql.help_relation OK
|
||||
@ -30,6 +36,8 @@ mysql.host OK
|
||||
mysql.plugin OK
|
||||
mysql.proc OK
|
||||
mysql.procs_priv OK
|
||||
mysql.slow_log
|
||||
note : The storage engine for the table doesn't support optimize
|
||||
mysql.tables_priv OK
|
||||
mysql.time_zone OK
|
||||
mysql.time_zone_leap_second OK
|
||||
|
@ -1,6 +1,6 @@
|
||||
select -1 as "before_use_test" ;
|
||||
select 0 as "before_use_test" ;
|
||||
before_use_test
|
||||
-1
|
||||
0
|
||||
select otto from (select 1 as otto) as t1;
|
||||
otto
|
||||
1
|
||||
|
@ -110,7 +110,7 @@ t3 CREATE TABLE `t3` (
|
||||
`id` int(11) NOT NULL,
|
||||
`name` char(255) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
select * from t3;
|
||||
id name
|
||||
1 Explorer
|
||||
|
@ -9,7 +9,7 @@ t1 CREATE TABLE `t1` (
|
||||
`pk1` int(11) NOT NULL,
|
||||
`b` bit(64) default NULL,
|
||||
PRIMARY KEY (`pk1`)
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
insert into t1 values
|
||||
(0,b'1111111111111111111111111111111111111111111111111111111111111111'),
|
||||
(1,b'1000000000000000000000000000000000000000000000000000000000000000'),
|
||||
|
@ -1,7 +1,7 @@
|
||||
ndbd,1,localhost ndbd,2,localhost ndb_mgmd,3,localhost mysqld,4, mysqld,5, mysqld,6, mysqld,7, mysqld,8, mysqld,9, mysqld,10, mysqld,11,
|
||||
1,localhost,10485760,1048576 2,localhost,10485760,1048576
|
||||
1 localhost 10485760 1048576
|
||||
2 localhost 10485760 1048576
|
||||
1,localhost,20971520,1048576 2,localhost,20971520,1048576
|
||||
1 localhost 20971520 1048576
|
||||
2 localhost 20971520 1048576
|
||||
1 2
|
||||
ndbd,1,localhost ndbd,2,localhost ndb_mgmd,3,localhost mysqld,4, mysqld,5, mysqld,6, mysqld,7, mysqld,8, mysqld,9, mysqld,10, mysqld,11,
|
||||
ndbd,1,localhost,52428800,26214400 ndbd,2,localhost,52428800,36700160 ndbd,3,localhost,52428800,52428800 ndbd,4,localhost,52428800,52428800 ndb_mgmd,5,localhost,, mysqld,6,localhost,,
|
||||
|
@ -13,7 +13,7 @@ Table Create Table
|
||||
gis_point CREATE TABLE `gis_point` (
|
||||
`fid` int(11) default NULL,
|
||||
`g` point default NULL
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
@ -471,7 +471,7 @@ Table Create Table
|
||||
gis_point CREATE TABLE `gis_point` (
|
||||
`fid` int(11) default NULL,
|
||||
`g` point default NULL
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
|
@ -80,3 +80,12 @@ t1 CREATE TABLE `t1` (
|
||||
PRIMARY KEY USING HASH (`a`,`b`,`c`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (b)
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int not null primary key)
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int not null primary key);
|
||||
ALTER TABLE t1
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
drop table t1;
|
||||
|
@ -1,6 +1,14 @@
|
||||
use test;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
id type state logging database schema name
|
||||
2 UserTable Online Yes cluster_replication def apply_status
|
||||
1 SystemTable Online Yes sys def NDB$EVENTS_0
|
||||
3 UserTable Online Yes cluster_replication def schema
|
||||
0 SystemTable Online Yes sys def SYSTAB_0
|
||||
|
||||
NDBT_ProgramExit: 0 - OK
|
||||
|
||||
CREATE TABLE `t1_c` (
|
||||
`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
|
||||
`goaledatta` char(2) NOT NULL default '',
|
||||
@ -225,6 +233,224 @@ from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
count(*)
|
||||
3
|
||||
ALTER TABLE t1_c
|
||||
PARTITION BY RANGE (`capgoaledatta`)
|
||||
(PARTITION p0 VALUES LESS THAN MAXVALUE);
|
||||
ALTER TABLE t2_c
|
||||
PARTITION BY LIST(`capgotod`)
|
||||
(PARTITION p0 VALUES IN (0,1,2,3,4,5,6));
|
||||
ALTER TABLE t3_c
|
||||
PARTITION BY HASH (`CapGoaledatta`);
|
||||
ALTER TABLE t5_c
|
||||
PARTITION BY HASH (`capfa`)
|
||||
PARTITIONS 4;
|
||||
ALTER TABLE t6_c
|
||||
PARTITION BY LINEAR HASH (`relatta`)
|
||||
PARTITIONS 4;
|
||||
ALTER TABLE t7_c
|
||||
PARTITION BY LINEAR KEY (`dardtestard`);
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t1_c;
|
||||
count(*)
|
||||
5
|
||||
select count(*)
|
||||
from (select * from t1 union
|
||||
select * from t1_c) a;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t2;
|
||||
count(*)
|
||||
6
|
||||
select count(*) from t2_c;
|
||||
count(*)
|
||||
6
|
||||
select count(*)
|
||||
from (select * from t2 union
|
||||
select * from t2_c) a;
|
||||
count(*)
|
||||
6
|
||||
select count(*) from t3;
|
||||
count(*)
|
||||
4
|
||||
select count(*) from t3_c;
|
||||
count(*)
|
||||
4
|
||||
select count(*)
|
||||
from (select * from t3 union
|
||||
select * from t3_c) a;
|
||||
count(*)
|
||||
4
|
||||
select count(*) from t4;
|
||||
count(*)
|
||||
22
|
||||
select count(*) from t4_c;
|
||||
count(*)
|
||||
22
|
||||
select count(*)
|
||||
from (select * from t4 union
|
||||
select * from t4_c) a;
|
||||
count(*)
|
||||
22
|
||||
select count(*) from t5;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t5_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t5 union
|
||||
select * from t5_c) a;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t6;
|
||||
count(*)
|
||||
8
|
||||
select count(*) from t6_c;
|
||||
count(*)
|
||||
8
|
||||
select count(*)
|
||||
from (select * from t6 union
|
||||
select * from t6_c) a;
|
||||
count(*)
|
||||
8
|
||||
select count(*) from t7;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t7_c;
|
||||
count(*)
|
||||
5
|
||||
select count(*)
|
||||
from (select * from t7 union
|
||||
select * from t7_c) a;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t8;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t8_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t8 union
|
||||
select * from t8_c) a;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t9;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t9_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
count(*)
|
||||
3
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t1_c;
|
||||
count(*)
|
||||
5
|
||||
select count(*)
|
||||
from (select * from t1 union
|
||||
select * from t1_c) a;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t2;
|
||||
count(*)
|
||||
6
|
||||
select count(*) from t2_c;
|
||||
count(*)
|
||||
6
|
||||
select count(*)
|
||||
from (select * from t2 union
|
||||
select * from t2_c) a;
|
||||
count(*)
|
||||
6
|
||||
select count(*) from t3;
|
||||
count(*)
|
||||
4
|
||||
select count(*) from t3_c;
|
||||
count(*)
|
||||
4
|
||||
select count(*)
|
||||
from (select * from t3 union
|
||||
select * from t3_c) a;
|
||||
count(*)
|
||||
4
|
||||
select count(*) from t4;
|
||||
count(*)
|
||||
22
|
||||
select count(*) from t4_c;
|
||||
count(*)
|
||||
22
|
||||
select count(*)
|
||||
from (select * from t4 union
|
||||
select * from t4_c) a;
|
||||
count(*)
|
||||
22
|
||||
select count(*) from t5;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t5_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t5 union
|
||||
select * from t5_c) a;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t6;
|
||||
count(*)
|
||||
8
|
||||
select count(*) from t6_c;
|
||||
count(*)
|
||||
8
|
||||
select count(*)
|
||||
from (select * from t6 union
|
||||
select * from t6_c) a;
|
||||
count(*)
|
||||
8
|
||||
select count(*) from t7;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t7_c;
|
||||
count(*)
|
||||
5
|
||||
select count(*)
|
||||
from (select * from t7 union
|
||||
select * from t7_c) a;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t8;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t8_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t8 union
|
||||
select * from t8_c) a;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t9;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t9_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
count(*)
|
||||
3
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
Create table test/def/t2_c failed: Translate frm error
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
520093696,1
|
||||
520093696,2
|
||||
|
@ -65,6 +65,8 @@ partitions 3
|
||||
(partition x1 tablespace ts1,
|
||||
partition x2 tablespace ts2,
|
||||
partition x3 tablespace ts3);
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
@ -108,6 +110,127 @@ insert into t1 values (3);
|
||||
insert into t1 values (4);
|
||||
UNLOCK TABLES;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int, name VARCHAR(50), purchased DATE)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (3),
|
||||
PARTITION p1 VALUES LESS THAN (7),
|
||||
PARTITION p2 VALUES LESS THAN (9),
|
||||
PARTITION p3 VALUES LESS THAN (11));
|
||||
INSERT INTO t1 VALUES
|
||||
(1, 'desk organiser', '2003-10-15'),
|
||||
(2, 'CD player', '1993-11-05'),
|
||||
(3, 'TV set', '1996-03-10'),
|
||||
(4, 'bookcase', '1982-01-10'),
|
||||
(5, 'exercise bike', '2004-05-09'),
|
||||
(6, 'sofa', '1987-06-05'),
|
||||
(7, 'popcorn maker', '2001-11-22'),
|
||||
(8, 'acquarium', '1992-08-04'),
|
||||
(9, 'study desk', '1984-09-16'),
|
||||
(10, 'lava lamp', '1998-12-25');
|
||||
SELECT * from t1 ORDER BY a;
|
||||
a name purchased
|
||||
1 desk organiser 2003-10-15
|
||||
2 CD player 1993-11-05
|
||||
3 TV set 1996-03-10
|
||||
4 bookcase 1982-01-10
|
||||
5 exercise bike 2004-05-09
|
||||
6 sofa 1987-06-05
|
||||
7 popcorn maker 2001-11-22
|
||||
8 acquarium 1992-08-04
|
||||
9 study desk 1984-09-16
|
||||
10 lava lamp 1998-12-25
|
||||
ALTER TABLE t1 DROP PARTITION p0;
|
||||
SELECT * from t1 ORDER BY a;
|
||||
a name purchased
|
||||
3 TV set 1996-03-10
|
||||
4 bookcase 1982-01-10
|
||||
5 exercise bike 2004-05-09
|
||||
6 sofa 1987-06-05
|
||||
7 popcorn maker 2001-11-22
|
||||
8 acquarium 1992-08-04
|
||||
9 study desk 1984-09-16
|
||||
10 lava lamp 1998-12-25
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION p0 VALUES IN (1,2,3), PARTITION p1 VALUES IN (4,5,6));
|
||||
insert into t1 values (1),(2),(3),(4),(5),(6);
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
a
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
a
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int, b int, primary key(a,b))
|
||||
PARTITION BY KEY(b,a) PARTITIONS 4;
|
||||
insert into t1 values (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
|
||||
select * from t1 where a = 4;
|
||||
a b
|
||||
4 4
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
PARTITIONS 1
|
||||
(PARTITION x1 VALUES IN (1) ENGINE=MEMORY);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION x1 VALUES IN (1) ENGINE = MEMORY)
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int, unique(a))
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
REPLACE t1 SET a = 4;
|
||||
ERROR HY000: Table has no partition for value 4
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (2), PARTITION x2 VALUES IN (3));
|
||||
insert into t1 values (2), (3);
|
||||
insert into t1 values (4);
|
||||
ERROR HY000: Table has no partition for value 4
|
||||
insert into t1 values (1);
|
||||
ERROR HY000: Table has no partition for value 1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY HASH(a)
|
||||
PARTITIONS 5;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (a) PARTITIONS 5
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION x1 VALUES LESS THAN (2));
|
||||
insert into t1 values (1);
|
||||
update t1 set a = 5;
|
||||
ERROR HY000: Table has no partition for value 5
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
drop table t1;
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) default NULL
|
||||
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1 PARTITION BY HASH (id) ;
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
drop table t1;
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) default NULL
|
||||
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1 PARTITION BY HASH (id) ;
|
||||
@ -119,8 +242,8 @@ create table t1
|
||||
partition by range (a)
|
||||
( partition p0 values less than(10),
|
||||
partition p1 values less than (20),
|
||||
partition p2 values less than maxvalue);
|
||||
alter table t1 reorganise partition p2 into (partition p2 values less than (30));
|
||||
partition p2 values less than (25));
|
||||
alter table t1 reorganize partition p2 into (partition p2 values less than (30));
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -139,7 +262,7 @@ PARTITION x6 VALUES LESS THAN (14),
|
||||
PARTITION x7 VALUES LESS THAN (16),
|
||||
PARTITION x8 VALUES LESS THAN (18),
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x1 VALUES LESS THAN (6));
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
|
1725
mysql-test/r/partition_02myisam.result
Normal file
1725
mysql-test/r/partition_02myisam.result
Normal file
File diff suppressed because it is too large
Load Diff
1361
mysql-test/r/partition_03ndb.result
Normal file
1361
mysql-test/r/partition_03ndb.result
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,4 @@
|
||||
drop table if exists t1;
|
||||
partition by list (a)
|
||||
partitions 3
|
||||
(partition x1 values in (1,2,9,4) tablespace ts1,
|
||||
@ -545,6 +546,10 @@ partition x2 values in (5));
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '4,
|
||||
partition x2 values in (5))' at line 8
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (x1));
|
||||
ERROR 42S22: Unknown column 'x1' in 'partition function'
|
||||
CREATE TABLE t1(a int)
|
||||
PARTITION BY RANGE (a) (PARTITION p1 VALUES LESS THAN(5));
|
||||
insert into t1 values (10);
|
||||
ERROR HY000: Table has no partition for value 10
|
||||
|
@ -1,3 +1,4 @@
|
||||
drop table if exists t1;
|
||||
CREATE TABLE t1 (a int, b int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION x0 VALUES LESS THAN (2),
|
||||
@ -10,48 +11,52 @@ PARTITION x6 VALUES LESS THAN (14),
|
||||
PARTITION x7 VALUES LESS THAN (16),
|
||||
PARTITION x8 VALUES LESS THAN (18),
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (2),
|
||||
PARTITION x11 VALUES LESS THAN (5));
|
||||
ERROR HY000: The new partitions cover a bigger range then the reorganised partitions do
|
||||
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
|
||||
ALTER TABLE t1 DROP PARTITION x0, x1, x2, x3, x3;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 DROP PARTITION x0, x1, x2, x10;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 DROP PARTITION x10, x1, x2, x1;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 DROP PARTITION x10, x1, x2, x3;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (22));
|
||||
ERROR HY000: More partitions to reorganise than there are partitions
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x3 VALUES LESS THAN (6));
|
||||
ERROR HY000: All partitions must have unique names in the table
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x2 INTO
|
||||
ERROR HY000: Duplicate partition name x3
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x2 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (2));
|
||||
ERROR HY000: When reorganising a set of partitions they must be in consecutive order
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x1, x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x1, x1 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (4));
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ERROR HY000: Error in list of partitions to REORGANIZE
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (5));
|
||||
ERROR HY000: The new partitions cover a bigger range then the reorganised partitions do
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (4),
|
||||
PARTITION x11 VALUES LESS THAN (2));
|
||||
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (6),
|
||||
PARTITION x11 VALUES LESS THAN (4));
|
||||
ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY KEY (a)
|
||||
PARTITIONS 2;
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION p1);
|
||||
ERROR HY000: All partitions must have unique names in the table
|
||||
ERROR HY000: Duplicate partition name p1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY KEY (a)
|
||||
(PARTITION x0, PARTITION x1, PARTITION x2, PARTITION x3, PARTITION x3);
|
||||
ERROR HY000: All partitions must have unique names in the table
|
||||
ERROR HY000: Duplicate partition name x3
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
SUBPARTITION BY KEY (a)
|
||||
@ -100,7 +105,7 @@ PARTITION x1 VALUES LESS THAN (8));
|
||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 1;
|
||||
ERROR HY000: For RANGE partitions each partition must be defined
|
||||
ALTER TABLE t1 DROP PARTITION x2;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 COALESCE PARTITION 1;
|
||||
ERROR HY000: COALESCE PARTITION can only be used on HASH/KEY partitions
|
||||
ALTER TABLE t1 DROP PARTITION x1;
|
||||
|
@ -1105,56 +1105,20 @@ call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 3
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 3
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 3
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 3
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 3
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 4
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 4
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 6
|
||||
insert into t1 values (1);
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 1
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 5
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 6
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
@ -1172,15 +1136,6 @@ s1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 4
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 8
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 10
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
|
@ -94,4 +94,224 @@ a
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
drop table t1;
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
create table t1 (s1 int)//
|
||||
create procedure f1 () begin
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1;
|
||||
end;//
|
||||
create procedure f2 () begin
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1;
|
||||
end;//
|
||||
create procedure f3 () begin
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
end;//
|
||||
create procedure f4 () begin
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
end;//
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 3
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 3
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 3
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 3
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 3
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 4
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 4
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 6
|
||||
insert into t1 values (1);
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 1
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 5
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 6
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 4
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 8
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 10
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
select sql_cache * from t1 where s1=1;
|
||||
s1
|
||||
1
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f2();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f3();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f4();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f4();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f3();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f2();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
select sql_cache * from t1 where s1=1;
|
||||
s1
|
||||
1
|
||||
insert into t1 values (2);
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
select sql_cache * from t1 where s1=1;
|
||||
s1
|
||||
1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
call f3();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
call f3();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
drop procedure f1;
|
||||
drop procedure f2;
|
||||
drop procedure f3;
|
||||
drop procedure f4;
|
||||
drop table t1;
|
||||
set GLOBAL query_cache_size=0;
|
||||
|
@ -147,10 +147,14 @@ drop table t1;
|
||||
flush tables;
|
||||
show open tables;
|
||||
Database Table In_use Name_locked
|
||||
mysql general_log 1 0
|
||||
mysql slow_log 1 0
|
||||
create table t1(n int);
|
||||
insert into t1 values (1);
|
||||
show open tables;
|
||||
Database Table In_use Name_locked
|
||||
mysql general_log 1 0
|
||||
mysql slow_log 1 0
|
||||
test t1 0 0
|
||||
drop table t1;
|
||||
create table t1 (a int not null, b VARCHAR(10), INDEX (b) ) AVG_ROW_LENGTH=10 CHECKSUM=1 COMMENT="test" ENGINE=MYISAM MIN_ROWS=10 MAX_ROWS=100 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=fixed;
|
||||
@ -564,20 +568,24 @@ SELECT 1 FROM mysql.db, mysql.proc, mysql.user, mysql.time_zone, mysql.time_zone
|
||||
1
|
||||
SHOW OPEN TABLES;
|
||||
Database Table In_use Name_locked
|
||||
mysql db 0 0
|
||||
mysql proc 0 0
|
||||
test urkunde 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql user 0 0
|
||||
mysql db 0 0
|
||||
test txt1 0 0
|
||||
mysql proc 0 0
|
||||
mysql slow_log 1 0
|
||||
test tyt2 0 0
|
||||
mysql general_log 1 0
|
||||
mysql user 0 0
|
||||
mysql time_zone_name 0 0
|
||||
SHOW OPEN TABLES FROM mysql;
|
||||
Database Table In_use Name_locked
|
||||
mysql db 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql user 0 0
|
||||
mysql proc 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql db 0 0
|
||||
mysql slow_log 1 0
|
||||
mysql general_log 1 0
|
||||
mysql user 0 0
|
||||
mysql time_zone_name 0 0
|
||||
SHOW OPEN TABLES FROM mysql LIKE 'u%';
|
||||
Database Table In_use Name_locked
|
||||
@ -590,12 +598,16 @@ test tyt2 0 0
|
||||
mysql time_zone_name 0 0
|
||||
SHOW OPEN TABLES LIKE '%o%';
|
||||
Database Table In_use Name_locked
|
||||
mysql time_zone 0 0
|
||||
mysql proc 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql slow_log 1 0
|
||||
mysql general_log 1 0
|
||||
mysql time_zone_name 0 0
|
||||
FLUSH TABLES;
|
||||
SHOW OPEN TABLES;
|
||||
Database Table In_use Name_locked
|
||||
mysql general_log 1 0
|
||||
mysql slow_log 1 0
|
||||
DROP TABLE txt1;
|
||||
DROP TABLE tyt2;
|
||||
DROP TABLE urkunde;
|
||||
|
@ -464,19 +464,6 @@ create table t5 (x int)|
|
||||
call bug3294()|
|
||||
ERROR 42S02: Unknown table 't5'
|
||||
drop procedure bug3294|
|
||||
drop procedure if exists bug6807|
|
||||
create procedure bug6807()
|
||||
begin
|
||||
declare id int;
|
||||
set id = connection_id();
|
||||
kill query id;
|
||||
select 'Not reached';
|
||||
end|
|
||||
call bug6807()|
|
||||
ERROR 70100: Query execution was interrupted
|
||||
call bug6807()|
|
||||
ERROR 70100: Query execution was interrupted
|
||||
drop procedure bug6807|
|
||||
drop procedure if exists bug8776_1|
|
||||
drop procedure if exists bug8776_2|
|
||||
drop procedure if exists bug8776_3|
|
||||
|
@ -2142,7 +2142,6 @@ show create database test;
|
||||
show databases like 'foo';
|
||||
show errors;
|
||||
show columns from t1;
|
||||
show grants for 'root'@'localhost';
|
||||
show keys from t1;
|
||||
show open tables like 'foo';
|
||||
show privileges;
|
||||
@ -2169,8 +2168,6 @@ Level Code Message
|
||||
Field Type Null Key Default Extra
|
||||
id char(16) NO
|
||||
data int(11) NO
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
Database Table In_use Name_locked
|
||||
Privilege Context Comment
|
||||
@ -2224,8 +2221,6 @@ Level Code Message
|
||||
Field Type Null Key Default Extra
|
||||
id char(16) NO
|
||||
data int(11) NO
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
Database Table In_use Name_locked
|
||||
Privilege Context Comment
|
||||
@ -2262,18 +2257,6 @@ Tables_in_test (foo)
|
||||
Variable_name Value
|
||||
Level Code Message
|
||||
drop procedure bug4902|
|
||||
drop procedure if exists bug4902_2|
|
||||
create procedure bug4902_2()
|
||||
begin
|
||||
show processlist;
|
||||
end|
|
||||
call bug4902_2()|
|
||||
Id User Host db Command Time State Info
|
||||
# root localhost test Query # NULL show processlist
|
||||
call bug4902_2()|
|
||||
Id User Host db Command Time State Info
|
||||
# root localhost test Query # NULL show processlist
|
||||
drop procedure bug4902_2|
|
||||
drop procedure if exists bug4904|
|
||||
create procedure bug4904()
|
||||
begin
|
||||
@ -2416,52 +2399,6 @@ select @x|
|
||||
NULL
|
||||
delete from t1|
|
||||
drop procedure bug4941|
|
||||
drop procedure if exists bug3583|
|
||||
drop procedure if exists bug3583|
|
||||
create procedure bug3583()
|
||||
begin
|
||||
declare c int;
|
||||
select * from t1;
|
||||
select count(*) into c from t1;
|
||||
select c;
|
||||
end|
|
||||
insert into t1 values ("x", 3), ("y", 5)|
|
||||
set @x = @@query_cache_size|
|
||||
set global query_cache_size = 10*1024*1024|
|
||||
flush status|
|
||||
flush query cache|
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 2
|
||||
set global query_cache_size = @x|
|
||||
flush status|
|
||||
flush query cache|
|
||||
delete from t1|
|
||||
drop procedure bug3583|
|
||||
drop procedure if exists bug4905|
|
||||
create table t3 (s1 int,primary key (s1))|
|
||||
drop procedure if exists bug4905|
|
||||
@ -2677,17 +2614,6 @@ select id, bug5240() from t1|
|
||||
id bug5240()
|
||||
answer 42
|
||||
drop function bug5240|
|
||||
drop function if exists bug5278|
|
||||
create function bug5278 () returns char
|
||||
begin
|
||||
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
|
||||
return 'okay';
|
||||
end|
|
||||
select bug5278()|
|
||||
ERROR 42000: Can't find any matching row in the user table
|
||||
select bug5278()|
|
||||
ERROR 42000: Can't find any matching row in the user table
|
||||
drop function bug5278|
|
||||
drop procedure if exists p1|
|
||||
create table t3(id int)|
|
||||
insert into t3 values(1)|
|
||||
@ -4052,14 +3978,6 @@ select bug10100f(5)|
|
||||
ERROR HY000: Recursive stored functions and triggers are not allowed.
|
||||
call bug10100t(5)|
|
||||
ERROR HY000: Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine bug10100p
|
||||
set @@max_sp_recursion_depth=255|
|
||||
set @var=1|
|
||||
call bug10100p(255, @var)|
|
||||
call bug10100pt(1,255)|
|
||||
call bug10100pv(1,255)|
|
||||
call bug10100pd(1,255)|
|
||||
call bug10100pc(1,255)|
|
||||
set @@max_sp_recursion_depth=0|
|
||||
deallocate prepare stmt2|
|
||||
drop function bug10100f|
|
||||
drop procedure bug10100p|
|
||||
|
206
mysql-test/r/sp_notembedded.result
Normal file
206
mysql-test/r/sp_notembedded.result
Normal file
@ -0,0 +1,206 @@
|
||||
drop procedure if exists bug4902|
|
||||
create procedure bug4902()
|
||||
begin
|
||||
show grants for 'root'@'localhost';
|
||||
end|
|
||||
call bug4902()|
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
call bug4902()|
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
drop procedure bug4902|
|
||||
drop procedure if exists bug4902_2|
|
||||
create procedure bug4902_2()
|
||||
begin
|
||||
show processlist;
|
||||
end|
|
||||
call bug4902_2()|
|
||||
Id User Host db Command Time State Info
|
||||
# root localhost test Query # NULL show processlist
|
||||
call bug4902_2()|
|
||||
Id User Host db Command Time State Info
|
||||
# root localhost test Query # NULL show processlist
|
||||
drop procedure bug4902_2|
|
||||
drop function if exists bug5278|
|
||||
create function bug5278 () returns char
|
||||
begin
|
||||
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
|
||||
return 'okay';
|
||||
end|
|
||||
select bug5278()|
|
||||
ERROR 42000: Can't find any matching row in the user table
|
||||
select bug5278()|
|
||||
ERROR 42000: Can't find any matching row in the user table
|
||||
drop function bug5278|
|
||||
drop table if exists t1|
|
||||
create table t1 (
|
||||
id char(16) not null default '',
|
||||
data int not null
|
||||
)|
|
||||
drop procedure if exists bug3583|
|
||||
drop procedure if exists bug3583|
|
||||
create procedure bug3583()
|
||||
begin
|
||||
declare c int;
|
||||
select * from t1;
|
||||
select count(*) into c from t1;
|
||||
select c;
|
||||
end|
|
||||
insert into t1 values ("x", 3), ("y", 5)|
|
||||
set @x = @@query_cache_size|
|
||||
set global query_cache_size = 10*1024*1024|
|
||||
flush status|
|
||||
flush query cache|
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 2
|
||||
set global query_cache_size = @x|
|
||||
flush status|
|
||||
flush query cache|
|
||||
delete from t1|
|
||||
drop procedure bug3583|
|
||||
drop table t1;
|
||||
#|
|
||||
drop procedure if exists bug6807|
|
||||
create procedure bug6807()
|
||||
begin
|
||||
declare id int;
|
||||
set id = connection_id();
|
||||
kill query id;
|
||||
select 'Not reached';
|
||||
end|
|
||||
call bug6807()|
|
||||
ERROR 70100: Query execution was interrupted
|
||||
call bug6807()|
|
||||
ERROR 70100: Query execution was interrupted
|
||||
drop procedure bug6807|
|
||||
drop function if exists bug10100f|
|
||||
drop procedure if exists bug10100p|
|
||||
drop procedure if exists bug10100t|
|
||||
drop procedure if exists bug10100pt|
|
||||
drop procedure if exists bug10100pv|
|
||||
drop procedure if exists bug10100pd|
|
||||
drop procedure if exists bug10100pc|
|
||||
create function bug10100f(prm int) returns int
|
||||
begin
|
||||
if prm > 1 then
|
||||
return prm * bug10100f(prm - 1);
|
||||
end if;
|
||||
return 1;
|
||||
end|
|
||||
create procedure bug10100p(prm int, inout res int)
|
||||
begin
|
||||
set res = res * prm;
|
||||
if prm > 1 then
|
||||
call bug10100p(prm - 1, res);
|
||||
end if;
|
||||
end|
|
||||
create procedure bug10100t(prm int)
|
||||
begin
|
||||
declare res int;
|
||||
set res = 1;
|
||||
call bug10100p(prm, res);
|
||||
select res;
|
||||
end|
|
||||
create table t3 (a int)|
|
||||
insert into t3 values (0)|
|
||||
create view v1 as select a from t3;
|
||||
create procedure bug10100pt(level int, lim int)
|
||||
begin
|
||||
if level < lim then
|
||||
update t3 set a=level;
|
||||
FLUSH TABLES;
|
||||
call bug10100pt(level+1, lim);
|
||||
else
|
||||
select * from t3;
|
||||
end if;
|
||||
end|
|
||||
create procedure bug10100pv(level int, lim int)
|
||||
begin
|
||||
if level < lim then
|
||||
update v1 set a=level;
|
||||
FLUSH TABLES;
|
||||
call bug10100pv(level+1, lim);
|
||||
else
|
||||
select * from v1;
|
||||
end if;
|
||||
end|
|
||||
prepare stmt2 from "select * from t3;";
|
||||
create procedure bug10100pd(level int, lim int)
|
||||
begin
|
||||
if level < lim then
|
||||
select level;
|
||||
prepare stmt1 from "update t3 set a=a+2";
|
||||
execute stmt1;
|
||||
FLUSH TABLES;
|
||||
execute stmt1;
|
||||
FLUSH TABLES;
|
||||
execute stmt1;
|
||||
FLUSH TABLES;
|
||||
deallocate prepare stmt1;
|
||||
execute stmt2;
|
||||
select * from t3;
|
||||
call bug10100pd(level+1, lim);
|
||||
else
|
||||
execute stmt2;
|
||||
end if;
|
||||
end|
|
||||
create procedure bug10100pc(level int, lim int)
|
||||
begin
|
||||
declare lv int;
|
||||
declare c cursor for select a from t3;
|
||||
open c;
|
||||
if level < lim then
|
||||
select level;
|
||||
fetch c into lv;
|
||||
select lv;
|
||||
update t3 set a=level+lv;
|
||||
FLUSH TABLES;
|
||||
call bug10100pc(level+1, lim);
|
||||
else
|
||||
select * from t3;
|
||||
end if;
|
||||
close c;
|
||||
end|
|
||||
set @@max_sp_recursion_depth=255|
|
||||
set @var=1|
|
||||
call bug10100p(255, @var)|
|
||||
call bug10100pt(1,255)|
|
||||
call bug10100pv(1,255)|
|
||||
call bug10100pd(1,255)|
|
||||
call bug10100pc(1,255)|
|
||||
set @@max_sp_recursion_depth=0|
|
||||
deallocate prepare stmt2|
|
||||
drop function bug10100f|
|
||||
drop procedure bug10100p|
|
||||
drop procedure bug10100t|
|
||||
drop procedure bug10100pt|
|
||||
drop procedure bug10100pv|
|
||||
drop procedure bug10100pd|
|
||||
drop procedure bug10100pc|
|
||||
drop view v1|
|
1
mysql-test/r/subselect_notembedded.result
Normal file
1
mysql-test/r/subselect_notembedded.result
Normal file
@ -0,0 +1 @@
|
||||
purge master logs before (select adddate(current_timestamp(), interval -4 day));
|
@ -5,6 +5,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -13,6 +14,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
@ -184,6 +186,31 @@ proc CREATE TABLE `proc` (
|
||||
`comment` char(64) character set utf8 collate utf8_bin NOT NULL default '',
|
||||
PRIMARY KEY (`db`,`name`,`type`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'
|
||||
show create table general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
||||
`user_host` mediumtext,
|
||||
`thread_id` int(11) default NULL,
|
||||
`server_id` int(11) default NULL,
|
||||
`command_type` varchar(64) default NULL,
|
||||
`argument` mediumtext
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
|
||||
show create table slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time NOT NULL,
|
||||
`lock_time` time NOT NULL,
|
||||
`rows_sent` int(11) NOT NULL,
|
||||
`rows_examined` int(11) NOT NULL,
|
||||
`db` varchar(512) default NULL,
|
||||
`last_insert_id` int(11) default NULL,
|
||||
`insert_id` int(11) default NULL,
|
||||
`server_id` int(11) default NULL,
|
||||
`sql_text` mediumtext NOT NULL
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
|
||||
show create table event;
|
||||
Table Create Table
|
||||
event CREATE TABLE `event` (
|
||||
|
@ -2213,15 +2213,6 @@ r_object_id users_names
|
||||
120001a080000542 guser02
|
||||
drop view v1, v2;
|
||||
drop table t1, t2;
|
||||
create definer=some_user@`` sql security invoker view v1 as select 1;
|
||||
ERROR HY000: Definer is not fully qualified
|
||||
create definer=some_user@localhost sql security invoker view v1 as select 1;
|
||||
Warnings:
|
||||
Note 1449 There is no 'some_user'@'localhost' registered
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`some_user`@`localhost` SQL SECURITY INVOKER VIEW `v1` AS select 1 AS `1`
|
||||
drop view v1;
|
||||
create table t1 (s1 int);
|
||||
create view abc as select * from t1 as abc;
|
||||
drop table t1;
|
||||
|
@ -520,3 +520,12 @@ use test;
|
||||
use test;
|
||||
drop user mysqltest_1@localhost;
|
||||
drop database mysqltest;
|
||||
create definer=some_user@`` sql security invoker view v1 as select 1;
|
||||
ERROR HY000: Definer is not fully qualified
|
||||
create definer=some_user@localhost sql security invoker view v1 as select 1;
|
||||
Warnings:
|
||||
Note 1449 There is no 'some_user'@'localhost' registered
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`some_user`@`localhost` SQL SECURITY INVOKER VIEW `v1` AS select 1 AS `1`
|
||||
drop view v1;
|
||||
|
@ -1,3 +1,6 @@
|
||||
# This test should work in embedded server after we fix mysqltest
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# This test is a bit tricky as we can't use backup table to overwrite an old
|
||||
# table
|
||||
|
@ -1,5 +1,6 @@
|
||||
# This is a wrapper for binlog.test so that the same test case can be used
|
||||
# For both statement and row based bin logs 9/19/2005 [jbm]
|
||||
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_binlog_format_statement.inc
|
||||
-- source extra/binlog_tests/binlog.test
|
||||
|
@ -1,5 +1,6 @@
|
||||
# This is a wrapper for binlog.test so that the same test case can be used
|
||||
# For both statement and row based bin logs 9/19/2005 [jbm]
|
||||
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_binlog_format_statement.inc
|
||||
-- source extra/binlog_tests/blackhole.test
|
||||
|
@ -1,5 +1,6 @@
|
||||
# This is a wrapper for binlog.test so that the same test case can be used
|
||||
# For both statement and row based bin logs 9/19/2005 [jbm]
|
||||
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_binlog_format_statement.inc
|
||||
-- source extra/binlog_tests/ctype_cp932.test
|
||||
|
@ -1,6 +1,9 @@
|
||||
# Turn on compression between the client and server
|
||||
# and run a number of tests
|
||||
|
||||
# Can't test with embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
-- source include/have_compress.inc
|
||||
|
||||
connect (comp_con,localhost,root,,,,,COMPRESS);
|
||||
|
@ -5,6 +5,10 @@
|
||||
# This test makes no sense with the embedded server
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# check that CSV engine was compiled in, as the test relies on the presence
|
||||
# of the log tables (which are CSV-based). By connect mysql; show tables;
|
||||
--source include/have_csv.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
@ -1353,6 +1353,40 @@ DROP TABLE bug14672;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Test CONCURRENT INSERT (5.1)
|
||||
#
|
||||
|
||||
CREATE TABLE test_concurrent_insert ( val integer ) ENGINE = CSV;
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
connection con1;
|
||||
# obtain TL_READ lock on the table
|
||||
LOCK TABLES test_concurrent_insert READ LOCAL;
|
||||
|
||||
connection con2;
|
||||
# should pass despite of the lock
|
||||
INSERT INTO test_concurrent_insert VALUES (1);
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
|
||||
connection con1;
|
||||
# first connection should not notice the changes
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
# Now check that we see our own changes
|
||||
|
||||
LOCK TABLES test_concurrent_insert WRITE;
|
||||
INSERT INTO test_concurrent_insert VALUES (2);
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
UNLOCK TABLES;
|
||||
|
||||
# cleanup
|
||||
DROP TABLE test_concurrent_insert;
|
||||
|
||||
#
|
||||
# BUG#13406 - incorrect amount of "records deleted"
|
||||
#
|
||||
|
@ -3,6 +3,9 @@
|
||||
# (Can't be tested with purify :( )
|
||||
#
|
||||
|
||||
# This tests not performed with embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
@ -19,6 +19,7 @@ innodb_concurrent : Results are not deterministic, Elliot will fix (BUG#3300)
|
||||
subselect : Bug#15706
|
||||
ps_7ndb : dbug assert in RBR mode when executing test suite
|
||||
rpl_ddl : Bug#15963 SBR does not show "Definer" correctly
|
||||
partition_03ndb : Bug#16385
|
||||
events : Affects flush test case. A table lock not released somewhere
|
||||
ndb_binlog_basic : Results are not deterministic, Tomas will fix
|
||||
rpl_ndb_basic : Bug#16228
|
||||
@ -26,3 +27,5 @@ rpl_sp : Bug #16456
|
||||
#ndb_dd_disk2memory : Bug #16466
|
||||
ndb_autodiscover : Needs to be fixed w.r.t binlog
|
||||
ndb_autodiscover2 : Needs to be fixed w.r.t binlog
|
||||
system_mysql_db : Needs fixing
|
||||
system_mysql_db_fix : Needs fixing
|
||||
|
@ -1,3 +1,5 @@
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
source include/federated.inc;
|
||||
|
||||
connection slave;
|
||||
|
@ -1,3 +1,5 @@
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
source include/have_archive.inc;
|
||||
source include/federated.inc;
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
source include/federated.inc;
|
||||
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
source include/have_bdb.inc;
|
||||
source include/federated.inc;
|
||||
|
||||
|
@ -4,6 +4,8 @@
|
||||
# Test of flush table
|
||||
#
|
||||
|
||||
# Should work in embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
@ -2,6 +2,9 @@
|
||||
# test of HANDLER ...
|
||||
#
|
||||
|
||||
# should work in embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
--enable_warnings
|
||||
|
@ -1,6 +1,10 @@
|
||||
# This test uses grants, which can't get tested for embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# check that CSV engine was compiled in, as the result of the test
|
||||
# depends on the presence of the log tables (which are CSV-based).
|
||||
--source include/have_csv.inc
|
||||
|
||||
# Test for information_schema.schemata &
|
||||
# show databases
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
# Test of init_connect variable
|
||||
#
|
||||
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
connect (con0,localhost,root,,);
|
||||
connection con0;
|
||||
select hex(@a);
|
||||
|
@ -1576,33 +1576,7 @@ connection a;
|
||||
checksum table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#11238 - in prelocking mode SELECT .. FOR UPDATE is changed to
|
||||
# non-blocking SELECT
|
||||
#
|
||||
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
|
||||
insert t1 values (1,100);
|
||||
delimiter |;
|
||||
create function f1 () returns integer begin
|
||||
declare var1 int;
|
||||
select col2 into var1 from t1 where col1=1 for update;
|
||||
return var1;
|
||||
end|
|
||||
delimiter ;|
|
||||
start transaction;
|
||||
select f1();
|
||||
connection b;
|
||||
send update t1 set col2=0 where col1=1;
|
||||
connection default;
|
||||
select * from t1;
|
||||
connection a;
|
||||
rollback;
|
||||
connection b;
|
||||
reap;
|
||||
rollback;
|
||||
connection default;
|
||||
drop table t1;
|
||||
drop function f1;
|
||||
disconnect a;
|
||||
disconnect b;
|
||||
|
||||
|
36
mysql-test/t/innodb_notembedded.test
Normal file
36
mysql-test/t/innodb_notembedded.test
Normal file
@ -0,0 +1,36 @@
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
connect (a,localhost,root,,);
|
||||
connect (b,localhost,root,,);
|
||||
|
||||
|
||||
#
|
||||
# BUG#11238 - in prelocking mode SELECT .. FOR UPDATE is changed to
|
||||
# non-blocking SELECT
|
||||
#
|
||||
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
|
||||
insert t1 values (1,100);
|
||||
delimiter |;
|
||||
create function f1 () returns integer begin
|
||||
declare var1 int;
|
||||
select col2 into var1 from t1 where col1=1 for update;
|
||||
return var1;
|
||||
end|
|
||||
delimiter ;|
|
||||
start transaction;
|
||||
select f1();
|
||||
connection b;
|
||||
send update t1 set col2=0 where col1=1;
|
||||
connection default;
|
||||
select * from t1;
|
||||
connection a;
|
||||
rollback;
|
||||
connection b;
|
||||
reap;
|
||||
rollback;
|
||||
connection default;
|
||||
drop table t1;
|
||||
drop function f1;
|
||||
disconnect a;
|
||||
disconnect b;
|
@ -114,3 +114,27 @@ select * from t1;
|
||||
drop table t1, t2;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
|
||||
#
|
||||
# Bug#12448 LOAD DATA / SELECT INTO OUTFILE
|
||||
# doesn't work with multibyte path name
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET NAMES latin1;
|
||||
SET character_set_filesystem=filename;
|
||||
select @@character_set_filesystem;
|
||||
SELECT * INTO OUTFILE 't-1' FROM t1;
|
||||
DELETE FROM t1;
|
||||
LOAD DATA INFILE 't-1' INTO TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
DELETE FROM t1;
|
||||
SET character_set_filesystem=latin1;
|
||||
select @@character_set_filesystem;
|
||||
LOAD DATA INFILE 't@002d1' INTO TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
--exec rm $MYSQL_TEST_DIR/var/master-data/test/t@002d1
|
||||
SET character_set_filesystem=default;
|
||||
select @@character_set_filesystem;
|
||||
|
148
mysql-test/t/log_tables.test
Normal file
148
mysql-test/t/log_tables.test
Normal file
@ -0,0 +1,148 @@
|
||||
# this test needs multithreaded mysqltest
|
||||
-- source include/not_embedded.inc
|
||||
#
|
||||
# Basic log tables test
|
||||
#
|
||||
|
||||
# check that CSV engine was compiled in
|
||||
--source include/have_csv.inc
|
||||
|
||||
use mysql;
|
||||
|
||||
#
|
||||
# Check that log tables work and we can do basic selects. This also
|
||||
# tests truncate, which works in a special mode with the log tables
|
||||
#
|
||||
|
||||
truncate table general_log;
|
||||
--replace_column 1 TIMESTAMP
|
||||
select * from general_log;
|
||||
truncate table slow_log;
|
||||
--replace_column 1 TIMESTAMP
|
||||
select * from slow_log;
|
||||
|
||||
#
|
||||
# We want to check that a record newly written to a log table shows up for
|
||||
# the query: since log tables use concurrent insert machinery and log tables
|
||||
# are always locked by artificial THD, this feature requires additional
|
||||
# check in ha_tina::write_row. This simple test should prove that the
|
||||
# log table flag in the table handler is triggered and working.
|
||||
#
|
||||
|
||||
truncate table general_log;
|
||||
--replace_column 1 TIMESTAMP
|
||||
select * from general_log where argument like '%general_log%';
|
||||
|
||||
|
||||
#
|
||||
# Check some basic queries interfering with the log tables.
|
||||
# In our test we'll use a tbale with verbose comments to the short
|
||||
# command type names, used in the tables
|
||||
#
|
||||
|
||||
create table join_test (verbose_comment varchar (80), command_type varchar(64));
|
||||
|
||||
insert into join_test values ("User performed a usual SQL query", "Query");
|
||||
insert into join_test values ("New DB connection was registered", "Connect");
|
||||
insert into join_test values ("Get the table info", "Field List");
|
||||
|
||||
select verbose_comment, user_host, argument
|
||||
from mysql.general_log join join_test
|
||||
on (mysql.general_log.command_type = join_test.command_type);
|
||||
|
||||
drop table join_test;
|
||||
|
||||
#
|
||||
# check that flush of the log table work fine
|
||||
#
|
||||
|
||||
flush logs;
|
||||
|
||||
#
|
||||
# check locking of the log tables
|
||||
#
|
||||
|
||||
--error 1532
|
||||
lock tables mysql.general_log WRITE;
|
||||
|
||||
--error 1532
|
||||
lock tables mysql.slow_log WRITE;
|
||||
|
||||
#
|
||||
# This attemts to get TL_READ_NO_INSERT lock, which is incompatible with
|
||||
# TL_WRITE_CONCURRENT_INSERT. This should fail. We issue this error as log
|
||||
# tables are always opened and locked by the logger.
|
||||
#
|
||||
|
||||
--error 1533
|
||||
lock tables mysql.general_log READ;
|
||||
|
||||
--error 1533
|
||||
lock tables mysql.slow_log READ;
|
||||
|
||||
#
|
||||
# This call should result in TL_READ lock on the log table. This is ok and
|
||||
# should pass.
|
||||
#
|
||||
|
||||
lock tables mysql.slow_log READ LOCAL, mysql.general_log READ LOCAL;
|
||||
|
||||
unlock tables;
|
||||
|
||||
#
|
||||
# check that FLUSH LOGS waits for all readers of the log table to vanish
|
||||
#
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
connection con1;
|
||||
|
||||
lock tables mysql.general_log READ LOCAL;
|
||||
|
||||
connection con2;
|
||||
|
||||
# this should wait for log tables to unlock
|
||||
send flush logs;
|
||||
|
||||
connection con1;
|
||||
|
||||
unlock tables;
|
||||
|
||||
# this connection should be alive by the time
|
||||
connection con2;
|
||||
|
||||
reap;
|
||||
|
||||
select "Mark that we woke up from flush logs in the test"
|
||||
as "test passed";
|
||||
|
||||
#
|
||||
# perform the same check for TRUNCATE: it should also wait for readers
|
||||
# to disappear
|
||||
#
|
||||
|
||||
connection con1;
|
||||
|
||||
lock tables mysql.general_log READ LOCAL;
|
||||
|
||||
connection con2;
|
||||
|
||||
# this should wait for log tables to unlock
|
||||
send truncate mysql.general_log;
|
||||
|
||||
connection con1;
|
||||
|
||||
unlock tables;
|
||||
|
||||
# this connection should be alive by the time
|
||||
connection con2;
|
||||
|
||||
reap;
|
||||
|
||||
select "Mark that we woke up from TRUNCATE in the test"
|
||||
as "test passed";
|
||||
|
||||
disconnect con2;
|
||||
disconnect con1;
|
||||
|
@ -1,3 +1,5 @@
|
||||
# This test should work in embedded server after we fix mysqltest
|
||||
-- source include/not_embedded.inc
|
||||
#
|
||||
# Testing the MySQL command line client(mysql)
|
||||
#
|
||||
|
@ -1,3 +1,6 @@
|
||||
# This test should work in embedded server after we fix mysqltest
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# We run with different binaries for normal and --embedded-server
|
||||
#
|
||||
# If this test fails with "command "$MYSQL_CLIENT_TEST" failed",
|
||||
|
@ -1,6 +1,10 @@
|
||||
# Embedded server doesn't support external clients
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# check that CSV engine was compiled in, as the result of the test
|
||||
# depends on the presence of the log tables (which are CSV-based).
|
||||
--source include/have_csv.inc
|
||||
|
||||
#
|
||||
# Bug #13783 mysqlcheck tries to optimize and analyze information_schema
|
||||
#
|
||||
|
@ -1,3 +1,5 @@
|
||||
# This test should work in embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# ============================================================================
|
||||
#
|
||||
|
@ -63,3 +63,19 @@ insert into t1 values (1,"a",1,1),(2,"a",1,1),(3,"a",1,1);
|
||||
show create table t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #13155: Problem in Create Table using SHOW CREATE TABLE syntax
|
||||
#
|
||||
CREATE TABLE t1 (a int not null primary key)
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 (a int not null primary key);
|
||||
ALTER TABLE t1
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
|
||||
drop table t1;
|
||||
|
@ -8,6 +8,9 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--enable_warnings
|
||||
|
||||
--exec $NDB_TOOLS_DIR/ndb_show_tables
|
||||
--exec $NDB_MGM --no-defaults -e "all dump 1000" >> $NDB_TOOLS_OUTPUT
|
||||
|
||||
CREATE TABLE `t1_c` (
|
||||
`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
|
||||
`goaledatta` char(2) NOT NULL default '',
|
||||
@ -205,6 +208,151 @@ select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
|
||||
#
|
||||
# Try Partitioned tables as well
|
||||
#
|
||||
ALTER TABLE t1_c
|
||||
PARTITION BY RANGE (`capgoaledatta`)
|
||||
(PARTITION p0 VALUES LESS THAN MAXVALUE);
|
||||
|
||||
ALTER TABLE t2_c
|
||||
PARTITION BY LIST(`capgotod`)
|
||||
(PARTITION p0 VALUES IN (0,1,2,3,4,5,6));
|
||||
|
||||
ALTER TABLE t3_c
|
||||
PARTITION BY HASH (`CapGoaledatta`);
|
||||
|
||||
ALTER TABLE t5_c
|
||||
PARTITION BY HASH (`capfa`)
|
||||
PARTITIONS 4;
|
||||
|
||||
ALTER TABLE t6_c
|
||||
PARTITION BY LINEAR HASH (`relatta`)
|
||||
PARTITIONS 4;
|
||||
|
||||
ALTER TABLE t7_c
|
||||
PARTITION BY LINEAR KEY (`dardtestard`);
|
||||
|
||||
--exec $NDB_MGM --no-defaults -e "start backup" >> $NDB_TOOLS_OUTPUT
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-2 >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-2 >> $NDB_TOOLS_OUTPUT
|
||||
|
||||
select count(*) from t1;
|
||||
select count(*) from t1_c;
|
||||
select count(*)
|
||||
from (select * from t1 union
|
||||
select * from t1_c) a;
|
||||
|
||||
select count(*) from t2;
|
||||
select count(*) from t2_c;
|
||||
select count(*)
|
||||
from (select * from t2 union
|
||||
select * from t2_c) a;
|
||||
|
||||
select count(*) from t3;
|
||||
select count(*) from t3_c;
|
||||
select count(*)
|
||||
from (select * from t3 union
|
||||
select * from t3_c) a;
|
||||
|
||||
select count(*) from t4;
|
||||
select count(*) from t4_c;
|
||||
select count(*)
|
||||
from (select * from t4 union
|
||||
select * from t4_c) a;
|
||||
|
||||
select count(*) from t5;
|
||||
select count(*) from t5_c;
|
||||
select count(*)
|
||||
from (select * from t5 union
|
||||
select * from t5_c) a;
|
||||
|
||||
select count(*) from t6;
|
||||
select count(*) from t6_c;
|
||||
select count(*)
|
||||
from (select * from t6 union
|
||||
select * from t6_c) a;
|
||||
|
||||
select count(*) from t7;
|
||||
select count(*) from t7_c;
|
||||
select count(*)
|
||||
from (select * from t7 union
|
||||
select * from t7_c) a;
|
||||
|
||||
select count(*) from t8;
|
||||
select count(*) from t8_c;
|
||||
select count(*)
|
||||
from (select * from t8 union
|
||||
select * from t8_c) a;
|
||||
|
||||
select count(*) from t9;
|
||||
select count(*) from t9_c;
|
||||
select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 1 -m -r --ndb-nodegroup_map '(0,0)' --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-2 >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-2 >> $NDB_TOOLS_OUTPUT
|
||||
|
||||
select count(*) from t1;
|
||||
select count(*) from t1_c;
|
||||
select count(*)
|
||||
from (select * from t1 union
|
||||
select * from t1_c) a;
|
||||
|
||||
select count(*) from t2;
|
||||
select count(*) from t2_c;
|
||||
select count(*)
|
||||
from (select * from t2 union
|
||||
select * from t2_c) a;
|
||||
|
||||
select count(*) from t3;
|
||||
select count(*) from t3_c;
|
||||
select count(*)
|
||||
from (select * from t3 union
|
||||
select * from t3_c) a;
|
||||
|
||||
select count(*) from t4;
|
||||
select count(*) from t4_c;
|
||||
select count(*)
|
||||
from (select * from t4 union
|
||||
select * from t4_c) a;
|
||||
|
||||
select count(*) from t5;
|
||||
select count(*) from t5_c;
|
||||
select count(*)
|
||||
from (select * from t5 union
|
||||
select * from t5_c) a;
|
||||
|
||||
select count(*) from t6;
|
||||
select count(*) from t6_c;
|
||||
select count(*)
|
||||
from (select * from t6 union
|
||||
select * from t6_c) a;
|
||||
|
||||
select count(*) from t7;
|
||||
select count(*) from t7_c;
|
||||
select count(*)
|
||||
from (select * from t7 union
|
||||
select * from t7_c) a;
|
||||
|
||||
select count(*) from t8;
|
||||
select count(*) from t8_c;
|
||||
select count(*)
|
||||
from (select * from t8 union
|
||||
select * from t8_c) a;
|
||||
|
||||
select count(*) from t9;
|
||||
select count(*) from t9_c;
|
||||
select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 1 -m -r --ndb-nodegroup_map '(0,1)' $NDB_BACKUP_DIR/BACKUP/BACKUP-2 2>&1 | grep Translate || true
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
#
|
||||
|
@ -8,6 +8,7 @@
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Partition by key no partition defined => OK
|
||||
#
|
||||
@ -97,6 +98,9 @@ partitions 3
|
||||
partition x2 tablespace ts2,
|
||||
partition x3 tablespace ts3);
|
||||
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
@ -162,6 +166,141 @@ UNLOCK TABLES;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13644 DROP PARTITION NULL's DATE column
|
||||
#
|
||||
CREATE TABLE t1 (a int, name VARCHAR(50), purchased DATE)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (3),
|
||||
PARTITION p1 VALUES LESS THAN (7),
|
||||
PARTITION p2 VALUES LESS THAN (9),
|
||||
PARTITION p3 VALUES LESS THAN (11));
|
||||
INSERT INTO t1 VALUES
|
||||
(1, 'desk organiser', '2003-10-15'),
|
||||
(2, 'CD player', '1993-11-05'),
|
||||
(3, 'TV set', '1996-03-10'),
|
||||
(4, 'bookcase', '1982-01-10'),
|
||||
(5, 'exercise bike', '2004-05-09'),
|
||||
(6, 'sofa', '1987-06-05'),
|
||||
(7, 'popcorn maker', '2001-11-22'),
|
||||
(8, 'acquarium', '1992-08-04'),
|
||||
(9, 'study desk', '1984-09-16'),
|
||||
(10, 'lava lamp', '1998-12-25');
|
||||
|
||||
SELECT * from t1 ORDER BY a;
|
||||
ALTER TABLE t1 DROP PARTITION p0;
|
||||
SELECT * from t1 ORDER BY a;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13442; Truncate Partitioned table doesn't work
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION p0 VALUES IN (1,2,3), PARTITION p1 VALUES IN (4,5,6));
|
||||
|
||||
insert into t1 values (1),(2),(3),(4),(5),(6);
|
||||
select * from t1;
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13445 Partition by KEY method crashes server
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int, primary key(a,b))
|
||||
PARTITION BY KEY(b,a) PARTITIONS 4;
|
||||
|
||||
insert into t1 values (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
|
||||
select * from t1 where a = 4;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13438: Engine clause in PARTITION clause causes crash
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
PARTITIONS 1
|
||||
(PARTITION x1 VALUES IN (1) ENGINE=MEMORY);
|
||||
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13440: REPLACE causes crash in partitioned table
|
||||
#
|
||||
CREATE TABLE t1 (a int, unique(a))
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
REPLACE t1 SET a = 4;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #14365: Crash if value too small in list partitioned table
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (2), PARTITION x2 VALUES IN (3));
|
||||
|
||||
insert into t1 values (2), (3);
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
insert into t1 values (4);
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
insert into t1 values (1);
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug 14327: PARTITIONS clause gets lost in SHOW CREATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY HASH(a)
|
||||
PARTITIONS 5;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13446: Update to value outside of list values doesn't give error
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION x1 VALUES LESS THAN (2));
|
||||
|
||||
insert into t1 values (1);
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
update t1 set a = 5;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13441: Analyze on partitioned table didn't work
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
|
||||
analyze table t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG 14524
|
||||
#
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) default NULL
|
||||
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1 PARTITION BY HASH (id) ;
|
||||
SELECT * FROM t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG 14524
|
||||
#
|
||||
@ -180,9 +319,9 @@ create table t1
|
||||
partition by range (a)
|
||||
( partition p0 values less than(10),
|
||||
partition p1 values less than (20),
|
||||
partition p2 values less than maxvalue);
|
||||
partition p2 values less than (25));
|
||||
|
||||
alter table t1 reorganise partition p2 into (partition p2 values less than (30));
|
||||
alter table t1 reorganize partition p2 into (partition p2 values less than (30));
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
@ -199,7 +338,8 @@ PARTITION BY RANGE (a)
|
||||
PARTITION x8 VALUES LESS THAN (18),
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x1 VALUES LESS THAN (6));
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
|
25
mysql-test/t/partition_02myisam.test
Normal file
25
mysql-test/t/partition_02myisam.test
Normal file
@ -0,0 +1,25 @@
|
||||
###############################################
|
||||
# #
|
||||
# Partition tests MyISAM tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE DO NOT ADD NOT MYISAM SPECIFIC TESTCASES HERE !
|
||||
# NON STORAGE SPECIFIC TESTCASES SHOULD BE ADDED IN
|
||||
# THE SOURCED FIELS ONLY.
|
||||
#
|
||||
|
||||
# Storage engine to be tested
|
||||
let $engine= 'MYISAM';
|
||||
eval SET SESSION storage_engine=$engine;
|
||||
|
||||
|
||||
# Other storage engine <> storage engine to be tested
|
||||
let $engine_other= 'MEMORY';
|
||||
# number of rows for the INSERT/UPDATE/DELETE/SELECT experiments
|
||||
# on partioned tables
|
||||
# Attention: In the moment the result files fit to @max_row = 200 only
|
||||
SET @max_row = 200;
|
||||
|
||||
-- source include/partition_1.inc
|
26
mysql-test/t/partition_03ndb.test
Normal file
26
mysql-test/t/partition_03ndb.test
Normal file
@ -0,0 +1,26 @@
|
||||
###############################################
|
||||
# #
|
||||
# Partition tests NDB tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE DO NOT ADD NOT NDB SPECIFIC TESTCASES HERE !
|
||||
# NON STORAGE SPECIFIC TESTCASES SHOULD BE ADDED IN
|
||||
# THE SOURCED FIELS ONLY.
|
||||
#
|
||||
|
||||
# Storage engine to be tested
|
||||
let $engine= 'NDB' ;
|
||||
-- source include/have_ndb.inc
|
||||
eval SET SESSION storage_engine=$engine;
|
||||
|
||||
|
||||
# Other storage engine <> storage engine to be tested
|
||||
let $engine_other= 'MEMORY';
|
||||
# number of rows for the INSERT/UPDATE/DELETE/SELECT experiments
|
||||
# on partioned tables
|
||||
# Attention: In the moment the result files fit to @max_row = 200 only
|
||||
SET @max_row = 200;
|
||||
|
||||
-- source include/partition_1.inc
|
@ -4,6 +4,10 @@
|
||||
#
|
||||
-- source include/have_partition.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Partition by key stand-alone error
|
||||
#
|
||||
@ -727,6 +731,14 @@ partitions 2
|
||||
(partition x1 values in 4,
|
||||
partition x2 values in (5));
|
||||
|
||||
#
|
||||
# Bug #13439: Crash when LESS THAN (non-literal)
|
||||
#
|
||||
--error 1054
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (x1));
|
||||
|
||||
#
|
||||
# No partition for the given value
|
||||
#
|
||||
|
@ -4,6 +4,10 @@
|
||||
#
|
||||
-- source include/have_partition.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Try faulty DROP PARTITION and COALESCE PARTITION
|
||||
#
|
||||
@ -21,7 +25,7 @@ PARTITION BY RANGE (a)
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
|
||||
--error ER_REORG_OUTSIDE_RANGE
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (2),
|
||||
PARTITION x11 VALUES LESS THAN (5));
|
||||
|
||||
@ -38,30 +42,35 @@ ALTER TABLE t1 DROP PARTITION x10, x1, x2, x1;
|
||||
ALTER TABLE t1 DROP PARTITION x10, x1, x2, x3;
|
||||
|
||||
--error ER_REORG_PARTITION_NOT_EXIST
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (22));
|
||||
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x3 VALUES LESS THAN (6));
|
||||
|
||||
--error ER_CONSECUTIVE_REORG_PARTITIONS
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x2 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (2));
|
||||
|
||||
--error ER_DROP_PARTITION_NON_EXISTENT
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x1, x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x1, x1 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (4));
|
||||
|
||||
--error ER_REORG_OUTSIDE_RANGE
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (5));
|
||||
|
||||
--error ER_RANGE_NOT_INCREASING_ERROR
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
--error ER_REORG_OUTSIDE_RANGE
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (4),
|
||||
PARTITION x11 VALUES LESS THAN (2));
|
||||
|
||||
--error ER_RANGE_NOT_INCREASING_ERROR
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (6),
|
||||
PARTITION x11 VALUES LESS THAN (4));
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a int)
|
||||
|
@ -822,29 +822,14 @@ select sql_cache * from t1 where s1=1;
|
||||
end;//
|
||||
delimiter ;//
|
||||
call f1();
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
call f1();
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
call f1();
|
||||
select sql_cache * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
insert into t1 values (1);
|
||||
select sql_cache * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
call f1();
|
||||
call f1();
|
||||
select sql_cache * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user