mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge mysql.com:/extern/mysql/5.0/bug17476/mysql-5.0
into mysql.com:/extern/mysql/5.1/generic/mysql-5.1-new
This commit is contained in:
98
VC++Files/sql/gen_lex_hash.dsp
Normal file
98
VC++Files/sql/gen_lex_hash.dsp
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
# Microsoft Developer Studio Project File - Name="gen_lex_hash" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||||
|
|
||||||
|
CFG=gen_lex_hash - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "gen_lex_hash.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "gen_lex_hash.mak" CFG="gen_lex_hash - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "gen_lex_hash - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "gen_lex_hash - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP AllowPerConfigDependencies 0
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "gen_lex_hash - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "gen_lex_hash___Win32_Release"
|
||||||
|
# PROP BASE Intermediate_Dir "gen_lex_hash___Win32_Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "gen_lex_hash___Win32_Release"
|
||||||
|
# PROP Intermediate_Dir "gen_lex_hash___Win32_Release"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
MTL=midl.exe
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||||
|
# ADD BASE RSC /l 0x419 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x419 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "gen_lex_hash - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "Debug"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
MTL=midl.exe
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||||
|
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||||
|
# ADD BASE RSC /l 0x419 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x419 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "gen_lex_hash - Win32 Release"
|
||||||
|
# Name "gen_lex_hash - Win32 Debug"
|
||||||
|
# Begin Group "Source Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||||
|
# End Group
|
||||||
|
# Begin Group "Header Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||||
|
# End Group
|
||||||
|
# Begin Group "Resource Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||||
|
# End Group
|
||||||
|
# End Target
|
||||||
|
# End Project
|
158
VC++Files/sql/gen_lex_hash.vcproj
Normal file
158
VC++Files/sql/gen_lex_hash.vcproj
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
<?xml version="1.0" encoding="windows-1251"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="7.10"
|
||||||
|
Name="gen_lex_hash"
|
||||||
|
ProjectGUID="{D593B5D1-8EFC-44FE-9937-A5AAD1E619A1}"
|
||||||
|
SccProjectName=""
|
||||||
|
SccLocalPath="">
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"/>
|
||||||
|
</Platforms>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory=".\Debug"
|
||||||
|
IntermediateDirectory=".\Debug"
|
||||||
|
ConfigurationType="1"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="../include"
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="2"
|
||||||
|
PrecompiledHeaderFile=".\Debug/gen_lex_hash.pch"
|
||||||
|
AssemblerListingLocation=".\Debug/"
|
||||||
|
ObjectFile=".\Debug/"
|
||||||
|
ProgramDataBaseFileName=".\Debug/"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="TRUE"
|
||||||
|
DebugInformationFormat="4"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="Ws2_32.lib"
|
||||||
|
OutputFile="../sql/gen_lex_hash.exe"
|
||||||
|
LinkIncremental="1"
|
||||||
|
SuppressStartupBanner="TRUE"
|
||||||
|
AdditionalLibraryDirectories="../lib_release"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
ProgramDatabaseFile=".\Debug/gen_lex_hash.pdb"
|
||||||
|
SubSystem="1"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
TypeLibraryName=".\Debug/gen_lex_hash.tlb"
|
||||||
|
HeaderFileName=""/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
Culture="1049"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory=".\gen_lex_hash___Win32_Release"
|
||||||
|
IntermediateDirectory=".\gen_lex_hash___Win32_Release"
|
||||||
|
ConfigurationType="1"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
AdditionalIncludeDirectories="../include"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||||
|
StringPooling="TRUE"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
EnableFunctionLevelLinking="TRUE"
|
||||||
|
UsePrecompiledHeader="2"
|
||||||
|
PrecompiledHeaderFile=".\gen_lex_hash___Win32_Release/gen_lex_hash.pch"
|
||||||
|
AssemblerListingLocation=".\gen_lex_hash___Win32_Release/"
|
||||||
|
ObjectFile=".\gen_lex_hash___Win32_Release/"
|
||||||
|
ProgramDataBaseFileName=".\gen_lex_hash___Win32_Release/"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="TRUE"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="Ws2_32.lib"
|
||||||
|
OutputFile="../sql/gen_lex_hash.exe"
|
||||||
|
LinkIncremental="1"
|
||||||
|
SuppressStartupBanner="TRUE"
|
||||||
|
AdditionalLibraryDirectories="../lib_release"
|
||||||
|
ProgramDatabaseFile=".\gen_lex_hash___Win32_Release/gen_lex_hash.pdb"
|
||||||
|
SubSystem="1"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
TypeLibraryName=".\gen_lex_hash___Win32_Release/gen_lex_hash.tlb"
|
||||||
|
HeaderFileName=""/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
Culture="1049"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<Filter
|
||||||
|
Name="Source Files"
|
||||||
|
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
|
||||||
|
<File
|
||||||
|
RelativePath=".\gen_lex_hash.cpp">
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Header Files"
|
||||||
|
Filter="h;hpp;hxx;hm;inl">
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Resource Files"
|
||||||
|
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
|
||||||
|
</Filter>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
@ -1,45 +1,51 @@
|
|||||||
This directory contains a test suite for mysql daemon. To run
|
This directory contains a test suite for the MySQL daemon. To run
|
||||||
the currently existing test cases, simply execute ./mysql-test-run in
|
the currently existing test cases, simply execute ./mysql-test-run in
|
||||||
this directory. It will fire up the newly built mysqld and test it.
|
this directory. It will fire up the newly built mysqld and test it.
|
||||||
|
|
||||||
If you want to run a test with a running MySQL server use the --extern
|
Note that you do not have to have to do "make install", and you could
|
||||||
option to mysql-test-run. Please note that in this mode the test suite
|
actually have a co-existing MySQL installation. The tests will not
|
||||||
expects user to specify test names to run. Otherwise it falls back to the
|
|
||||||
normal "non-extern" behaviour. The reason is that some tests
|
|
||||||
could not run with external server. Here is the sample command
|
|
||||||
to test "alias" and "analyze" tests on external server:
|
|
||||||
|
|
||||||
mysql-test-run --extern alias analyze
|
|
||||||
|
|
||||||
To match your setup you might also need to provide --socket, --user and
|
|
||||||
other relevant options.
|
|
||||||
|
|
||||||
Note that you do not have to have to do make install, and you could
|
|
||||||
actually have a co-existing MySQL installation - the tests will not
|
|
||||||
conflict with it.
|
conflict with it.
|
||||||
|
|
||||||
All tests must pass. If one or more of them fail on your system, please
|
All tests must pass. If one or more of them fail on your system, please
|
||||||
read the following manual section of how to report the problem:
|
read the following manual section for instructions on how to report the
|
||||||
|
problem:
|
||||||
|
|
||||||
http://dev.mysql.com/doc/mysql/en/mysql-test-suite.html
|
http://dev.mysql.com/doc/mysql/en/mysql-test-suite.html
|
||||||
|
|
||||||
|
If you want to use an already running MySQL server for specific tests,
|
||||||
|
use the --extern option to mysql-test-run. Please note that in this mode,
|
||||||
|
the test suite expects you to provide the names of the tests to run.
|
||||||
|
For example, here is the command to run the "alias" and "analyze" tests
|
||||||
|
with an external server:
|
||||||
|
|
||||||
You can create your own test cases. To create a test case:
|
mysql-test-run --extern alias analyze
|
||||||
|
|
||||||
|
To match your setup, you might also need to provide --socket, --user, and
|
||||||
|
other relevant options.
|
||||||
|
|
||||||
|
With no test cases named on the command line, mysql-test-run falls back
|
||||||
|
to the normal "non-extern" behavior. The reason for this is that some
|
||||||
|
tests cannot run with an external server.
|
||||||
|
|
||||||
|
|
||||||
|
You can create your own test cases. To create a test case, create a new
|
||||||
|
file in the t subdirectory using a text editor. The file should have a .test
|
||||||
|
extension. For example:
|
||||||
|
|
||||||
xemacs t/test_case_name.test
|
xemacs t/test_case_name.test
|
||||||
|
|
||||||
in the file, put a set of SQL commands that will create some tables,
|
In the file, put a set of SQL statements that create some tables,
|
||||||
load test data, run some queries to manipulate it.
|
load test data, and run some queries to manipulate it.
|
||||||
|
|
||||||
We would appreciate if the test tables were called t1, t2, t3 ... (to not
|
We would appreciate it if you name your test tables t1, t2, t3 ... (to not
|
||||||
conflict too much with existing tables).
|
conflict too much with existing tables).
|
||||||
|
|
||||||
Your test should begin by dropping the tables you are going to create and
|
Your test should begin by dropping the tables you are going to create and
|
||||||
end by dropping them again. This will ensure that one can run the test
|
end by dropping them again. This ensures that you can run the test over
|
||||||
over and over again.
|
and over again.
|
||||||
|
|
||||||
If you are using mysqltest commands (like result file names) in your
|
If you are using mysqltest commands (like result file names) in your
|
||||||
test case you should do create the result file as follows:
|
test case, you should create the result file as follows:
|
||||||
|
|
||||||
mysql-test-run --record test_case_name
|
mysql-test-run --record test_case_name
|
||||||
|
|
||||||
@ -47,8 +53,8 @@ You can create your own test cases. To create a test case:
|
|||||||
|
|
||||||
mysqltest --record < t/test_case_name.test
|
mysqltest --record < t/test_case_name.test
|
||||||
|
|
||||||
If you only have a simple test cases consistent of SQL commands and comments
|
If you only have a simple test cases consisting of SQL statements and
|
||||||
you can create the test case one of the following ways:
|
comments, you can create the test case in one of the following ways:
|
||||||
|
|
||||||
mysql-test-run --record test_case_name
|
mysql-test-run --record test_case_name
|
||||||
|
|
||||||
@ -57,11 +63,11 @@ You can create your own test cases. To create a test case:
|
|||||||
mysqltest --record --record-file=r/test_case_name.result < t/test_case_name.test
|
mysqltest --record --record-file=r/test_case_name.result < t/test_case_name.test
|
||||||
|
|
||||||
When this is done, take a look at r/test_case_name.result
|
When this is done, take a look at r/test_case_name.result
|
||||||
- If the result is wrong, you have found a bug; In this case you should
|
- If the result is incorrect, you have found a bug. In this case, you should
|
||||||
edit the test result to the correct results so that we can verify
|
edit the test result to the correct results so that we can verify
|
||||||
that the bug is corrected in future releases.
|
that the bug is corrected in future releases.
|
||||||
|
|
||||||
To submit your test case, put your .test file and .result file(s) into
|
To submit your test case, put your .test file and .result file(s) into
|
||||||
a tar.gz archive, add a README that explains the problem, ftp the
|
a tar.gz archive, add a README that explains the problem, ftp the
|
||||||
archive to ftp://support.mysql.com/pub/mysql/secret/ and send a mail
|
archive to ftp://support.mysql.com/pub/mysql/secret/ and send a mail
|
||||||
to bugs@lists.mysql.com
|
to bugs@lists.mysql.com
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
To be able to see the level of coverage with the current test suite,
|
To be able to see the level of coverage with the current test suite,
|
||||||
do the following:
|
do the following:
|
||||||
|
|
||||||
- make sure gcov is installed
|
- Make sure gcov is installed
|
||||||
- compile with BUILD/compile-pentium-gcov ( if your machine is not pentium, hack
|
- Compile the MySQL distribution with BUILD/compile-pentium-gcov (if your
|
||||||
this script, or just live with the pentium-specific stuff)
|
machine does not have a pentium CPU, hack this script, or just live with
|
||||||
- ./mysql-test-run -gcov
|
the pentium-specific stuff)
|
||||||
- to see the level of coverage for a given source file:
|
- In the mysql-test directory, run this command: ./mysql-test-run -gcov
|
||||||
|
- To see the level of coverage for a given source file:
|
||||||
grep source_file_name /tmp/gcov.out
|
grep source_file_name /tmp/gcov.out
|
||||||
- to see which lines are not yet covered, look at source_file_name.gcov in the source tree. Then think hard about a test case that will cover those
|
- To see which lines are not yet covered, look at source_file_name.gcov in
|
||||||
lines, and write one!
|
the source tree. Then think hard about a test case that will cover those
|
||||||
|
lines, and write one!
|
||||||
|
@ -198,6 +198,7 @@ our $opt_big_test= 0; # Send --big-test to mysqltest
|
|||||||
|
|
||||||
our @opt_extra_mysqld_opt;
|
our @opt_extra_mysqld_opt;
|
||||||
|
|
||||||
|
our $opt_comment;
|
||||||
our $opt_compress;
|
our $opt_compress;
|
||||||
our $opt_ssl;
|
our $opt_ssl;
|
||||||
our $opt_skip_ssl;
|
our $opt_skip_ssl;
|
||||||
@ -669,6 +670,14 @@ sub command_line_setup () {
|
|||||||
print '#' x 78, "\n\n";
|
print '#' x 78, "\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $opt_comment )
|
||||||
|
{
|
||||||
|
print "\n";
|
||||||
|
print '#' x 78, "\n";
|
||||||
|
print "# $opt_comment\n";
|
||||||
|
print '#' x 78, "\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
foreach my $arg ( @ARGV )
|
foreach my $arg ( @ARGV )
|
||||||
{
|
{
|
||||||
if ( $arg =~ /^--skip-/ )
|
if ( $arg =~ /^--skip-/ )
|
||||||
@ -3256,6 +3265,7 @@ Options for coverage, profiling etc
|
|||||||
|
|
||||||
Misc options
|
Misc options
|
||||||
|
|
||||||
|
comment=STR Write STR to the output
|
||||||
verbose Verbose output from this script
|
verbose Verbose output from this script
|
||||||
script-debug Debug this script itself
|
script-debug Debug this script itself
|
||||||
timer Show test case execution time
|
timer Show test case execution time
|
||||||
|
@ -603,7 +603,14 @@ while test $# -gt 0; do
|
|||||||
FAST_START=1
|
FAST_START=1
|
||||||
;;
|
;;
|
||||||
--use-old-data)
|
--use-old-data)
|
||||||
USE_OLD_DATA=1;
|
USE_OLD_DATA=1
|
||||||
|
;;
|
||||||
|
--comment=*)
|
||||||
|
TMP=`$ECHO "$1" | $SED -e "s;--comment=;;"`
|
||||||
|
echo
|
||||||
|
echo '############################################'
|
||||||
|
echo "# $TMP"
|
||||||
|
echo '############################################'
|
||||||
;;
|
;;
|
||||||
-- ) shift; break ;;
|
-- ) shift; break ;;
|
||||||
--* ) $ECHO "Unrecognized option: $1"; exit 1 ;;
|
--* ) $ECHO "Unrecognized option: $1"; exit 1 ;;
|
||||||
|
@ -141,3 +141,22 @@ t1 CREATE TABLE `t1` (
|
|||||||
`a` binary(1) default NULL
|
`a` binary(1) default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (col1 binary(4));
|
||||||
|
insert into t1 values ('a'),('a ');
|
||||||
|
select hex(col1) from t1;
|
||||||
|
hex(col1)
|
||||||
|
61000000
|
||||||
|
61200000
|
||||||
|
alter table t1 modify col1 binary(10);
|
||||||
|
select hex(col1) from t1;
|
||||||
|
hex(col1)
|
||||||
|
61000000000000000000
|
||||||
|
61200000000000000000
|
||||||
|
insert into t1 values ('b'),('b ');
|
||||||
|
select hex(col1) from t1;
|
||||||
|
hex(col1)
|
||||||
|
61000000000000000000
|
||||||
|
61200000000000000000
|
||||||
|
62000000000000000000
|
||||||
|
62200000000000000000
|
||||||
|
drop table t1;
|
||||||
|
@ -348,7 +348,7 @@ INSERT INTO mysql.db (host, db, user, select_priv) VALUES
|
|||||||
('%','TESTDB','mysqltest_1','Y');
|
('%','TESTDB','mysqltest_1','Y');
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
create database TEStdb;
|
create database TEStdb;
|
||||||
ERROR 42000: Access denied for user 'mysqltest_1'@'%' to database 'TEStdb'
|
Got one of the listed errors
|
||||||
delete from mysql.user;
|
delete from mysql.user;
|
||||||
delete from mysql.db where host='%' and user='mysqltest_1' and db='TESTDB';
|
delete from mysql.db where host='%' and user='mysqltest_1' and db='TESTDB';
|
||||||
insert into mysql.user select * from t1;
|
insert into mysql.user select * from t1;
|
||||||
|
@ -677,6 +677,11 @@ select t1.b from v1a;
|
|||||||
ERROR 42S22: Unknown column 't1.b' in 'field list'
|
ERROR 42S22: Unknown column 't1.b' in 'field list'
|
||||||
select * from v1a join v1b on t1.b = t2.b;
|
select * from v1a join v1b on t1.b = t2.b;
|
||||||
ERROR 42S22: Unknown column 't1.b' in 'on clause'
|
ERROR 42S22: Unknown column 't1.b' in 'on clause'
|
||||||
|
select * from information_schema.statistics join information_schema.columns
|
||||||
|
using(table_name,column_name) where table_name='user';
|
||||||
|
TABLE_NAME COLUMN_NAME TABLE_CATALOG TABLE_SCHEMA NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||||
|
user Host NULL mysql 0 mysql PRIMARY 1 A NULL NULL NULL BTREE NULL mysql 1 NO char 20 60 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references
|
||||||
|
user User NULL mysql 0 mysql PRIMARY 2 A 5 NULL NULL BTREE NULL mysql 2 NO char 5 16 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
drop table t3;
|
drop table t3;
|
||||||
|
@ -12,3 +12,6 @@ create table t1 (a int);
|
|||||||
create definer='user'@'host' sql security definer view v1 as select * from t1;
|
create definer='user'@'host' sql security definer view v1 as select * from t1;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
drop function if exists f1;
|
||||||
|
Warnings:
|
||||||
|
Note 1305 FUNCTION f1 does not exist
|
||||||
|
@ -4778,4 +4778,23 @@ Handler
|
|||||||
Inner
|
Inner
|
||||||
drop procedure bug15011|
|
drop procedure bug15011|
|
||||||
drop table t3|
|
drop table t3|
|
||||||
|
drop procedure if exists bug17476|
|
||||||
|
create table t3 ( d date )|
|
||||||
|
insert into t3 values
|
||||||
|
( '2005-01-01' ), ( '2005-01-02' ), ( '2005-01-03' ),
|
||||||
|
( '2005-01-04' ), ( '2005-02-01' ), ( '2005-02-02' )|
|
||||||
|
create procedure bug17476(pDateFormat varchar(10))
|
||||||
|
select date_format(t3.d, pDateFormat), count(*)
|
||||||
|
from t3
|
||||||
|
group by date_format(t3.d, pDateFormat)|
|
||||||
|
call bug17476('%Y-%m')|
|
||||||
|
date_format(t3.d, pDateFormat) count(*)
|
||||||
|
2005-01 4
|
||||||
|
2005-02 2
|
||||||
|
call bug17476('%Y-%m')|
|
||||||
|
date_format(t3.d, pDateFormat) count(*)
|
||||||
|
2005-01 4
|
||||||
|
2005-02 2
|
||||||
|
drop table t3|
|
||||||
|
drop procedure bug17476|
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
@ -89,3 +89,15 @@ show create table t1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#16857
|
||||||
|
#
|
||||||
|
create table t1 (col1 binary(4));
|
||||||
|
insert into t1 values ('a'),('a ');
|
||||||
|
select hex(col1) from t1;
|
||||||
|
alter table t1 modify col1 binary(10);
|
||||||
|
select hex(col1) from t1;
|
||||||
|
insert into t1 values ('b'),('b ');
|
||||||
|
select hex(col1) from t1;
|
||||||
|
drop table t1;
|
||||||
|
@ -449,7 +449,8 @@ connect (con1,localhost,mysqltest_1,password,TESTDB);
|
|||||||
|
|
||||||
# The user mysqltest_1 should only be allowed access to
|
# The user mysqltest_1 should only be allowed access to
|
||||||
# database TESTDB, not TEStdb
|
# database TESTDB, not TEStdb
|
||||||
--error 1044
|
# On system with "lowercase names" we get error "1007: Can't create db..."
|
||||||
|
--error 1044, 1007
|
||||||
create database TEStdb;
|
create database TEStdb;
|
||||||
|
|
||||||
# Clean-up
|
# Clean-up
|
||||||
|
@ -523,6 +523,12 @@ select t1.b from v1a;
|
|||||||
-- error 1054
|
-- error 1054
|
||||||
select * from v1a join v1b on t1.b = t2.b;
|
select * from v1a join v1b on t1.b = t2.b;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #17523 natural join and information_schema
|
||||||
|
#
|
||||||
|
select * from information_schema.statistics join information_schema.columns
|
||||||
|
using(table_name,column_name) where table_name='user';
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
drop table t3;
|
drop table t3;
|
||||||
|
@ -30,3 +30,6 @@ create table t1 (a int);
|
|||||||
create definer='user'@'host' sql security definer view v1 as select * from t1;
|
create definer='user'@'host' sql security definer view v1 as select * from t1;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
# BUG#17595: DROP FUNCTION IF EXISTS f1 crashes server
|
||||||
|
drop function if exists f1;
|
||||||
|
@ -5620,6 +5620,31 @@ drop procedure bug15011|
|
|||||||
drop table t3|
|
drop table t3|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#17476: Stored procedure not returning data when it is called first
|
||||||
|
# time per connection
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop procedure if exists bug17476|
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
create table t3 ( d date )|
|
||||||
|
insert into t3 values
|
||||||
|
( '2005-01-01' ), ( '2005-01-02' ), ( '2005-01-03' ),
|
||||||
|
( '2005-01-04' ), ( '2005-02-01' ), ( '2005-02-02' )|
|
||||||
|
|
||||||
|
create procedure bug17476(pDateFormat varchar(10))
|
||||||
|
select date_format(t3.d, pDateFormat), count(*)
|
||||||
|
from t3
|
||||||
|
group by date_format(t3.d, pDateFormat)|
|
||||||
|
|
||||||
|
call bug17476('%Y-%m')|
|
||||||
|
call bug17476('%Y-%m')|
|
||||||
|
|
||||||
|
drop table t3|
|
||||||
|
drop procedure bug17476|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# BUG#NNNN: New bug synopsis
|
# BUG#NNNN: New bug synopsis
|
||||||
#
|
#
|
||||||
|
@ -378,6 +378,16 @@ static void do_cut_string_complex(Copy_field *copy)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void do_expand_binary(Copy_field *copy)
|
||||||
|
{
|
||||||
|
CHARSET_INFO *cs= copy->from_field->charset();
|
||||||
|
memcpy(copy->to_ptr,copy->from_ptr,copy->from_length);
|
||||||
|
cs->cset->fill(cs, copy->to_ptr+copy->from_length,
|
||||||
|
copy->to_length-copy->from_length, '\0');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void do_expand_string(Copy_field *copy)
|
static void do_expand_string(Copy_field *copy)
|
||||||
{
|
{
|
||||||
CHARSET_INFO *cs= copy->from_field->charset();
|
CHARSET_INFO *cs= copy->from_field->charset();
|
||||||
@ -582,7 +592,13 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*)
|
|||||||
return (from->charset()->mbmaxlen == 1 ?
|
return (from->charset()->mbmaxlen == 1 ?
|
||||||
do_cut_string : do_cut_string_complex);
|
do_cut_string : do_cut_string_complex);
|
||||||
else if (to_length > from_length)
|
else if (to_length > from_length)
|
||||||
return do_expand_string;
|
{
|
||||||
|
if ((to->flags & BINARY_FLAG) != 0)
|
||||||
|
return do_expand_binary;
|
||||||
|
else
|
||||||
|
return do_expand_string;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (to->real_type() != from->real_type() ||
|
else if (to->real_type() != from->real_type() ||
|
||||||
to_length != from_length ||
|
to_length != from_length ||
|
||||||
|
@ -1629,7 +1629,6 @@ public:
|
|||||||
str_value.length(), collation.collation);
|
str_value.length(), collation.collation);
|
||||||
}
|
}
|
||||||
Item *safe_charset_converter(CHARSET_INFO *tocs);
|
Item *safe_charset_converter(CHARSET_INFO *tocs);
|
||||||
String *const_string() { return &str_value; }
|
|
||||||
inline void append(char *str, uint length) { str_value.append(str, length); }
|
inline void append(char *str, uint length) { str_value.append(str, length); }
|
||||||
void print(String *str);
|
void print(String *str);
|
||||||
// to prevent drop fixed flag (no need parent cleanup call)
|
// to prevent drop fixed flag (no need parent cleanup call)
|
||||||
|
@ -1656,9 +1656,15 @@ longlong Item_func_sec_to_time::val_int()
|
|||||||
|
|
||||||
void Item_func_date_format::fix_length_and_dec()
|
void Item_func_date_format::fix_length_and_dec()
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
Must use this_item() in case it's a local SP variable
|
||||||
|
(for ->max_length and ->str_value)
|
||||||
|
*/
|
||||||
|
Item *arg1= args[1]->this_item();
|
||||||
|
|
||||||
decimals=0;
|
decimals=0;
|
||||||
collation.set(&my_charset_bin);
|
collation.set(&my_charset_bin);
|
||||||
if (args[1]->type() == STRING_ITEM)
|
if (arg1->type() == STRING_ITEM)
|
||||||
{ // Optimize the normal case
|
{ // Optimize the normal case
|
||||||
fixed_length=1;
|
fixed_length=1;
|
||||||
|
|
||||||
@ -1666,13 +1672,13 @@ void Item_func_date_format::fix_length_and_dec()
|
|||||||
The result is a binary string (no reason to use collation->mbmaxlen
|
The result is a binary string (no reason to use collation->mbmaxlen
|
||||||
This is becasue make_date_time() only returns binary strings
|
This is becasue make_date_time() only returns binary strings
|
||||||
*/
|
*/
|
||||||
max_length= format_length(((Item_string*) args[1])->const_string());
|
max_length= format_length(&arg1->str_value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fixed_length=0;
|
fixed_length=0;
|
||||||
/* The result is a binary string (no reason to use collation->mbmaxlen */
|
/* The result is a binary string (no reason to use collation->mbmaxlen */
|
||||||
max_length=min(args[1]->max_length,MAX_BLOB_WIDTH) * 10;
|
max_length=min(arg1->max_length, MAX_BLOB_WIDTH) * 10;
|
||||||
set_if_smaller(max_length,MAX_BLOB_WIDTH);
|
set_if_smaller(max_length,MAX_BLOB_WIDTH);
|
||||||
}
|
}
|
||||||
maybe_null=1; // If wrong date
|
maybe_null=1; // If wrong date
|
||||||
@ -1682,6 +1688,7 @@ void Item_func_date_format::fix_length_and_dec()
|
|||||||
bool Item_func_date_format::eq(const Item *item, bool binary_cmp) const
|
bool Item_func_date_format::eq(const Item *item, bool binary_cmp) const
|
||||||
{
|
{
|
||||||
Item_func_date_format *item_func;
|
Item_func_date_format *item_func;
|
||||||
|
|
||||||
if (item->type() != FUNC_ITEM)
|
if (item->type() != FUNC_ITEM)
|
||||||
return 0;
|
return 0;
|
||||||
if (func_name() != ((Item_func*) item)->func_name())
|
if (func_name() != ((Item_func*) item)->func_name())
|
||||||
|
@ -233,7 +233,7 @@ static int net_data_is_ready(my_socket sd)
|
|||||||
/* Windows uses an _array_ of 64 fd's as default, so it's safe */
|
/* Windows uses an _array_ of 64 fd's as default, so it's safe */
|
||||||
if (sd >= FD_SETSIZE)
|
if (sd >= FD_SETSIZE)
|
||||||
return -1;
|
return -1;
|
||||||
#define NET_DATA_IS_READY_CAN_RETURN_MINUS_ONE
|
#define NET_DATA_IS_READY_CAN_RETURN_MINUS_ONE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FD_ZERO(&sfds);
|
FD_ZERO(&sfds);
|
||||||
|
@ -284,6 +284,10 @@ static void del_udf(udf_func *udf)
|
|||||||
void free_udf(udf_func *udf)
|
void free_udf(udf_func *udf)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("free_udf");
|
DBUG_ENTER("free_udf");
|
||||||
|
|
||||||
|
if (!initialized)
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
|
||||||
rw_wrlock(&THR_LOCK_udf);
|
rw_wrlock(&THR_LOCK_udf);
|
||||||
if (!--udf->usage_count)
|
if (!--udf->usage_count)
|
||||||
{
|
{
|
||||||
@ -308,6 +312,9 @@ udf_func *find_udf(const char *name,uint length,bool mark_used)
|
|||||||
udf_func *udf=0;
|
udf_func *udf=0;
|
||||||
DBUG_ENTER("find_udf");
|
DBUG_ENTER("find_udf");
|
||||||
|
|
||||||
|
if (!initialized)
|
||||||
|
DBUG_RETURN(NULL);
|
||||||
|
|
||||||
/* TODO: This should be changed to reader locks someday! */
|
/* TODO: This should be changed to reader locks someday! */
|
||||||
if (mark_used)
|
if (mark_used)
|
||||||
rw_wrlock(&THR_LOCK_udf); /* Called during fix_fields */
|
rw_wrlock(&THR_LOCK_udf); /* Called during fix_fields */
|
||||||
|
19
sql/table.cc
19
sql/table.cc
@ -3336,8 +3336,15 @@ const char *Natural_join_column::db_name()
|
|||||||
if (view_field)
|
if (view_field)
|
||||||
return table_ref->view_db.str;
|
return table_ref->view_db.str;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Test that TABLE_LIST::db is the same as st_table_share::db to
|
||||||
|
ensure consistency. An exception are I_S schema tables, which
|
||||||
|
are inconsistent in this respect.
|
||||||
|
*/
|
||||||
DBUG_ASSERT(!strcmp(table_ref->db,
|
DBUG_ASSERT(!strcmp(table_ref->db,
|
||||||
table_ref->table->s->db.str));
|
table_ref->table->s->db.str) ||
|
||||||
|
(table_ref->schema_table &&
|
||||||
|
table_ref->table->s->db.str[0] == 0));
|
||||||
return table_ref->db;
|
return table_ref->db;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3539,7 +3546,15 @@ const char *Field_iterator_table_ref::db_name()
|
|||||||
else if (table_ref->is_natural_join)
|
else if (table_ref->is_natural_join)
|
||||||
return natural_join_it.column_ref()->db_name();
|
return natural_join_it.column_ref()->db_name();
|
||||||
|
|
||||||
DBUG_ASSERT(!strcmp(table_ref->db, table_ref->table->s->db.str));
|
/*
|
||||||
|
Test that TABLE_LIST::db is the same as st_table_share::db to
|
||||||
|
ensure consistency. An exception are I_S schema tables, which
|
||||||
|
are inconsistent in this respect.
|
||||||
|
*/
|
||||||
|
DBUG_ASSERT(!strcmp(table_ref->db, table_ref->table->s->db.str) ||
|
||||||
|
(table_ref->schema_table &&
|
||||||
|
table_ref->table->s->db.str[0] == 0));
|
||||||
|
|
||||||
return table_ref->db;
|
return table_ref->db;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user