mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-4.1
into neptunus.(none):/home/magnus/mysql-4.1
This commit is contained in:
commit
259d8c4c13
95 changed files with 1347 additions and 744 deletions
|
@ -244,14 +244,14 @@ if ($opt_stage <= 1)
|
|||
|
||||
# Only enable InnoDB when requested (required to be able to
|
||||
# build the "Classic" packages that do not include InnoDB)
|
||||
if ($opt_innodb)
|
||||
{
|
||||
$opt_config_options.= " --with-innodb";
|
||||
}
|
||||
else
|
||||
{
|
||||
$opt_config_options.= " --without-innodb";
|
||||
}
|
||||
if ($opt_innodb)
|
||||
{
|
||||
$opt_config_options.= " --with-innodb";
|
||||
}
|
||||
else
|
||||
{
|
||||
$opt_config_options.= " --without-innodb";
|
||||
}
|
||||
|
||||
if ($opt_with_other_libc)
|
||||
{
|
||||
|
|
|
@ -47,7 +47,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.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 ..\lib_release\mysys.lib wsock32.lib ..\lib_release\strings.lib ..\lib_release\dbug.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBC.lib" /out:"../client_release/comp-err.exe"
|
||||
# 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 ..\lib_release\mysys.lib wsock32.lib ..\lib_release\strings.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBC.lib" /out:"../client_release/comp-err.exe"
|
||||
# Begin Target
|
||||
|
||||
# Name "comp_err - Win32 Release"
|
||||
|
|
|
@ -68,13 +68,13 @@ copy libmysqltest\release\myTest.exe c:\mysql\examples\libmysqltest
|
|||
|
||||
REM Copy share, docs etc
|
||||
|
||||
xcopy share\*.* c:\mysql\share /E
|
||||
xcopy scripts\*.* c:\mysql\scripts /E
|
||||
xcopy docs\*.* c:\mysql\docs /E
|
||||
xcopy docs\readme c:\mysql\
|
||||
xcopy sql-bench\*.* c:\mysql\bench /E
|
||||
xcopy share\*.* c:\mysql\share /E /Y
|
||||
xcopy scripts\*.* c:\mysql\scripts /E /Y
|
||||
xcopy docs\*.* c:\mysql\docs /E /Y
|
||||
xcopy sql-bench\*.* c:\mysql\bench /E /Y
|
||||
copy docs\readme c:\mysql\
|
||||
|
||||
REM Copy privilege tables (Delete old ones as they may be from a newer version)
|
||||
|
||||
del c:\mysql\data\mysql\*.* /Q
|
||||
copy data\*.* c:\mysql\data
|
||||
xcopy data\mysql\*.* c:\mysql\data\mysql /E /Y
|
||||
|
|
|
@ -19,6 +19,7 @@ CFG=dbug - Win32 Debug
|
|||
!MESSAGE
|
||||
!MESSAGE "dbug - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "dbug - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "dbug - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
|
@ -76,12 +77,38 @@ LIB32=xilink6.exe -lib
|
|||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\lib_debug\dbug.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "dbug - Win32 TLS_DEBUG"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "dbug___Win32_TLS_DEBUG"
|
||||
# PROP BASE Intermediate_Dir "dbug___Win32_TLS_DEBUG"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "dbug___Win32_TLS_DEBUG"
|
||||
# PROP Intermediate_Dir "dbug___Win32_TLS_DEBUG"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "__WIN32__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "__WIN32__" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_debug\dbug_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_debug\dbug_tls.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "dbug - Win32 Release"
|
||||
# Name "dbug - Win32 Debug"
|
||||
# Name "dbug - Win32 TLS_DEBUG"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\dbug.c
|
||||
|
|
|
@ -19,6 +19,8 @@ CFG=heap - Win32 Debug
|
|||
!MESSAGE
|
||||
!MESSAGE "heap - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "heap - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "heap - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "heap - Win32 TLS" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
|
@ -76,12 +78,64 @@ LIB32=xilink6.exe -lib
|
|||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\lib_debug\heap.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "heap - Win32 TLS_DEBUG"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "heap___Win32_TLS_DEBUG"
|
||||
# PROP BASE Intermediate_Dir "heap___Win32_TLS_DEBUG"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "heap___Win32_TLS_DEBUG"
|
||||
# PROP Intermediate_Dir "heap___Win32_TLS_DEBUG"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_debug\heap_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_debug\heap_tls.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "heap - Win32 TLS"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "heap___Win32_TLS"
|
||||
# PROP BASE Intermediate_Dir "heap___Win32_TLS"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "heap___Win32_TLS"
|
||||
# PROP Intermediate_Dir "heap___Win32_TLS"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_release\heap_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_release\heap_tls.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "heap - Win32 Release"
|
||||
# Name "heap - Win32 Debug"
|
||||
# Name "heap - Win32 TLS_DEBUG"
|
||||
# Name "heap - Win32 TLS"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\_check.c
|
||||
|
@ -128,6 +182,13 @@ SOURCE=.\hp_hash.c
|
|||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ELSEIF "$(CFG)" == "heap - Win32 TLS_DEBUG"
|
||||
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ELSEIF "$(CFG)" == "heap - Win32 TLS"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
|
|
|
@ -19,6 +19,8 @@ CFG=isam - Win32 Debug
|
|||
!MESSAGE
|
||||
!MESSAGE "isam - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "isam - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "isam - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "isam - Win32 TLS" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
|
@ -76,12 +78,64 @@ LIB32=xilink6.exe -lib
|
|||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\lib_Debug\isam.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "isam - Win32 TLS_DEBUG"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "isam___Win32_TLS_DEBUG"
|
||||
# PROP BASE Intermediate_Dir "isam___Win32_TLS_DEBUG"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "isam___Win32_TLS_DEBUG"
|
||||
# PROP Intermediate_Dir "isam___Win32_TLS_DEBUG"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_Debug\isam_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_Debug\isam_tls.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "isam - Win32 TLS"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "isam___Win32_TLS"
|
||||
# PROP BASE Intermediate_Dir "isam___Win32_TLS"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "isam___Win32_TLS"
|
||||
# PROP Intermediate_Dir "isam___Win32_TLS"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_release\isam_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_release\isam_tls.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "isam - Win32 Release"
|
||||
# Name "isam - Win32 Debug"
|
||||
# Name "isam - Win32 TLS_DEBUG"
|
||||
# Name "isam - Win32 TLS"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\_cache.c
|
||||
|
|
|
@ -43,7 +43,7 @@ RSC=rc.exe
|
|||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "." /I "..\include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "NDEBUG" /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "." /I "..\include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "NDEBUG" /D "MYSQL_CLIENT" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
|
@ -76,7 +76,7 @@ PostBuild_Cmds=xcopy release\libmysql.lib ..\lib_release /y
|
|||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "." /I "..\include" /I "../zlib" /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /FD /c
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "." /I "..\include" /I "../zlib" /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /D "MYSQL_CLIENT" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
|
|
|
@ -56,7 +56,8 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.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 /nologo /dll /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 Wsock32.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\bdb.lib ..\lib_release\zlib.lib /nologo /dll /pdb:none /machine:I386 /out:"../lib_release/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# 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 Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\innodb.lib ..\lib_release\bdb.lib ..\lib_release\zlib.lib /nologo /dll /machine:I386 /out:"../lib_release/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "libmysqld - Win32 Debug"
|
||||
|
||||
|
@ -83,7 +84,8 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.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 /nologo /dll /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 Wsock32.lib ..\lib_debug\dbug.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap.lib ..\lib_debug\innodb.lib ..\lib_debug\bdb.lib /nologo /dll /pdb:none /debug /machine:I386 /nodefaultlib:"LIBCMTD" /out:"../lib_debug/libmysqld.dll" /implib:"../lib_debug/libmysqld.lib"
|
||||
# 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 Wsock32.lib ..\lib_debug\dbug_tls.lib ..\lib_debug\mysys_tls.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap_tls.lib ..\lib_debug\innodb.lib /nologo /dll /incremental:no /debug /machine:I386 /nodefaultlib:"LIBCMTD" /out:"../lib_debug/libmysqld.dll" /implib:"../lib_debug/libmysqld.lib" /pdbtype:sept
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "libmysqld - Win32 classic"
|
||||
|
||||
|
@ -110,9 +112,9 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.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 Wsock32.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib /nologo /dll /machine:I386 /out:"../lib_release/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# 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 Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\zlib.lib /nologo /dll /machine:I386 /out:"../lib_release/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# SUBTRACT BASE LINK32 /pdb:none
|
||||
# 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 Wsock32.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib /nologo /dll /machine:I386 /out:"../lib_classic/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# 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 Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\zlib.lib /nologo /dll /machine:I386 /out:"../lib_classic/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "libmysqld - Win32 pro"
|
||||
|
@ -130,7 +132,7 @@ LINK32=xilink6.exe
|
|||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../sql" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FR /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D "MYSQL_SERVER" /D LICENCE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /FD /D MYSQL_SEVER_SUFFIX=-pro /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /FD /D MYSQL_SERVER_SUFFIX=-pro /c
|
||||
# SUBTRACT CPP /X /Fr
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
|
@ -140,9 +142,9 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.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 Wsock32.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib /nologo /dll /machine:I386 /out:"../lib_classic/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# 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 Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib /nologo /dll /machine:I386 /out:"../lib_classic/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# SUBTRACT BASE LINK32 /pdb:none
|
||||
# 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 Wsock32.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib /nologo /dll /machine:I386 /out:"../lib_pro/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# 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 Wsock32.lib ..\lib_release\myisam_tls.lib ..\lib_release\myisammrg_tls.lib ..\lib_release\mysys_tls.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap_tls.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib /nologo /dll /machine:I386 /out:"../lib_pro/libmysqld.dll" /implib:"../lib_release/libmysqld.lib"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ENDIF
|
||||
|
|
|
@ -19,6 +19,8 @@ CFG=myisam - Win32 Debug
|
|||
!MESSAGE
|
||||
!MESSAGE "myisam - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "myisam - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "myisam - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "myisam - Win32 TLS" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
|
@ -74,12 +76,60 @@ LIB32=xilink6.exe -lib
|
|||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\lib_Debug\myisam.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "myisam - Win32 TLS_DEBUG"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "myisam___Win32_TLS_DEBUG"
|
||||
# PROP BASE Intermediate_Dir "myisam___Win32_TLS_DEBUG"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "myisam___Win32_TLS_DEBUG"
|
||||
# PROP Intermediate_Dir "myisam___Win32_TLS_DEBUG"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /Fo".\Debug/" /Fd".\Debug/" /FD /c
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /Fo".\Debug/" /Fd".\Debug/" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_Debug\myisam_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_Debug\myisam_tls.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "myisam - Win32 TLS"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "myisam___Win32_TLS"
|
||||
# PROP BASE Intermediate_Dir "myisam___Win32_TLS"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "myisam___Win32_TLS"
|
||||
# PROP Intermediate_Dir "myisam___Win32_TLS"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_release\myisam_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_release\myisam_tls.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "myisam - Win32 Release"
|
||||
# Name "myisam - Win32 Debug"
|
||||
# Name "myisam - Win32 TLS_DEBUG"
|
||||
# Name "myisam - Win32 TLS"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
|
|
|
@ -19,6 +19,8 @@ CFG=myisammrg - Win32 Debug
|
|||
!MESSAGE
|
||||
!MESSAGE "myisammrg - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "myisammrg - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "myisammrg - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "myisammrg - Win32 TLS" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
|
@ -75,12 +77,62 @@ LIB32=xilink6.exe -lib
|
|||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\lib_Debug\myisammrg.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "myisammrg - Win32 TLS_DEBUG"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "myisammrg___Win32_TLS_DEBUG"
|
||||
# PROP BASE Intermediate_Dir "myisammrg___Win32_TLS_DEBUG"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "myisammrg___Win32_TLS_DEBUG"
|
||||
# PROP Intermediate_Dir "myisammrg___Win32_TLS_DEBUG"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /Fo".\Debug/" /Fd".\Debug/" /FD /c
|
||||
# SUBTRACT BASE CPP /Fr
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /Gf /I "../include" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /Fo".\Debug/" /Fd".\Debug/" /FD /c
|
||||
# SUBTRACT CPP /Fr
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_Debug\myisammrg_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_Debug\myisammrg_tls.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "myisammrg - Win32 TLS"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "myisammrg___Win32_TLS"
|
||||
# PROP BASE Intermediate_Dir "myisammrg___Win32_TLS"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "myisammrg___Win32_TLS"
|
||||
# PROP Intermediate_Dir "myisammrg___Win32_TLS"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_release\myisammrg_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_release\myisammrg_tls.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "myisammrg - Win32 Release"
|
||||
# Name "myisammrg - Win32 Debug"
|
||||
# Name "myisammrg - Win32 TLS_DEBUG"
|
||||
# Name "myisammrg - Win32 TLS"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
|
|
|
@ -90,9 +90,9 @@ LIB32=xilink6.exe -lib
|
|||
# PROP Output_Dir "classic"
|
||||
# PROP Intermediate_Dir "classic"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_MBCS" /D "_LIB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FD /c
|
||||
# ADD BASE CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_MBCS" /D "_LIB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "USE_TLS" /D "__WIN__" /D LICENCE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "USE_TLS" /D "__WIN__" /D LICENSE=Commercial /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x416 /d "NDEBUG"
|
||||
# ADD RSC /l 0x416 /d "NDEBUG"
|
||||
|
@ -117,7 +117,7 @@ LIB32=xilink6.exe -lib
|
|||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_MBCS" /D "_LIB" /D "USE_SYMDIR" /D "SIGNAL_WITH_VIO_CLOSE" /D "HAVE_DLOPEN" /D "EMBEDDED_LIBRARY" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "USE_TLS" /D "__WIN__" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D "USE_SYMDIR" /D "MYSQL_SERVER" /D LICENCE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /FD /D MYSQL_SEVER_SUFFIX=-pro /c
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "../include" /I "../regex" /I "../libmysqld" /I "../sql" /I "../zlib" /D "WIN32" /D "_LIB" /D "SIGNAL_WITH_VIO_CLOSE" /D "EMBEDDED_LIBRARY" /D "USE_TLS" /D "__WIN__" /D "USE_SYMDIR" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /FD /D MYSQL_SERVER_SUFFIX=-pro /c
|
||||
# ADD BASE RSC /l 0x416 /d "NDEBUG"
|
||||
# ADD RSC /l 0x416 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
|
|
@ -20,6 +20,8 @@ CFG=mysys - Win32 Debug
|
|||
!MESSAGE "mysys - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "mysys - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "mysys - Win32 Max" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "mysys - Win32 TLS_DEBUG" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "mysys - Win32 TLS" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
|
@ -102,6 +104,56 @@ LIB32=xilink6.exe -lib
|
|||
# ADD BASE LIB32 /nologo /out:"..\lib_release\mysys.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_release\mysys-max.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysys - Win32 TLS_DEBUG"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "mysys___Win32_TLS_DEBUG"
|
||||
# PROP BASE Intermediate_Dir "mysys___Win32_TLS_DEBUG"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "mysys___Win32_TLS_DEBUG"
|
||||
# PROP Intermediate_Dir "mysys___Win32_TLS_DEBUG"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /FD /c
|
||||
# SUBTRACT BASE CPP /Fr
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_SYMDIR" /D "USE_TLS" /FD /c
|
||||
# SUBTRACT CPP /Fr
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_debug\mysys_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_debug\mysys_tls.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysys - Win32 TLS"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "mysys___Win32_TLS"
|
||||
# PROP BASE Intermediate_Dir "mysys___Win32_TLS"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "mysys___Win32_TLS"
|
||||
# PROP Intermediate_Dir "mysys___Win32_TLS"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../zlib" /D "DBUG_OFF" /D "_WINDOWS" /D "NDEBUG" /D "USE_TLS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\lib_release\mysys_tls.lib"
|
||||
# ADD LIB32 /nologo /out:"..\lib_release\mysys_tls.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
@ -109,6 +161,8 @@ LIB32=xilink6.exe -lib
|
|||
# Name "mysys - Win32 Release"
|
||||
# Name "mysys - Win32 Debug"
|
||||
# Name "mysys - Win32 Max"
|
||||
# Name "mysys - Win32 TLS_DEBUG"
|
||||
# Name "mysys - Win32 TLS"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\array.c
|
||||
|
@ -121,6 +175,14 @@ SOURCE=.\array.c
|
|||
|
||||
!ELSEIF "$(CFG)" == "mysys - Win32 Max"
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysys - Win32 TLS_DEBUG"
|
||||
|
||||
# ADD BASE CPP /FR
|
||||
# ADD CPP /FR
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysys - Win32 TLS"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
|
@ -528,6 +590,13 @@ SOURCE=.\thr_lock.c
|
|||
|
||||
!ELSEIF "$(CFG)" == "mysys - Win32 Max"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysys - Win32 TLS_DEBUG"
|
||||
|
||||
# ADD BASE CPP /D "EXTRA_DEBUG"
|
||||
# ADD CPP /D "EXTRA_DEBUG"
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysys - Win32 TLS"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
|
|
|
@ -185,7 +185,7 @@ LINK32=xilink6.exe
|
|||
# PROP Intermediate_Dir "classic"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D LICENSE=Commercial /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "HAVE_DLOPEN" /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
|
@ -196,7 +196,7 @@ BSC32=bscmake.exe
|
|||
LINK32=xilink6.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 Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /pdb:none /machine:I386
|
||||
# SUBTRACT BASE LINK32 /debug
|
||||
# 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 Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_classic/mysqld.exe" /libpath:"..\lib_release"
|
||||
# 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 Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_classic/mysqld.exe" /libpath:"..\lib_release"
|
||||
# SUBTRACT LINK32 /debug
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqld - Win32 pro"
|
||||
|
@ -215,7 +215,7 @@ LINK32=xilink6.exe
|
|||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "MYSQL_SERVER" /D LICENCE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D MYSQL_SERVER_SUFFIX=-pro /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D MYSQL_SERVER_SUFFIX=-pro /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
@ -243,7 +243,7 @@ LINK32=xilink6.exe
|
|||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D LICENSE=Commercial /D MYSQL_SERVER_SUFFIX=-nt /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
|
@ -253,7 +253,7 @@ BSC32=bscmake.exe
|
|||
LINK32=xilink6.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 Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib /nologo /subsystem:console /pdb:none /machine:I386
|
||||
# SUBTRACT BASE LINK32 /debug
|
||||
# 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 Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\innodb.lib ..\lib_release\zlib.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_classic/mysqld-nt.exe" /libpath:"..\lib_release"
|
||||
# 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 Wsock32.lib ..\lib_release\vio.lib ..\lib_release\isam.lib ..\lib_release\merge.lib ..\lib_release\myisam.lib ..\lib_release\myisammrg.lib ..\lib_release\mysys.lib ..\lib_release\strings.lib ..\lib_release\regex.lib ..\lib_release\heap.lib ..\lib_release\zlib.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../client_classic/mysqld-nt.exe" /libpath:"..\lib_release"
|
||||
# SUBTRACT LINK32 /debug
|
||||
|
||||
!ELSEIF "$(CFG)" == "mysqld - Win32 pro nt"
|
||||
|
@ -272,7 +272,7 @@ LINK32=xilink6.exe
|
|||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D LICENCE=Commercial /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-pro-nt" /FD
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D LICENSE=Commercial /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-pro-nt" /FD
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
|
|
@ -669,6 +669,10 @@ static struct my_option my_long_options[] =
|
|||
|
||||
static void usage(int version)
|
||||
{
|
||||
/* Divert all help information on NetWare to logger screen. */
|
||||
#ifdef __NETWARE__
|
||||
#define printf consoleprintf
|
||||
#endif
|
||||
printf("%s Ver %s Distrib %s, for %s (%s)\n",
|
||||
my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
if (version)
|
||||
|
@ -681,8 +685,13 @@ and you are welcome to modify and redistribute it under the GPL license\n");
|
|||
my_print_help(my_long_options);
|
||||
print_defaults("my", load_default_groups);
|
||||
my_print_variables(my_long_options);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
#ifdef __NETWARE__
|
||||
#undef printf
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
char *argument)
|
||||
|
@ -916,6 +925,7 @@ static int read_lines(bool execute_commands)
|
|||
#ifdef __NETWARE__
|
||||
line=fgets(linebuffer, sizeof(linebuffer)-1, stdin);
|
||||
/* Remove the '\n' */
|
||||
if (line)
|
||||
{
|
||||
char *p = strrchr(line, '\n');
|
||||
if (p != NULL)
|
||||
|
@ -931,7 +941,11 @@ static int read_lines(bool execute_commands)
|
|||
line= readline(prompt);
|
||||
#endif /* defined( __WIN__) || defined(OS2) || defined(__NETWARE__) */
|
||||
|
||||
if (opt_outfile)
|
||||
/*
|
||||
When Ctrl+d or Ctrl+z is pressed, the line may be NULL on some OS
|
||||
which may cause coredump.
|
||||
*/
|
||||
if (opt_outfile && line)
|
||||
fprintf(OUTFILE, "%s\n", line);
|
||||
}
|
||||
if (!line) // End of file
|
||||
|
@ -2384,10 +2398,8 @@ static int
|
|||
com_quit(String *buffer __attribute__((unused)),
|
||||
char *line __attribute__((unused)))
|
||||
{
|
||||
#ifdef __NETWARE__
|
||||
// let the screen auto close on a normal shutdown
|
||||
setscreenmode(SCR_AUTOCLOSE_ON_EXIT);
|
||||
#endif
|
||||
/* let the screen auto close on a normal shutdown */
|
||||
NETWARE_SET_SCREEN_MODE(SCR_AUTOCLOSE_ON_EXIT);
|
||||
status.exit_status=0;
|
||||
return 1;
|
||||
}
|
||||
|
@ -2993,6 +3005,7 @@ void tee_fprintf(FILE *file, const char *fmt, ...)
|
|||
{
|
||||
va_list args;
|
||||
|
||||
NETWARE_YIELD;
|
||||
va_start(args, fmt);
|
||||
(void) vfprintf(file, fmt, args);
|
||||
#ifdef OS2
|
||||
|
@ -3006,6 +3019,7 @@ void tee_fprintf(FILE *file, const char *fmt, ...)
|
|||
|
||||
void tee_fputs(const char *s, FILE *file)
|
||||
{
|
||||
NETWARE_YIELD;
|
||||
fputs(s, file);
|
||||
#ifdef OS2
|
||||
fflush( file);
|
||||
|
@ -3017,6 +3031,7 @@ void tee_fputs(const char *s, FILE *file)
|
|||
|
||||
void tee_puts(const char *s, FILE *file)
|
||||
{
|
||||
NETWARE_YIELD;
|
||||
fputs(s, file);
|
||||
fputs("\n", file);
|
||||
#ifdef OS2
|
||||
|
|
|
@ -874,11 +874,13 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void print_version(void)
|
||||
{
|
||||
printf("%s Ver %s Distrib %s, for %s on %s\n",my_progname,ADMIN_VERSION,
|
||||
MYSQL_SERVER_VERSION,SYSTEM_TYPE,MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
}
|
||||
|
||||
|
||||
|
@ -921,6 +923,8 @@ static void usage(void)
|
|||
version Get version info from server");
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
static int drop_db(MYSQL *mysql, const char *db)
|
||||
{
|
||||
char name_buff[FN_REFLEN+20], buf[10];
|
||||
|
|
|
@ -490,9 +490,12 @@ static void die(const char* fmt, ...)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void print_version()
|
||||
{
|
||||
printf("%s Ver 3.0 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
}
|
||||
|
||||
|
||||
|
@ -511,6 +514,8 @@ the mysql command line client\n\n");
|
|||
my_print_variables(my_long_options);
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
extern "C" my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
char *argument)
|
||||
|
|
|
@ -172,10 +172,13 @@ static void print_result();
|
|||
static char *fix_table_name(char *dest, char *src);
|
||||
int what_to_do = 0;
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void print_version(void)
|
||||
{
|
||||
printf("%s Ver %s Distrib %s, for %s (%s)\n", my_progname, CHECK_VERSION,
|
||||
MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
} /* print_version */
|
||||
|
||||
|
||||
|
@ -206,6 +209,7 @@ static void usage(void)
|
|||
my_print_variables(my_long_options);
|
||||
} /* usage */
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
static my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
|
|
|
@ -332,11 +332,13 @@ static int dump_all_databases();
|
|||
static char *quote_name(const char *name, char *buff, my_bool force);
|
||||
static const char *check_if_ignore_table(const char *table_name);
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void print_version(void)
|
||||
{
|
||||
printf("%s Ver %s Distrib %s, for %s (%s)\n",my_progname,DUMP_VERSION,
|
||||
MYSQL_SERVER_VERSION,SYSTEM_TYPE,MACHINE_TYPE);
|
||||
MYSQL_SERVER_VERSION,SYSTEM_TYPE,MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
} /* print_version */
|
||||
|
||||
|
||||
|
@ -346,8 +348,10 @@ static void short_usage_sub(void)
|
|||
printf("OR %s [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]\n",
|
||||
my_progname);
|
||||
printf("OR %s [OPTIONS] --all-databases [OPTIONS]\n", my_progname);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
}
|
||||
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
|
@ -367,6 +371,8 @@ static void short_usage(void)
|
|||
printf("For more options, use %s --help\n", my_progname);
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
|
||||
static void write_header(FILE *sql_file, char *db_name)
|
||||
{
|
||||
|
|
|
@ -147,14 +147,16 @@ static struct my_option my_long_options[] =
|
|||
|
||||
static const char *load_default_groups[]= { "mysqlimport","client",0 };
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void print_version(void)
|
||||
{
|
||||
printf("%s Ver %s Distrib %s, for %s (%s)\n" ,my_progname,
|
||||
IMPORT_VERSION, MYSQL_SERVER_VERSION,SYSTEM_TYPE,MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
|
@ -173,6 +175,7 @@ file. The SQL command 'LOAD DATA INFILE' is used to import the rows.\n");
|
|||
my_print_variables(my_long_options);
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
static my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
|
|
|
@ -209,12 +209,16 @@ static struct my_option my_long_options[] =
|
|||
};
|
||||
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void print_version(void)
|
||||
{
|
||||
printf("%s Ver %s Distrib %s, for %s (%s)\n",my_progname,SHOW_VERSION,
|
||||
MYSQL_SERVER_VERSION,SYSTEM_TYPE,MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
}
|
||||
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
|
@ -234,6 +238,8 @@ are shown");
|
|||
my_print_variables(my_long_options);
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
static my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
char *argument)
|
||||
|
|
|
@ -180,6 +180,17 @@ typedef struct
|
|||
int alloced;
|
||||
} VAR;
|
||||
|
||||
#ifdef __NETWARE__
|
||||
/*
|
||||
Netware doesn't proved environment variable substitution that is done
|
||||
by the shell in unix environments. We do this in the following function:
|
||||
*/
|
||||
|
||||
static char *subst_env_var(const char *cmd);
|
||||
static int my_popen(const char *cmd, const char *mode);
|
||||
#define popen(A,B) my_popen((A),(B))
|
||||
#endif /* __NETWARE__ */
|
||||
|
||||
VAR var_reg[10];
|
||||
/*Perl/shell-like variable registers */
|
||||
HASH var_hash;
|
||||
|
@ -906,7 +917,7 @@ int do_exec(struct st_query* q)
|
|||
|
||||
while (fgets(buf, sizeof(buf), res_file))
|
||||
replace_dynstr_append_mem(ds, buf, strlen(buf));
|
||||
|
||||
|
||||
if (glob_replace)
|
||||
free_replace();
|
||||
|
||||
|
@ -929,6 +940,7 @@ int do_exec(struct st_query* q)
|
|||
DBUG_RETURN(error);
|
||||
}
|
||||
|
||||
|
||||
int var_query_set(VAR* v, const char* p, const char** p_end)
|
||||
{
|
||||
char* end = (char*)((p_end && *p_end) ? *p_end : p + strlen(p));
|
||||
|
@ -3674,3 +3686,101 @@ static void get_replace_column(struct st_query *q)
|
|||
}
|
||||
my_free(start, MYF(0));
|
||||
}
|
||||
|
||||
#ifdef __NETWARE__
|
||||
|
||||
/*
|
||||
Substitute environment variables with text.
|
||||
|
||||
SYNOPSIS
|
||||
subst_env_var()
|
||||
arg String that should be substitute
|
||||
|
||||
DESCRIPTION
|
||||
This function takes a string as an input and replaces the
|
||||
environment variables, that starts with '$' character, with it value.
|
||||
|
||||
NOTES
|
||||
Return string must be freed with my_free()
|
||||
|
||||
RETURN
|
||||
String with environment variables replaced.
|
||||
*/
|
||||
|
||||
static char *subst_env_var(const char *str)
|
||||
{
|
||||
char *result;
|
||||
|
||||
result= pos= my_malloc(MAX_QUERY, MYF(MY_FAE));
|
||||
while (*str)
|
||||
{
|
||||
/*
|
||||
need this only when we want to provide the functionality of
|
||||
escaping through \ 'backslash'
|
||||
if ((result == pos && *str=='$') ||
|
||||
(result != pos && *str=='$' && str[-1] !='\\'))
|
||||
*/
|
||||
if (*str == '$')
|
||||
{
|
||||
char env_var[256], *env_pos= env_var, *subst;
|
||||
|
||||
/* Search for end of environment variable */
|
||||
for (str++;
|
||||
*str && !isspace(*str) && *str != '\\' && *str != '/' &&
|
||||
*str != '$';
|
||||
str++)
|
||||
*env_pos++ *str;
|
||||
*env_pos= 0;
|
||||
|
||||
if (!(subst= getenv(env_var)))
|
||||
{
|
||||
my_free(result, MYF(0));
|
||||
die("MYSQLTEST.NLM: Environment variable %s is not defined\n",
|
||||
env_var);
|
||||
}
|
||||
|
||||
/* get the string to be substitued for env_var */
|
||||
pos= strmov(pos, subst);
|
||||
/* Process delimiter in *str again */
|
||||
}
|
||||
else
|
||||
*pos++= *str++;
|
||||
}
|
||||
*pos= 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
popen replacement for Netware
|
||||
|
||||
SYNPOSIS
|
||||
my_popen()
|
||||
name Command to execute (with possible env variables)
|
||||
mode Mode for popen.
|
||||
|
||||
NOTES
|
||||
Environment variable expansion does not take place for popen function
|
||||
on NetWare, so we use this function to wrap around popen to do this.
|
||||
|
||||
For the moment we ignore 'mode' and always use 'r0'
|
||||
|
||||
RETURN
|
||||
# >= 0 File handle
|
||||
-1 Error
|
||||
*/
|
||||
|
||||
#undef popen /* Remove wrapper */
|
||||
|
||||
int my_popen(const char *cmd, const char *mode __attribute__((unused)) t)
|
||||
{
|
||||
char *subst_cmd;
|
||||
int res_file;
|
||||
|
||||
subst_cmd= subst_env_var(cmd);
|
||||
res_file= popen(subst_cmd, "r0");
|
||||
my_free(subst_cmd, MYF(0));
|
||||
return res_file;
|
||||
}
|
||||
|
||||
#endif /* __NETWARE__ */
|
||||
|
|
11
configure.in
11
configure.in
|
@ -126,8 +126,10 @@ fi
|
|||
|
||||
# The following hack should ensure that configure doesn't add optimizing
|
||||
# or debugging flags to CFLAGS or CXXFLAGS
|
||||
CFLAGS="$CFLAGS "
|
||||
CXXFLAGS="$CXXFLAGS "
|
||||
# C_EXTRA_FLAGS are flags that are automaticly added to both
|
||||
# CFLAGS and CXXFLAGS
|
||||
CFLAGS="$CFLAGS $C_EXTRA_FLAGS "
|
||||
CXXFLAGS="$CXXFLAGS $C_EXTRA_FLAGS "
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_AWK
|
||||
|
@ -1120,8 +1122,8 @@ dnl Is this the right match for DEC OSF on alpha?
|
|||
# Add library dependencies to mysqld_DEPENDENCIES
|
||||
lib_DEPENDENCIES="\$(bdb_libs_with_path) \$(innodb_libs) \$(pstack_libs) \$(innodb_system_libs) \$(openssl_libs)"
|
||||
cat > $filesed << EOF
|
||||
s,\(^.*\$(MAKE) gen_lex_hash\),#\1,
|
||||
s,\(\./gen_lex_hash\),\1.linux,
|
||||
s,\(^.*\$(MAKE) gen_lex_hash\)\$(EXEEXT),#\1,
|
||||
s,\(\./gen_lex_hash\)\$(EXEEXT),\1.linux,
|
||||
s%\(mysqld_DEPENDENCIES = \) %\1$lib_DEPENDENCIES %
|
||||
EOF
|
||||
;;
|
||||
|
@ -2845,6 +2847,7 @@ AC_OUTPUT(Makefile extra/Makefile mysys/Makefile isam/Makefile dnl
|
|||
include/Makefile sql-bench/Makefile tools/Makefile dnl
|
||||
tests/Makefile Docs/Makefile support-files/Makefile dnl
|
||||
support-files/MacOSX/Makefile mysql-test/Makefile dnl
|
||||
netware/Makefile dnl
|
||||
include/mysql_version.h dnl
|
||||
cmd-line-utils/Makefile dnl
|
||||
cmd-line-utils/libedit/Makefile dnl
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
/* Return error-text for system error messages and nisam messages */
|
||||
|
||||
#define PERROR_VERSION "2.9"
|
||||
#define PERROR_VERSION "2.10"
|
||||
|
||||
#include <my_global.h>
|
||||
#include <my_sys.h>
|
||||
|
@ -207,8 +207,16 @@ int main(int argc,char *argv[])
|
|||
else
|
||||
#endif
|
||||
{
|
||||
/*
|
||||
On some system, like NETWARE, strerror(unknown_error) returns a
|
||||
string 'Unknown Error'. To avoid printing it we try to find the
|
||||
error string by asking for an impossible big error message.
|
||||
*/
|
||||
const char *unknown_error= strerror(10000);
|
||||
|
||||
for ( ; argc-- > 0 ; argv++)
|
||||
{
|
||||
|
||||
found=0;
|
||||
code=atoi(*argv);
|
||||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
|
@ -222,7 +230,14 @@ int main(int argc,char *argv[])
|
|||
else
|
||||
#endif
|
||||
msg = strerror(code);
|
||||
if (msg)
|
||||
|
||||
/*
|
||||
Don't print message for not existing error messages or for
|
||||
unknown errors. We test for 'Uknown Errors' just as an
|
||||
extra safety for Netware
|
||||
*/
|
||||
if (msg && strcmp(msg, "Unknown Error") &&
|
||||
(!unknown_error || strcmp(msg, unknown_error)))
|
||||
{
|
||||
found=1;
|
||||
if (verbose)
|
||||
|
@ -241,7 +256,7 @@ int main(int argc,char *argv[])
|
|||
else
|
||||
{
|
||||
if (verbose)
|
||||
printf("%3d = %s\n",code,msg);
|
||||
printf("MySql error: %3d = %s\n",code,msg);
|
||||
else
|
||||
puts(msg);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,10 @@
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
/* Defines for netware compatible with MySQL */
|
||||
/* Header for NetWare compatible with MySQL */
|
||||
|
||||
#ifndef _config_netware_h
|
||||
#define _config_netware_h
|
||||
|
||||
/* required headers */
|
||||
#include <unistd.h>
|
||||
|
@ -32,18 +35,28 @@
|
|||
#include <pthread.h>
|
||||
#include <termios.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* required adjustments */
|
||||
#undef HAVE_READDIR_R
|
||||
#undef HAVE_RWLOCK_INIT
|
||||
#undef HAVE_SCHED_H
|
||||
#undef HAVE_SYS_MMAN_H
|
||||
#undef HAVE_SYNCH_H
|
||||
#undef HAVE_CRYPT
|
||||
#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
|
||||
#define HAVE_PTHREAD_SIGMASK 1
|
||||
#define HAVE_PTHREAD_YIELD_ZERO_ARG 1
|
||||
#define HAVE_BROKEN_REALPATH 1
|
||||
|
||||
/* no libc crypt() function */
|
||||
#ifdef HAVE_OPENSSL
|
||||
#define HAVE_CRYPT 1
|
||||
#else
|
||||
#undef HAVE_CRYPT
|
||||
#endif /* HAVE_OPENSSL */
|
||||
|
||||
/* include the old function apis */
|
||||
#define USE_OLD_FUNCTIONS 1
|
||||
|
||||
|
@ -59,6 +72,9 @@
|
|||
/* signal by closing the sockets */
|
||||
#define SIGNAL_WITH_VIO_CLOSE 1
|
||||
|
||||
/* On NetWare, stack grows towards lower address*/
|
||||
#define STACK_DIRECTION -1
|
||||
|
||||
/* default directory information */
|
||||
#define DEFAULT_MYSQL_HOME "sys:/mysql"
|
||||
#define PACKAGE "mysql"
|
||||
|
@ -80,6 +96,20 @@
|
|||
/* do not use the extended time in LibC sys\stat.h */
|
||||
#define _POSIX_SOURCE
|
||||
|
||||
/* Kernel call on NetWare that will only yield if our time slice is up */
|
||||
void kYieldIfTimeSliceUp(void);
|
||||
|
||||
/* Some macros for portability */
|
||||
|
||||
#define set_timespec(ABSTIME,SEC) { (ABSTIME).tv_sec=(SEC); (ABSTIME).tv_nsec=0; }
|
||||
#define set_timespec(ABSTIME,SEC) { (ABSTIME).tv_sec=time(NULL)+(SEC); (ABSTIME).tv_nsec=0; }
|
||||
|
||||
/* extra protection against CPU Hogs on NetWare */
|
||||
#define NETWARE_YIELD kYieldIfTimeSliceUp()
|
||||
/* Screen mode for help texts */
|
||||
#define NETWARE_SET_SCREEN_MODE(A) setscreenmode(A)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _config_netware_h */
|
||||
|
|
6
include/help_end.h
Normal file
6
include/help_end.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
#ifdef __NETWARE__
|
||||
#undef printf
|
||||
#undef puts
|
||||
#undef fputs
|
||||
#undef putchar
|
||||
#endif
|
7
include/help_start.h
Normal file
7
include/help_start.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
/* Divert all help information on NetWare to logger screen. */
|
||||
|
||||
#ifdef __NETWARE__
|
||||
#define printf consoleprintf
|
||||
#define puts(s) consoleprintf("%s\n",s)
|
||||
#define fputs(s,f) puts(s)
|
||||
#endif
|
|
@ -188,7 +188,7 @@ typedef struct my_charset_handler_st
|
|||
} MY_CHARSET_HANDLER;
|
||||
|
||||
extern MY_CHARSET_HANDLER my_charset_8bit_handler;
|
||||
|
||||
extern MY_CHARSET_HANDLER my_charset_ucs2_handler;
|
||||
|
||||
|
||||
typedef struct charset_info_st
|
||||
|
@ -204,6 +204,7 @@ typedef struct charset_info_st
|
|||
uchar *to_lower;
|
||||
uchar *to_upper;
|
||||
uchar *sort_order;
|
||||
uint16 **sort_order_big;
|
||||
uint16 *tab_to_uni;
|
||||
MY_UNI_IDX *tab_from_uni;
|
||||
uchar state_map[256];
|
||||
|
|
|
@ -73,6 +73,12 @@
|
|||
#endif
|
||||
#endif /* _WIN32... */
|
||||
|
||||
/* Some defines to avoid ifdefs in the code */
|
||||
#ifndef NETWARE_YIELD
|
||||
#define NETWARE_YIELD
|
||||
#define NETWARE_SET_SCREEN_MODE(A)
|
||||
#endif
|
||||
|
||||
/*
|
||||
The macros below are borrowed from include/linux/compiler.h in the
|
||||
Linux kernel. Use them to indicate the likelyhood of the truthfulness
|
||||
|
|
|
@ -36,6 +36,12 @@
|
|||
#define MYSQL_SERVICENAME "MySQL"
|
||||
#endif /* __WIN__ */
|
||||
|
||||
#if defined(__WIN__) && !defined(MYSQL_SERVER) && !defined(MYSQL_CLIENT) && !defined(EMBEDDED_LIBRARY)
|
||||
#define dll_import_spec __declspec( dllimport )
|
||||
#else
|
||||
#define dll_import_spec
|
||||
#endif
|
||||
|
||||
enum enum_server_command
|
||||
{
|
||||
COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST,
|
||||
|
@ -306,8 +312,8 @@ typedef struct st_udf_init
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern unsigned long max_allowed_packet;
|
||||
extern unsigned long net_buffer_length;
|
||||
dll_import_spec extern unsigned long max_allowed_packet;
|
||||
dll_import_spec extern unsigned long net_buffer_length;
|
||||
|
||||
/*
|
||||
These functions are used for authentication by client and server and
|
||||
|
|
|
@ -64,7 +64,7 @@ typedef my_bool ALARM;
|
|||
#define init_thr_alarm(A)
|
||||
#define thr_alarm_kill(A)
|
||||
#define resize_thr_alarm(N)
|
||||
#define end_thr_alarm()
|
||||
#define end_thr_alarm(A)
|
||||
|
||||
#else
|
||||
#if defined(__WIN__)
|
||||
|
|
|
@ -43,7 +43,7 @@ noinst_HEADERS = btr0btr.h btr0btr.ic btr0cur.h btr0cur.ic \
|
|||
row0purge.ic row0row.h row0row.ic row0sel.h row0sel.ic \
|
||||
row0types.h row0uins.h row0uins.ic row0umod.h row0umod.ic \
|
||||
row0undo.h row0undo.ic row0upd.h row0upd.ic row0vers.h \
|
||||
row0vers.ic srv0que.h srv0srv.h srv0srv.ic srv0start.h \
|
||||
row0vers.ic srv0srv.h srv0srv.ic srv0start.h \
|
||||
sync0arr.h sync0arr.ic sync0rw.h \
|
||||
sync0rw.ic sync0sync.h sync0sync.ic sync0types.h \
|
||||
thr0loc.h thr0loc.ic trx0purge.h trx0purge.ic trx0rec.h \
|
||||
|
|
|
@ -152,17 +152,6 @@ que_run_threads(
|
|||
/*============*/
|
||||
que_thr_t* thr); /* in: query thread which is run initially */
|
||||
/**************************************************************************
|
||||
After signal handling is finished, returns control to a query graph error
|
||||
handling routine. (Currently, just returns the control to the root of the
|
||||
graph so that the graph can communicate an error message to the client.) */
|
||||
|
||||
void
|
||||
que_fork_error_handle(
|
||||
/*==================*/
|
||||
trx_t* trx, /* in: trx */
|
||||
que_t* fork); /* in: query graph which was run before signal
|
||||
handling started, NULL not allowed */
|
||||
/**************************************************************************
|
||||
Handles an SQL error noticed during query thread execution. At the moment,
|
||||
does nothing! */
|
||||
|
||||
|
@ -181,18 +170,15 @@ a single worker thread to execute it. This function should be used to end
|
|||
the wait state of a query thread waiting for a lock or a stored procedure
|
||||
completion. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
que_thr_end_wait(
|
||||
/*=============*/
|
||||
que_thr_t* thr, /* in: query thread in the
|
||||
/* out: next query thread to run;
|
||||
NULL if none */
|
||||
que_thr_t* thr); /* in: query thread in the
|
||||
QUE_THR_LOCK_WAIT,
|
||||
or QUE_THR_PROCEDURE_WAIT, or
|
||||
QUE_THR_SIG_REPLY_WAIT state */
|
||||
que_thr_t** next_thr); /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread */
|
||||
/**************************************************************************
|
||||
Same as que_thr_end_wait, but no parameter next_thr available. */
|
||||
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
/******************************************************
|
||||
Server query execution
|
||||
|
||||
(c) 1996 Innobase Oy
|
||||
|
||||
Created 6/5/1996 Heikki Tuuri
|
||||
*******************************************************/
|
||||
|
||||
|
||||
#ifndef srv0que_h
|
||||
#define srv0que_h
|
||||
|
||||
#include "univ.i"
|
||||
#include "que0types.h"
|
||||
|
||||
/**************************************************************************
|
||||
Checks if there is work to do in the server task queue. If there is, the
|
||||
thread starts processing a task. Before leaving, it again checks the task
|
||||
queue and picks a new task if any exists. This is called by a SRV_WORKER
|
||||
thread. */
|
||||
|
||||
void
|
||||
srv_que_task_queue_check(void);
|
||||
/*==========================*/
|
||||
/**************************************************************************
|
||||
Performs round-robin on the server tasks. This is called by a SRV_WORKER
|
||||
thread every second or so. */
|
||||
|
||||
que_thr_t*
|
||||
srv_que_round_robin(
|
||||
/*================*/
|
||||
/* out: the new (may be == thr) query thread
|
||||
to run */
|
||||
que_thr_t* thr); /* in: query thread */
|
||||
/**************************************************************************
|
||||
Enqueues a task to server task queue and releases a worker thread, if
|
||||
there exists one suspended. */
|
||||
|
||||
void
|
||||
srv_que_task_enqueue(
|
||||
/*=================*/
|
||||
que_thr_t* thr); /* in: query thread */
|
||||
/**************************************************************************
|
||||
Enqueues a task to server task queue and releases a worker thread, if
|
||||
there exists one suspended. */
|
||||
|
||||
void
|
||||
srv_que_task_enqueue_low(
|
||||
/*=====================*/
|
||||
que_thr_t* thr); /* in: query thread */
|
||||
|
||||
#endif
|
||||
|
|
@ -91,16 +91,12 @@ trx_undo_rec_release(
|
|||
/*************************************************************************
|
||||
Starts a rollback operation. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
trx_rollback(
|
||||
/*=========*/
|
||||
/* out: next query thread to run */
|
||||
trx_t* trx, /* in: transaction */
|
||||
trx_sig_t* sig, /* in: signal starting the rollback */
|
||||
que_thr_t** next_thr);/* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread */
|
||||
trx_sig_t* sig); /* in: signal starting the rollback */
|
||||
/***********************************************************************
|
||||
Rollback or clean up transactions which have no user session. If the
|
||||
transaction already was committed, then we clean up a possible insert
|
||||
|
@ -112,17 +108,12 @@ trx_rollback_or_clean_all_without_sess(void);
|
|||
/********************************************************************
|
||||
Finishes a transaction rollback. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
trx_finish_rollback_off_kernel(
|
||||
/*===========================*/
|
||||
/* out: next query thread to run */
|
||||
que_t* graph, /* in: undo graph which can now be freed */
|
||||
trx_t* trx, /* in: transaction */
|
||||
que_thr_t** next_thr);/* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread; if this parameter is
|
||||
NULL, it is ignored */
|
||||
trx_t* trx); /* in: transaction */
|
||||
/********************************************************************
|
||||
Builds an undo 'query' graph for a transaction. The actual rollback is
|
||||
performed by executing this query graph like a query subprocedure call.
|
||||
|
|
|
@ -194,9 +194,10 @@ trx_end_lock_wait(
|
|||
/********************************************************************
|
||||
Sends a signal to a trx object. */
|
||||
|
||||
ibool
|
||||
que_thr_t*
|
||||
trx_sig_send(
|
||||
/*=========*/
|
||||
/* out: next query thread to run */
|
||||
/* out: TRUE if the signal was
|
||||
successfully delivered */
|
||||
trx_t* trx, /* in: trx handle */
|
||||
|
@ -206,27 +207,17 @@ trx_sig_send(
|
|||
que_thr_t* receiver_thr, /* in: query thread which wants the
|
||||
reply, or NULL; if type is
|
||||
TRX_SIG_END_WAIT, this must be NULL */
|
||||
trx_savept_t* savept, /* in: possible rollback savepoint, or
|
||||
trx_savept_t* savept); /* in: possible rollback savepoint, or
|
||||
NULL */
|
||||
que_thr_t** next_thr); /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread; if the parameter
|
||||
is NULL, it is ignored */
|
||||
/********************************************************************
|
||||
Send the reply message when a signal in the queue of the trx has
|
||||
been handled. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
trx_sig_reply(
|
||||
/*==========*/
|
||||
trx_sig_t* sig, /* in: signal */
|
||||
que_thr_t** next_thr); /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread */
|
||||
/* out: next query thread to run */
|
||||
trx_sig_t* sig); /* in: signal */
|
||||
/********************************************************************
|
||||
Removes the signal object from a trx signal queue. */
|
||||
|
||||
|
@ -238,15 +229,11 @@ trx_sig_remove(
|
|||
/********************************************************************
|
||||
Starts handling of a trx signal. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
trx_sig_start_handle(
|
||||
/*=================*/
|
||||
trx_t* trx, /* in: trx handle */
|
||||
que_thr_t** next_thr); /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread */
|
||||
/* out: next query thread to run, or NULL */
|
||||
trx_t* trx); /* in: trx handle */
|
||||
/********************************************************************
|
||||
Ends signal handling. If the session is in the error state, and
|
||||
trx->graph_before_signal_handling != NULL, returns control to the error
|
||||
|
|
|
@ -38,7 +38,6 @@ sess_try_close(
|
|||
|
||||
/* The session handle. All fields are protected by the kernel mutex */
|
||||
struct sess_struct{
|
||||
ulint state; /* state of the session */
|
||||
trx_t* trx; /* transaction object permanently
|
||||
assigned for the session: the
|
||||
transaction instance designated by the
|
||||
|
@ -49,11 +48,6 @@ struct sess_struct{
|
|||
session */
|
||||
};
|
||||
|
||||
/* Session states */
|
||||
#define SESS_ACTIVE 1
|
||||
#define SESS_ERROR 2 /* session contains an error message
|
||||
which has not yet been communicated
|
||||
to the client */
|
||||
#ifndef UNIV_NONINL
|
||||
#include "usr0sess.ic"
|
||||
#endif
|
||||
|
|
|
@ -12,7 +12,6 @@ Created 5/27/1996 Heikki Tuuri
|
|||
#include "que0que.ic"
|
||||
#endif
|
||||
|
||||
#include "srv0que.h"
|
||||
#include "usr0sess.h"
|
||||
#include "trx0trx.h"
|
||||
#include "trx0roll.h"
|
||||
|
@ -175,19 +174,15 @@ a single worker thread to execute it. This function should be used to end
|
|||
the wait state of a query thread waiting for a lock or a stored procedure
|
||||
completion. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
que_thr_end_wait(
|
||||
/*=============*/
|
||||
que_thr_t* thr, /* in: query thread in the
|
||||
/* out: next query thread to run;
|
||||
NULL if none */
|
||||
que_thr_t* thr) /* in: query thread in the
|
||||
QUE_THR_LOCK_WAIT,
|
||||
or QUE_THR_PROCEDURE_WAIT, or
|
||||
QUE_THR_SIG_REPLY_WAIT state */
|
||||
que_thr_t** next_thr) /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread; if NULL is passed
|
||||
as the parameter, it is ignored */
|
||||
{
|
||||
ibool was_active;
|
||||
|
||||
|
@ -195,6 +190,8 @@ que_thr_end_wait(
|
|||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(thr);
|
||||
ut_ad(next_thr);
|
||||
ut_ad(*next_thr == NULL);
|
||||
ut_ad((thr->state == QUE_THR_LOCK_WAIT)
|
||||
|| (thr->state == QUE_THR_PROCEDURE_WAIT)
|
||||
|| (thr->state == QUE_THR_SIG_REPLY_WAIT));
|
||||
|
@ -206,17 +203,8 @@ que_thr_end_wait(
|
|||
|
||||
que_thr_move_to_run_state(thr);
|
||||
|
||||
if (was_active) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (next_thr && *next_thr == NULL) {
|
||||
*next_thr = thr;
|
||||
} else {
|
||||
srv_que_task_enqueue_low(thr);
|
||||
}
|
||||
}
|
||||
return(was_active ? NULL : thr);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
Same as que_thr_end_wait, but no parameter next_thr available. */
|
||||
|
@ -253,8 +241,6 @@ que_thr_end_wait_no_next_thr(
|
|||
for the lock to be released: */
|
||||
|
||||
srv_release_mysql_thread_if_suspended(thr);
|
||||
|
||||
/* srv_que_task_enqueue_low(thr); */
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -355,48 +341,6 @@ que_fork_start_command(
|
|||
return(NULL);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
After signal handling is finished, returns control to a query graph error
|
||||
handling routine. (Currently, just returns the control to the root of the
|
||||
graph so that the graph can communicate an error message to the client.) */
|
||||
|
||||
void
|
||||
que_fork_error_handle(
|
||||
/*==================*/
|
||||
trx_t* trx __attribute__((unused)), /* in: trx */
|
||||
que_t* fork) /* in: query graph which was run before signal
|
||||
handling started, NULL not allowed */
|
||||
{
|
||||
que_thr_t* thr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(trx->sess->state == SESS_ERROR);
|
||||
ut_ad(UT_LIST_GET_LEN(trx->reply_signals) == 0);
|
||||
ut_ad(UT_LIST_GET_LEN(trx->wait_thrs) == 0);
|
||||
|
||||
thr = UT_LIST_GET_FIRST(fork->thrs);
|
||||
|
||||
while (thr != NULL) {
|
||||
ut_ad(!thr->is_active);
|
||||
ut_ad(thr->state != QUE_THR_SIG_REPLY_WAIT);
|
||||
ut_ad(thr->state != QUE_THR_LOCK_WAIT);
|
||||
|
||||
thr->run_node = thr;
|
||||
thr->prev_node = thr->child;
|
||||
thr->state = QUE_THR_COMPLETED;
|
||||
|
||||
thr = UT_LIST_GET_NEXT(thrs, thr);
|
||||
}
|
||||
|
||||
thr = UT_LIST_GET_FIRST(fork->thrs);
|
||||
|
||||
que_thr_move_to_run_state(thr);
|
||||
|
||||
srv_que_task_enqueue_low(thr);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
Tests if all the query threads in the same fork have a given state. */
|
||||
UNIV_INLINE
|
||||
|
@ -765,22 +709,18 @@ this function may only be called from inside que_run_threads or
|
|||
que_thr_check_if_switch! These restrictions exist to make the rollback code
|
||||
easier to maintain. */
|
||||
static
|
||||
void
|
||||
que_thr_t*
|
||||
que_thr_dec_refer_count(
|
||||
/*====================*/
|
||||
que_thr_t* thr, /* in: query thread */
|
||||
que_thr_t** next_thr) /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread */
|
||||
/* out: next query thread to run */
|
||||
que_thr_t* thr) /* in: query thread */
|
||||
{
|
||||
que_fork_t* fork;
|
||||
trx_t* trx;
|
||||
sess_t* sess;
|
||||
ulint fork_type;
|
||||
ibool stopped;
|
||||
|
||||
que_thr_t* next_thr = NULL;
|
||||
|
||||
fork = thr->common.parent;
|
||||
trx = thr->graph->trx;
|
||||
sess = trx->sess;
|
||||
|
@ -791,9 +731,7 @@ que_thr_dec_refer_count(
|
|||
|
||||
if (thr->state == QUE_THR_RUNNING) {
|
||||
|
||||
stopped = que_thr_stop(thr);
|
||||
|
||||
if (!stopped) {
|
||||
if (!que_thr_stop(thr)) {
|
||||
/* The reason for the thr suspension or wait was
|
||||
already canceled before we came here: continue
|
||||
running the thread */
|
||||
|
@ -801,15 +739,9 @@ que_thr_dec_refer_count(
|
|||
/* fputs("!!!!!!!! Wait already ended: continue thr\n",
|
||||
stderr); */
|
||||
|
||||
if (next_thr && *next_thr == NULL) {
|
||||
*next_thr = thr;
|
||||
} else {
|
||||
srv_que_task_enqueue_low(thr);
|
||||
}
|
||||
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
return;
|
||||
return(thr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -825,7 +757,7 @@ que_thr_dec_refer_count(
|
|||
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
return;
|
||||
return(next_thr);
|
||||
}
|
||||
|
||||
fork_type = fork->fork_type;
|
||||
|
@ -841,7 +773,7 @@ que_thr_dec_refer_count(
|
|||
ut_ad(UT_LIST_GET_LEN(trx->signals) > 0);
|
||||
ut_ad(trx->handling_signals == TRUE);
|
||||
|
||||
trx_finish_rollback_off_kernel(fork, trx, next_thr);
|
||||
next_thr = trx_finish_rollback_off_kernel(fork, trx);
|
||||
|
||||
} else if (fork_type == QUE_FORK_PURGE) {
|
||||
|
||||
|
@ -863,7 +795,7 @@ que_thr_dec_refer_count(
|
|||
zero, then we start processing a signal; from it we may get
|
||||
a new query thread to run */
|
||||
|
||||
trx_sig_start_handle(trx, next_thr);
|
||||
next_thr = trx_sig_start_handle(trx);
|
||||
}
|
||||
|
||||
if (trx->handling_signals && UT_LIST_GET_LEN(trx->signals) == 0) {
|
||||
|
@ -872,6 +804,8 @@ que_thr_dec_refer_count(
|
|||
}
|
||||
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
return(next_thr);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -1245,6 +1179,7 @@ loop:
|
|||
/*-------------------------*/
|
||||
next_thr = que_thr_step(thr);
|
||||
/*-------------------------*/
|
||||
ut_a(next_thr == thr || next_thr == NULL);
|
||||
|
||||
/* Test the effect on performance of adding extra mutex
|
||||
reservations */
|
||||
|
@ -1257,7 +1192,7 @@ loop:
|
|||
loop_count++;
|
||||
|
||||
if (next_thr != thr) {
|
||||
que_thr_dec_refer_count(thr, &next_thr);
|
||||
next_thr = que_thr_dec_refer_count(thr);
|
||||
|
||||
if (next_thr == NULL) {
|
||||
|
||||
|
|
|
@ -19,6 +19,6 @@ include ../include/Makefile.i
|
|||
|
||||
noinst_LIBRARIES = libsrv.a
|
||||
|
||||
libsrv_a_SOURCES = srv0srv.c srv0que.c srv0start.c
|
||||
libsrv_a_SOURCES = srv0srv.c srv0start.c
|
||||
|
||||
EXTRA_PROGRAMS =
|
||||
|
|
|
@ -1,111 +0,0 @@
|
|||
/******************************************************
|
||||
Server query execution
|
||||
|
||||
(c) 1996 Innobase Oy
|
||||
|
||||
Created 6/5/1996 Heikki Tuuri
|
||||
*******************************************************/
|
||||
|
||||
#include "srv0que.h"
|
||||
|
||||
#include "srv0srv.h"
|
||||
#include "sync0sync.h"
|
||||
#include "os0thread.h"
|
||||
#include "usr0sess.h"
|
||||
#include "que0que.h"
|
||||
|
||||
/**************************************************************************
|
||||
Checks if there is work to do in the server task queue. If there is, the
|
||||
thread starts processing a task. Before leaving, it again checks the task
|
||||
queue and picks a new task if any exists. This is called by a SRV_WORKER
|
||||
thread. */
|
||||
|
||||
void
|
||||
srv_que_task_queue_check(void)
|
||||
/*==========================*/
|
||||
{
|
||||
que_thr_t* thr;
|
||||
|
||||
for (;;) {
|
||||
mutex_enter(&kernel_mutex);
|
||||
|
||||
thr = UT_LIST_GET_FIRST(srv_sys->tasks);
|
||||
|
||||
if (thr == NULL) {
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
UT_LIST_REMOVE(queue, srv_sys->tasks, thr);
|
||||
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
que_run_threads(thr);
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
Performs round-robin on the server tasks. This is called by a SRV_WORKER
|
||||
thread every second or so. */
|
||||
|
||||
que_thr_t*
|
||||
srv_que_round_robin(
|
||||
/*================*/
|
||||
/* out: the new (may be == thr) query thread
|
||||
to run */
|
||||
que_thr_t* thr) /* in: query thread */
|
||||
{
|
||||
que_thr_t* new_thr;
|
||||
|
||||
ut_ad(thr);
|
||||
ut_ad(thr->state == QUE_THR_RUNNING);
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
|
||||
UT_LIST_ADD_LAST(queue, srv_sys->tasks, thr);
|
||||
|
||||
new_thr = UT_LIST_GET_FIRST(srv_sys->tasks);
|
||||
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
return(new_thr);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
Enqueues a task to server task queue and releases a worker thread, if there
|
||||
is a suspended one. */
|
||||
|
||||
void
|
||||
srv_que_task_enqueue_low(
|
||||
/*=====================*/
|
||||
que_thr_t* thr) /* in: query thread */
|
||||
{
|
||||
ut_ad(thr);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
UT_LIST_ADD_LAST(queue, srv_sys->tasks, thr);
|
||||
|
||||
srv_release_threads(SRV_WORKER, 1);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
Enqueues a task to server task queue and releases a worker thread, if there
|
||||
is a suspended one. */
|
||||
|
||||
void
|
||||
srv_que_task_enqueue(
|
||||
/*=================*/
|
||||
que_thr_t* thr) /* in: query thread */
|
||||
{
|
||||
ut_ad(thr);
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
|
||||
srv_que_task_enqueue_low(thr);
|
||||
|
||||
mutex_exit(&kernel_mutex);
|
||||
}
|
|
@ -34,7 +34,6 @@ Created 10/8/1995 Heikki Tuuri
|
|||
#include "sync0sync.h"
|
||||
#include "thr0loc.h"
|
||||
#include "que0que.h"
|
||||
#include "srv0que.h"
|
||||
#include "log0recv.h"
|
||||
#include "pars0pars.h"
|
||||
#include "usr0sess.h"
|
||||
|
|
|
@ -23,7 +23,6 @@ Created 3/26/1996 Heikki Tuuri
|
|||
#include "row0purge.h"
|
||||
#include "row0upd.h"
|
||||
#include "trx0rec.h"
|
||||
#include "srv0que.h"
|
||||
#include "os0thread.h"
|
||||
|
||||
/* The global data structure coordinating a purge */
|
||||
|
@ -1060,8 +1059,6 @@ trx_purge(void)
|
|||
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
/* srv_que_task_enqueue(thr2); */
|
||||
|
||||
if (srv_print_thread_releases) {
|
||||
|
||||
fputs("Starting purge\n", stderr);
|
||||
|
|
|
@ -20,7 +20,6 @@ Created 3/26/1996 Heikki Tuuri
|
|||
#include "trx0rec.h"
|
||||
#include "que0que.h"
|
||||
#include "usr0sess.h"
|
||||
#include "srv0que.h"
|
||||
#include "srv0start.h"
|
||||
#include "row0undo.h"
|
||||
#include "row0mysql.h"
|
||||
|
@ -932,21 +931,15 @@ trx_undo_rec_release(
|
|||
/*************************************************************************
|
||||
Starts a rollback operation. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
trx_rollback(
|
||||
/*=========*/
|
||||
/* out: next query thread to run */
|
||||
trx_t* trx, /* in: transaction */
|
||||
trx_sig_t* sig, /* in: signal starting the rollback */
|
||||
que_thr_t** next_thr)/* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread; if the passed value is
|
||||
NULL, the parameter is ignored */
|
||||
trx_sig_t* sig) /* in: signal starting the rollback */
|
||||
{
|
||||
que_t* roll_graph;
|
||||
que_thr_t* thr;
|
||||
/* que_thr_t* thr2; */
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
|
@ -988,18 +981,7 @@ trx_rollback(
|
|||
thr = que_fork_start_command(roll_graph);
|
||||
|
||||
ut_ad(thr);
|
||||
|
||||
/* thr2 = que_fork_start_command(roll_graph);
|
||||
|
||||
ut_ad(thr2); */
|
||||
|
||||
if (next_thr && (*next_thr == NULL)) {
|
||||
*next_thr = thr;
|
||||
/* srv_que_task_enqueue_low(thr2); */
|
||||
} else {
|
||||
srv_que_task_enqueue_low(thr);
|
||||
/* srv_que_task_enqueue_low(thr2); */
|
||||
}
|
||||
return(thr);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
@ -1071,17 +1053,14 @@ trx_finish_error_processing(
|
|||
/*************************************************************************
|
||||
Finishes a partial rollback operation. */
|
||||
static
|
||||
void
|
||||
que_thr_t*
|
||||
trx_finish_partial_rollback_off_kernel(
|
||||
/*===================================*/
|
||||
trx_t* trx, /* in: transaction */
|
||||
que_thr_t** next_thr)/* in/out: next query thread to run;
|
||||
if the value which is passed in is a pointer
|
||||
to a NULL pointer, then the calling function
|
||||
can start running a new query thread; if this
|
||||
parameter is NULL, it is ignored */
|
||||
/* out: next query thread to run */
|
||||
trx_t* trx) /* in: transaction */
|
||||
{
|
||||
trx_sig_t* sig;
|
||||
que_thr_t* next_thr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
|
@ -1092,29 +1071,26 @@ trx_finish_partial_rollback_off_kernel(
|
|||
/* Remove the signal from the signal queue and send reply message
|
||||
to it */
|
||||
|
||||
trx_sig_reply(sig, next_thr);
|
||||
next_thr = trx_sig_reply(sig);
|
||||
trx_sig_remove(trx, sig);
|
||||
|
||||
trx->que_state = TRX_QUE_RUNNING;
|
||||
return(next_thr);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
Finishes a transaction rollback. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
trx_finish_rollback_off_kernel(
|
||||
/*===========================*/
|
||||
/* out: next query thread to run */
|
||||
que_t* graph, /* in: undo graph which can now be freed */
|
||||
trx_t* trx, /* in: transaction */
|
||||
que_thr_t** next_thr)/* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread; if this parameter is
|
||||
NULL, it is ignored */
|
||||
trx_t* trx) /* in: transaction */
|
||||
{
|
||||
trx_sig_t* sig;
|
||||
trx_sig_t* next_sig;
|
||||
que_thr_t* next_thr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
|
@ -1129,15 +1105,13 @@ trx_finish_rollback_off_kernel(
|
|||
|
||||
if (sig->type == TRX_SIG_ROLLBACK_TO_SAVEPT) {
|
||||
|
||||
trx_finish_partial_rollback_off_kernel(trx, next_thr);
|
||||
|
||||
return;
|
||||
return(trx_finish_partial_rollback_off_kernel(trx));
|
||||
|
||||
} else if (sig->type == TRX_SIG_ERROR_OCCURRED) {
|
||||
|
||||
trx_finish_error_processing(trx);
|
||||
|
||||
return;
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
#ifdef UNIV_DEBUG
|
||||
|
@ -1153,19 +1127,23 @@ trx_finish_rollback_off_kernel(
|
|||
send reply messages to them */
|
||||
|
||||
trx->que_state = TRX_QUE_RUNNING;
|
||||
|
||||
|
||||
next_thr = NULL;
|
||||
while (sig != NULL) {
|
||||
next_sig = UT_LIST_GET_NEXT(signals, sig);
|
||||
|
||||
if (sig->type == TRX_SIG_TOTAL_ROLLBACK) {
|
||||
|
||||
trx_sig_reply(sig, next_thr);
|
||||
ut_a(next_thr == NULL);
|
||||
next_thr = trx_sig_reply(sig);
|
||||
|
||||
trx_sig_remove(trx, sig);
|
||||
}
|
||||
|
||||
sig = next_sig;
|
||||
}
|
||||
|
||||
return(next_thr);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -1198,7 +1176,6 @@ trx_rollback_step(
|
|||
que_thr_t* thr) /* in: query thread */
|
||||
{
|
||||
roll_node_t* node;
|
||||
ibool success;
|
||||
ulint sig_no;
|
||||
trx_savept_t* savept;
|
||||
|
||||
|
@ -1225,19 +1202,13 @@ trx_rollback_step(
|
|||
|
||||
/* Send a rollback signal to the transaction */
|
||||
|
||||
success = trx_sig_send(thr_get_trx(thr),
|
||||
sig_no, TRX_SIG_SELF,
|
||||
thr, savept, NULL);
|
||||
trx_sig_send(thr_get_trx(thr), sig_no, TRX_SIG_SELF,
|
||||
thr, savept);
|
||||
|
||||
thr->state = QUE_THR_SIG_REPLY_WAIT;
|
||||
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
if (!success) {
|
||||
/* Error in delivering the rollback signal */
|
||||
que_thr_handle_error(thr, DB_ERROR, NULL, 0);
|
||||
}
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -897,18 +897,15 @@ trx_assign_read_view(
|
|||
/********************************************************************
|
||||
Commits a transaction. NOTE that the kernel mutex is temporarily released. */
|
||||
static
|
||||
void
|
||||
que_thr_t*
|
||||
trx_handle_commit_sig_off_kernel(
|
||||
/*=============================*/
|
||||
trx_t* trx, /* in: transaction */
|
||||
que_thr_t** next_thr) /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread */
|
||||
/* out: next query thread to run */
|
||||
trx_t* trx) /* in: transaction */
|
||||
{
|
||||
trx_sig_t* sig;
|
||||
trx_sig_t* next_sig;
|
||||
que_thr_t* next_thr = NULL;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
|
@ -930,7 +927,8 @@ trx_handle_commit_sig_off_kernel(
|
|||
|
||||
if (sig->type == TRX_SIG_COMMIT) {
|
||||
|
||||
trx_sig_reply(sig, next_thr);
|
||||
ut_a(next_thr == NULL);
|
||||
next_thr = trx_sig_reply(sig);
|
||||
trx_sig_remove(trx, sig);
|
||||
}
|
||||
|
||||
|
@ -938,6 +936,8 @@ trx_handle_commit_sig_off_kernel(
|
|||
}
|
||||
|
||||
trx->que_state = TRX_QUE_RUNNING;
|
||||
|
||||
return(next_thr);
|
||||
}
|
||||
|
||||
/***************************************************************
|
||||
|
@ -999,39 +999,6 @@ trx_lock_wait_to_suspended(
|
|||
trx->que_state = TRX_QUE_RUNNING;
|
||||
}
|
||||
|
||||
/***************************************************************
|
||||
Moves the query threads in the sig reply wait list of trx to the SUSPENDED
|
||||
state. */
|
||||
static
|
||||
void
|
||||
trx_sig_reply_wait_to_suspended(
|
||||
/*============================*/
|
||||
trx_t* trx) /* in: transaction */
|
||||
{
|
||||
trx_sig_t* sig;
|
||||
que_thr_t* thr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sig = UT_LIST_GET_FIRST(trx->reply_signals);
|
||||
|
||||
while (sig != NULL) {
|
||||
thr = sig->receiver;
|
||||
|
||||
ut_ad(thr->state == QUE_THR_SIG_REPLY_WAIT);
|
||||
|
||||
thr->state = QUE_THR_SUSPENDED;
|
||||
|
||||
sig->receiver = NULL;
|
||||
|
||||
UT_LIST_REMOVE(reply_signals, trx->reply_signals, sig);
|
||||
|
||||
sig = UT_LIST_GET_FIRST(trx->reply_signals);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
Checks the compatibility of a new signal with the other signals in the
|
||||
queue. */
|
||||
|
@ -1111,11 +1078,10 @@ trx_sig_is_compatible(
|
|||
/********************************************************************
|
||||
Sends a signal to a trx object. */
|
||||
|
||||
ibool
|
||||
que_thr_t*
|
||||
trx_sig_send(
|
||||
/*=========*/
|
||||
/* out: TRUE if the signal was
|
||||
successfully delivered */
|
||||
/* out: next query thread to run */
|
||||
trx_t* trx, /* in: trx handle */
|
||||
ulint type, /* in: signal type */
|
||||
ulint sender, /* in: TRX_SIG_SELF or
|
||||
|
@ -1123,14 +1089,8 @@ trx_sig_send(
|
|||
que_thr_t* receiver_thr, /* in: query thread which wants the
|
||||
reply, or NULL; if type is
|
||||
TRX_SIG_END_WAIT, this must be NULL */
|
||||
trx_savept_t* savept, /* in: possible rollback savepoint, or
|
||||
trx_savept_t* savept) /* in: possible rollback savepoint, or
|
||||
NULL */
|
||||
que_thr_t** next_thr) /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread; if the parameter
|
||||
is NULL, it is ignored */
|
||||
{
|
||||
trx_sig_t* sig;
|
||||
trx_t* receiver_trx;
|
||||
|
@ -1140,14 +1100,7 @@ trx_sig_send(
|
|||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (!trx_sig_is_compatible(trx, type, sender)) {
|
||||
/* The signal is not compatible with the other signals in
|
||||
the queue: do nothing */
|
||||
|
||||
ut_error;
|
||||
|
||||
return(FALSE);
|
||||
}
|
||||
ut_a(trx_sig_is_compatible(trx, type, sender));
|
||||
|
||||
/* Queue the signal object */
|
||||
|
||||
|
@ -1181,11 +1134,6 @@ trx_sig_send(
|
|||
sig);
|
||||
}
|
||||
|
||||
if (trx->sess->state == SESS_ERROR) {
|
||||
|
||||
trx_sig_reply_wait_to_suspended(trx);
|
||||
}
|
||||
|
||||
if ((sender != TRX_SIG_SELF) || (type == TRX_SIG_BREAK_EXECUTION)) {
|
||||
|
||||
/* The following call will add a TRX_SIG_ERROR_OCCURRED
|
||||
|
@ -1200,10 +1148,10 @@ trx_sig_send(
|
|||
|
||||
if (UT_LIST_GET_FIRST(trx->signals) == sig) {
|
||||
|
||||
trx_sig_start_handle(trx, next_thr);
|
||||
return(trx_sig_start_handle(trx));
|
||||
}
|
||||
|
||||
return(TRUE);
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
@ -1225,27 +1173,18 @@ trx_end_signal_handling(
|
|||
trx->handling_signals = FALSE;
|
||||
|
||||
trx->graph = trx->graph_before_signal_handling;
|
||||
|
||||
if (trx->graph && (trx->sess->state == SESS_ERROR)) {
|
||||
|
||||
que_fork_error_handle(trx, trx->graph);
|
||||
}
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
Starts handling of a trx signal. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
trx_sig_start_handle(
|
||||
/*=================*/
|
||||
trx_t* trx, /* in: trx handle */
|
||||
que_thr_t** next_thr) /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread; if the parameter
|
||||
is NULL, it is ignored */
|
||||
/* out: next query thread to run, or NULL */
|
||||
trx_t* trx) /* in: trx handle */
|
||||
{
|
||||
que_thr_t* next_thr = NULL;
|
||||
trx_sig_t* sig;
|
||||
ulint type;
|
||||
loop:
|
||||
|
@ -1261,7 +1200,7 @@ loop:
|
|||
|
||||
trx_end_signal_handling(trx);
|
||||
|
||||
return;
|
||||
return(next_thr);
|
||||
}
|
||||
|
||||
if (trx->conc_state == TRX_NOT_STARTED) {
|
||||
|
@ -1277,23 +1216,13 @@ loop:
|
|||
trx_lock_wait_to_suspended(trx);
|
||||
}
|
||||
|
||||
/* If the session is in the error state and this trx has threads
|
||||
waiting for reply from signals, moves these threads to the suspended
|
||||
state, canceling wait reservations; note that if the transaction has
|
||||
sent a commit or rollback signal to itself, and its session is not in
|
||||
the error state, then nothing is done here. */
|
||||
|
||||
if (trx->sess->state == SESS_ERROR) {
|
||||
trx_sig_reply_wait_to_suspended(trx);
|
||||
}
|
||||
|
||||
/* If there are no running query threads, we can start processing of a
|
||||
signal, otherwise we have to wait until all query threads of this
|
||||
transaction are aware of the arrival of the signal. */
|
||||
|
||||
if (trx->n_active_thrs > 0) {
|
||||
|
||||
return;
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
if (trx->handling_signals == FALSE) {
|
||||
|
@ -1307,30 +1236,19 @@ loop:
|
|||
|
||||
if (type == TRX_SIG_COMMIT) {
|
||||
|
||||
trx_handle_commit_sig_off_kernel(trx, next_thr);
|
||||
next_thr = trx_handle_commit_sig_off_kernel(trx);
|
||||
|
||||
} else if ((type == TRX_SIG_TOTAL_ROLLBACK)
|
||||
|| (type == TRX_SIG_ROLLBACK_TO_SAVEPT)) {
|
||||
|
||||
trx_rollback(trx, sig, next_thr);
|
||||
|
||||
|| (type == TRX_SIG_ROLLBACK_TO_SAVEPT)
|
||||
|| (type == TRX_SIG_ERROR_OCCURRED)) {
|
||||
/* No further signals can be handled until the rollback
|
||||
completes, therefore we return */
|
||||
|
||||
return;
|
||||
|
||||
} else if (type == TRX_SIG_ERROR_OCCURRED) {
|
||||
|
||||
trx_rollback(trx, sig, next_thr);
|
||||
|
||||
/* No further signals can be handled until the rollback
|
||||
completes, therefore we return */
|
||||
|
||||
return;
|
||||
return(trx_rollback(trx, sig));
|
||||
|
||||
} else if (type == TRX_SIG_BREAK_EXECUTION) {
|
||||
|
||||
trx_sig_reply(sig, next_thr);
|
||||
next_thr = trx_sig_reply(sig);
|
||||
trx_sig_remove(trx, sig);
|
||||
} else {
|
||||
ut_error;
|
||||
|
@ -1343,17 +1261,14 @@ loop:
|
|||
Send the reply message when a signal in the queue of the trx has been
|
||||
handled. */
|
||||
|
||||
void
|
||||
que_thr_t*
|
||||
trx_sig_reply(
|
||||
/*==========*/
|
||||
trx_sig_t* sig, /* in: signal */
|
||||
que_thr_t** next_thr) /* in/out: next query thread to run;
|
||||
if the value which is passed in is
|
||||
a pointer to a NULL pointer, then the
|
||||
calling function can start running
|
||||
a new query thread */
|
||||
/* out: next query thread to run */
|
||||
trx_sig_t* sig) /* in: signal */
|
||||
{
|
||||
trx_t* receiver_trx;
|
||||
trx_t* receiver_trx;
|
||||
que_thr_t* next_thr = NULL;
|
||||
|
||||
ut_ad(sig);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
|
@ -1367,13 +1282,13 @@ trx_sig_reply(
|
|||
|
||||
UT_LIST_REMOVE(reply_signals, receiver_trx->reply_signals,
|
||||
sig);
|
||||
ut_ad(receiver_trx->sess->state != SESS_ERROR);
|
||||
|
||||
que_thr_end_wait(sig->receiver, next_thr);
|
||||
next_thr = que_thr_end_wait(sig->receiver);
|
||||
|
||||
sig->receiver = NULL;
|
||||
|
||||
}
|
||||
|
||||
return(next_thr);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
@ -1429,7 +1344,6 @@ trx_commit_step(
|
|||
{
|
||||
commit_node_t* node;
|
||||
que_thr_t* next_thr;
|
||||
ibool success;
|
||||
|
||||
node = thr->run_node;
|
||||
|
||||
|
@ -1444,21 +1358,14 @@ trx_commit_step(
|
|||
|
||||
node->state = COMMIT_NODE_WAIT;
|
||||
|
||||
next_thr = NULL;
|
||||
|
||||
thr->state = QUE_THR_SIG_REPLY_WAIT;
|
||||
|
||||
/* Send the commit signal to the transaction */
|
||||
|
||||
success = trx_sig_send(thr_get_trx(thr), TRX_SIG_COMMIT,
|
||||
TRX_SIG_SELF, thr, NULL, &next_thr);
|
||||
|
||||
mutex_exit(&kernel_mutex);
|
||||
next_thr = trx_sig_send(thr_get_trx(thr), TRX_SIG_COMMIT,
|
||||
TRX_SIG_SELF, thr, NULL);
|
||||
|
||||
if (!success) {
|
||||
/* Error in delivering the commit signal */
|
||||
que_thr_handle_error(thr, DB_ERROR, NULL, 0);
|
||||
}
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
return(next_thr);
|
||||
}
|
||||
|
|
|
@ -37,8 +37,6 @@ sess_open(void)
|
|||
#endif /* UNIV_SYNC_DEBUG */
|
||||
sess = mem_alloc(sizeof(sess_t));
|
||||
|
||||
sess->state = SESS_ACTIVE;
|
||||
|
||||
sess->trx = trx_create(sess);
|
||||
|
||||
UT_LIST_INIT(sess->graphs);
|
||||
|
|
|
@ -333,12 +333,16 @@ static struct my_option my_long_options[] =
|
|||
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void print_version(void)
|
||||
{
|
||||
printf("%s Ver 6.01 for %s at %s\n", my_progname, SYSTEM_TYPE,
|
||||
MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
}
|
||||
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
|
@ -352,6 +356,8 @@ static void usage(void)
|
|||
my_print_variables(my_long_options);
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
/* Check table */
|
||||
|
||||
static int nisamchk(my_string filename)
|
||||
|
|
|
@ -48,7 +48,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
|
|||
key.cc lock.cc log.cc log_event.cc sql_state.c \
|
||||
protocol.cc net_serv.cc opt_range.cc \
|
||||
opt_sum.cc procedure.cc records.cc sql_acl.cc \
|
||||
sql_load.cc sql_olap.cc discover.cc \
|
||||
sql_load.cc discover.cc \
|
||||
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
|
||||
sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \
|
||||
sql_lex.cc sql_list.cc sql_manager.cc sql_map.cc sql_parse.cc \
|
||||
|
@ -77,25 +77,32 @@ INC_LIB= $(top_builddir)/regex/libregex.a \
|
|||
$(top_builddir)/vio/libvio.a
|
||||
|
||||
#
|
||||
# To make it easy for the end user to use the embedded library we
|
||||
# generate a total libmysqld.a from all library files,
|
||||
# To make it easy for the end user to use the embedded library we
|
||||
# generate a total libmysqld.a from all library files,
|
||||
|
||||
libmysqld.a: libmysqld_int.a $(INC_LIB)
|
||||
if test ! -d tmp ; then mkdir tmp ; fi
|
||||
rm -f $@ libmysqld_int2.a tmp/*.o tmp/*.a
|
||||
cp $(INC_LIB) tmp
|
||||
cp libmysqld_int.a libmysqld_int2.a ; \
|
||||
cd tmp ; \
|
||||
for file in *.a ; do \
|
||||
bfile=`basename $$file .a` ; \
|
||||
$(AR) x $$file; \
|
||||
for obj in *.o ; do mv $$obj $${bfile}_$$obj ; done ; \
|
||||
$(AR) q ../libmysqld_int2.a *.o ; \
|
||||
rm -f *.o ; \
|
||||
done
|
||||
mv libmysqld_int2.a libmysqld.a
|
||||
rm -f tmp/*
|
||||
$(RANLIB) libmysqld.a
|
||||
if test "$(host_os)" = "netware" ; \
|
||||
then \
|
||||
$(libmysqld_a_AR) libmysqld.a libmysqld_int.a $(INC_LIB) ; \
|
||||
else \
|
||||
if test ! -d tmp ; then mkdir tmp ; fi ; \
|
||||
rm -f $@ libmysqld_int2.a tmp/*.o tmp/*.a ; \
|
||||
cp $(INC_LIB) tmp ; \
|
||||
cp libmysqld_int.a libmysqld_int2.a ; \
|
||||
cd tmp ; \
|
||||
for file in *.a ; do \
|
||||
bfile=`basename $$file .a` ; \
|
||||
$(AR) x $$file; \
|
||||
for obj in *.o ; do mv $$obj $${bfile}_$$obj ; done ; \
|
||||
$(AR) q ../libmysqld_int2.a *.o ; \
|
||||
rm -f *.o ; \
|
||||
done ; \
|
||||
cd .. ; \
|
||||
mv libmysqld_int2.a libmysqld.a ; \
|
||||
rm -f tmp/* ; \
|
||||
$(RANLIB) libmysqld.a ; \
|
||||
fi
|
||||
|
||||
|
||||
## XXX: any time the client interface changes, we'll need to bump
|
||||
## the version info for libmysqld; however, it's possible for the
|
||||
|
|
|
@ -264,15 +264,18 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
return 0;
|
||||
}
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void usage()
|
||||
{
|
||||
printf("Use: myisam_ftdump <table_name> <index_num>\n");
|
||||
my_print_help(my_long_options);
|
||||
my_print_variables(my_long_options);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
static void complain(int val) /* Kinda assert :-) */
|
||||
{
|
||||
|
|
|
@ -336,10 +336,13 @@ static struct my_option my_long_options[] =
|
|||
};
|
||||
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void print_version(void)
|
||||
{
|
||||
printf("%s Ver 2.7 for %s at %s\n", my_progname, SYSTEM_TYPE,
|
||||
MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
}
|
||||
|
||||
|
||||
|
@ -452,6 +455,7 @@ static void usage(void)
|
|||
my_print_variables(my_long_options);
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
/* Read options */
|
||||
|
||||
|
|
|
@ -266,12 +266,15 @@ static struct my_option my_long_options[] =
|
|||
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
static void print_version(void)
|
||||
{
|
||||
printf("%s Ver 1.22 for %s on %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
}
|
||||
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
|
@ -290,6 +293,7 @@ static void usage(void)
|
|||
my_print_variables(my_long_options);
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
static my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
|
|
|
@ -466,7 +466,8 @@ static my_bool init_available_charsets(myf myflags)
|
|||
if (*cs)
|
||||
{
|
||||
set_max_sort_char(*cs);
|
||||
init_state_maps(*cs);
|
||||
if (cs[0]->ctype)
|
||||
init_state_maps(*cs);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -479,6 +479,7 @@ static char *remove_end_comment(char *ptr)
|
|||
return ptr;
|
||||
}
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
void print_defaults(const char *conf_file, const char **groups)
|
||||
{
|
||||
|
@ -531,3 +532,5 @@ void print_defaults(const char *conf_file, const char **groups)
|
|||
--defaults-file=# Only read default options from the given file #\n\
|
||||
--defaults-extra-file=# Read this file after the global files are read");
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
|
|
@ -790,6 +790,8 @@ static void init_variables(const struct my_option *options)
|
|||
Print help for all options and variables.
|
||||
*/
|
||||
|
||||
#include <help_start.h>
|
||||
|
||||
void my_print_help(const struct my_option *options)
|
||||
{
|
||||
uint col, name_space= 22, comment_space= 57;
|
||||
|
@ -920,3 +922,5 @@ void my_print_variables(const struct my_option *options)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#include <help_end.h>
|
||||
|
|
|
@ -353,14 +353,16 @@ static my_bool win32_init_tcp_ip()
|
|||
|
||||
|
||||
#ifdef __NETWARE__
|
||||
/****************************************************************************
|
||||
Do basic initialisation for netware needed by most programs
|
||||
****************************************************************************/
|
||||
/*
|
||||
Basic initialisation for netware
|
||||
*/
|
||||
|
||||
static void netware_init()
|
||||
{
|
||||
char cwd[PATH_MAX], *name;
|
||||
|
||||
DBUG_ENTER("netware_init");
|
||||
|
||||
/* init only if we are not a client library */
|
||||
if (my_progname)
|
||||
{
|
||||
|
@ -398,5 +400,7 @@ static void netware_init()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
#endif /* __NETWARE__ */
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
/*
|
||||
Function specific to netware
|
||||
Functions specific to netware
|
||||
*/
|
||||
|
||||
#include <mysys_priv.h>
|
||||
|
|
|
@ -102,16 +102,20 @@ void my_pthread_exit(void *status)
|
|||
NXContext_t ctx;
|
||||
char name[PATH_MAX] = "";
|
||||
|
||||
NXThreadGetContext(tid, &ctx);
|
||||
NXContextGetName(ctx, name, PATH_MAX);
|
||||
|
||||
/*
|
||||
"MYSQLD.NLM's LibC Reaper" or "MYSQLD.NLM's main thread"
|
||||
with a debug build of LibC the reaper can have different names
|
||||
*/
|
||||
if (!strindex(name, "\'s"))
|
||||
/* Do not call pthread_exit if it is not a LibC thread */
|
||||
if (tid != 0)
|
||||
{
|
||||
pthread_exit(status);
|
||||
NXThreadGetContext(tid, &ctx);
|
||||
NXContextGetName(ctx, name, PATH_MAX);
|
||||
|
||||
/*
|
||||
"MYSQLD.NLM's LibC Reaper" or "MYSQLD.NLM's main thread"
|
||||
with a debug build of LibC the reaper can have different names
|
||||
*/
|
||||
if (!strindex(name, "\'s"))
|
||||
{
|
||||
pthread_exit(status);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -273,6 +273,9 @@ handler(int sig){
|
|||
case SIGTTOU: /* 27 */
|
||||
globalData.theRestartFlag = perform_stop;
|
||||
break;
|
||||
#ifdef SIGWINCH
|
||||
case SIGWINCH:
|
||||
#endif
|
||||
case SIGPIPE:
|
||||
/**
|
||||
* Can happen in TCP Transporter
|
||||
|
|
|
@ -11,5 +11,5 @@ path=`dirname $0`
|
|||
$path/compile-netware-src
|
||||
$path/compile-netware-standard
|
||||
$path/compile-netware-debug
|
||||
#$path/compile-netware-max
|
||||
#$path/compile-netware-max-debug
|
||||
$path/compile-netware-max
|
||||
$path/compile-netware-max-debug
|
||||
|
|
|
@ -14,6 +14,7 @@ suffix="standard"
|
|||
|
||||
extra_configs=" \
|
||||
--with-innodb \
|
||||
--enable-thread-safe-client \
|
||||
"
|
||||
|
||||
. $path/compile-netware-END
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
# the default is "F:/mydev"
|
||||
export MYDEV="WINE_BUILD_DIR"
|
||||
|
||||
export MWCNWx86Includes="$MYDEV/libc/include;$MYDEV;$MYDEV/zlib-1.1.4""
|
||||
export MWNWx86Libraries="$MYDEV/libc/imports;$MYDEV/mw/lib;$MYDEV/zlib-1.1.4;$MYDEV/mysql-VERSION/netware/BUILD"
|
||||
export MWNWx86LibraryFiles="libcpre.o;libc.imp;netware.imp;mwcrtl.lib;mwcpp.lib;libz.a;knetware.imp"
|
||||
export MWCNWx86Includes="$MYDEV/libc/include;$MYDEV/fs64/headers;$MYDEV;$MYDEV/zlib-1.1.4"
|
||||
export MWNWx86Libraries="$MYDEV/libc/imports;$MYDEV/mw/lib;$MYDEV/fs64/imports;$MYDEV/zlib-1.1.4;$MYDEV/mysql-VERSION/netware/BUILD"
|
||||
export MWNWx86LibraryFiles="libcpre.o;libc.imp;netware.imp;mwcrtl.lib;mwcpp.lib;libz.a;neb.imp;zPublics.imp;knetware.imp"
|
||||
|
||||
export WINEPATH="$MYDEV/mw/bin"
|
||||
|
||||
|
|
|
@ -33,7 +33,8 @@ netware_build_files = client/mysql.def client/mysqladmin.def \
|
|||
isam/isamlog.def isam/pack_isam.def \
|
||||
libmysqld/libmysqld.def myisam/myisamchk.def \
|
||||
myisam/myisamlog.def myisam/myisampack.def \
|
||||
sql/mysqld.def
|
||||
sql/mysqld.def extra/mysql_waitpid.def \
|
||||
extra/resolve_stack_dump.def myisam/myisam_ftdump.def
|
||||
|
||||
link_sources:
|
||||
set -x; \
|
||||
|
|
|
@ -20,7 +20,7 @@ INSERT INTO user (host,user) values ('','');
|
|||
|
||||
CREATE TABLE func (name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') NOT NULL, PRIMARY KEY (name)) comment='User defined functions';
|
||||
|
||||
CREATE TABLE tables_priv (Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(60) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp(14), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor)) comment='Table privileges';
|
||||
CREATE TABLE tables_priv (Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp(14), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor)) comment='Table privileges';
|
||||
|
||||
CREATE TABLE columns_priv (Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp(14), Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name)) comment='Column privileges';
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ int sleep_until_file_exists(char *pid_file)
|
|||
Wait for the server on the given port to start.
|
||||
|
||||
******************************************************************************/
|
||||
int wait_for_server_start(char *bin_dir, char *user, char *password, int port)
|
||||
int wait_for_server_start(char *bin_dir, char *user, char *password, int port,char *tmp_dir)
|
||||
{
|
||||
arg_list_t al;
|
||||
int err, i;
|
||||
|
@ -189,7 +189,7 @@ int wait_for_server_start(char *bin_dir, char *user, char *password, int port)
|
|||
|
||||
// mysqladmin file
|
||||
snprintf(mysqladmin_file, PATH_MAX, "%s/mysqladmin", bin_dir);
|
||||
snprintf(trash, PATH_MAX, "/tmp/trash.out");
|
||||
snprintf(trash, PATH_MAX, "%s/trash.out",tmp_dir);
|
||||
|
||||
// args
|
||||
init_args(&al);
|
||||
|
@ -283,7 +283,7 @@ int spawn(char *path, arg_list_t *al, int join, char *input,
|
|||
|
||||
******************************************************************************/
|
||||
int stop_server(char *bin_dir, char *user, char *password, int port,
|
||||
char *pid_file)
|
||||
char *pid_file,char *tmp_dir)
|
||||
{
|
||||
arg_list_t al;
|
||||
int err, i, argc = 0;
|
||||
|
@ -292,7 +292,7 @@ int stop_server(char *bin_dir, char *user, char *password, int port,
|
|||
|
||||
// mysqladmin file
|
||||
snprintf(mysqladmin_file, PATH_MAX, "%s/mysqladmin", bin_dir);
|
||||
snprintf(trash, PATH_MAX, "/tmp/trash.out");
|
||||
snprintf(trash, PATH_MAX, "%s/trash.out",tmp_dir);
|
||||
|
||||
// args
|
||||
init_args(&al);
|
||||
|
|
|
@ -71,11 +71,11 @@ void free_args(arg_list_t *);
|
|||
|
||||
int sleep_until_file_exists(char *);
|
||||
int sleep_until_file_deleted(char *);
|
||||
int wait_for_server_start(char *, char *, char *, int);
|
||||
int wait_for_server_start(char *, char *, char *, int,char *);
|
||||
|
||||
int spawn(char *, arg_list_t *, int, char *, char *, char *);
|
||||
|
||||
int stop_server(char *, char *, char *, int, char *);
|
||||
int stop_server(char *, char *, char *, int, char *,char *);
|
||||
pid_t get_server_pid(char *);
|
||||
void kill_server(pid_t pid);
|
||||
|
||||
|
|
12
netware/myisam_ftdump.def
Normal file
12
netware/myisam_ftdump.def
Normal file
|
@ -0,0 +1,12 @@
|
|||
#------------------------------------------------------------------------------
|
||||
# MySQL MyISAM Dump Tool
|
||||
#------------------------------------------------------------------------------
|
||||
MODULE libc.nlm
|
||||
SCREENNAME "MySQL MyISAM Table Dump Tool"
|
||||
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
|
||||
DESCRIPTION "MySQL MyISAM Table Dump Tool"
|
||||
VERSION 4, 0
|
||||
STACKSIZE 65536
|
||||
XDCDATA ../netware/mysql.xdc
|
||||
#DEBUG
|
||||
|
|
@ -386,7 +386,8 @@ int main(int argc, char **argv)
|
|||
if (!autoclose) setscreenmode(SCR_NO_MODE);
|
||||
|
||||
// header
|
||||
printf("MySQL Server %s, for %s (%s)\n\n", VERSION, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
printf("MySQL Server %s, for %s (%s)\n\n", VERSION, SYSTEM_TYPE,
|
||||
MACHINE_TYPE);
|
||||
|
||||
// create paths
|
||||
create_paths();
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#define TEST_SKIP "[ skip ]"
|
||||
#define TEST_FAIL "[ fail ]"
|
||||
#define TEST_BAD "[ bad ]"
|
||||
#define TEST_IGNORE "[ignore]"
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
|
@ -69,7 +70,8 @@ int master_port = 9306;
|
|||
int slave_port = 9307;
|
||||
|
||||
// comma delimited list of tests to skip or empty string
|
||||
char skip_test[PATH_MAX] = "";
|
||||
char skip_test[PATH_MAX] = " lowercase_table3 , system_mysql_db_fix ";
|
||||
char ignore_test[PATH_MAX] = "";
|
||||
|
||||
char bin_dir[PATH_MAX];
|
||||
char mysql_test_dir[PATH_MAX];
|
||||
|
@ -107,6 +109,7 @@ int total_pass = 0;
|
|||
int total_fail = 0;
|
||||
int total_test = 0;
|
||||
|
||||
int total_ignore = 0;
|
||||
double total_time = 0;
|
||||
|
||||
int use_openssl = FALSE;
|
||||
|
@ -393,7 +396,7 @@ void start_master()
|
|||
{
|
||||
sleep_until_file_exists(master_pid);
|
||||
|
||||
if ((err = wait_for_server_start(bin_dir, user, password, master_port)) == 0)
|
||||
if ((err = wait_for_server_start(bin_dir, user, password, master_port,mysql_tmp_dir)) == 0)
|
||||
{
|
||||
master_running = TRUE;
|
||||
}
|
||||
|
@ -582,7 +585,7 @@ void start_slave()
|
|||
{
|
||||
sleep_until_file_exists(slave_pid);
|
||||
|
||||
if ((err = wait_for_server_start(bin_dir, user, password, slave_port)) == 0)
|
||||
if ((err = wait_for_server_start(bin_dir, user, password, slave_port,mysql_tmp_dir)) == 0)
|
||||
{
|
||||
slave_running = TRUE;
|
||||
}
|
||||
|
@ -633,7 +636,7 @@ void stop_slave()
|
|||
if (!slave_running) return;
|
||||
|
||||
// stop
|
||||
if ((err = stop_server(bin_dir, user, password, slave_port, slave_pid)) == 0)
|
||||
if ((err = stop_server(bin_dir, user, password, slave_port, slave_pid,mysql_tmp_dir)) == 0)
|
||||
{
|
||||
slave_running = FALSE;
|
||||
}
|
||||
|
@ -657,7 +660,7 @@ void stop_master()
|
|||
// running?
|
||||
if (!master_running) return;
|
||||
|
||||
if ((err = stop_server(bin_dir, user, password, master_port, master_pid)) == 0)
|
||||
if ((err = stop_server(bin_dir, user, password, master_port, master_pid,mysql_tmp_dir)) == 0)
|
||||
{
|
||||
master_running = FALSE;
|
||||
}
|
||||
|
@ -778,21 +781,31 @@ void run_test(char *test)
|
|||
char temp[PATH_MAX];
|
||||
char *rstr;
|
||||
double elapsed = 0;
|
||||
int skip = FALSE;
|
||||
int skip = FALSE, ignore=FALSE;
|
||||
int restart = FALSE;
|
||||
int flag = FALSE;
|
||||
struct stat info;
|
||||
|
||||
// single test?
|
||||
if (!single_test)
|
||||
// if (!single_test)
|
||||
{
|
||||
// skip tests in the skip list
|
||||
snprintf(temp, PATH_MAX, " %s ", test);
|
||||
skip = (strindex(skip_test, temp) != NULL);
|
||||
if( skip == FALSE )
|
||||
ignore = (strindex(ignore_test, temp) != NULL);
|
||||
}
|
||||
|
||||
// skip test?
|
||||
if (!skip)
|
||||
if(ignore)
|
||||
{
|
||||
// show test
|
||||
log("%-46s ", test);
|
||||
|
||||
// ignore
|
||||
rstr = TEST_IGNORE;
|
||||
++total_ignore;
|
||||
}
|
||||
else if (!skip) // skip test?
|
||||
{
|
||||
char test_file[PATH_MAX];
|
||||
char master_opt_file[PATH_MAX];
|
||||
|
@ -1148,9 +1161,33 @@ void setup(char *file)
|
|||
******************************************************************************/
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int is_ignore_list = 0;
|
||||
// setup
|
||||
setup(argv[0]);
|
||||
|
||||
/* The --ignore option is comma saperated list of test cases to skip and should
|
||||
* be very first command line option to the test suite.
|
||||
* The usage is now:
|
||||
* mysql_test_run --ignore=test1,test2 test3 test4
|
||||
* where test1 and test2 are test cases to ignore
|
||||
* and test3 and test4 are test cases to run. */
|
||||
if( argc >= 2 && !strnicmp(argv[1], "--ignore=", sizeof("--ignore=")-1) )
|
||||
{
|
||||
char *temp, *token;
|
||||
temp=strdup(strchr(argv[1],'=') + 1);
|
||||
for(token=strtok(temp, ","); token != NULL; token=strtok(NULL, ","))
|
||||
{
|
||||
if( strlen(ignore_test) + strlen(token) + 2 <= PATH_MAX-1 )
|
||||
sprintf( ignore_test+strlen(ignore_test), " %s ", token);
|
||||
else
|
||||
{
|
||||
free(temp);
|
||||
die("ignore list too long.");
|
||||
}
|
||||
}
|
||||
free(temp);
|
||||
is_ignore_list = 1;
|
||||
}
|
||||
// header
|
||||
log("MySQL Server %s, for %s (%s)\n\n", VERSION, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
|
||||
|
@ -1165,14 +1202,14 @@ int main(int argc, char **argv)
|
|||
log(HEADER);
|
||||
log(DASH);
|
||||
|
||||
if (argc > 1)
|
||||
if ( argc > 1 + is_ignore_list )
|
||||
{
|
||||
int i;
|
||||
|
||||
// single test
|
||||
single_test = TRUE;
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
for (i = 1 + is_ignore_list; i < argc; i++)
|
||||
{
|
||||
// run given test
|
||||
run_test(argv[i]);
|
||||
|
|
12
netware/mysql_waitpid.def
Normal file
12
netware/mysql_waitpid.def
Normal file
|
@ -0,0 +1,12 @@
|
|||
#------------------------------------------------------------------------------
|
||||
# Wait for a Program to Terminate
|
||||
#------------------------------------------------------------------------------
|
||||
MODULE libc.nlm
|
||||
#SCREENNAME "MySQL Tool - Wait for a Program to Terminate"
|
||||
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
|
||||
DESCRIPTION "MySQL Tool - Wait for a Program to Terminate"
|
||||
VERSION 4, 0
|
||||
STACKSIZE 65536
|
||||
XDCDATA ../netware/mysql.xdc
|
||||
#DEBUG
|
||||
|
12
netware/resolve_stack_dump.def
Normal file
12
netware/resolve_stack_dump.def
Normal file
|
@ -0,0 +1,12 @@
|
|||
#------------------------------------------------------------------------------
|
||||
# Resolve Stack Dump
|
||||
#------------------------------------------------------------------------------
|
||||
MODULE libc.nlm
|
||||
#SCREENNAME "MySQL Stack Dump Resolve Tool"
|
||||
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
|
||||
DESCRIPTION "MySQL Stack Dump Resolve Tool"
|
||||
VERSION 4, 0
|
||||
STACKSIZE 65536
|
||||
XDCDATA ../netware/mysql.xdc
|
||||
#DEBUG
|
||||
|
|
@ -87,8 +87,8 @@ do
|
|||
fi
|
||||
done
|
||||
|
||||
for i in COPYING README Docs/INSTALL-BINARY \
|
||||
MySQLEULA.txt LICENSE.doc README.NW
|
||||
for i in COPYING COPYING.LIB README Docs/INSTALL-BINARY \
|
||||
MySQLEULA.txt LICENSE.doc README.NW
|
||||
do
|
||||
if [ -f $i ]
|
||||
then
|
||||
|
@ -153,6 +153,7 @@ done
|
|||
|
||||
if [ $BASE_SYSTEM = "netware" ] ; then
|
||||
$CP -r netware/*.pl $BASE/scripts
|
||||
$CP scripts/mysqlhotcopy $BASE/scripts/mysqlhotcopy.pl
|
||||
fi
|
||||
|
||||
for i in \
|
||||
|
@ -169,7 +170,7 @@ do
|
|||
fi
|
||||
done
|
||||
|
||||
# convert the libs to .lib for NetWare
|
||||
# convert the .a to .lib for NetWare
|
||||
if [ $BASE_SYSTEM = "netware" ] ; then
|
||||
for i in $BASE/lib/*.a
|
||||
do
|
||||
|
@ -238,6 +239,16 @@ fi
|
|||
|
||||
rm -f $BASE/bin/Makefile* $BASE/bin/*.in $BASE/bin/*.sh $BASE/bin/mysql_install_db $BASE/bin/make_binary_distribution $BASE/bin/setsomevars $BASE/support-files/Makefile* $BASE/support-files/*.sh
|
||||
|
||||
|
||||
#
|
||||
# Remove system dependent files
|
||||
#
|
||||
if [ $BASE_SYSTEM = "netware" ] ; then
|
||||
rm -f $BASE/MySQLEULA.txt
|
||||
else
|
||||
rm -f $BASE/README.NW
|
||||
fi
|
||||
|
||||
# Make safe_mysqld a symlink to mysqld_safe for backwards portability
|
||||
# To be removed in MySQL 4.1
|
||||
(cd $BASE/bin ; ln -s mysqld_safe safe_mysqld )
|
||||
|
@ -311,29 +322,47 @@ which_1 ()
|
|||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# Create the result tar file
|
||||
#
|
||||
if [ $BASE_SYSTEM != "netware" ] ; then
|
||||
|
||||
#
|
||||
# Create the result tar file
|
||||
#
|
||||
|
||||
tar=`which_1 gnutar gtar`
|
||||
if test "$?" = "1" -o "$tar" = ""
|
||||
then
|
||||
tar=tar
|
||||
fi
|
||||
|
||||
echo "Using $tar to create archive"
|
||||
cd $TMP
|
||||
|
||||
OPT=cvf
|
||||
if [ x$SILENT = x1 ] ; then
|
||||
OPT=cf
|
||||
fi
|
||||
|
||||
$tar $OPT $SOURCE/$NEW_NAME.tar $NEW_NAME
|
||||
cd $SOURCE
|
||||
echo "Compressing archive"
|
||||
rm -f $NEW_NAME.tar.gz
|
||||
gzip -9 $NEW_NAME.tar
|
||||
echo "Removing temporary directory"
|
||||
rm -r -f $BASE
|
||||
|
||||
echo "$NEW_NAME.tar.gz created"
|
||||
else
|
||||
|
||||
#
|
||||
# Create a zip file for NetWare users
|
||||
#
|
||||
|
||||
cd $TMP
|
||||
if test -e "$SOURCE/$NEW_NAME.zip"; then rm $SOURCE/$NEW_NAME.zip; fi
|
||||
zip -r $SOURCE/$NEW_NAME.zip $NEW_NAME
|
||||
echo "Removing temporary directory"
|
||||
rm -r -f $BASE
|
||||
|
||||
echo "$NEW_NAME.zip created"
|
||||
|
||||
tar=`which_1 gnutar gtar`
|
||||
if test "$?" = "1" -o "$tar" = ""
|
||||
then
|
||||
tar=tar
|
||||
fi
|
||||
|
||||
echo "Using $tar to create archive"
|
||||
cd $TMP
|
||||
|
||||
OPT=cvf
|
||||
if [ x$SILENT = x1 ] ; then
|
||||
OPT=cf
|
||||
fi
|
||||
|
||||
$tar $OPT $SOURCE/$NEW_NAME.tar $NEW_NAME
|
||||
cd $SOURCE
|
||||
echo "Compressing archive"
|
||||
gzip -9 $NEW_NAME.tar
|
||||
echo "Removing temporary directory"
|
||||
rm -r -f $BASE
|
||||
|
||||
echo "$NEW_NAME.tar.gz created"
|
||||
|
|
|
@ -7,6 +7,7 @@ use File::Basename;
|
|||
use File::Path;
|
||||
use DBI;
|
||||
use Sys::Hostname;
|
||||
use File::Copy;
|
||||
|
||||
=head1 NAME
|
||||
|
||||
|
@ -230,6 +231,10 @@ elsif (defined($tgt_name) && ($tgt_name =~ m:/: || $tgt_name eq '.')) {
|
|||
elsif ( $opt{suffix} ) {
|
||||
print "Using copy suffix '$opt{suffix}'\n" unless $opt{quiet};
|
||||
}
|
||||
elsif ( ($^O =~ m/^(NetWare)$/) && defined($tgt_name) && ($tgt_name =~ m:\\: || $tgt_name eq '.'))
|
||||
{
|
||||
$tgt_dirname = $tgt_name;
|
||||
}
|
||||
else
|
||||
{
|
||||
$tgt_name="" if (!defined($tgt_name));
|
||||
|
@ -421,8 +426,11 @@ foreach my $rdb ( @db_desc ) {
|
|||
else {
|
||||
mkdir($tgt_dirpath, 0750) or die "Can't create '$tgt_dirpath': $!\n"
|
||||
unless -d $tgt_dirpath;
|
||||
if ($^O !~ m/^(NetWare)$/)
|
||||
{
|
||||
my @f_info= stat "$datadir/$rdb->{src}";
|
||||
chown $f_info[4], $f_info[5], $tgt_dirpath;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -578,7 +586,15 @@ sub copy_files {
|
|||
my @cmd;
|
||||
print "Copying ".@$files." files...\n" unless $opt{quiet};
|
||||
|
||||
if ($method =~ /^s?cp\b/) { # cp or scp with optional flags
|
||||
if ($^O =~ m/^(NetWare)$/) # on NetWare call PERL copy (slower)
|
||||
{
|
||||
foreach my $file ( @$files )
|
||||
{
|
||||
copy($file, $target."/".basename($file));
|
||||
}
|
||||
}
|
||||
elsif ($method =~ /^s?cp\b/) # cp or scp with optional flags
|
||||
{
|
||||
my $cp = $method;
|
||||
# add option to preserve mod time etc of copied files
|
||||
# not critical, but nice to have
|
||||
|
@ -717,7 +733,7 @@ sub retire_directory {
|
|||
|
||||
if ( -d $tgt_oldpath ) {
|
||||
print "Deleting previous 'old' hotcopy directory ('$tgt_oldpath')\n" unless $opt{quiet};
|
||||
rmtree([$tgt_oldpath])
|
||||
rmtree([$tgt_oldpath],0,1);
|
||||
}
|
||||
rename($dir, $tgt_oldpath)
|
||||
or die "Can't rename $dir=>$tgt_oldpath: $!\n";
|
||||
|
|
210
sql/mysqld.cc
210
sql/mysqld.cc
|
@ -138,10 +138,27 @@ int deny_severity = LOG_WARNING;
|
|||
#include <nks/vm.h>
|
||||
#include <library.h>
|
||||
#include <monitor.h>
|
||||
#include <zOmni.h> //For NEB
|
||||
#include <neb.h> //For NEB
|
||||
#include <nebpub.h> //For NEB
|
||||
#include <zEvent.h> //For NSS event structures
|
||||
#include <zPublics.h>
|
||||
|
||||
static void *neb_consumer_id= NULL; //For storing NEB consumer id
|
||||
static char datavolname[256]= {0};
|
||||
static VolumeID_t datavolid;
|
||||
static event_handle_t eh;
|
||||
static Report_t ref;
|
||||
static void *refneb= NULL;
|
||||
static int volumeid= -1;
|
||||
|
||||
/* NEB event callback */
|
||||
unsigned long neb_event_callback(struct EventBlock *eblock);
|
||||
static void registerwithneb();
|
||||
static void getvolumename();
|
||||
static void getvolumeID(BYTE *volumeName);
|
||||
#endif /* __NETWARE__ */
|
||||
|
||||
|
||||
#ifdef _AIX41
|
||||
int initgroups(const char *,unsigned int);
|
||||
|
@ -1440,6 +1457,7 @@ static void start_signal_handler(void)
|
|||
static void check_data_home(const char *path)
|
||||
{}
|
||||
|
||||
|
||||
#elif defined(__NETWARE__)
|
||||
|
||||
// down server event callback
|
||||
|
@ -1448,27 +1466,196 @@ void mysql_down_server_cb(void *, void *)
|
|||
kill_server(0);
|
||||
}
|
||||
|
||||
|
||||
// destroy callback resources
|
||||
void mysql_cb_destroy(void *)
|
||||
{
|
||||
UnRegisterEventNotification(eh); // cleanup down event notification
|
||||
NX_UNWRAP_INTERFACE(ref);
|
||||
|
||||
/* Deregister NSS volume deactivation event */
|
||||
NX_UNWRAP_INTERFACE(refneb);
|
||||
if (neb_consumer_id)
|
||||
UnRegisterConsumer(neb_consumer_id, NULL);
|
||||
}
|
||||
|
||||
|
||||
// initialize callbacks
|
||||
void mysql_cb_init()
|
||||
{
|
||||
// register for down server event
|
||||
void *handle = getnlmhandle();
|
||||
rtag_t rt = AllocateResourceTag(handle, "MySQL Down Server Callback",
|
||||
EventSignature);
|
||||
rtag_t rt= AllocateResourceTag(handle, "MySQL Down Server Callback",
|
||||
EventSignature);
|
||||
NX_WRAP_INTERFACE((void *)mysql_down_server_cb, 2, (void **)&ref);
|
||||
eh = RegisterForEventNotification(rt, EVENT_DOWN_SERVER,
|
||||
EVENT_PRIORITY_APPLICATION,
|
||||
NULL, ref, NULL);
|
||||
eh= RegisterForEventNotification(rt, EVENT_PRE_DOWN_SERVER,
|
||||
EVENT_PRIORITY_APPLICATION,
|
||||
NULL, ref, NULL);
|
||||
|
||||
/*
|
||||
Register for volume deactivation event
|
||||
Wrap the callback function, as it is called by non-LibC thread
|
||||
*/
|
||||
(void)NX_WRAP_INTERFACE(neb_event_callback, 1, &refneb);
|
||||
registerwithneb();
|
||||
|
||||
NXVmRegisterExitHandler(mysql_cb_destroy, NULL); // clean-up
|
||||
}
|
||||
|
||||
|
||||
/ *To get the name of the NetWare volume having MySQL data folder */
|
||||
|
||||
static void getvolumename()
|
||||
{
|
||||
char *p;
|
||||
/*
|
||||
We assume that data path is already set.
|
||||
If not it won't come here. Terminate after volume name
|
||||
*/
|
||||
if ((p= strchr(mysql_real_data_home, ':')))
|
||||
strmake(datavolname, mysql_real_data_home,
|
||||
(uint) (p - mysql_real_data_home));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Registering with NEB for NSS Volume Deactivation event
|
||||
*/
|
||||
|
||||
static void registerwithneb()
|
||||
{
|
||||
|
||||
ConsumerRegistrationInfo reg_info;
|
||||
|
||||
/* Clear NEB registration structure */
|
||||
bzero((char*) ®_info, sizeof(struct ConsumerRegistrationInfo));
|
||||
|
||||
/* Fill the NEB consumer information structure */
|
||||
reg_info.CRIVersion= 1; // NEB version
|
||||
/* NEB Consumer name */
|
||||
reg_info.CRIConsumerName= (BYTE *) "MySQL Database Server";
|
||||
/* Event of interest */
|
||||
reg_info.CRIEventName= (BYTE *) "NSS.ChangeVolState.Enter";
|
||||
reg_info.CRIUserParameter= NULL; // Consumer Info
|
||||
reg_info.CRIEventFlags= 0; // Event flags
|
||||
/* Consumer NLM handle */
|
||||
reg_info.CRIOwnerID= (LoadDefinitionStructure *)getnlmhandle();
|
||||
reg_info.CRIConsumerESR= NULL; // No consumer ESR required
|
||||
reg_info.CRISecurityToken= 0; // No security token for the event
|
||||
reg_info.CRIConsumerFlags= 0; // SMP_ENABLED_BIT;
|
||||
reg_info.CRIFilterName= 0; // No event filtering
|
||||
reg_info.CRIFilterDataLength= 0; // No filtering data
|
||||
reg_info.CRIFilterData= 0; // No filtering data
|
||||
/* Callback function for the event */
|
||||
(void *)reg_info.CRIConsumerCallback= (void *) refneb;
|
||||
reg_info.CRIOrder= 0; // Event callback order
|
||||
reg_info.CRIConsumerType= CHECK_CONSUMER; // Consumer type
|
||||
|
||||
/* Register for the event with NEB */
|
||||
if (RegisterConsumer(®_info))
|
||||
{
|
||||
consoleprintf("Failed to register for NSS Volume Deactivation event \n");
|
||||
return;
|
||||
}
|
||||
/* This ID is required for deregistration */
|
||||
neb_consumer_id= reg_info.CRIConsumerID;
|
||||
|
||||
/* Get MySQL data volume name, stored in global variable datavolname */
|
||||
getvolumename();
|
||||
|
||||
/*
|
||||
Get the NSS volume ID of the MySQL Data volume.
|
||||
Volume ID is stored in a global variable
|
||||
*/
|
||||
getvolumeID((BYTE*) datavolname);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Callback for NSS Volume Deactivation event
|
||||
*/
|
||||
ulong neb_event_callback(struct EventBlock *eblock)
|
||||
{
|
||||
EventChangeVolStateEnter_s *voldata;
|
||||
voldata= (EventChangeVolStateEnter_s *)eblock->EBEventData;
|
||||
|
||||
/* Deactivation of a volume */
|
||||
if ((voldata->oldState == 6 && voldata->newState == 2))
|
||||
{
|
||||
/*
|
||||
Ensure that we bring down MySQL server only for MySQL data
|
||||
volume deactivation
|
||||
*/
|
||||
if (!memcmp(&voldata->volID, &datavolid, sizeof(VolumeID_t)))
|
||||
{
|
||||
consoleprintf("MySQL data volume is deactivated, shutting down MySQL Server \n");
|
||||
kill_server(0);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Function to get NSS volume ID of the MySQL data
|
||||
*/
|
||||
|
||||
#define ADMIN_VOL_PATH "_ADMIN:/Volumes/"
|
||||
|
||||
staticvoid getvolumeID(BYTE *volumeName)
|
||||
{
|
||||
char path[zMAX_FULL_NAME];
|
||||
Key_t rootKey= 0, fileKey= 0;
|
||||
QUAD getInfoMask;
|
||||
zInfo_s info;
|
||||
STATUS status;
|
||||
|
||||
/* Get the root key */
|
||||
if ((status= zRootKey(0, &rootKey)) != zOK)
|
||||
{
|
||||
consoleprintf("\nGetNSSVolumeProperties - Failed to get root key, status: %d\n.", (int) status);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/*
|
||||
Get the file key. This is the key to the volume object in the
|
||||
NSS admin volumes directory.
|
||||
*/
|
||||
|
||||
strxmov(path, (const char *) ADMIN_VOL_PATH, (const char *) volumeName,
|
||||
NullS);
|
||||
if ((status= zOpen(rootKey, zNSS_TASK, zNSPACE_LONG|zMODE_UTF8,
|
||||
(BYTE *) path, zRR_READ_ACCESS, &fileKey)) != zOK)
|
||||
{
|
||||
consoleprintf("\nGetNSSVolumeProperties - Failed to get file, status: %d\n.", (int) status);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
getInfoMask= zGET_IDS | zGET_VOLUME_INFO ;
|
||||
if ((status= zGetInfo(fileKey, getInfoMask, sizeof(info),
|
||||
zINFO_VERSION_A, &info)) != zOK)
|
||||
{
|
||||
consoleprintf("\nGetNSSVolumeProperties - Failed in zGetInfo, status: %d\n.", (int) status);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Copy the data to global variable */
|
||||
datavolid.timeLow= info.vol.volumeID.timeLow;
|
||||
datavolid.timeMid= info.vol.volumeID.timeMid;
|
||||
datavolid.timeHighAndVersion= info.vol.volumeID.timeHighAndVersion;
|
||||
datavolid.clockSeqHighAndReserved= info.vol.volumeID.clockSeqHighAndReserved;
|
||||
datavolid.clockSeqLow= info.vol.volumeID.clockSeqLow;
|
||||
/* This is guranteed to be 6-byte length (but sizeof() would be better) */
|
||||
memcpy(datavolid.node, info.vol.volumeID.node, (unsigned int) 6);
|
||||
|
||||
exit:
|
||||
if (rootKey)
|
||||
zClose(rootKey);
|
||||
if (fileKey)
|
||||
zClose(fileKey);
|
||||
}
|
||||
|
||||
|
||||
static void init_signals(void)
|
||||
{
|
||||
int signals[] = {SIGINT,SIGILL,SIGFPE,SIGSEGV,SIGTERM,SIGABRT};
|
||||
|
@ -1478,6 +1665,7 @@ static void init_signals(void)
|
|||
mysql_cb_init(); // initialize callbacks
|
||||
}
|
||||
|
||||
|
||||
static void start_signal_handler(void)
|
||||
{
|
||||
// Save vm id of this process
|
||||
|
@ -1487,7 +1675,12 @@ static void start_signal_handler(void)
|
|||
}
|
||||
|
||||
|
||||
/* Warn if the data is on a Traditional volume */
|
||||
/*
|
||||
Warn if the data is on a Traditional volume
|
||||
|
||||
NOTE
|
||||
Already done by mysqld_safe
|
||||
*/
|
||||
|
||||
static void check_data_home(const char *path)
|
||||
{
|
||||
|
@ -1933,6 +2126,7 @@ extern "C" pthread_handler_decl(handle_shutdown,arg)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int STDCALL handle_kill(ulong ctrl_type)
|
||||
{
|
||||
if (ctrl_type == CTRL_CLOSE_EVENT ||
|
||||
|
@ -5443,6 +5637,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
opt_specialflag|=SPECIAL_NO_RESOLVE;
|
||||
break;
|
||||
case (int) OPT_SKIP_NETWORKING:
|
||||
#if defined(__NETWARE__)
|
||||
sql_perror("Can't start server: skip-networking option is currently not supported on NetWare");
|
||||
exit(1);
|
||||
#endif
|
||||
opt_disable_networking=1;
|
||||
mysqld_port=0;
|
||||
break;
|
||||
|
|
|
@ -57,9 +57,9 @@ Long data handling:
|
|||
|
||||
- Server gets the long data in pieces with command type 'COM_LONG_DATA'.
|
||||
- The packet recieved will have the format as:
|
||||
[COM_LONG_DATA:1][STMT_ID:4][parameter_number:2][type:2][data]
|
||||
- Checks if the type is specified by client, and if yes reads the type,
|
||||
and stores the data in that format.
|
||||
[COM_LONG_DATA:1][STMT_ID:4][parameter_number:2][data]
|
||||
- data from the packet is appended to long data value buffer for this
|
||||
placeholder.
|
||||
- It's up to the client to check for read data ended. The server doesn't
|
||||
care; and also server doesn't notify to the client that it got the
|
||||
data or not; if there is any error; then during execute; the error
|
||||
|
|
|
@ -9261,7 +9261,9 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
|
|||
{
|
||||
if (tmp1.length())
|
||||
tmp1.append(',');
|
||||
tmp1.append(table->key_info[j].name, 0, system_charset_info);
|
||||
tmp1.append(table->key_info[j].name,
|
||||
strlen(table->key_info[j].name),
|
||||
system_charset_info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9281,7 +9283,8 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
|
|||
{
|
||||
if (tmp2.length())
|
||||
tmp2.append(',');
|
||||
tmp2.append((*ref)->name(), 0, system_charset_info);
|
||||
tmp2.append((*ref)->name(), strlen((*ref)->name()),
|
||||
system_charset_info);
|
||||
}
|
||||
item_list.push_back(new Item_string(tmp2.ptr(),tmp2.length(),cs));
|
||||
}
|
||||
|
|
|
@ -1207,7 +1207,7 @@ store_create_info(THD *thd, TABLE *table, String *packet)
|
|||
{
|
||||
List<Item> field_list;
|
||||
char tmp[MAX_FIELD_WIDTH], *for_str, buff[128], *end, *alias;
|
||||
String type(tmp, sizeof(tmp),&my_charset_bin);
|
||||
String type(tmp, sizeof(tmp), system_charset_info);
|
||||
Field **ptr,*field;
|
||||
uint primary_key;
|
||||
KEY *key_info;
|
||||
|
@ -1254,7 +1254,7 @@ store_create_info(THD *thd, TABLE *table, String *packet)
|
|||
type.set(tmp, sizeof(tmp),&my_charset_bin);
|
||||
|
||||
field->sql_type(type);
|
||||
packet->append(type.ptr(),type.length());
|
||||
packet->append(type.ptr(), type.length(), system_charset_info);
|
||||
|
||||
if (field->has_charset() && !limited_mysql_mode && !foreign_db_mode)
|
||||
{
|
||||
|
@ -1313,7 +1313,7 @@ store_create_info(THD *thd, TABLE *table, String *packet)
|
|||
else if (field->maybe_null())
|
||||
packet->append("NULL", 4); // Null as default
|
||||
else
|
||||
packet->append(tmp,0);
|
||||
packet->append(tmp);
|
||||
}
|
||||
|
||||
if (!foreign_db_mode && !limited_mysql_mode &&
|
||||
|
|
|
@ -416,16 +416,18 @@ bool String::append(const String &s)
|
|||
|
||||
|
||||
/*
|
||||
Append a latin1 string to the a string of the current character set
|
||||
Append an ASCII string to the a string of the current character set
|
||||
*/
|
||||
|
||||
|
||||
bool String::append(const char *s,uint32 arg_length)
|
||||
{
|
||||
if (!arg_length) // Default argument
|
||||
if (!(arg_length= (uint32) strlen(s)))
|
||||
return FALSE;
|
||||
if (str_charset->mbmaxlen > 1)
|
||||
if (!arg_length)
|
||||
return FALSE;
|
||||
|
||||
/*
|
||||
For an ASCII incompatible string, e.g. UCS-2, we need to convert
|
||||
*/
|
||||
if (str_charset->mbminlen > 1)
|
||||
{
|
||||
uint32 add_length=arg_length * str_charset->mbmaxlen;
|
||||
if (realloc(str_length+ add_length))
|
||||
|
@ -434,6 +436,10 @@ bool String::append(const char *s,uint32 arg_length)
|
|||
s, arg_length, &my_charset_latin1);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
For an ASCII compatinble string we can just append.
|
||||
*/
|
||||
if (realloc(str_length+arg_length))
|
||||
return TRUE;
|
||||
memcpy(Ptr+str_length,s,arg_length);
|
||||
|
@ -442,30 +448,37 @@ bool String::append(const char *s,uint32 arg_length)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
Append a 0-terminated ASCII string
|
||||
*/
|
||||
|
||||
bool String::append(const char *s)
|
||||
{
|
||||
return append(s, strlen(s));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Append a string in the given charset to the string
|
||||
with character set recoding
|
||||
*/
|
||||
|
||||
|
||||
bool String::append(const char *s,uint32 arg_length, CHARSET_INFO *cs)
|
||||
{
|
||||
uint32 dummy_offset;
|
||||
uint32 add_length;
|
||||
|
||||
if (!arg_length && !(arg_length= (uint32)strlen(s)))
|
||||
return FALSE;
|
||||
|
||||
add_length= arg_length * str_charset->mbmaxlen;
|
||||
if (realloc(str_length + add_length))
|
||||
return TRUE;
|
||||
|
||||
if (needs_conversion(arg_length, cs, str_charset, &dummy_offset))
|
||||
{
|
||||
uint32 add_length= arg_length / cs->mbminlen * str_charset->mbmaxlen;
|
||||
if (realloc(str_length + add_length))
|
||||
return TRUE;
|
||||
str_length+= copy_and_convert(Ptr+str_length, add_length, str_charset,
|
||||
s, arg_length, cs);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (realloc(str_length + arg_length))
|
||||
return TRUE;
|
||||
memcpy(Ptr + str_length, s, arg_length);
|
||||
str_length+= arg_length;
|
||||
}
|
||||
|
@ -556,40 +569,6 @@ skip:
|
|||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
Search after a string without regarding to case
|
||||
This needs to be replaced when we have character sets per string
|
||||
*/
|
||||
|
||||
int String::strstr_case(const String &s,uint32 offset)
|
||||
{
|
||||
if (s.length()+offset <= str_length)
|
||||
{
|
||||
if (!s.length())
|
||||
return ((int) offset); // Empty string is always found
|
||||
|
||||
register const char *str = Ptr+offset;
|
||||
register const char *search=s.ptr();
|
||||
const char *end=Ptr+str_length-s.length()+1;
|
||||
const char *search_end=s.ptr()+s.length();
|
||||
skip:
|
||||
while (str != end)
|
||||
{
|
||||
if (str_charset->sort_order[*str++] == str_charset->sort_order[*search])
|
||||
{
|
||||
register char *i,*j;
|
||||
i=(char*) str; j=(char*) search+1;
|
||||
while (j != search_end)
|
||||
if (str_charset->sort_order[*i++] !=
|
||||
str_charset->sort_order[*j++])
|
||||
goto skip;
|
||||
return (int) (str-Ptr) -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
** Search string from end. Offset is offset to the end of string
|
||||
*/
|
||||
|
|
|
@ -190,13 +190,13 @@ public:
|
|||
bool copy(const char*s,uint32 arg_length, CHARSET_INFO *csfrom,
|
||||
CHARSET_INFO *csto);
|
||||
bool append(const String &s);
|
||||
bool append(const char *s,uint32 arg_length=0);
|
||||
bool append(const char *s);
|
||||
bool append(const char *s,uint32 arg_length);
|
||||
bool append(const char *s,uint32 arg_length, CHARSET_INFO *cs);
|
||||
bool append(IO_CACHE* file, uint32 arg_length);
|
||||
bool append_with_prefill(const char *s, uint32 arg_length,
|
||||
uint32 full_length, char fill_char);
|
||||
int strstr(const String &search,uint32 offset=0); // Returns offset to substring or -1
|
||||
int strstr_case(const String &s,uint32 offset=0);
|
||||
int strrstr(const String &search,uint32 offset=0); // Returns offset to substring or -1
|
||||
bool replace(uint32 offset,uint32 arg_length,const char *to,uint32 length);
|
||||
bool replace(uint32 offset,uint32 arg_length,const String &to);
|
||||
|
|
|
@ -6317,6 +6317,7 @@ CHARSET_INFO my_charset_big5_chinese_ci=
|
|||
to_lower_big5,
|
||||
to_upper_big5,
|
||||
sort_order_big5,
|
||||
NULL, /* sort_order_big*/
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"",
|
||||
|
@ -6342,6 +6343,7 @@ CHARSET_INFO my_charset_big5_bin=
|
|||
to_lower_big5,
|
||||
to_upper_big5,
|
||||
sort_order_big5,
|
||||
NULL, /* sort_order_big*/
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"",
|
||||
|
|
|
@ -384,7 +384,9 @@ CHARSET_INFO my_charset_bin =
|
|||
bin_char_array, /* sort_order */
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"","",
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
1, /* mbminlen */
|
||||
1, /* mbmaxlen */
|
||||
|
|
|
@ -593,6 +593,7 @@ CHARSET_INFO my_charset_latin2_czech_ci =
|
|||
to_lower_czech,
|
||||
to_upper_czech,
|
||||
sort_order_czech,
|
||||
NULL, /* sort_order_big*/
|
||||
tab_8859_2_uni, /* tab_to_uni */
|
||||
idx_uni_8859_2, /* tab_from_uni */
|
||||
"","",
|
||||
|
|
|
@ -8685,6 +8685,7 @@ CHARSET_INFO my_charset_euckr_korean_ci=
|
|||
to_lower_euc_kr,
|
||||
to_upper_euc_kr,
|
||||
sort_order_euc_kr,
|
||||
NULL, /* sort_order_big*/
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"",
|
||||
|
@ -8710,6 +8711,7 @@ CHARSET_INFO my_charset_euckr_bin=
|
|||
to_lower_euc_kr,
|
||||
to_upper_euc_kr,
|
||||
sort_order_euc_kr,
|
||||
NULL, /* sort_order_big*/
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"",
|
||||
|
|
|
@ -28,6 +28,7 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL, /* sort_order_big*/
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"","",
|
||||
|
|
|
@ -5738,6 +5738,7 @@ CHARSET_INFO my_charset_gb2312_chinese_ci=
|
|||
sort_order_gb2312,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
@ -5762,6 +5763,7 @@ CHARSET_INFO my_charset_gb2312_bin=
|
|||
sort_order_gb2312,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
|
|
@ -9968,6 +9968,7 @@ CHARSET_INFO my_charset_gbk_chinese_ci=
|
|||
sort_order_gbk,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
@ -9992,6 +9993,7 @@ CHARSET_INFO my_charset_gbk_bin=
|
|||
sort_order_gbk,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
|
|
@ -416,6 +416,7 @@ CHARSET_INFO my_charset_latin1=
|
|||
to_lower_latin1,
|
||||
to_upper_latin1,
|
||||
sort_order_latin1,
|
||||
NULL, /* sort_order_big*/
|
||||
cs_to_uni, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"","",
|
||||
|
@ -693,6 +694,7 @@ CHARSET_INFO my_charset_latin1_german2_ci=
|
|||
to_lower_latin1,
|
||||
to_upper_latin1,
|
||||
sort_order_latin1_de,
|
||||
NULL, /* sort_order_big*/
|
||||
cs_to_uni, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"","",
|
||||
|
@ -717,6 +719,7 @@ CHARSET_INFO my_charset_latin1_bin=
|
|||
to_lower_latin1,
|
||||
to_upper_latin1,
|
||||
sort_order_latin1_de,
|
||||
NULL, /* sort_order_big*/
|
||||
cs_to_uni, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"",
|
||||
|
|
|
@ -4585,6 +4585,7 @@ CHARSET_INFO my_charset_sjis_japanese_ci=
|
|||
sort_order_sjis,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
@ -4609,6 +4610,7 @@ CHARSET_INFO my_charset_sjis_bin=
|
|||
sort_order_sjis,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
|
|
@ -957,6 +957,7 @@ CHARSET_INFO my_charset_tis620_thai_ci=
|
|||
sort_order_tis620,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
4, /* strxfrm_multiply */
|
||||
|
@ -981,6 +982,7 @@ CHARSET_INFO my_charset_tis620_bin=
|
|||
sort_order_tis620,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
|
|
@ -6436,7 +6436,7 @@ uint16 page0FFdata[]= { /* FF00 (3 weights per char) */
|
|||
0x0DC5,0x0000,0x0000, 0x0DC6,0x0000,0x0000, 0xFBC1,0xFFFE,0x0000,
|
||||
0xFBC1,0xFFFF,0x0000 };
|
||||
|
||||
uchar ucal[256]={
|
||||
uchar uca_length[256]={
|
||||
4,3,3,4,3,3,3,3,0,3,3,3,3,3,3,3,
|
||||
3,3,3,3,3,2,3,3,3,3,0,0,0,3,3,3,
|
||||
5,5,4,3,5,2,3,3,2,2,5,3,0,0,3,3,
|
||||
|
@ -6454,7 +6454,7 @@ uchar ucal[256]={
|
|||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,3,3,4,3,9,3,3
|
||||
};
|
||||
uint16 *ucaw[256]={
|
||||
uint16 *uca_weight[256]={
|
||||
page000data,page001data,page002data,page003data,
|
||||
page004data,page005data,page006data,page007data,
|
||||
NULL ,page009data,page00Adata,page00Bdata,
|
||||
|
@ -6533,6 +6533,8 @@ typedef struct my_uca_scanner_st
|
|||
const uint16 *wbeg; /* Beginning of the current weight string */
|
||||
const uchar *sbeg; /* Beginning of the input string */
|
||||
const uchar *send; /* End of the input string */
|
||||
uchar *uca_length;
|
||||
uint16 **uca_weight;
|
||||
uint16 implicit[2];
|
||||
int page;
|
||||
int code;
|
||||
|
@ -6564,6 +6566,8 @@ static void my_uca_scanner_init(my_uca_scanner *scanner,
|
|||
scanner->sbeg= str;
|
||||
scanner->send= str + length - 2;
|
||||
scanner->wbeg= nochar;
|
||||
scanner->uca_length= cs->sort_order;
|
||||
scanner->uca_weight= cs->sort_order_big;
|
||||
}
|
||||
|
||||
|
||||
|
@ -6620,6 +6624,9 @@ static int my_uca_scanner_next(my_uca_scanner *scanner)
|
|||
|
||||
do
|
||||
{
|
||||
uint16 **ucaw= scanner->uca_weight;
|
||||
uchar *ucal= scanner->uca_length;
|
||||
|
||||
if (scanner->sbeg > scanner->send)
|
||||
return -1;
|
||||
|
||||
|
@ -6866,10 +6873,12 @@ static int my_strnxfrm_uca(CHARSET_INFO *cs,
|
|||
This fact allows us to use memcmp() safely, on both
|
||||
little-endian and big-endian machines.
|
||||
*/
|
||||
static int my_uca_charcmp(my_wc_t wc1, my_wc_t wc2)
|
||||
static int my_uca_charcmp(CHARSET_INFO *cs, my_wc_t wc1, my_wc_t wc2)
|
||||
{
|
||||
size_t page1= wc1 >> MY_UCA_PSHIFT;
|
||||
size_t page2= wc2 >> MY_UCA_PSHIFT;
|
||||
uchar *ucal= cs->sort_order;
|
||||
uint16 **ucaw= cs->sort_order_big;
|
||||
size_t length1= ucal[page1];
|
||||
size_t length2= ucal[page2];
|
||||
uint16 *weight1= ucaw[page1] + (wc1 & MY_UCA_CMASK) * ucal[page1];
|
||||
|
@ -6943,7 +6952,7 @@ int my_wildcmp_uca(CHARSET_INFO *cs,
|
|||
}
|
||||
else
|
||||
{
|
||||
if (my_uca_charcmp(s_wc,w_wc))
|
||||
if (my_uca_charcmp(cs,s_wc,w_wc))
|
||||
return 1;
|
||||
}
|
||||
if (wildstr == wildend)
|
||||
|
@ -7006,7 +7015,7 @@ int my_wildcmp_uca(CHARSET_INFO *cs,
|
|||
(const uchar*)str_end)) <= 0)
|
||||
return 1;
|
||||
|
||||
if (!my_uca_charcmp(s_wc,w_wc))
|
||||
if (!my_uca_charcmp(cs,s_wc,w_wc))
|
||||
break;
|
||||
str+= scan;
|
||||
}
|
||||
|
@ -7039,4 +7048,30 @@ MY_COLLATION_HANDLER my_collation_ucs2_uca_handler =
|
|||
my_hash_sort_uca
|
||||
};
|
||||
|
||||
CHARSET_INFO my_charset_ucs2_general_uca=
|
||||
{
|
||||
45,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONTEXT,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_general_uca", /* name */
|
||||
"", /* comment */
|
||||
NULL, /* ctype */
|
||||
NULL, /* to_lower */
|
||||
NULL, /* to_upper */
|
||||
uca_length, /* sort_order */
|
||||
uca_weight, /* sort_order_big*/
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"",
|
||||
"",
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
&my_charset_ucs2_handler,
|
||||
&my_collation_ucs2_uca_handler
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1397,7 +1397,7 @@ static MY_COLLATION_HANDLER my_collation_ucs2_bin_handler =
|
|||
};
|
||||
|
||||
|
||||
static MY_CHARSET_HANDLER my_charset_ucs2_handler=
|
||||
MY_CHARSET_HANDLER my_charset_ucs2_handler=
|
||||
{
|
||||
my_ismbchar_ucs2, /* ismbchar */
|
||||
my_mbcharlen_ucs2, /* mbcharlen */
|
||||
|
@ -1437,6 +1437,7 @@ CHARSET_INFO my_charset_ucs2_general_ci=
|
|||
to_upper_ucs2, /* sort_order */
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
@ -1448,30 +1449,6 @@ CHARSET_INFO my_charset_ucs2_general_ci=
|
|||
&my_collation_ucs2_general_ci_handler
|
||||
};
|
||||
|
||||
CHARSET_INFO my_charset_ucs2_general_uca=
|
||||
{
|
||||
45,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONTEXT,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_general_uca", /* name */
|
||||
"", /* comment */
|
||||
ctype_ucs2, /* ctype */
|
||||
to_lower_ucs2, /* to_lower */
|
||||
to_upper_ucs2, /* to_upper */
|
||||
to_upper_ucs2, /* sort_order */
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"",
|
||||
"",
|
||||
8, /* strxfrm_multiply */
|
||||
2, /* mbminlen */
|
||||
2, /* mbmaxlen */
|
||||
9, /* min_sort_char */
|
||||
0xFFFF, /* max_sort_char */
|
||||
&my_charset_ucs2_handler,
|
||||
&my_collation_ucs2_uca_handler
|
||||
};
|
||||
|
||||
CHARSET_INFO my_charset_ucs2_bin=
|
||||
{
|
||||
90,0,0, /* number */
|
||||
|
@ -1483,6 +1460,7 @@ CHARSET_INFO my_charset_ucs2_bin=
|
|||
to_lower_ucs2, /* to_lower */
|
||||
to_upper_ucs2, /* to_upper */
|
||||
to_upper_ucs2, /* sort_order */
|
||||
NULL, /* sort_order_big*/
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"",
|
||||
|
|
|
@ -8474,7 +8474,9 @@ CHARSET_INFO my_charset_ujis_japanese_ci=
|
|||
sort_order_ujis,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"","",
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
1, /* mbminlen */
|
||||
3, /* mbmaxlen */
|
||||
|
@ -8498,7 +8500,9 @@ CHARSET_INFO my_charset_ujis_bin=
|
|||
sort_order_ujis,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
"","",
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
1, /* mbminlen */
|
||||
3, /* mbmaxlen */
|
||||
|
|
|
@ -2090,6 +2090,7 @@ CHARSET_INFO my_charset_utf8_general_ci=
|
|||
to_upper_utf8, /* sort_order */
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
@ -2115,6 +2116,7 @@ CHARSET_INFO my_charset_utf8_bin=
|
|||
to_upper_utf8, /* sort_order */
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
NULL, /* sort_order_big*/
|
||||
"",
|
||||
"",
|
||||
1, /* strxfrm_multiply */
|
||||
|
|
|
@ -627,6 +627,7 @@ CHARSET_INFO my_charset_cp1250_czech_ci =
|
|||
to_lower_win1250ch,
|
||||
to_upper_win1250ch,
|
||||
sort_order_win1250ch,
|
||||
NULL, /* sort_order_big*/
|
||||
tab_cp1250_uni, /* tab_to_uni */
|
||||
idx_uni_cp1250, /* tab_from_uni */
|
||||
"","",
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
Sasha Pachev <sasha@mysql.com>
|
||||
*/
|
||||
|
||||
#ifndef __NETWARE__
|
||||
|
||||
#include <my_global.h>
|
||||
#include <my_pthread.h>
|
||||
#include <mysql.h>
|
||||
|
@ -1850,3 +1852,16 @@ int main(int argc, char** argv)
|
|||
else
|
||||
return daemonize();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
fprintf(stderr,"This tool has not been ported to NetWare\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* __NETWARE__ */
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#include <my_global.h>
|
||||
#ifdef HAVE_OPENSSL
|
||||
#if defined(HAVE_OPENSSL) && !defined(__NETWARE__)
|
||||
#include <my_sys.h>
|
||||
#include <m_string.h>
|
||||
#include <m_ctype.h>
|
||||
|
|
25
vio/viossl.c
25
vio/viossl.c
|
@ -25,6 +25,31 @@
|
|||
|
||||
#ifdef HAVE_OPENSSL
|
||||
|
||||
#ifdef __NETWARE__
|
||||
/*
|
||||
The default OpenSSL implementation on NetWare uses WinSock.
|
||||
This code allows us to use the BSD sockets.
|
||||
*/
|
||||
|
||||
static int SSL_set_fd_bsd(SSL *s, int fd)
|
||||
{
|
||||
int result= -1;
|
||||
BIO_METHOD *BIO_s_bsdsocket();
|
||||
BIO *bio;
|
||||
|
||||
if ((bio= BIO_new(BIO_s_bsdsocket())))
|
||||
{
|
||||
result= BIO_set_fd(bio, fd, BIO_NOCLOSE);
|
||||
SSL_set_bio(s, bio, bio);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#define SSL_set_fd(A, B) SSL_set_fd_bsd((A), (B))
|
||||
|
||||
#endif /* __NETWARE__ */
|
||||
|
||||
|
||||
static void
|
||||
report_errors()
|
||||
{
|
||||
|
|
|
@ -172,6 +172,35 @@ vio_verify_callback(int ok, X509_STORE_CTX *ctx)
|
|||
}
|
||||
|
||||
|
||||
#ifdef __NETWARE__
|
||||
|
||||
/* NetWare SSL cleanup */
|
||||
void netware_ssl_cleanup()
|
||||
{
|
||||
/* free memory from SSL_library_init() */
|
||||
EVP_cleanup();
|
||||
|
||||
/* free global X509 method */
|
||||
X509_STORE_method_cleanup();
|
||||
|
||||
/* free the thread_hash error table */
|
||||
ERR_free_state_table();
|
||||
}
|
||||
|
||||
|
||||
/* NetWare SSL initialization */
|
||||
static void netware_ssl_init()
|
||||
{
|
||||
/* initialize OpenSSL library */
|
||||
SSL_library_init();
|
||||
|
||||
/* cleanup OpenSSL library */
|
||||
NXVmRegisterExitHandler(netware_ssl_cleanup, NULL);
|
||||
}
|
||||
|
||||
#endif /* __NETWARE__ */
|
||||
|
||||
|
||||
/************************ VioSSLConnectorFd **********************************/
|
||||
/*
|
||||
TODO:
|
||||
|
@ -188,7 +217,7 @@ new_VioSSLConnectorFd(const char* key_file,
|
|||
int verify = SSL_VERIFY_NONE;
|
||||
struct st_VioSSLConnectorFd* ptr;
|
||||
int result;
|
||||
DH *dh=NULL;
|
||||
DH *dh;
|
||||
DBUG_ENTER("new_VioSSLConnectorFd");
|
||||
DBUG_PRINT("enter",
|
||||
("key_file=%s, cert_file=%s, ca_path=%s, ca_file=%s, cipher=%s",
|
||||
|
@ -202,6 +231,10 @@ new_VioSSLConnectorFd(const char* key_file,
|
|||
ptr->ssl_method= 0;
|
||||
/* FIXME: constants! */
|
||||
|
||||
#ifdef __NETWARE__
|
||||
netware_ssl_init();
|
||||
#endif
|
||||
|
||||
if (!ssl_algorithms_added)
|
||||
{
|
||||
DBUG_PRINT("info", ("todo: OpenSSL_add_all_algorithms()"));
|
||||
|
@ -279,7 +312,7 @@ new_VioSSLAcceptorFd(const char *key_file,
|
|||
SSL_VERIFY_CLIENT_ONCE);
|
||||
struct st_VioSSLAcceptorFd* ptr;
|
||||
int result;
|
||||
DH *dh=NULL;
|
||||
DH *dh;
|
||||
DBUG_ENTER("new_VioSSLAcceptorFd");
|
||||
DBUG_PRINT("enter",
|
||||
("key_file=%s, cert_file=%s, ca_path=%s, ca_file=%s, cipher=%s",
|
||||
|
@ -292,6 +325,10 @@ new_VioSSLAcceptorFd(const char *key_file,
|
|||
/* FIXME: constants! */
|
||||
ptr->session_id_context= ptr;
|
||||
|
||||
#ifdef __NETWARE__
|
||||
netware_ssl_init();
|
||||
#endif
|
||||
|
||||
if (!ssl_algorithms_added)
|
||||
{
|
||||
DBUG_PRINT("info", ("todo: OpenSSL_add_all_algorithms()"));
|
||||
|
|
Loading…
Reference in a new issue