IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 10030


Ignore:
Timestamp:
Nov 16, 2006, 4:27:10 PM (20 years ago)
Author:
jhoblitt
Message:

use db transactions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/pzgetexp.c

    r10029 r10030  
    126126    }
    127127
     128    // start a transaction so it's all rows or nothing
     129    if (!psDBTransaction(config->dbh)) {
     130        psError(PS_ERR_UNKNOWN, false, "database error");
     131        return false;
     132    }
     133
    128134    // create a temporry table
    129135    {
     
    132138           " ENGINE=MEMORY";
    133139        if (!p_psDBRunQuery(config->dbh, query)) {
     140            // rollback
     141            if (!psDBRollback(config->dbh)) {
     142                psError(PS_ERR_UNKNOWN, false, "database error");
     143            }
    134144            psError(PS_ERR_UNKNOWN, false, "database error");
    135145            psFree(newSummitExps);
     
    143153        long inserted = p_psDBRunQueryPrepared(config->dbh, newSummitExps, query);
    144154        if (inserted < 0) {
     155            // rollback
     156            if (!psDBRollback(config->dbh)) {
     157                psError(PS_ERR_UNKNOWN, false, "database error");
     158            }
    145159            psError(PS_ERR_UNKNOWN, false, "database error");
    146160            psFree(newSummitExps);
     
    149163        // sanity check that we actually inserted something
    150164        if (inserted == 0) {
     165            // rollback
     166            if (!psDBRollback(config->dbh)) {
     167                psError(PS_ERR_UNKNOWN, false, "database error");
     168            }
    151169            psError(PS_ERR_UNKNOWN, false, "database error -- we should have inserted at least one row");
    152170            psFree(newSummitExps);
     
    175193
    176194        if (!p_psDBRunQuery(config->dbh, query)) {
     195            // rollback
     196            if (!psDBRollback(config->dbh)) {
     197                psError(PS_ERR_UNKNOWN, false, "database error");
     198            }
    177199            psError(PS_ERR_UNKNOWN, false, "database error");
    178200            return false;
     
    196218
    197219        if (!p_psDBRunQuery(config->dbh, query)) {
    198             psError(PS_ERR_UNKNOWN, false, "database error");
    199             return false;
    200         }
     220            // rollback
     221            if (!psDBRollback(config->dbh)) {
     222                psError(PS_ERR_UNKNOWN, false, "database error");
     223            }
     224            psError(PS_ERR_UNKNOWN, false, "database error");
     225            return false;
     226        }
     227    }
     228   
     229    // point of no return
     230    if (!psDBCommit(config->dbh)) {
     231        // rollback
     232        if (!psDBRollback(config->dbh)) {
     233            psError(PS_ERR_UNKNOWN, false, "database error");
     234        }
     235        psError(PS_ERR_UNKNOWN, false, "database error");
     236        return false;
    201237    }
    202238
Note: See TracChangeset for help on using the changeset viewer.