Changeset 32771
- Timestamp:
- Nov 22, 2011, 2:22:43 PM (14 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 1 added
- 5 edited
-
share/Makefile.am (modified) (1 diff)
-
share/pstamptool_listfile.sql (added)
-
share/pxadmin_create_tables.sql (modified) (1 diff)
-
src/pstamptool.c (modified) (3 diffs)
-
src/pstamptool.h (modified) (1 diff)
-
src/pstamptoolConfig.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/share/Makefile.am
r32703 r32771 308 308 pstamptool_getdependent.sql \ 309 309 pstamptool_listjob.sql \ 310 pstamptool_listfile.sql \ 310 311 pstamptool_pendingcleanup.sql \ 311 312 pstamptool_pendingdependent.sql \ -
trunk/ippTools/share/pxadmin_create_tables.sql
r32695 r32771 1479 1479 ) ENGINE=innodb DEFAULT CHARSET=latin1; 1480 1480 1481 CREATE TABLE pstampFile ( 1482 file_id BIGINT AUTO_INCREMENT, 1483 job_id BIGINT NOT NULL, 1484 path VARCHAR(255), 1485 PRIMARY KEY(file_id), 1486 KEY(job_id) 1487 ) ENGINE=innodb DEFAULT CHARSET=latin1; 1488 1481 1489 CREATE TABLE pstampWebRequest ( 1482 1490 num BIGINT AUTO_INCREMENT, -
trunk/ippTools/src/pstamptool.c
r32360 r32771 56 56 static bool revertdependentMode(pxConfig *config); 57 57 static bool getwebrequestnumMode(pxConfig *config); 58 static bool addfileMode(pxConfig *config); 59 static bool listfileMode(pxConfig *config); 58 60 59 61 # define MODECASE(caseName, func) \ … … 103 105 MODECASE(PSTAMPTOOL_MODE_REVERTDEPENDENT, revertdependentMode); 104 106 MODECASE(PSTAMPTOOL_MODE_GETWEBREQUESTNUM, getwebrequestnumMode); 107 MODECASE(PSTAMPTOOL_MODE_ADDFILE, addfileMode); 108 MODECASE(PSTAMPTOOL_MODE_LISTFILE, listfileMode); 105 109 default: 106 110 psAbort("invalid option (this should not happen)"); … … 1476 1480 return true; 1477 1481 } 1482 1483 static bool addfileMode(pxConfig *config) 1484 { 1485 PS_ASSERT_PTR_NON_NULL(config, false); 1486 1487 PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", true, false); 1488 PXOPT_LOOKUP_STR(path, config->args, "-path", true, false); 1489 1490 if (!pstampFileInsert(config->dbh, 1491 0, // file_id 1492 job_id, 1493 path 1494 )) { 1495 psError(PS_ERR_UNKNOWN, false, "database error"); 1496 return false; 1497 } 1498 1499 psU64 affected = psDBAffectedRows(config->dbh); 1500 if (affected != 1) { 1501 psError(PS_ERR_UNKNOWN, false, 1502 "should have affected one row but %" PRIu64 " rows were modified", 1503 affected); 1504 return false; 1505 } 1506 1507 psS64 file_id = psDBLastInsertID(config->dbh); 1508 printf("%" PRId64 "\n", file_id); 1509 1510 return true; 1511 } 1512 1513 static bool listfileMode(pxConfig *config) 1514 { 1515 PS_ASSERT_PTR_NON_NULL(config, false); 1516 1517 psMetadata *where = psMetadataAlloc(); 1518 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 1519 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 1520 PXOPT_COPY_S64(config->args, where, "-file_id", "file_id", "=="); 1521 1522 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1523 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1524 1525 if (!psListLength(where->list)) { 1526 fprintf(stderr, "search arguments are required\n"); 1527 exit (1); 1528 } 1529 1530 psString query = pxDataGet("pstamptool_listfile.sql"); 1531 if (!query) { 1532 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1533 return false; 1534 } 1535 1536 // use psDBGenerateWhereSQL because the SQL yields an intermediate table 1537 if (psListLength(where->list)) { 1538 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1539 psStringAppend(&query, " WHERE %s", whereClause); 1540 psFree(whereClause); 1541 } 1542 psFree(where); 1543 1544 // treat limit == 0 as "no limit" 1545 if (limit) { 1546 psString limitString = psDBGenerateLimitSQL(limit); 1547 psStringAppend(&query, " %s", limitString); 1548 psFree(limitString); 1549 } 1550 1551 if (!p_psDBRunQuery(config->dbh, query)) { 1552 psError(PS_ERR_UNKNOWN, false, "database error"); 1553 psFree(query); 1554 return false; 1555 } 1556 psFree(query); 1557 1558 psArray *output = p_psDBFetchResult(config->dbh); 1559 if (!output) { 1560 psError(PS_ERR_UNKNOWN, false, "database error"); 1561 return false; 1562 } 1563 if (!psArrayLength(output)) { 1564 psTrace("pstamptool", PS_LOG_INFO, "no rows found"); 1565 psFree(output); 1566 return true; 1567 } 1568 1569 // negative simple so the default is true 1570 if (!ippdbPrintMetadatas(stdout, output, "pstampFile", !simple)) { 1571 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1572 psFree(output); 1573 return false; 1574 } 1575 1576 psFree(output); 1577 1578 return true; 1579 } 1580 -
trunk/ippTools/src/pstamptool.h
r29248 r32771 50 50 PSTAMPTOOL_MODE_REVERTDEPENDENT, 51 51 PSTAMPTOOL_MODE_GETWEBREQUESTNUM, 52 PSTAMPTOOL_MODE_ADDFILE, 53 PSTAMPTOOL_MODE_LISTFILE, 52 54 } pstamptoolMode; 53 55 -
trunk/ippTools/src/pstamptoolConfig.c
r30543 r32771 274 274 psMetadata *modes = psMetadataAlloc(); 275 275 276 // -addfile 277 psMetadata *addfileArgs = psMetadataAlloc(); 278 psMetadataAddS64(addfileArgs, PS_LIST_TAIL, "-job_id", 0, "define job ID for file (required)", 0); 279 psMetadataAddStr(addfileArgs, PS_LIST_TAIL, "-path", 0, "define path for file (required)", NULL); 280 281 // -listfile 282 psMetadata *listfileArgs = psMetadataAlloc(); 283 psMetadataAddS64(listfileArgs, PS_LIST_TAIL, "-file_id", 0, "select by file ID", 0); 284 psMetadataAddS64(listfileArgs, PS_LIST_TAIL, "-job_id", 0, "select by job ID", 0); 285 psMetadataAddS64(listfileArgs, PS_LIST_TAIL, "-req_id", 0, "select by request ID", 0); 286 psMetadataAddU64(listfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 287 psMetadataAddBool(listfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 288 276 289 PXOPT_ADD_MODE("-addreq", "", PSTAMPTOOL_MODE_ADDREQ, addreqArgs); 277 290 PXOPT_ADD_MODE("-pendingreq", "", PSTAMPTOOL_MODE_PENDINGREQ, pendingreqArgs); … … 302 315 PXOPT_ADD_MODE("-project", "", PSTAMPTOOL_MODE_PROJECT, projectArgs); 303 316 PXOPT_ADD_MODE("-getwebrequestnum","", PSTAMPTOOL_MODE_GETWEBREQUESTNUM, getwebrequestnumArgs); 317 PXOPT_ADD_MODE("-addfile", "", PSTAMPTOOL_MODE_ADDFILE, addfileArgs); 318 PXOPT_ADD_MODE("-listfile", "", PSTAMPTOOL_MODE_LISTFILE, listfileArgs); 304 319 305 320 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note:
See TracChangeset
for help on using the changeset viewer.
