driver.cpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #include "driver.hpp"
  14. #include <NdbMutex.h>
  15. #undef NDB_ODBC_SIG_DFL
  16. #ifdef NDB_ODBC_SIG_DFL
  17. #include <signal.h>
  18. #endif
  19. // The big mutex (just in case).
  20. #ifdef NDB_WIN32
  21. static NdbMutex & driver_mutex = * NdbMutex_Create();
  22. #else
  23. static NdbMutex driver_mutex = NDB_MUTEX_INITIALIZER;
  24. #endif
  25. static void
  26. driver_lock()
  27. {
  28.     NdbMutex_Lock(&driver_mutex);
  29. }
  30. static void
  31. driver_unlock()
  32. {
  33.     NdbMutex_Unlock(&driver_mutex);
  34. }
  35. // Hooks for function entry and exit.
  36. static inline void
  37. driver_enter(SQLUSMALLINT functionId)
  38. {
  39.     switch (functionId) {
  40.     default:
  41. break;
  42.     }
  43. #ifdef NDB_ODBC_SIG_DFL
  44.     // XXX need to restore old sig
  45.     for (int i = 1; i <= 30; i++)
  46. signal(i, SIG_DFL);
  47. #endif
  48. }
  49. static inline void
  50. driver_exit(SQLUSMALLINT functionId)
  51. {
  52.     switch (functionId) {
  53.     default:
  54. break;
  55.     }
  56. }
  57. // Some C++ compilers (like gcc) cannot merge template code
  58. // in different files.  So compile all in one file.
  59. #include "SQLAllocConnect.cpp"
  60. #include "SQLAllocEnv.cpp"
  61. #include "SQLAllocHandle.cpp"
  62. #include "SQLAllocHandleStd.cpp"
  63. #include "SQLAllocStmt.cpp"
  64. #include "SQLBindCol.cpp"
  65. #include "SQLBindParam.cpp"
  66. #include "SQLBindParameter.cpp"
  67. #include "SQLBrowseConnect.cpp"
  68. #include "SQLBulkOperations.cpp"
  69. #include "SQLCancel.cpp"
  70. #include "SQLCloseCursor.cpp"
  71. #include "SQLColAttribute.cpp"
  72. #include "SQLColAttributes.cpp"
  73. #include "SQLColumnPrivileges.cpp"
  74. #include "SQLColumns.cpp"
  75. #include "SQLConnect.cpp"
  76. #include "SQLCopyDesc.cpp"
  77. #include "SQLDataSources.cpp"
  78. #include "SQLDescribeCol.cpp"
  79. #include "SQLDescribeParam.cpp"
  80. #include "SQLDisconnect.cpp"
  81. #include "SQLDriverConnect.cpp"
  82. #include "SQLDrivers.cpp"
  83. #include "SQLEndTran.cpp"
  84. #include "SQLError.cpp"
  85. #include "SQLExecDirect.cpp"
  86. #include "SQLExecute.cpp"
  87. #include "SQLExtendedFetch.cpp"
  88. #include "SQLFetch.cpp"
  89. #include "SQLFetchScroll.cpp"
  90. #include "SQLForeignKeys.cpp"
  91. #include "SQLFreeConnect.cpp"
  92. #include "SQLFreeEnv.cpp"
  93. #include "SQLFreeHandle.cpp"
  94. #include "SQLFreeStmt.cpp"
  95. #include "SQLGetConnectAttr.cpp"
  96. #include "SQLGetConnectOption.cpp"
  97. #include "SQLGetCursorName.cpp"
  98. #include "SQLGetData.cpp"
  99. #include "SQLGetDescField.cpp"
  100. #include "SQLGetDescRec.cpp"
  101. #include "SQLGetDiagField.cpp"
  102. #include "SQLGetDiagRec.cpp"
  103. #include "SQLGetEnvAttr.cpp"
  104. #include "SQLGetFunctions.cpp"
  105. #include "SQLGetInfo.cpp"
  106. #include "SQLGetStmtAttr.cpp"
  107. #include "SQLGetStmtOption.cpp"
  108. #include "SQLGetTypeInfo.cpp"
  109. #include "SQLMoreResults.cpp"
  110. #include "SQLNativeSql.cpp"
  111. #include "SQLNumParams.cpp"
  112. #include "SQLNumResultCols.cpp"
  113. #include "SQLParamData.cpp"
  114. #include "SQLParamOptions.cpp"
  115. #include "SQLPrepare.cpp"
  116. #include "SQLPrimaryKeys.cpp"
  117. #include "SQLProcedureColumns.cpp"
  118. #include "SQLProcedures.cpp"
  119. #include "SQLPutData.cpp"
  120. #include "SQLRowCount.cpp"
  121. #include "SQLSetConnectAttr.cpp"
  122. #include "SQLSetConnectOption.cpp"
  123. #include "SQLSetCursorName.cpp"
  124. #include "SQLSetDescField.cpp"
  125. #include "SQLSetDescRec.cpp"
  126. #include "SQLSetEnvAttr.cpp"
  127. #include "SQLSetParam.cpp"
  128. #include "SQLSetPos.cpp"
  129. #include "SQLSetScrollOptions.cpp"
  130. #include "SQLSetStmtAttr.cpp"
  131. #include "SQLSetStmtOption.cpp"
  132. #include "SQLSpecialColumns.cpp"
  133. #include "SQLStatistics.cpp"
  134. #include "SQLTablePrivileges.cpp"
  135. #include "SQLTables.cpp"
  136. #include "SQLTransact.cpp"