Changeset 7070
- Timestamp:
- May 4, 2006, 4:42:01 PM (20 years ago)
- Location:
- trunk/psLib/src/db
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/db/psDB.c
r7050 r7070 12 12 * @author Joshua Hoblitt 13 13 * 14 * @version $Revision: 1. 49$ $Name: not supported by cvs2svn $15 * @date $Date: 2006-05-0 3 02:35:37$14 * @version $Revision: 1.50 $ $Name: not supported by cvs2svn $ 15 * @date $Date: 2006-05-05 02:42:01 $ 16 16 * 17 17 * Copyright 2005 Joshua Hoblitt, University of Hawaii … … 123 123 dbh->mysql = mysql; 124 124 125 // explicit transactions default to false 126 if (!psDBExplicitTrans(dbh, false)) { 127 psError(PS_ERR_UNKNOWN, true, 128 "failed to set transaction type", mysql_error(mysql)); 129 130 mysql_close(mysql); 131 psFree(dbh); 132 133 return NULL; 134 } 135 125 136 return dbh; 126 137 } … … 688 699 } // end loop over rows 689 700 690 // point of no return691 mysql_commit(dbh->mysql);692 693 701 psFree(bind); 694 702 mysql_stmt_close(stmt); … … 838 846 rowsAffected = mysql_stmt_affected_rows(stmt); 839 847 840 // point of no return841 mysql_commit(dbh->mysql);842 843 848 mysql_stmt_close(stmt); 844 849 … … 879 884 rows = (psS64)mysql_affected_rows(dbh->mysql); 880 885 881 // point of no return882 mysql_commit(dbh->mysql);883 884 886 return rows; 885 887 } … … 890 892 return (long)mysql_insert_id(dbh->mysql); 891 893 } 894 895 bool psDBExplicitTrans(psDB *dbh, bool mode) 896 { 897 // Verify database is not NULL 898 if(dbh == NULL) { 899 psError(PS_ERR_UNEXPECTED_NULL, true, PS_ERRORTEXT_psDB_INVALID_PSDB); 900 return false; 901 } 902 903 // mode needs to be inverted as autocommits are the opposide of explicit 904 // transactions. 905 // the return value also needs to be inverted for the same reason. 906 // is it safe to assume my_bool always safely casts to bool? 907 return !(bool)mysql_autocommit(dbh->mysql, !mode); 908 } 909 910 bool psDBTransaction(psDB *dbh) 911 { 912 // Verify database is not NULL 913 if(dbh == NULL) { 914 psError(PS_ERR_UNEXPECTED_NULL, true, PS_ERRORTEXT_psDB_INVALID_PSDB); 915 return false; 916 } 917 918 bool status = p_psDBRunQuery(dbh, "START TRANSACTION"); 919 if (!status) { 920 psError(PS_ERR_UNKNOWN, false, "Failed to create new database."); 921 } 922 923 return status; 924 } 925 926 bool psDBCommit(psDB *dbh) 927 { 928 // Verify database is not NULL 929 if(dbh == NULL) { 930 psError(PS_ERR_UNEXPECTED_NULL, true, PS_ERRORTEXT_psDB_INVALID_PSDB); 931 return false; 932 } 933 934 // is it safe to assume my_bool always safely casts to bool? 935 return (bool)mysql_commit(dbh->mysql); 936 } 937 938 bool psDBRollback(psDB *dbh) 939 { 940 // Verify database is not NULL 941 if(dbh == NULL) { 942 psError(PS_ERR_UNEXPECTED_NULL, true, PS_ERRORTEXT_psDB_INVALID_PSDB); 943 return false; 944 } 945 946 // is it safe to assume my_bool always safely casts to bool? 947 return (bool)mysql_rollback(dbh->mysql); 948 } 949 892 950 893 951 // database utility functions -
trunk/psLib/src/db/psDB.h
r7050 r7070 10 10 * @author Joshua Hoblitt 11 11 * 12 * @version $Revision: 1.1 5$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-05-0 3 02:35:37$12 * @version $Revision: 1.16 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-05-05 02:42:01 $ 14 14 * 15 15 * Copyright 2005 Joshua Hoblitt, University of Hawaii … … 285 285 ); 286 286 287 /** Enable/Disable explicit database transactions 288 * 289 * This function is used to enable explicit transaction support. It is off by 290 * default. 291 * 292 * @return bool: true if transactions are enabled 293 */ 294 bool psDBExplicitTrans( 295 psDB *dbh, ///< Database handle 296 bool mode ///< transactions enable/disable 297 ); 298 299 /** Start a new transaction set. 300 * 301 * This is only a meaningful action if explict transactions are disabled. 302 * 303 * @return bool: true on success 304 */ 305 bool psDBTransaction( 306 psDB *dbh ///< Database handle 307 ); 308 309 /** Commits the current transaction 310 * 311 * This function will commit the current transaction set (a rollback is not 312 * possible after this function is successfully executed). A commit also 313 * effectively starts a new transaction if explict transactions are enabled. 314 * 315 * @return bool: true on success 316 */ 317 bool psDBCommit( 318 psDB *dbh ///< Database handle 319 ); 320 321 /** Rollback the current transaction 322 * 323 * This function will rollback the current transaction set. 324 * 325 * @return bool: true on success 326 */ 327 bool psDBRollback( 328 psDB *dbh ///< Database handle 329 ); 330 287 331 /// @} 288 332
Note:
See TracChangeset
for help on using the changeset viewer.
