Changeset 14242 for trunk/ippTools/src/dettool.c
- Timestamp:
- Jul 16, 2007, 3:23:56 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/dettool.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/dettool.c
r14241 r14242 51 51 static bool processedexpMode(pxConfig *config); 52 52 static bool revertprocessedexpMode(pxConfig *config); 53 // stacked 53 // stacked[imfile] 54 54 static bool tostackedMode(pxConfig *config); 55 55 static bool addstackedMode(pxConfig *config); 56 56 static bool stackedMode(pxConfig *config); 57 57 static bool revertstackedMode(pxConfig *config); 58 58 // normalizedstat 59 static bool tonormalizedstatMode(pxConfig *config); 60 static bool addnormalizedstatMode(pxConfig *config); 61 static bool normalizedstatMode(pxConfig *config); 62 static bool revertnormalizedstatMode(pxConfig *config); 63 // normalizedimfile 59 64 static bool tonormalizeMode(pxConfig *config); 60 static bool addnormalizedstatMode(pxConfig *config);61 static bool tonormalizedstatMode(pxConfig *config);62 65 static bool addnormalizedimfileMode(pxConfig *config); 63 66 static bool tonormalizedexpMode(pxConfig *config); … … 135 138 MODECASE(DETTOOL_MODE_STACKED, stackedMode); 136 139 MODECASE(DETTOOL_MODE_REVERTSTACKED, revertstackedMode); 137 140 // normalizedstat 141 MODECASE(DETTOOL_MODE_TONORMALIZEDSTAT, tonormalizedstatMode); 142 MODECASE(DETTOOL_MODE_ADDNORMALIZEDSTAT,addnormalizedstatMode); 143 MODECASE(DETTOOL_MODE_NORMALIZEDSTAT, normalizedstatMode); 144 MODECASE(DETTOOL_MODE_REVERTNORMALIZEDSTAT, revertnormalizedstatMode); 145 // normalizedimfile 138 146 MODECASE(DETTOOL_MODE_TONORMALIZE, tonormalizeMode); 139 MODECASE(DETTOOL_MODE_ADDNORMALIZEDSTAT,addnormalizedstatMode);140 MODECASE(DETTOOL_MODE_TONORMALIZEDSTAT, tonormalizedstatMode);141 147 MODECASE(DETTOOL_MODE_ADDNORMALIZEDIMFILE,addnormalizedimfileMode); 142 148 MODECASE(DETTOOL_MODE_NORMALIZEDIMFILE, normalizedimfileMode); … … 3520 3526 code 3521 3527 ); 3528 } 3529 3530 3531 static bool normalizedstatMode(pxConfig *config) 3532 { 3533 PS_ASSERT_PTR_NON_NULL(config, false); 3534 3535 bool status = false; 3536 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 3537 if (!status) { 3538 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit"); 3539 return false; 3540 } 3541 3542 bool faulted = psMetadataLookupU64(&status, config->args, "-faulted"); 3543 if (!status) { 3544 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -faulted"); 3545 return false; 3546 } 3547 3548 psString query = pxDataGet("dettool_normalizedstat.sql"); 3549 if (!query) { 3550 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 3551 return false; 3552 } 3553 3554 if (faulted) { 3555 // list only faulted rows 3556 psStringAppend(&query, " %s", "WHERE fault != 0"); 3557 } else { 3558 // don't list faulted rows 3559 psStringAppend(&query, " %s", "WHERE fault = 0"); 3560 } 3561 3562 if (config->where) { 3563 psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL); 3564 psStringAppend(&query, " AND %s", whereClause); 3565 psFree(whereClause); 3566 } 3567 3568 // treat limit == 0 as "no limit" 3569 if (limit) { 3570 psString limitString = psDBGenerateLimitSQL(limit); 3571 psStringAppend(&query, " %s", limitString); 3572 psFree(limitString); 3573 } 3574 3575 if (!p_psDBRunQuery(config->dbh, query)) { 3576 psError(PS_ERR_UNKNOWN, false, "database error"); 3577 psFree(query); 3578 return false; 3579 } 3580 psFree(query); 3581 3582 psArray *output = p_psDBFetchResult(config->dbh); 3583 if (!output) { 3584 psError(PS_ERR_UNKNOWN, false, "database error"); 3585 return false; 3586 } 3587 if (!psArrayLength(output)) { 3588 psTrace("dettool", PS_LOG_INFO, "no rows found"); 3589 psFree(output); 3590 return true; 3591 } 3592 3593 bool simple = false; 3594 { 3595 bool status = false; 3596 simple = psMetadataLookupBool(&status, config->args, "-simple"); 3597 if (!status) { 3598 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple"); 3599 psFree(output); 3600 return false; 3601 } 3602 } 3603 3604 // negative simple so the default is true 3605 if (!ippdbPrintMetadatas(stdout, output, "detNormalizedStatImfile", !simple)) { 3606 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 3607 psFree(output); 3608 return false; 3609 } 3610 3611 psFree(output); 3612 3613 return true; 3614 } 3615 3616 static bool revertnormalizedstatMode(pxConfig *config) 3617 { 3618 PS_ASSERT_PTR_NON_NULL(config, false); 3619 3620 psString query = pxDataGet("dettool_revertnormalizedstat.sql"); 3621 if (!query) { 3622 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 3623 return false; 3624 } 3625 3626 if (config->where) { 3627 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "detNormalizedStatImfile"); 3628 psStringAppend(&query, " AND %s", whereClause); 3629 psFree(whereClause); 3630 } 3631 3632 if (!p_psDBRunQuery(config->dbh, query)) { 3633 psError(PS_ERR_UNKNOWN, false, "database error"); 3634 psFree(query); 3635 return false; 3636 } 3637 psFree(query); 3638 3639 if (psDBAffectedRows(config->dbh) < 1) { 3640 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row"); 3641 return false; 3642 } 3643 3644 return true; 3522 3645 } 3523 3646
Note:
See TracChangeset
for help on using the changeset viewer.
