Changeset 16695
- Timestamp:
- Feb 27, 2008, 4:02:47 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/db/psDB.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/db/psDB.c
r16694 r16695 23 23 * 4.1.2 or newer is required. 24 24 * 25 * $Id: psDB.c,v 1.1 49 2008-02-28 01:25:44jhoblitt Exp $25 * $Id: psDB.c,v 1.150 2008-02-28 02:02:47 jhoblitt Exp $ 26 26 */ 27 27 … … 80 80 81 81 // cache of prepared query statements 82 static pthread_mutex_t preparedQueryMutex = PTHREAD_MUTEX_INITIALIZER;82 // static pthread_mutex_t preparedQueryMutex = PTHREAD_MUTEX_INITIALIZER; 83 83 static psHash *preparedQuery = NULL; 84 84 … … 857 857 858 858 // start lock on query cache 859 if (psMemGetThreadSafety()) {860 pthread_mutex_lock(&preparedQueryMutex);861 }859 // if (psMemGetThreadSafety()) { 860 // pthread_mutex_lock(&preparedQueryMutex); 861 // } 862 862 863 863 // initalize the prepared query cache … … 875 875 876 876 // check the query cache 877 MYSQL_STMT * stmt = psHashLookup(preparedQuery, query);877 MYSQL_STMT **stmt = psHashLookup(preparedQuery, query); 878 878 if (!stmt) { 879 879 psTrace("psLib.db", PS_LOG_INFO, "statment is not in query cache"); 880 880 881 // Prepare SQL statement 881 MYSQL_STMT *stmt = mysql_stmt_init(dbh->mysql); 882 stmt = psAlloc(sizeof(MYSQL_STMT *)); 883 *stmt = mysql_stmt_init(dbh->mysql); 882 884 if (!stmt) { 883 885 psAbort("mysql_stmt_init(), out of memory."); 884 886 } 885 if (mysql_stmt_prepare( stmt, query, (unsigned long)strlen(query))) {886 psError(PS_ERR_UNKNOWN, true, "Failed to prepare query. Error: %s", mysql_stmt_error( stmt));887 mysql_stmt_close( stmt);887 if (mysql_stmt_prepare(*stmt, query, (unsigned long)strlen(query))) { 888 psError(PS_ERR_UNKNOWN, true, "Failed to prepare query. Error: %s", mysql_stmt_error(*stmt)); 889 mysql_stmt_close(*stmt); 888 890 psFree(query); 889 891 890 892 // end lock on query cache 891 if (psMemGetThreadSafety()) {892 pthread_mutex_unlock(&preparedQueryMutex);893 }893 // if (psMemGetThreadSafety()) { 894 // pthread_mutex_unlock(&preparedQueryMutex); 895 // } 894 896 895 897 return -1; … … 903 905 904 906 // end lock on query cache 905 if (psMemGetThreadSafety()) {906 pthread_mutex_unlock(&preparedQueryMutex);907 }907 // if (psMemGetThreadSafety()) { 908 // pthread_mutex_unlock(&preparedQueryMutex); 909 // } 908 910 909 911 psFree(query); 910 912 911 913 // how many place holders are in our query 912 psS32 paramCount = mysql_stmt_param_count( stmt);914 psS32 paramCount = mysql_stmt_param_count(*stmt); 913 915 914 916 // structure large enough to hold one field of data per place holder … … 923 925 924 926 psFree(mysqlRow); 925 mysql_stmt_close(stmt);927 // mysql_stmt_close(stmt); 926 928 927 929 return -1; … … 934 936 } 935 937 936 if (mysql_stmt_bind_param( stmt, mysqlRow->bind)) {937 psError(PS_ERR_UNKNOWN, true, "Failed to bind params. Error: %s", mysql_stmt_error( stmt));938 if (mysql_stmt_bind_param(*stmt, mysqlRow->bind)) { 939 psError(PS_ERR_UNKNOWN, true, "Failed to bind params. Error: %s", mysql_stmt_error(*stmt)); 938 940 939 941 psFree(mysqlRow); 940 mysql_stmt_close(stmt);942 // mysql_stmt_close(stmt); 941 943 942 944 return -1; 943 945 } 944 946 945 if (mysql_stmt_execute( stmt)) {946 psError(PS_ERR_UNKNOWN, true, "Failed to execute prepared statement. Error: %s", mysql_stmt_error( stmt));947 if (mysql_stmt_execute(*stmt)) { 948 psError(PS_ERR_UNKNOWN, true, "Failed to execute prepared statement. Error: %s", mysql_stmt_error(*stmt)); 947 949 948 950 psFree(mysqlRow); 949 mysql_stmt_close(stmt);951 // mysql_stmt_close(stmt); 950 952 951 953 return -1; … … 960 962 961 963 // FYI mysql_stmt_affected_rows() must be called before a commit 962 long rowsAffected = mysql_stmt_affected_rows( stmt);963 964 mysql_stmt_close(stmt);964 long rowsAffected = mysql_stmt_affected_rows(*stmt); 965 966 // mysql_stmt_close(stmt); 965 967 966 968 return rowsAffected;
Note:
See TracChangeset
for help on using the changeset viewer.
