Changeset 7654
- Timestamp:
- Jun 23, 2006, 11:11:17 AM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/db/psDB.c (modified) (19 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/db/psDB.c
r7652 r7654 12 12 * @author Joshua Hoblitt 13 13 * 14 * @version $Revision: 1.6 3$ $Name: not supported by cvs2svn $15 * @date $Date: 2006-06-23 03:49:16$14 * @version $Revision: 1.64 $ $Name: not supported by cvs2svn $ 15 * @date $Date: 2006-06-23 21:11:17 $ 16 16 * 17 17 * Copyright 2005 Joshua Hoblitt, University of Hawaii … … 767 767 ...) 768 768 { 769 PS_ASSERT_PTR_NON_NULL(dbh, false); 770 PS_ASSERT_PTR_NON_NULL(format, false); 771 772 char *query = NULL; 773 774 // Run query 769 775 va_list argPtr; 770 char *dest = NULL;771 772 // Verify database object is not NULL773 if(dbh == NULL) {774 psError(PS_ERR_BAD_PARAMETER_NULL,true,PS_ERRORTEXT_psDB_INVALID_PSDB);775 return false;776 }777 778 // Run query779 776 va_start(argPtr, format); 780 777 if(argPtr == NULL) { 781 dest=psStringCopy(format);778 query = psStringCopy(format); 782 779 } else { 783 int destSize = vsnprintf( dest, 0, format, argPtr);784 dest= psAlloc(destSize+1);785 vsnprintf( dest, destSize+1, format, argPtr);780 int destSize = vsnprintf(query, 0, format, argPtr); 781 query = psAlloc(destSize+1); 782 vsnprintf(query, destSize+1, format, argPtr); 786 783 } 787 784 va_end(argPtr); 788 if (mysql_real_query(dbh->mysql, dest, (unsigned long)strlen(dest)) !=0) {785 if (mysql_real_query(dbh->mysql, query, (unsigned long)strlen(query)) !=0) { 789 786 //The following if statement was added to standardize outputs between platforms for testing purposes. 790 787 char mysqlTemp[165]; … … 796 793 psError(PS_ERR_UNKNOWN, true, PS_ERRORTEXT_psDB_SQL_QUERY_FAIL, mysql_error(dbh->mysql)); 797 794 } 798 psFree( dest);795 psFree(query); 799 796 return false; 800 797 } 801 798 802 psFree(dest); 799 psFree(query); 800 803 801 return true; 804 802 } … … 809 807 ...) 810 808 { 811 va_list argPtr;812 char *query = NULL;813 814 809 PS_ASSERT_PTR_NON_NULL(dbh, -1); 815 810 PS_ASSERT_PTR_NON_NULL(rowSet, -1); 816 811 PS_ASSERT_PTR_NON_NULL(format, -1); 817 812 813 char *query = NULL; 814 818 815 // generate query string 816 va_list argPtr; 819 817 va_start(argPtr, format); 820 818 if(argPtr == NULL) { … … 891 889 psArray *p_psDBFetchResult(psDB *dbh) 892 890 { 891 PS_ASSERT_PTR_NON_NULL(dbh, NULL); 892 893 893 MYSQL_RES *result; // complete db result set 894 894 MYSQL_ROW row; // single row of db result set … … 989 989 const psMetadata *values) 990 990 { 991 mysqlType *mType; // type tmp variable992 static bool isNull = true; // used in a MYSQL_BIND to indicate NULL,993 994 991 PS_ASSERT_PTR_NON_NULL(mysqlRow, false); 995 992 PS_ASSERT_PTR_NON_NULL(values, false); 993 994 mysqlType *mType; // type tmp variable 995 static bool isNull = true; // used in a MYSQL_BIND to indicate NULL 996 996 997 997 MYSQL_BIND *bind = mysqlRow->bind; … … 1118 1118 static void psDBMysqlRowFree(psDBMysqlRow *mysqlRow) 1119 1119 { 1120 PS_ASSERT_PTR_NON_NULL(mysqlRow, ); 1121 1120 1122 MYSQL_BIND *bind = mysqlRow->bind; 1121 1123 … … 1138 1140 const psMetadata *table) 1139 1141 { 1142 PS_ASSERT_PTR_NON_NULL(tableName, NULL); 1143 PS_ASSERT_PTR_NON_NULL(table, NULL); 1144 1140 1145 char *query = NULL; // complete query 1141 1146 psMetadataItem *item; // column description 1142 1147 psListIterator *cursor; // column iterator 1143 1148 char *colType; // type lookup table 1144 1145 // Verify input parameters are not null1146 if ( (tableName==NULL) || (table==NULL) ) {1147 psError(PS_ERR_BAD_PARAMETER_NULL, true, PS_ERRORTEXT_psDB_TABLE_PARAM_NULL);1148 return NULL;1149 }1150 1149 1151 1150 // Begin to create SQL string to create table … … 1237 1236 psU64 limit) 1238 1237 { 1238 PS_ASSERT_PTR_NON_NULL(tableName, NULL); 1239 PS_ASSERT_PTR_NON_NULL(col, NULL); 1240 1239 1241 char *query = NULL; 1240 1242 char *whereSQL; … … 1275 1277 const psMetadata *row) 1276 1278 { 1279 PS_ASSERT_PTR_NON_NULL(tableName, NULL); 1280 PS_ASSERT_PTR_NON_NULL(row, NULL); 1281 1277 1282 char *query = NULL; 1278 1283 psListIterator *cursor; 1279 1284 psMetadataItem *item; 1280 1285 1281 // Check if table is NULL1282 if(tableName == NULL) {1283 psError(PS_ERR_UNEXPECTED_NULL,true,PS_ERRORTEXT_psDB_QUERY_GEN_FAIL);1284 return NULL;1285 }1286 1287 // Check if row is NULL1288 if(row == NULL) {1289 psError(PS_ERR_UNEXPECTED_NULL,true,PS_ERRORTEXT_psDB_QUERY_GEN_FAIL);1290 return NULL;1291 }1292 1293 1286 // Start building query string 1294 1287 psStringAppend(&query, "INSERT INTO %s (", tableName); … … 1333 1326 const psMetadata *values) 1334 1327 { 1328 PS_ASSERT_PTR_NON_NULL(tableName, NULL); 1329 PS_ASSERT_PTR_NON_NULL(values, NULL); 1330 1335 1331 char *query = NULL; 1336 1332 char *setSQL; 1337 1333 char *whereSQL; 1338 1339 // Verify where and values pointer are not NULL1340 if ((!values) || (!where)) {1341 psError(PS_ERR_BAD_PARAMETER_NULL, true, PS_ERRORTEXT_psDB_UPDATE_ROW_FAIL);1342 return NULL;1343 }1344 1334 1345 1335 // Create set SQL substring … … 1369 1359 unsigned long long limit) 1370 1360 { 1361 PS_ASSERT_PTR_NON_NULL(tableName, NULL); 1362 1371 1363 char *query = NULL; 1372 1364 char *whereSQL; … … 1402 1394 static char *psDBGenerateWhereSQL(const psMetadata *where) 1403 1395 { 1404 char *query = NULL; 1405 1406 if (!where) { 1407 psError(PS_ERR_BAD_PARAMETER_NULL, true, "where param may not be NULL."); 1408 return NULL; 1409 } 1410 1411 query = psStringCopy("WHERE "); 1396 PS_ASSERT_PTR_NON_NULL(where, NULL); 1397 1398 char *query = psStringCopy("WHERE "); 1412 1399 1413 1400 // we need to know if an item is 'MULTI' so we have to march through the … … 1494 1481 ) 1495 1482 { 1496 char *query = NULL; 1497 psListIterator *cursor; 1498 psMetadataItem *item; 1499 1500 if (!set 1501 ) { 1502 psError(PS_ERR_BAD_PARAMETER_NULL, true, "set param may not be NULL."); 1503 1504 return NULL; 1505 } 1506 1507 query = psStringCopy("SET "); 1508 1509 cursor = psListIteratorAlloc(set 1510 ->list, 0, false); 1483 PS_ASSERT_PTR_NON_NULL(set 1484 , NULL); 1485 1486 char *query = psStringCopy("SET "); 1487 1488 psListIterator *cursor = psListIteratorAlloc(set 1489 ->list, 0, false); 1511 1490 1512 1491 // find column name 1492 psMetadataItem *item = NULL; 1513 1493 while ((item = psListGetAndIncrement(cursor))) { 1514 1494 // + column name + _ + = + _ + ? … … 1528 1508 static char *psDBGenerateConditionalSQL(const psMetadataItem *item) 1529 1509 { 1530 char *query = NULL;1531 1532 1510 PS_ASSERT_PTR_NON_NULL(item, NULL); 1511 1512 char *query = NULL; 1533 1513 1534 1514 // stringify the psMetadataItem into a SQL search specification … … 1862 1842 bool isUnsigned) 1863 1843 { 1864 mysqlType *mType; 1865 1866 mType = psAlloc(sizeof(mysqlType)); 1844 mysqlType *mType = psAlloc(sizeof(mysqlType)); 1867 1845 mType->type = type; 1868 1846 mType->isUnsigned = isUnsigned; … … 1875 1853 const char *string) 1876 1854 { 1877 char *key; 1878 char *value; 1879 1880 key = psDBIntToString((psU64)type); 1881 value = psStringCopy(string); 1855 PS_ASSERT_PTR_NON_NULL(lookupTable, ); 1856 1857 char *key = psDBIntToString((psU64)type); 1858 char *value = psStringCopy(string); 1882 1859 1883 1860 psHashAdd(lookupTable, key, value); … … 1891 1868 psPtr value) 1892 1869 { 1893 char *key;1894 1895 key = psDBIntToString((psU64)type);1870 PS_ASSERT_PTR_NON_NULL(lookupTable, ); 1871 1872 char *key = psDBIntToString((psU64)type); 1896 1873 1897 1874 psHashAdd(lookupTable, key, value); … … 2023 2000 static char *psDBIntToString(psU64 n) 2024 2001 { 2025 char *string;2026 size_t length;2027 2028 2002 // length of string + \0 2029 2003 // if n is 0, length is 1 char + \0 2030 length = n ? (size_t)log10((double)n) + 12031 : 2;2032 string = psAlloc(length);2004 size_t length = n ? (size_t)log10((double)n) + 1 2005 : 2; 2006 char *string = psAlloc(length); 2033 2007 sprintf(string, "%li", (long int)n); 2034 2008
Note:
See TracChangeset
for help on using the changeset viewer.
