Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
cdb1474d
Commit
cdb1474d
authored
Jun 02, 2005
by
serg@serg.mylan
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal:/home/bk/mysql-5.0
into serg.mylan:/usr/home/serg/Abk/mysql-5.0
parents
4df47b9e
49e5fafe
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
179 additions
and
52 deletions
+179
-52
VC++Files/client/mysql.dsp
VC++Files/client/mysql.dsp
+4
-4
VC++Files/client/mysqladmin.dsp
VC++Files/client/mysqladmin.dsp
+3
-3
VC++Files/client/mysqlimport.dsp
VC++Files/client/mysqlimport.dsp
+4
-4
VC++Files/client/mysqlshow.dsp
VC++Files/client/mysqlshow.dsp
+4
-4
VC++Files/libmysql/libmysql.dsp
VC++Files/libmysql/libmysql.dsp
+2
-2
VC++Files/mysql.dsw
VC++Files/mysql.dsw
+12
-0
include/config-win.h
include/config-win.h
+1
-0
mysql-test/r/func_if.result
mysql-test/r/func_if.result
+17
-0
mysql-test/r/variables.result
mysql-test/r/variables.result
+6
-0
mysql-test/t/func_if.test
mysql-test/t/func_if.test
+14
-0
mysql-test/t/variables.test
mysql-test/t/variables.test
+7
-0
mysys/mf_keycache.c
mysys/mf_keycache.c
+91
-30
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+8
-1
sql/item_func.cc
sql/item_func.cc
+1
-1
sql/set_var.cc
sql/set_var.cc
+2
-1
sql/sql_base.cc
sql/sql_base.cc
+3
-2
No files found.
VC++Files/client/mysql.dsp
View file @
cdb1474d
...
@@ -52,7 +52,7 @@ BSC32=bscmake.exe
...
@@ -52,7 +52,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:console /machine:I386
# 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 /subsystem:console /machine:I386
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\"
# SUBTRACT LINK32 /incremental:yes
# SUBTRACT LINK32 /incremental:yes
!ELSEIF "$(CFG)" == "mysql - Win32 Debug"
!ELSEIF "$(CFG)" == "mysql - Win32 Debug"
...
@@ -78,7 +78,7 @@ BSC32=bscmake.exe
...
@@ -78,7 +78,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# 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 /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysql.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysql.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
!ELSEIF "$(CFG)" == "mysql - Win32 classic"
!ELSEIF "$(CFG)" == "mysql - Win32 classic"
...
@@ -104,9 +104,9 @@ BSC32=bscmake.exe
...
@@ -104,9 +104,9 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
LINK32=xilink6.exe
# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\"
# ADD BASE LINK32 mysqlclient.lib
mysys.lib
wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_release/mysql.exe" /libpath:"..\lib_release\\"
# SUBTRACT BASE LINK32 /incremental:yes
# SUBTRACT BASE LINK32 /incremental:yes
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_classic/mysql.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /debug /machine:I386 /out:"../client_classic/mysql.exe" /libpath:"..\lib_release\\"
# SUBTRACT LINK32 /incremental:yes
# SUBTRACT LINK32 /incremental:yes
!ENDIF
!ENDIF
...
...
VC++Files/client/mysqladmin.dsp
View file @
cdb1474d
...
@@ -52,7 +52,7 @@ BSC32=bscmake.exe
...
@@ -52,7 +52,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:console /machine:I386
# 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 /subsystem:console /machine:I386
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\"
!ELSEIF "$(CFG)" == "mysqladmin - Win32 Debug"
!ELSEIF "$(CFG)" == "mysqladmin - Win32 Debug"
...
@@ -77,7 +77,7 @@ BSC32=bscmake.exe
...
@@ -77,7 +77,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# 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 /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqladmin.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqladmin.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
!ELSEIF "$(CFG)" == "mysqladmin - Win32 classic"
!ELSEIF "$(CFG)" == "mysqladmin - Win32 classic"
...
@@ -104,7 +104,7 @@ BSC32=bscmake.exe
...
@@ -104,7 +104,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
LINK32=xilink6.exe
# ADD BASE LINK32 mysqlclient.lib wsock32.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 /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\"
# ADD BASE LINK32 mysqlclient.lib wsock32.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 /out:"../client_release/mysqladmin.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqladmin.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqladmin.exe" /libpath:"..\lib_release\\"
!ENDIF
!ENDIF
...
...
VC++Files/client/mysqlimport.dsp
View file @
cdb1474d
...
@@ -52,7 +52,7 @@ BSC32=bscmake.exe
...
@@ -52,7 +52,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:console /machine:I386
# 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 /subsystem:console /machine:I386
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\"
# SUBTRACT LINK32 /incremental:yes
# SUBTRACT LINK32 /incremental:yes
!ELSEIF "$(CFG)" == "mysqlimport - Win32 Debug"
!ELSEIF "$(CFG)" == "mysqlimport - Win32 Debug"
...
@@ -78,7 +78,7 @@ BSC32=bscmake.exe
...
@@ -78,7 +78,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# 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 /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib setargv.obj /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlimport.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib setargv.obj /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlimport.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
!ELSEIF "$(CFG)" == "mysqlimport - Win32 classic"
!ELSEIF "$(CFG)" == "mysqlimport - Win32 classic"
...
@@ -104,9 +104,9 @@ BSC32=bscmake.exe
...
@@ -104,9 +104,9 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
LINK32=xilink6.exe
# ADD BASE LINK32 mysqlclient.lib wsock32.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 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\"
# ADD BASE LINK32 mysqlclient.lib
mysys.lib
wsock32.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 /out:"../client_release/mysqlimport.exe" /libpath:"..\lib_release\\"
# SUBTRACT BASE LINK32 /incremental:yes
# SUBTRACT BASE LINK32 /incremental:yes
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlimport.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlimport.exe" /libpath:"..\lib_release\\"
# SUBTRACT LINK32 /incremental:yes
# SUBTRACT LINK32 /incremental:yes
!ENDIF
!ENDIF
...
...
VC++Files/client/mysqlshow.dsp
View file @
cdb1474d
...
@@ -52,7 +52,7 @@ BSC32=bscmake.exe
...
@@ -52,7 +52,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:console /machine:I386
# 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 /subsystem:console /machine:I386
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\"
!ELSEIF "$(CFG)" == "mysqlshow - Win32 Debug"
!ELSEIF "$(CFG)" == "mysqlshow - Win32 Debug"
...
@@ -77,7 +77,7 @@ BSC32=bscmake.exe
...
@@ -77,7 +77,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# 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 /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlshow.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqlshow.exe" /pdbtype:sept /libpath:"..\lib_debug\\"
!ELSEIF "$(CFG)" == "mysqlshow - Win32 classic"
!ELSEIF "$(CFG)" == "mysqlshow - Win32 classic"
...
@@ -103,8 +103,8 @@ BSC32=bscmake.exe
...
@@ -103,8 +103,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
LINK32=xilink6.exe
# ADD BASE LINK32 mysqlclient.lib wsock32.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 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\"
# ADD BASE LINK32 mysqlclient.lib
mysys.lib
wsock32.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 /out:"../client_release/mysqlshow.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlshow.exe" /libpath:"..\lib_release\\"
# ADD LINK32 mysqlclient.lib
mysys.lib
wsock32.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 zlib.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqlshow.exe" /libpath:"..\lib_release\\"
!ENDIF
!ENDIF
...
...
VC++Files/libmysql/libmysql.dsp
View file @
cdb1474d
...
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
...
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:windows /dll /machine:I386
# 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 /subsystem:windows /dll /machine:I386
# ADD LINK32 wsock32.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:windows /dll /machine:I386 /def:"libmysql.def" /out:"..\lib_release\libmysql.dll" /libpath:"." /libpath:"..\lib_release"
# ADD LINK32
mysys.lib
wsock32.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:windows /dll /machine:I386 /def:"libmysql.def" /out:"..\lib_release\libmysql.dll" /libpath:"." /libpath:"..\lib_release"
# SUBTRACT LINK32 /pdb:none
# SUBTRACT LINK32 /pdb:none
# Begin Special Build Tool
# Begin Special Build Tool
SOURCE="$(InputPath)"
SOURCE="$(InputPath)"
...
@@ -87,7 +87,7 @@ BSC32=bscmake.exe
...
@@ -87,7 +87,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.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 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
# 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 /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 zlib.lib wsock32.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:windows /dll /incremental:no /map /debug /machine:I386 /def:"libmysql.def" /out:"..\lib_debug\libmysql.dll" /pdbtype:sept /libpath:"." /libpath:"..\lib_debug"
# ADD LINK32 zlib.lib
mysys.lib
wsock32.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:windows /dll /incremental:no /map /debug /machine:I386 /def:"libmysql.def" /out:"..\lib_debug\libmysql.dll" /pdbtype:sept /libpath:"." /libpath:"..\lib_debug"
# SUBTRACT LINK32 /pdb:none
# SUBTRACT LINK32 /pdb:none
# Begin Special Build Tool
# Begin Special Build Tool
SOURCE="$(InputPath)"
SOURCE="$(InputPath)"
...
...
VC++Files/mysql.dsw
View file @
cdb1474d
...
@@ -80,6 +80,9 @@ Package=<4>
...
@@ -80,6 +80,9 @@ Package=<4>
Begin Project Dependency
Begin Project Dependency
Project_Dep_Name zlib
Project_Dep_Name zlib
End Project Dependency
End Project Dependency
Begin Project Dependency
Project_Dep_Name mysys
End Project Dependency
}}}
}}}
###############################################################################
###############################################################################
...
@@ -320,6 +323,9 @@ Package=<4>
...
@@ -320,6 +323,9 @@ Package=<4>
Begin Project Dependency
Begin Project Dependency
Project_Dep_Name zlib
Project_Dep_Name zlib
End Project Dependency
End Project Dependency
Begin Project Dependency
Project_Dep_Name mysys
End Project Dependency
}}}
}}}
###############################################################################
###############################################################################
...
@@ -476,6 +482,9 @@ Package=<4>
...
@@ -476,6 +482,9 @@ Package=<4>
Begin Project Dependency
Begin Project Dependency
Project_Dep_Name mysqlclient
Project_Dep_Name mysqlclient
End Project Dependency
End Project Dependency
Begin Project Dependency
Project_Dep_Name mysys
End Project Dependency
}}}
}}}
###############################################################################
###############################################################################
...
@@ -533,6 +542,9 @@ Package=<4>
...
@@ -533,6 +542,9 @@ Package=<4>
Begin Project Dependency
Begin Project Dependency
Project_Dep_Name mysqlclient
Project_Dep_Name mysqlclient
End Project Dependency
End Project Dependency
Begin Project Dependency
Project_Dep_Name mysys
End Project Dependency
}}}
}}}
###############################################################################
###############################################################################
...
...
include/config-win.h
View file @
cdb1474d
...
@@ -76,6 +76,7 @@ functions */
...
@@ -76,6 +76,7 @@ functions */
#define F_EXCLUSIVE 1
/* We have only exclusive locking */
#define F_EXCLUSIVE 1
/* We have only exclusive locking */
#define F_TO_EOF (INT_MAX32/2)
/* size for lock of all file */
#define F_TO_EOF (INT_MAX32/2)
/* size for lock of all file */
#define F_OK 0
/* parameter to access() */
#define F_OK 0
/* parameter to access() */
#define W_OK 2
#define S_IROTH S_IREAD
/* for my_lib */
#define S_IROTH S_IREAD
/* for my_lib */
...
...
mysql-test/r/func_if.result
View file @
cdb1474d
...
@@ -91,3 +91,20 @@ drop table t1;
...
@@ -91,3 +91,20 @@ drop table t1;
SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL;
SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL;
NULLIF(5,5) IS NULL NULLIF(5,5) IS NOT NULL
NULLIF(5,5) IS NULL NULLIF(5,5) IS NOT NULL
1 0
1 0
CREATE TABLE `t1` (
`id` int(11) NOT NULL ,
`date` int(10) default NULL,
`text` varchar(32) NOT NULL
);
INSERT INTO t1 VALUES (1,1110000000,'Day 1'),(2,1111000000,'Day 2'),(3,1112000000,'Day 3');
SELECT id, IF(date IS NULL, '-', FROM_UNIXTIME(date, '%d-%m-%Y')) AS date_ord, text FROM t1 ORDER BY date_ord ASC;
id date_ord text
1 05-03-2005 Day 1
2 16-03-2005 Day 2
3 28-03-2005 Day 3
SELECT id, IF(date IS NULL, '-', FROM_UNIXTIME(date, '%d-%m-%Y')) AS date_ord, text FROM t1 ORDER BY date_ord DESC;
id date_ord text
3 28-03-2005 Day 3
2 16-03-2005 Day 2
1 05-03-2005 Day 1
DROP TABLE t1;
mysql-test/r/variables.result
View file @
cdb1474d
...
@@ -236,6 +236,12 @@ query_prealloc_size 8192
...
@@ -236,6 +236,12 @@ query_prealloc_size 8192
range_alloc_block_size 2048
range_alloc_block_size 2048
transaction_alloc_block_size 8192
transaction_alloc_block_size 8192
transaction_prealloc_size 4096
transaction_prealloc_size 4096
SELECT @@version LIKE 'non-existent';
@@version LIKE 'non-existent'
0
SELECT @@version_compile_os LIKE 'non-existent';
@@version_compile_os LIKE 'non-existent'
0
set big_tables=OFFF;
set big_tables=OFFF;
ERROR 42000: Variable 'big_tables' can't be set to the value of 'OFFF'
ERROR 42000: Variable 'big_tables' can't be set to the value of 'OFFF'
set big_tables="OFFF";
set big_tables="OFFF";
...
...
mysql-test/t/func_if.test
View file @
cdb1474d
...
@@ -61,3 +61,17 @@ drop table t1;
...
@@ -61,3 +61,17 @@ drop table t1;
# Bug #5595 NULLIF() IS NULL returns false if NULLIF() returns NULL
# Bug #5595 NULLIF() IS NULL returns false if NULLIF() returns NULL
#
#
SELECT
NULLIF
(
5
,
5
)
IS
NULL
,
NULLIF
(
5
,
5
)
IS
NOT
NULL
;
SELECT
NULLIF
(
5
,
5
)
IS
NULL
,
NULLIF
(
5
,
5
)
IS
NOT
NULL
;
#
# Bug #9669 Ordering on IF function with FROM_UNIXTIME function fails
#
CREATE
TABLE
`t1`
(
`id`
int
(
11
)
NOT
NULL
,
`date`
int
(
10
)
default
NULL
,
`text`
varchar
(
32
)
NOT
NULL
);
INSERT
INTO
t1
VALUES
(
1
,
1110000000
,
'Day 1'
),(
2
,
1111000000
,
'Day 2'
),(
3
,
1112000000
,
'Day 3'
);
SELECT
id
,
IF
(
date
IS
NULL
,
'-'
,
FROM_UNIXTIME
(
date
,
'%d-%m-%Y'
))
AS
date_ord
,
text
FROM
t1
ORDER
BY
date_ord
ASC
;
SELECT
id
,
IF
(
date
IS
NULL
,
'-'
,
FROM_UNIXTIME
(
date
,
'%d-%m-%Y'
))
AS
date_ord
,
text
FROM
t1
ORDER
BY
date_ord
DESC
;
DROP
TABLE
t1
;
mysql-test/t/variables.test
View file @
cdb1474d
...
@@ -130,6 +130,13 @@ set @@query_alloc_block_size=default, @@query_prealloc_size=default;
...
@@ -130,6 +130,13 @@ set @@query_alloc_block_size=default, @@query_prealloc_size=default;
set
transaction_alloc_block_size
=
default
,
@@
transaction_prealloc_size
=
default
;
set
transaction_alloc_block_size
=
default
,
@@
transaction_prealloc_size
=
default
;
show
variables
like
'%alloc%'
;
show
variables
like
'%alloc%'
;
#
# Bug #10904 Illegal mix of collations between
# a system variable and a constant
#
SELECT
@@
version
LIKE
'non-existent'
;
SELECT
@@
version_compile_os
LIKE
'non-existent'
;
# The following should give errors
# The following should give errors
--
error
1231
--
error
1231
...
...
mysys/mf_keycache.c
View file @
cdb1474d
...
@@ -184,10 +184,18 @@ static void test_key_cache(KEY_CACHE *keycache,
...
@@ -184,10 +184,18 @@ static void test_key_cache(KEY_CACHE *keycache,
static
FILE
*
keycache_debug_log
=
NULL
;
static
FILE
*
keycache_debug_log
=
NULL
;
static
void
keycache_debug_print
_VARARGS
((
const
char
*
fmt
,...));
static
void
keycache_debug_print
_VARARGS
((
const
char
*
fmt
,...));
#define KEYCACHE_DEBUG_OPEN \
#define KEYCACHE_DEBUG_OPEN \
if (!keycache_debug_log) keycache_debug_log=fopen(KEYCACHE_DEBUG_LOG, "w")
if (!keycache_debug_log) \
{ \
keycache_debug_log= fopen(KEYCACHE_DEBUG_LOG, "w"); \
(void) setvbuf(keycache_debug_log, NULL, _IOLBF, BUFSIZ); \
}
#define KEYCACHE_DEBUG_CLOSE \
#define KEYCACHE_DEBUG_CLOSE \
if (keycache_debug_log) { fclose(keycache_debug_log); keycache_debug_log=0; }
if (keycache_debug_log) \
{ \
fclose(keycache_debug_log); \
keycache_debug_log= 0; \
}
#else
#else
#define KEYCACHE_DEBUG_OPEN
#define KEYCACHE_DEBUG_OPEN
#define KEYCACHE_DEBUG_CLOSE
#define KEYCACHE_DEBUG_CLOSE
...
@@ -213,7 +221,7 @@ static long keycache_thread_id;
...
@@ -213,7 +221,7 @@ static long keycache_thread_id;
#define KEYCACHE_THREAD_TRACE_BEGIN(l) \
#define KEYCACHE_THREAD_TRACE_BEGIN(l) \
{ struct st_my_thread_var *thread_var= my_thread_var; \
{ struct st_my_thread_var *thread_var= my_thread_var; \
keycache_thread_id=
my_thread_var->id;
\
keycache_thread_id=
thread_var->id;
\
KEYCACHE_DBUG_PRINT(l,("[thread %ld",keycache_thread_id)) }
KEYCACHE_DBUG_PRINT(l,("[thread %ld",keycache_thread_id)) }
#define KEYCACHE_THREAD_TRACE_END(l) \
#define KEYCACHE_THREAD_TRACE_END(l) \
...
@@ -240,12 +248,10 @@ static int keycache_pthread_cond_wait(pthread_cond_t *cond,
...
@@ -240,12 +248,10 @@ static int keycache_pthread_cond_wait(pthread_cond_t *cond,
static
int
keycache_pthread_mutex_lock
(
pthread_mutex_t
*
mutex
);
static
int
keycache_pthread_mutex_lock
(
pthread_mutex_t
*
mutex
);
static
void
keycache_pthread_mutex_unlock
(
pthread_mutex_t
*
mutex
);
static
void
keycache_pthread_mutex_unlock
(
pthread_mutex_t
*
mutex
);
static
int
keycache_pthread_cond_signal
(
pthread_cond_t
*
cond
);
static
int
keycache_pthread_cond_signal
(
pthread_cond_t
*
cond
);
static
int
keycache_pthread_cond_broadcast
(
pthread_cond_t
*
cond
);
#else
#else
#define keycache_pthread_mutex_lock pthread_mutex_lock
#define keycache_pthread_mutex_lock pthread_mutex_lock
#define keycache_pthread_mutex_unlock pthread_mutex_unlock
#define keycache_pthread_mutex_unlock pthread_mutex_unlock
#define keycache_pthread_cond_signal pthread_cond_signal
#define keycache_pthread_cond_signal pthread_cond_signal
#define keycache_pthread_cond_broadcast pthread_cond_broadcast
#endif
/* defined(KEYCACHE_DEBUG) */
#endif
/* defined(KEYCACHE_DEBUG) */
static
uint
next_power
(
uint
value
)
static
uint
next_power
(
uint
value
)
...
@@ -508,6 +514,8 @@ int resize_key_cache(KEY_CACHE *keycache, uint key_cache_block_size,
...
@@ -508,6 +514,8 @@ int resize_key_cache(KEY_CACHE *keycache, uint key_cache_block_size,
keycache
->
can_be_used
=
0
;
keycache
->
can_be_used
=
0
;
while
(
keycache
->
cnt_for_resize_op
)
while
(
keycache
->
cnt_for_resize_op
)
{
{
KEYCACHE_DBUG_PRINT
(
"resize_key_cache: wait"
,
(
"suspend thread %ld"
,
thread
->
id
));
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
}
}
...
@@ -520,7 +528,11 @@ finish:
...
@@ -520,7 +528,11 @@ finish:
unlink_from_queue
(
wqueue
,
thread
);
unlink_from_queue
(
wqueue
,
thread
);
/* Signal for the next resize request to proceeed if any */
/* Signal for the next resize request to proceeed if any */
if
(
wqueue
->
last_thread
)
if
(
wqueue
->
last_thread
)
{
KEYCACHE_DBUG_PRINT
(
"resize_key_cache: signal"
,
(
"thread %ld"
,
wqueue
->
last_thread
->
next
->
id
));
keycache_pthread_cond_signal
(
&
wqueue
->
last_thread
->
next
->
suspend
);
keycache_pthread_cond_signal
(
&
wqueue
->
last_thread
->
next
->
suspend
);
}
keycache_pthread_mutex_unlock
(
&
keycache
->
cache_lock
);
keycache_pthread_mutex_unlock
(
&
keycache
->
cache_lock
);
return
blocks
;
return
blocks
;
}
}
...
@@ -544,7 +556,11 @@ static inline void dec_counter_for_resize_op(KEY_CACHE *keycache)
...
@@ -544,7 +556,11 @@ static inline void dec_counter_for_resize_op(KEY_CACHE *keycache)
struct
st_my_thread_var
*
last_thread
;
struct
st_my_thread_var
*
last_thread
;
if
(
!--
keycache
->
cnt_for_resize_op
&&
if
(
!--
keycache
->
cnt_for_resize_op
&&
(
last_thread
=
keycache
->
resize_queue
.
last_thread
))
(
last_thread
=
keycache
->
resize_queue
.
last_thread
))
{
KEYCACHE_DBUG_PRINT
(
"dec_counter_for_resize_op: signal"
,
(
"thread %ld"
,
last_thread
->
next
->
id
));
keycache_pthread_cond_signal
(
&
last_thread
->
next
->
suspend
);
keycache_pthread_cond_signal
(
&
last_thread
->
next
->
suspend
);
}
}
}
/*
/*
...
@@ -761,8 +777,8 @@ static void release_queue(KEYCACHE_WQUEUE *wqueue)
...
@@ -761,8 +777,8 @@ static void release_queue(KEYCACHE_WQUEUE *wqueue)
do
do
{
{
thread
=
next
;
thread
=
next
;
keycache_pthread_cond_signal
(
&
thread
->
suspend
);
KEYCACHE_DBUG_PRINT
(
"release_queue: signal"
,
(
"thread %ld"
,
thread
->
id
));
KEYCACHE_DBUG_PRINT
(
"release_queue: signal"
,
(
"thread %ld"
,
thread
->
id
));
keycache_pthread_cond_signal
(
&
thread
->
suspend
);
next
=
thread
->
next
;
next
=
thread
->
next
;
thread
->
next
=
NULL
;
thread
->
next
=
NULL
;
}
}
...
@@ -876,7 +892,8 @@ static void link_block(KEY_CACHE *keycache, BLOCK_LINK *block, my_bool hot,
...
@@ -876,7 +892,8 @@ static void link_block(KEY_CACHE *keycache, BLOCK_LINK *block, my_bool hot,
BLOCK_LINK
**
pins
;
BLOCK_LINK
**
pins
;
KEYCACHE_DBUG_ASSERT
(
!
(
block
->
hash_link
&&
block
->
hash_link
->
requests
));
KEYCACHE_DBUG_ASSERT
(
!
(
block
->
hash_link
&&
block
->
hash_link
->
requests
));
if
(
!
hot
&&
keycache
->
waiting_for_block
.
last_thread
)
{
if
(
!
hot
&&
keycache
->
waiting_for_block
.
last_thread
)
{
/* Signal that in the LRU warm sub-chain an available block has appeared */
/* Signal that in the LRU warm sub-chain an available block has appeared */
struct
st_my_thread_var
*
last_thread
=
struct
st_my_thread_var
*
last_thread
=
keycache
->
waiting_for_block
.
last_thread
;
keycache
->
waiting_for_block
.
last_thread
;
...
@@ -894,6 +911,7 @@ static void link_block(KEY_CACHE *keycache, BLOCK_LINK *block, my_bool hot,
...
@@ -894,6 +911,7 @@ static void link_block(KEY_CACHE *keycache, BLOCK_LINK *block, my_bool hot,
*/
*/
if
((
HASH_LINK
*
)
thread
->
opt_info
==
hash_link
)
if
((
HASH_LINK
*
)
thread
->
opt_info
==
hash_link
)
{
{
KEYCACHE_DBUG_PRINT
(
"link_block: signal"
,
(
"thread %ld"
,
thread
->
id
));
keycache_pthread_cond_signal
(
&
thread
->
suspend
);
keycache_pthread_cond_signal
(
&
thread
->
suspend
);
unlink_from_queue
(
&
keycache
->
waiting_for_block
,
thread
);
unlink_from_queue
(
&
keycache
->
waiting_for_block
,
thread
);
block
->
requests
++
;
block
->
requests
++
;
...
@@ -1000,11 +1018,10 @@ static void reg_requests(KEY_CACHE *keycache, BLOCK_LINK *block, int count)
...
@@ -1000,11 +1018,10 @@ static void reg_requests(KEY_CACHE *keycache, BLOCK_LINK *block, int count)
linking it to the LRU chain if it's the last request
linking it to the LRU chain if it's the last request
SYNOPSIS
SYNOPSIS
unreg_request()
unreg_block()
keycache pointer to a key cache data structure
keycache pointer to a key cache data structure
block pointer to the block to link to the LRU chain
block pointer to the block to link to the LRU chain
at_end <-> to link the block at the end of the LRU chain
at_end <-> to link the block at the end of the LRU chain
RETURN VALUE
RETURN VALUE
none
none
...
@@ -1086,6 +1103,9 @@ static inline void wait_for_readers(KEY_CACHE *keycache, BLOCK_LINK *block)
...
@@ -1086,6 +1103,9 @@ static inline void wait_for_readers(KEY_CACHE *keycache, BLOCK_LINK *block)
struct
st_my_thread_var
*
thread
=
my_thread_var
;
struct
st_my_thread_var
*
thread
=
my_thread_var
;
while
(
block
->
hash_link
->
requests
)
while
(
block
->
hash_link
->
requests
)
{
{
KEYCACHE_DBUG_PRINT
(
"wait_for_readers: wait"
,
(
"suspend thread %ld block %u"
,
thread
->
id
,
BLOCK_NUMBER
(
block
)));
block
->
condvar
=
&
thread
->
suspend
;
block
->
condvar
=
&
thread
->
suspend
;
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
block
->
condvar
=
NULL
;
block
->
condvar
=
NULL
;
...
@@ -1143,6 +1163,7 @@ static void unlink_hash(KEY_CACHE *keycache, HASH_LINK *hash_link)
...
@@ -1143,6 +1163,7 @@ static void unlink_hash(KEY_CACHE *keycache, HASH_LINK *hash_link)
*/
*/
if
(
page
->
file
==
hash_link
->
file
&&
page
->
filepos
==
hash_link
->
diskpos
)
if
(
page
->
file
==
hash_link
->
file
&&
page
->
filepos
==
hash_link
->
diskpos
)
{
{
KEYCACHE_DBUG_PRINT
(
"unlink_hash: signal"
,
(
"thread %ld"
,
thread
->
id
));
keycache_pthread_cond_signal
(
&
thread
->
suspend
);
keycache_pthread_cond_signal
(
&
thread
->
suspend
);
unlink_from_queue
(
&
keycache
->
waiting_for_hash_link
,
thread
);
unlink_from_queue
(
&
keycache
->
waiting_for_hash_link
,
thread
);
}
}
...
@@ -1225,6 +1246,8 @@ restart:
...
@@ -1225,6 +1246,8 @@ restart:
page
.
filepos
=
filepos
;
page
.
filepos
=
filepos
;
thread
->
opt_info
=
(
void
*
)
&
page
;
thread
->
opt_info
=
(
void
*
)
&
page
;
link_into_queue
(
&
keycache
->
waiting_for_hash_link
,
thread
);
link_into_queue
(
&
keycache
->
waiting_for_hash_link
,
thread
);
KEYCACHE_DBUG_PRINT
(
"get_hash_link: wait"
,
(
"suspend thread %ld"
,
thread
->
id
));
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
&
keycache
->
cache_lock
);
thread
->
opt_info
=
NULL
;
thread
->
opt_info
=
NULL
;
...
@@ -1343,6 +1366,8 @@ restart:
...
@@ -1343,6 +1366,8 @@ restart:
add_to_queue
(
&
block
->
wqueue
[
COND_FOR_SAVED
],
thread
);
add_to_queue
(
&
block
->
wqueue
[
COND_FOR_SAVED
],
thread
);
do
do
{
{
KEYCACHE_DBUG_PRINT
(
"find_key_block: wait"
,
(
"suspend thread %ld"
,
thread
->
id
));
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
&
keycache
->
cache_lock
);
}
}
...
@@ -1360,7 +1385,9 @@ restart:
...
@@ -1360,7 +1385,9 @@ restart:
/* This is a request for a page to be removed from cache */
/* This is a request for a page to be removed from cache */
KEYCACHE_DBUG_PRINT
(
"find_key_block"
,
KEYCACHE_DBUG_PRINT
(
"find_key_block"
,
(
"request for old page in block %u"
,
BLOCK_NUMBER
(
block
)));
(
"request for old page in block %u "
"wrmode: %d block->status: %d"
,
BLOCK_NUMBER
(
block
),
wrmode
,
block
->
status
));
/*
/*
Only reading requests can proceed until the old dirty page is flushed,
Only reading requests can proceed until the old dirty page is flushed,
all others are to be suspended, then resubmitted
all others are to be suspended, then resubmitted
...
@@ -1379,6 +1406,8 @@ restart:
...
@@ -1379,6 +1406,8 @@ restart:
/* Wait until the request can be resubmitted */
/* Wait until the request can be resubmitted */
do
do
{
{
KEYCACHE_DBUG_PRINT
(
"find_key_block: wait"
,
(
"suspend thread %ld"
,
thread
->
id
));
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
&
keycache
->
cache_lock
);
}
}
...
@@ -1448,6 +1477,8 @@ restart:
...
@@ -1448,6 +1477,8 @@ restart:
link_into_queue
(
&
keycache
->
waiting_for_block
,
thread
);
link_into_queue
(
&
keycache
->
waiting_for_block
,
thread
);
do
do
{
{
KEYCACHE_DBUG_PRINT
(
"find_key_block: wait"
,
(
"suspend thread %ld"
,
thread
->
id
));
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
&
keycache
->
cache_lock
);
}
}
...
@@ -1528,9 +1559,13 @@ restart:
...
@@ -1528,9 +1559,13 @@ restart:
else
else
{
{
/* This is for secondary requests for a new page only */
/* This is for secondary requests for a new page only */
page_status
=
block
->
hash_link
==
hash_link
&&
KEYCACHE_DBUG_PRINT
(
"find_key_block"
,
(
block
->
status
&
BLOCK_READ
)
?
(
"block->hash_link: %p hash_link: %p "
PAGE_READ
:
PAGE_WAIT_TO_BE_READ
;
"block->status: %u"
,
block
->
hash_link
,
hash_link
,
block
->
status
));
page_status
=
(((
block
->
hash_link
==
hash_link
)
&&
(
block
->
status
&
BLOCK_READ
))
?
PAGE_READ
:
PAGE_WAIT_TO_BE_READ
);
}
}
}
}
keycache
->
global_cache_read
++
;
keycache
->
global_cache_read
++
;
...
@@ -1538,17 +1573,22 @@ restart:
...
@@ -1538,17 +1573,22 @@ restart:
else
else
{
{
reg_requests
(
keycache
,
block
,
1
);
reg_requests
(
keycache
,
block
,
1
);
page_status
=
block
->
hash_link
==
hash_link
&&
KEYCACHE_DBUG_PRINT
(
"find_key_block"
,
(
block
->
status
&
BLOCK_READ
)
?
(
"block->hash_link: %p hash_link: %p "
PAGE_READ
:
PAGE_WAIT_TO_BE_READ
;
"block->status: %u"
,
block
->
hash_link
,
hash_link
,
block
->
status
));
page_status
=
(((
block
->
hash_link
==
hash_link
)
&&
(
block
->
status
&
BLOCK_READ
))
?
PAGE_READ
:
PAGE_WAIT_TO_BE_READ
);
}
}
}
}
KEYCACHE_DBUG_ASSERT
(
page_status
!=
-
1
);
KEYCACHE_DBUG_ASSERT
(
page_status
!=
-
1
);
*
page_st
=
page_status
;
*
page_st
=
page_status
;
KEYCACHE_DBUG_PRINT
(
"find_key_block"
,
KEYCACHE_DBUG_PRINT
(
"find_key_block"
,
(
"fd: %u pos %lu page_status %lu"
,
(
"fd: %u pos %lu block->status %u page_status %lu"
,
(
uint
)
file
,(
ulong
)
filepos
,(
uint
)
page_status
));
(
uint
)
file
,
(
ulong
)
filepos
,
block
->
status
,
(
uint
)
page_status
));
#if !defined(DBUG_OFF) && defined(EXTRA_DEBUG)
#if !defined(DBUG_OFF) && defined(EXTRA_DEBUG)
DBUG_EXECUTE
(
"check_keycache2"
,
DBUG_EXECUTE
(
"check_keycache2"
,
...
@@ -1604,6 +1644,10 @@ static void read_block(KEY_CACHE *keycache,
...
@@ -1604,6 +1644,10 @@ static void read_block(KEY_CACHE *keycache,
/* Page is not in buffer yet, is to be read from disk */
/* Page is not in buffer yet, is to be read from disk */
keycache_pthread_mutex_unlock
(
&
keycache
->
cache_lock
);
keycache_pthread_mutex_unlock
(
&
keycache
->
cache_lock
);
/*
Here other threads may step in and register as secondary readers.
They will register in block->wqueue[COND_FOR_REQUESTED].
*/
got_length
=
my_pread
(
block
->
hash_link
->
file
,
block
->
buffer
,
got_length
=
my_pread
(
block
->
hash_link
->
file
,
block
->
buffer
,
read_length
,
block
->
hash_link
->
diskpos
,
MYF
(
0
));
read_length
,
block
->
hash_link
->
diskpos
,
MYF
(
0
));
keycache_pthread_mutex_lock
(
&
keycache
->
cache_lock
);
keycache_pthread_mutex_lock
(
&
keycache
->
cache_lock
);
...
@@ -1634,6 +1678,8 @@ static void read_block(KEY_CACHE *keycache,
...
@@ -1634,6 +1678,8 @@ static void read_block(KEY_CACHE *keycache,
add_to_queue
(
&
block
->
wqueue
[
COND_FOR_REQUESTED
],
thread
);
add_to_queue
(
&
block
->
wqueue
[
COND_FOR_REQUESTED
],
thread
);
do
do
{
{
KEYCACHE_DBUG_PRINT
(
"read_block: wait"
,
(
"suspend thread %ld"
,
thread
->
id
));
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
&
keycache
->
cache_lock
);
}
}
...
@@ -1855,6 +1901,10 @@ int key_cache_insert(KEY_CACHE *keycache,
...
@@ -1855,6 +1901,10 @@ int key_cache_insert(KEY_CACHE *keycache,
/* The requested page is to be read into the block buffer */
/* The requested page is to be read into the block buffer */
#if !defined(SERIALIZED_READ_FROM_CACHE)
#if !defined(SERIALIZED_READ_FROM_CACHE)
keycache_pthread_mutex_unlock
(
&
keycache
->
cache_lock
);
keycache_pthread_mutex_unlock
(
&
keycache
->
cache_lock
);
/*
Here other threads may step in and register as secondary readers.
They will register in block->wqueue[COND_FOR_REQUESTED].
*/
#endif
#endif
/* Copy data from buff */
/* Copy data from buff */
...
@@ -1865,9 +1915,15 @@ int key_cache_insert(KEY_CACHE *keycache,
...
@@ -1865,9 +1915,15 @@ int key_cache_insert(KEY_CACHE *keycache,
#if !defined(SERIALIZED_READ_FROM_CACHE)
#if !defined(SERIALIZED_READ_FROM_CACHE)
keycache_pthread_mutex_lock
(
&
keycache
->
cache_lock
);
keycache_pthread_mutex_lock
(
&
keycache
->
cache_lock
);
/* Here we are alone again. */
#endif
#endif
block
->
status
=
BLOCK_READ
;
block
->
status
=
BLOCK_READ
;
block
->
length
=
read_length
+
offset
;
block
->
length
=
read_length
+
offset
;
KEYCACHE_DBUG_PRINT
(
"key_cache_insert"
,
(
"primary request: new page in cache"
));
/* Signal that all pending requests for this now can be processed. */
if
(
block
->
wqueue
[
COND_FOR_REQUESTED
].
last_thread
)
release_queue
(
&
block
->
wqueue
[
COND_FOR_REQUESTED
]);
}
}
remove_reader
(
block
);
remove_reader
(
block
);
...
@@ -2074,9 +2130,16 @@ static void free_block(KEY_CACHE *keycache, BLOCK_LINK *block)
...
@@ -2074,9 +2130,16 @@ static void free_block(KEY_CACHE *keycache, BLOCK_LINK *block)
{
{
KEYCACHE_THREAD_TRACE
(
"free block"
);
KEYCACHE_THREAD_TRACE
(
"free block"
);
KEYCACHE_DBUG_PRINT
(
"free_block"
,
KEYCACHE_DBUG_PRINT
(
"free_block"
,
(
"block %u to be freed"
,
BLOCK_NUMBER
(
block
)));
(
"block %u to be freed, hash_link %p"
,
BLOCK_NUMBER
(
block
),
block
->
hash_link
));
if
(
block
->
hash_link
)
if
(
block
->
hash_link
)
{
{
/*
While waiting for readers to finish, new readers might request the
block. But since we set block->status|= BLOCK_REASSIGNED, they
will wait on block->wqueue[COND_FOR_SAVED]. They must be signalled
later.
*/
block
->
status
|=
BLOCK_REASSIGNED
;
block
->
status
|=
BLOCK_REASSIGNED
;
wait_for_readers
(
keycache
,
block
);
wait_for_readers
(
keycache
,
block
);
unlink_hash
(
keycache
,
block
->
hash_link
);
unlink_hash
(
keycache
,
block
->
hash_link
);
...
@@ -2102,6 +2165,10 @@ static void free_block(KEY_CACHE *keycache, BLOCK_LINK *block)
...
@@ -2102,6 +2165,10 @@ static void free_block(KEY_CACHE *keycache, BLOCK_LINK *block)
keycache
->
free_block_list
=
block
;
keycache
->
free_block_list
=
block
;
/* Keep track of the number of currently unused blocks. */
/* Keep track of the number of currently unused blocks. */
keycache
->
blocks_unused
++
;
keycache
->
blocks_unused
++
;
/* All pending requests for this page must be resubmitted. */
if
(
block
->
wqueue
[
COND_FOR_SAVED
].
last_thread
)
release_queue
(
&
block
->
wqueue
[
COND_FOR_SAVED
]);
}
}
...
@@ -2334,6 +2401,8 @@ restart:
...
@@ -2334,6 +2401,8 @@ restart:
add_to_queue
(
&
block
->
wqueue
[
COND_FOR_SAVED
],
thread
);
add_to_queue
(
&
block
->
wqueue
[
COND_FOR_SAVED
],
thread
);
do
do
{
{
KEYCACHE_DBUG_PRINT
(
"flush_key_blocks_int: wait"
,
(
"suspend thread %ld"
,
thread
->
id
));
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
keycache_pthread_cond_wait
(
&
thread
->
suspend
,
&
keycache
->
cache_lock
);
&
keycache
->
cache_lock
);
}
}
...
@@ -2685,14 +2754,6 @@ static int keycache_pthread_cond_signal(pthread_cond_t *cond)
...
@@ -2685,14 +2754,6 @@ static int keycache_pthread_cond_signal(pthread_cond_t *cond)
}
}
static
int
keycache_pthread_cond_broadcast
(
pthread_cond_t
*
cond
)
{
int
rc
;
KEYCACHE_THREAD_TRACE
(
"signal"
);
rc
=
pthread_cond_broadcast
(
cond
);
return
rc
;
}
#if defined(KEYCACHE_DEBUG_LOG)
#if defined(KEYCACHE_DEBUG_LOG)
...
...
sql/item_cmpfunc.cc
View file @
cdb1474d
...
@@ -1227,9 +1227,16 @@ Item_func_if::fix_length_and_dec()
...
@@ -1227,9 +1227,16 @@ Item_func_if::fix_length_and_dec()
{
{
maybe_null
=
args
[
1
]
->
maybe_null
||
args
[
2
]
->
maybe_null
;
maybe_null
=
args
[
1
]
->
maybe_null
||
args
[
2
]
->
maybe_null
;
decimals
=
max
(
args
[
1
]
->
decimals
,
args
[
2
]
->
decimals
);
decimals
=
max
(
args
[
1
]
->
decimals
,
args
[
2
]
->
decimals
);
max_length
=
(
max
(
args
[
1
]
->
max_length
-
args
[
1
]
->
decimals
,
if
(
decimals
==
NOT_FIXED_DEC
)
{
max_length
=
max
(
args
[
1
]
->
max_length
,
args
[
2
]
->
max_length
);
}
else
{
max_length
=
(
max
(
args
[
1
]
->
max_length
-
args
[
1
]
->
decimals
,
args
[
2
]
->
max_length
-
args
[
2
]
->
decimals
)
+
args
[
2
]
->
max_length
-
args
[
2
]
->
decimals
)
+
decimals
);
decimals
);
}
enum
Item_result
arg1_type
=
args
[
1
]
->
result_type
();
enum
Item_result
arg1_type
=
args
[
1
]
->
result_type
();
enum
Item_result
arg2_type
=
args
[
2
]
->
result_type
();
enum
Item_result
arg2_type
=
args
[
2
]
->
result_type
();
bool
null1
=
args
[
1
]
->
const_item
()
&&
args
[
1
]
->
null_value
;
bool
null1
=
args
[
1
]
->
const_item
()
&&
args
[
1
]
->
null_value
;
...
...
sql/item_func.cc
View file @
cdb1474d
...
@@ -4512,7 +4512,7 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name,
...
@@ -4512,7 +4512,7 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name,
!
my_strcasecmp
(
system_charset_info
,
name
.
str
,
"VERSION"
))
!
my_strcasecmp
(
system_charset_info
,
name
.
str
,
"VERSION"
))
return
new
Item_string
(
"@@VERSION"
,
server_version
,
return
new
Item_string
(
"@@VERSION"
,
server_version
,
(
uint
)
strlen
(
server_version
),
(
uint
)
strlen
(
server_version
),
system_charset_info
);
system_charset_info
,
DERIVATION_SYSCONST
);
Item
*
item
;
Item
*
item
;
sys_var
*
var
;
sys_var
*
var
;
...
...
sql/set_var.cc
View file @
cdb1474d
...
@@ -1715,7 +1715,8 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base)
...
@@ -1715,7 +1715,8 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base)
Item_string
*
tmp
;
Item_string
*
tmp
;
pthread_mutex_lock
(
&
LOCK_global_system_variables
);
pthread_mutex_lock
(
&
LOCK_global_system_variables
);
char
*
str
=
(
char
*
)
value_ptr
(
thd
,
var_type
,
base
);
char
*
str
=
(
char
*
)
value_ptr
(
thd
,
var_type
,
base
);
tmp
=
new
Item_string
(
str
,
strlen
(
str
),
system_charset_info
);
tmp
=
new
Item_string
(
str
,
strlen
(
str
),
system_charset_info
,
DERIVATION_SYSCONST
);
pthread_mutex_unlock
(
&
LOCK_global_system_variables
);
pthread_mutex_unlock
(
&
LOCK_global_system_variables
);
return
tmp
;
return
tmp
;
}
}
...
...
sql/sql_base.cc
View file @
cdb1474d
...
@@ -3222,7 +3222,8 @@ bool setup_tables(THD *thd, TABLE_LIST *tables, Item **conds,
...
@@ -3222,7 +3222,8 @@ bool setup_tables(THD *thd, TABLE_LIST *tables, Item **conds,
if
(
!
(
*
leaves
))
if
(
!
(
*
leaves
))
make_leaves_list
(
leaves
,
tables
);
make_leaves_list
(
leaves
,
tables
);
for
(
TABLE_LIST
*
table_list
=
*
leaves
;
TABLE_LIST
*
table_list
;
for
(
table_list
=
*
leaves
;
table_list
;
table_list
;
table_list
=
table_list
->
next_leaf
,
tablenr
++
)
table_list
=
table_list
->
next_leaf
,
tablenr
++
)
{
{
...
@@ -3261,7 +3262,7 @@ bool setup_tables(THD *thd, TABLE_LIST *tables, Item **conds,
...
@@ -3261,7 +3262,7 @@ bool setup_tables(THD *thd, TABLE_LIST *tables, Item **conds,
my_error
(
ER_TOO_MANY_TABLES
,
MYF
(
0
),
MAX_TABLES
);
my_error
(
ER_TOO_MANY_TABLES
,
MYF
(
0
),
MAX_TABLES
);
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
}
}
for
(
TABLE_LIST
*
table_list
=
tables
;
for
(
table_list
=
tables
;
table_list
;
table_list
;
table_list
=
table_list
->
next_local
)
table_list
=
table_list
->
next_local
)
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment