IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 8, 2005, 3:15:39 PM (21 years ago)
Author:
jhoblitt
Message:

additional comments
additional error checking
rename psDBInsertRow() to psDBInsertOneRow()
removed bogus code from psDBInsertOneRow()
misc code tidying

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/archive/psdb/psDB.c

    r3157 r3166  
    88 *  @author Joshua Hoblitt
    99 *
    10  *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2005-02-08 05:03:09 $
     10 *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2005-02-09 01:15:39 $
    1212 *
    1313 *  Copyright 2005 Joshua Hoblitt, University of Hawaii
     
    6868
    6969    mysql = mysql_init(NULL);
     70    if (!mysql) {
     71        // call abort?
     72        fprintf(stderr, " mysql_init(), out of memory\n");
     73
     74        return NULL;
     75    }
     76
    7077    if (!mysql_real_connect(mysql, host, user, passwd, dbname, 0, NULL, 0)) {
    7178        fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(mysql));
     
    181188{
    182189    MYSQL_RES       *result;            // complete db result set
    183     MYSQL_ROW       row;
    184     char            *query;
     190    MYSQL_ROW       row;                // single row of db result set
     191    char            *query;             // SQL query
    185192    psU64           rowCount;           // number of rows in db result set
    186193    psU64           dataSize;           // size of field
     
    334341{
    335342    MYSQL_RES       *result;            // complete db result set
    336     MYSQL_ROW       row;
     343    MYSQL_ROW       row;                // single row of db result set
    337344    MYSQL_FIELD     *field;             // field type info
    338     char            *query;
     345    char            *query;             // SQL query
    339346    psU64           rowCount;           // number of rows in db result set
    340347    psU64           fieldCount;         // number of fields in db result set
     
    344351    psMetadataItem  *item;              // field of a row
    345352    psMetadata      *md;                // a row
    346     psHash          *mysqlToSQLTable;
    347     psHash          *sqlToPSTable;
    348     char            *key;
    349     char            *value;
     353    psHash          *mysqlToSQLTable;   // type lookup table
     354    psHash          *sqlToPSTable;      // type lookup table
     355    char            *key;               // hash tmp value
     356    char            *value;             // hash tmp value
    350357    psU32           pType;              // psElemType of a field
    351358    psU32           type;               // psMetadataType of a a field
    352     char            *sqlType;
     359    char            *sqlType;           // copy of lookup table result
    353360    psPtr           data;               // copy of result field
    354361
     
    458465}
    459466
    460 bool psDBInsertRow(psDB *dbh, const char *tableName, psMetadata *row)
    461 {
    462     char            *query;
     467bool psDBInsertOneRow(psDB *dbh, const char *tableName, psMetadata *row)
     468{
     469    char            *query;             // SQL query
    463470    MYSQL_STMT      *stmt;              // prepared db statement
    464471    MYSQL_BIND      *bind;              // field values to insert
    465     psU32           paramCount;
    466     psHash          *mysqlFieldType;
    467     mysqlType       *mType;
    468     char            *key;
    469     psMetadataItem  *item;
    470     psListIterator  *cursor;
    471     psU32           i;
    472     bool            isNull = true;
     472    psU32           paramCount;         // number of placeholders in query
     473    psHash          *mysqlFieldType;    // type lookup table
     474    mysqlType       *mType;             // type tmp variable
     475    char            *key;               // hash tmp variable
     476    psMetadataItem  *item;              // field in row
     477    psListIterator  *cursor;            // row iterator
     478    psU32           i;                  // field index
     479    bool            isNull = true;      // used in a MYSQL_BIND to indicate NULL
    473480
    474481    query = psDBGenerateInsertRowSQL(tableName, row);
     
    493500            return false;
    494501    }
     502
     503    psFree(query);
    495504
    496505    paramCount = (psU32)mysql_stmt_param_count(stmt);
     
    514523        bind[i].is_unsigned = mType->isUnsigned;
    515524
     525        // convert NaNs to NULL
    516526        bind[i].is_null = psDBIsPTypeNaN(item->pType, item->data.V)
    517527                        ? (my_bool *)&isNull
     
    531541        }
    532542
    533         if (!cursor->offEnd) {
    534             // + , + _
    535             psStringAppend(&query, ", ");
    536         }
    537 
     543        // increment field index
    538544        i++;
    539545    }
     
    546552        psFree(bind);
    547553        mysql_stmt_close(stmt);
    548         psFree(query);
    549554
    550555        return false;
     
    556561        psFree(bind);
    557562        mysql_stmt_close(stmt);
    558         psFree(query);
    559563
    560564        return false;
     
    566570    psFree(bind);
    567571    mysql_stmt_close(stmt);
    568     psFree(query);
    569572
    570573    return true;
     
    593596        psStringAppend(&query, item->name);
    594597
     598        // + , + _ between every field name
    595599        if (!cursor->offEnd) {
    596             // + , + _
    597600            psStringAppend(&query, ", ");
    598601        }
     
    604607    psListIteratorSet(cursor, 0);
    605608
    606     // create field place holders
     609    // create value place holders
    607610    while ((item = psListGetNext(cursor))) {
    608611        psStringAppend(&query, "?");
     
    616619    psFree(cursor);
    617620
     621    // end of values
    618622    psStringAppend(&query, ")");
    619623
     
    666670static char *psDBGenerateCreateTableSQL(const char *tableName, psMetadata *table)
    667671{
    668     psMetadataItem  *item;
    669     psListIterator  *cursor;
    670     psHash          *colType;
    671     char            *query;
    672     char            *key;
    673     char            *value;
     672    psMetadataItem  *item;              // column description
     673    psListIterator  *cursor;            // column iterator
     674    psHash          *colType;           // type lookup table
     675    char            *query;             // complete query
     676    char            *key;               // hash tmp variable
     677    char            *value;             // hash tmp variable
    674678
    675679    // init query with a psMemBlock
     
    751755    psStringAppend(&query, tableName);
    752756
     757    // treat limit == 0 as "no limit"
    753758    if (limit) {
    754759        psStringAppend(&query, " LIMIT ");
     
    986991    size_t          newSize;
    987992    char            *oldDest;
    988 
    989993
    990994    // dest + source + \0
Note: See TracChangeset for help on using the changeset viewer.