Changeset 7070 for trunk/psLib/src/db/psDB.c
- Timestamp:
- May 4, 2006, 4:42:01 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/db/psDB.c (modified) (6 diffs)
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
Note:
See TracChangeset
for help on using the changeset viewer.
