Changeset 9538 for trunk/psLib/src/db/psDB.c
- Timestamp:
- Oct 13, 2006, 11:13:48 AM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/db/psDB.c (modified) (30 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/db/psDB.c
r9422 r9538 12 12 * @author Joshua Hoblitt 13 13 * 14 * @version $Revision: 1.10 0$ $Name: not supported by cvs2svn $15 * @date $Date: 2006-10- 09 22:11:34$14 * @version $Revision: 1.101 $ $Name: not supported by cvs2svn $ 15 * @date $Date: 2006-10-13 21:13:47 $ 16 16 * 17 17 * Copyright (C) 2005-2006 Joshua Hoblitt, University of Hawaii … … 76 76 77 77 // SQL generation functions 78 static char *psDBGenerateCreateTableSQL(const char *tableName, const psMetadata *where);79 static char *psDBGenerateSelectRowSQL(const char *tableName, const char *col,78 static psString psDBGenerateCreateTableSQL(const char *tableName, const psMetadata *where); 79 static psString psDBGenerateSelectRowSQL(const char *tableName, const char *col, 80 80 const psMetadata *where, psU64 limit); 81 static char *psDBGenerateInsertRowSQL(const char *tableName, const psMetadata *row);82 static char *psDBGenerateUpdateRowSQL(const char *tableName, const psMetadata *where,81 static psString psDBGenerateInsertRowSQL(const char *tableName, const psMetadata *row); 82 static psString psDBGenerateUpdateRowSQL(const char *tableName, const psMetadata *where, 83 83 const psMetadata *values); 84 static char *psDBGenerateDeleteRowSQL(const char *tableName, const psMetadata *where,84 static psString psDBGenerateDeleteRowSQL(const char *tableName, const psMetadata *where, 85 85 unsigned long long limit); 86 static char *psDBGenerateSetSQL(const psMetadata *set86 static psString psDBGenerateSetSQL(const psMetadata *set 87 87 ); 88 88 static char *psDBGenerateConditionalSQL(const psMetadataItem *item, const char *tableName); … … 90 90 // lookup table functions 91 91 static psElemType psDBMySQLToPType(enum enum_field_types type, unsigned int flags); 92 static char *psDBPTypeToSQL(psElemType pType);92 static psString psDBPTypeToSQL(psElemType pType); 93 93 static mysqlType *psDBPTypeToMySQL(psElemType pType); 94 94 … … 116 116 static psPtr psDBGetPTypeNaN(psElemType pType); 117 117 static bool psDBIsPTypeNaN(psElemType pType, psPtr data); 118 119 118 120 119 // public functions … … 228 227 PS_ASSERT_PTR_NON_NULL(dbname, false); 229 228 230 char *query = NULL;229 psString query = NULL; 231 230 psStringAppend(&query, "CREATE DATABASE %s", dbname); 232 231 … … 294 293 295 294 // Generate SQL query string 296 char *query = psDBGenerateCreateTableSQL(tableName, md);295 psString query = psDBGenerateCreateTableSQL(tableName, md); 297 296 if (!query) { 298 297 psError(PS_ERR_UNEXPECTED_NULL, false, _("Query generation failed.")); … … 320 319 321 320 // Create SQL command string to drop table 322 char *query = NULL;321 psString query = NULL; 323 322 psStringAppend(&query, "DROP TABLE %s", tableName); 324 323 … … 354 353 355 354 // Generate SQL query string 356 char *query = psDBGenerateSelectRowSQL(tableName, col, NULL, limit);355 psString query = psDBGenerateSelectRowSQL(tableName, col, NULL, limit); 357 356 if (!query) { 358 357 psError(PS_ERR_UNEXPECTED_NULL, false, _("Query generation failed.")); … … 541 540 542 541 // Create select row query 543 char *query = psDBGenerateSelectRowSQL(tableName, NULL, where, limit);542 psString query = psDBGenerateSelectRowSQL(tableName, NULL, where, limit); 544 543 if (!query) { 545 544 psError(PS_ERR_UNEXPECTED_NULL, false, "Query generation failed."); … … 597 596 598 597 // Generate SQL query string 599 char *query = psDBGenerateInsertRowSQL(tableName, row);598 psString query = psDBGenerateInsertRowSQL(tableName, row); 600 599 if (!query) { 601 600 psError(PS_ERR_UNEXPECTED_NULL, false, _("Query generation failed.")); … … 692 691 693 692 // Generate SQL query to update row 694 char *query = psDBGenerateUpdateRowSQL(tableName, where, values);693 psString query = psDBGenerateUpdateRowSQL(tableName, where, values); 695 694 if (!query) { 696 695 psError(PS_ERR_UNEXPECTED_NULL, false, _("Query generation failed.")); … … 720 719 721 720 // Create SQL statement string 722 char *query = psDBGenerateDeleteRowSQL(tableName, where,limit);721 psString query = psDBGenerateDeleteRowSQL(tableName, where,limit); 723 722 if (!query) { 724 723 psError(PS_ERR_UNEXPECTED_NULL, false, "Query generation failed."); … … 809 808 PS_ASSERT_PTR_NON_NULL(format, false); 810 809 811 char *query = NULL;810 psString query = NULL; 812 811 813 812 // Run query … … 847 846 PS_ASSERT_PTR_NON_NULL(format, -1); 848 847 849 char *query = NULL;848 psString query = NULL; 850 849 851 850 // generate query string … … 1229 1228 /*****************************************************************************/ 1230 1229 1231 static char *psDBGenerateCreateTableSQL(const char *tableName,1232 const psMetadata *table)1230 static psString psDBGenerateCreateTableSQL(const char *tableName, 1231 const psMetadata *table) 1233 1232 { 1234 1233 PS_ASSERT_PTR_NON_NULL(tableName, NULL); … … 1332 1331 } 1333 1332 1334 static char *psDBGenerateSelectRowSQL(const char *tableName,1335 const char *col,1336 const psMetadata *where,1337 psU64 limit)1333 static psString psDBGenerateSelectRowSQL(const char *tableName, 1334 const char *col, 1335 const psMetadata *where, 1336 psU64 limit) 1338 1337 { 1339 1338 PS_ASSERT_PTR_NON_NULL(tableName, NULL); … … 1374 1373 } 1375 1374 1376 static char *psDBGenerateInsertRowSQL(const char *tableName,1377 const psMetadata *row)1375 static psString psDBGenerateInsertRowSQL(const char *tableName, 1376 const psMetadata *row) 1378 1377 { 1379 1378 PS_ASSERT_PTR_NON_NULL(tableName, NULL); … … 1422 1421 } 1423 1422 1424 static char *psDBGenerateUpdateRowSQL(const char *tableName,1425 const psMetadata *where,1426 const psMetadata *values)1423 static psString psDBGenerateUpdateRowSQL(const char *tableName, 1424 const psMetadata *where, 1425 const psMetadata *values) 1427 1426 { 1428 1427 PS_ASSERT_PTR_NON_NULL(tableName, NULL); … … 1455 1454 } 1456 1455 1457 static char *psDBGenerateDeleteRowSQL(const char *tableName,1458 const psMetadata *where,1459 unsigned long long limit)1456 static psString psDBGenerateDeleteRowSQL(const char *tableName, 1457 const psMetadata *where, 1458 unsigned long long limit) 1460 1459 { 1461 1460 PS_ASSERT_PTR_NON_NULL(tableName, NULL); … … 1492 1491 } 1493 1492 1494 char *psDBGenerateWhereSQL(const psMetadata *where, const char *tableName)1493 psString psDBGenerateWhereSQL(const psMetadata *where, const char *tableName) 1495 1494 { 1496 1495 PS_ASSERT_PTR_NON_NULL(where, NULL); … … 1504 1503 } 1505 1504 1506 char *psDBGenerateWhereConditionSQL(const psMetadata *where, const char *tableName)1505 psString psDBGenerateWhereConditionSQL(const psMetadata *where, const char *tableName) 1507 1506 { 1508 1507 PS_ASSERT_PTR_NON_NULL(where, NULL); 1509 1508 1510 char *query = NULL;1509 psString query = NULL; 1511 1510 1512 1511 // we need to know if an item is 'MULTI' so we have to march through the … … 1540 1539 psStringAppend(&query, "("); 1541 1540 while ((mItem = psListGetAndIncrement(mCursor))) { 1542 char *conditional = psDBGenerateConditionalSQL(mItem, tableName);1541 psString conditional = psDBGenerateConditionalSQL(mItem, tableName); 1543 1542 if (!conditional) { 1544 1543 psError(PS_ERR_UNKNOWN, false, … … 1564 1563 psStringAppend(&query, ")"); 1565 1564 } else { 1566 char *conditional = psDBGenerateConditionalSQL(item, tableName);1565 psString conditional = psDBGenerateConditionalSQL(item, tableName); 1567 1566 if (!conditional) { 1568 1567 psError(PS_ERR_UNKNOWN, false, … … 1590 1589 } 1591 1590 1592 static char *psDBGenerateSetSQL(const psMetadata *set1593 )1591 static psString psDBGenerateSetSQL(const psMetadata *set 1592 ) 1594 1593 { 1595 1594 PS_ASSERT_PTR_NON_NULL(set 1596 1595 , NULL); 1597 1596 1598 char *query = psStringCopy("SET ");1597 psString query = psStringCopy("SET "); 1599 1598 1600 1599 psListIterator *cursor = psListIteratorAlloc(set … … 1618 1617 } 1619 1618 1620 static char *psDBGenerateConditionalSQL(const psMetadataItem *item, const char *tableName)1619 static psString psDBGenerateConditionalSQL(const psMetadataItem *item, const char *tableName) 1621 1620 { 1622 1621 PS_ASSERT_PTR_NON_NULL(item, NULL); 1623 1622 1624 char *query = NULL;1623 psString query = NULL; 1625 1624 1626 1625 // stringify the psMetadataItem into a SQL search specification … … 1725 1724 } 1726 1725 1727 static char *psDBPTypeToSQL(psElemType pType)1726 static psString psDBPTypeToSQL(psElemType pType) 1728 1727 { 1729 1728 psHash *pTypeToSQLTable; // type lookup table … … 1986 1985 PS_ASSERT_PTR_NON_NULL(lookupTable, ); 1987 1986 1988 char *key = psDBIntToString((psU64)type);1989 char *value = psStringCopy(string);1987 psString key = psDBIntToString((psU64)type); 1988 psString value = psStringCopy(string); 1990 1989 1991 1990 psHashAdd(lookupTable, key, value); … … 2001 2000 PS_ASSERT_PTR_NON_NULL(lookupTable, ); 2002 2001 2003 char *key = psDBIntToString((psU64)type);2002 psString key = psDBIntToString((psU64)type); 2004 2003 2005 2004 psHashAdd(lookupTable, key, value); … … 2124 2123 return isNaN; 2125 2124 } 2126 2127 2125 2128 2126 // string utility functions … … 2135 2133 size_t length = n ? (size_t)log10((double)n) + 1 + 1 2136 2134 : 2; 2137 char *string = psAlloc(length);2135 psString string = psStringAlloc(length); 2138 2136 snprintf(string, length, "%li", (long int)n); 2139 2137
Note:
See TracChangeset
for help on using the changeset viewer.
