Changeset 18520
- Timestamp:
- Jul 14, 2008, 3:18:02 PM (18 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 4 edited
-
share/pxadmin_create_tables.sql (modified) (1 diff)
-
src/magictool.c (modified) (10 diffs)
-
src/magictool.h (modified) (1 diff)
-
src/magictoolConfig.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/share/pxadmin_create_tables.sql
r18029 r18520 719 719 CREATE TABLE diffInputSkyfile (diff_id BIGINT, template TINYINT, stack_id BIGINT, warp_id BIGINT, skycell_id VARCHAR(64), tess_id VARCHAR(64), kind VARCHAR(64), PRIMARY KEY(diff_id, template), KEY(stack_id), KEY(warp_id), KEY(skycell_id), KEY(tess_id), KEY(kind), FOREIGN KEY (diff_id) REFERENCES diffRun(diff_id), FOREIGN KEY (stack_id) REFERENCES stackSumSkyfile(stack_id), FOREIGN KEY (warp_id, skycell_id, tess_id) REFERENCES warpSkyfile(warp_id, skycell_id, tess_id)) ENGINE=innodb DEFAULT CHARSET=latin1; 720 720 CREATE TABLE diffSkyfile (diff_id BIGINT, uri VARCHAR(255), path_base VARCHAR(255), bg DOUBLE, bg_stdev DOUBLE, stamps_num INT, stamps_rms FLOAT, sources INT, dtime_diff FLOAT, hostname VARCHAR(64), good_frac FLOAT, fault SMALLINT, PRIMARY KEY(diff_id), KEY(good_frac), KEY(fault), FOREIGN KEY (diff_id) REFERENCES diffRun(diff_id)) ENGINE=innodb DEFAULT CHARSET=latin1; 721 CREATE TABLE magicRun (magic_id BIGINT AUTO_INCREMENT, state VARCHAR(64), workdir VARCHAR(255), workdir_state VARCHAR(255), label VARCHAR(64), dvodb VARCHAR(255), registered DATETIME, PRIMARY KEY(magic_id), KEY(magic_id), KEY(state), KEY(workdir_state), KEY(label)) ENGINE=innodb DEFAULT CHARSET=latin1; 722 CREATE TABLE magicInputSkyfile (magic_id BIGINT, diff_id BIGINT, node VARCHAR(64), PRIMARY KEY(magic_id, diff_id), FOREIGN KEY (magic_id) REFERENCES magicRun(magic_id), FOREIGN KEY (diff_id) REFERENCES diffRun(diff_id)) ENGINE=innodb DEFAULT CHARSET=latin1; 723 CREATE TABLE magicTree (magic_id BIGINT, node VARCHAR(64), dep VARCHAR(64), KEY(magic_id), KEY(node), KEY(dep), INDEX(magic_id, node), FOREIGN KEY (magic_id) REFERENCES magicRun(magic_id)) ENGINE=innodb DEFAULT CHARSET=latin1; 724 CREATE TABLE magicNodeResult (magic_id BIGINT, node VARCHAR(64), uri VARCHAR(255), PRIMARY KEY(magic_id, node), FOREIGN KEY (magic_id) REFERENCES magicRun(magic_id), FOREIGN KEY (magic_id, node) REFERENCES magicTree(magic_id, node)) ENGINE=innodb DEFAULT CHARSET=latin1; 725 CREATE TABLE magicMask (magic_id BIGINT, uri VARCHAR(255), PRIMARY KEY(magic_id), FOREIGN KEY (magic_id) REFERENCES magicRun(magic_id)) ENGINE=innodb DEFAULT CHARSET=latin1; 726 CREATE TABLE magicSkyfileMask (magic_id BIGINT, diff_id BIGINT, uri VARCHAR(255), PRIMARY KEY(magic_id, diff_id), KEY(uri), FOREIGN KEY (magic_id) REFERENCES magicRun(magic_id), FOREIGN KEY (magic_id, diff_id) REFERENCES magicInputSkyfile(magic_id, diff_id), FOREIGN KEY (magic_id) REFERENCES magicMask(magic_id)) ENGINE=innodb DEFAULT CHARSET=latin1; 721 722 CREATE TABLE magicRun ( 723 magic_id BIGINT AUTO_INCREMENT, 724 state VARCHAR(64), 725 workdir VARCHAR(255), 726 workdir_state VARCHAR(255), 727 label VARCHAR(64), 728 dvodb VARCHAR(255), 729 registered DATETIME, 730 fault SMALLINT, 731 PRIMARY KEY(magic_id), 732 KEY(magic_id), 733 KEY(state), 734 KEY(workdir_state), 735 KEY(label), 736 KEY(fault) 737 ) ENGINE=innodb DEFAULT CHARSET=latin1; 738 739 CREATE TABLE magicInputSkyfile ( 740 magic_id BIGINT, 741 diff_id BIGINT, 742 node VARCHAR(64), 743 PRIMARY KEY(magic_id, diff_id), 744 FOREIGN KEY (magic_id) REFERENCES magicRun(magic_id), 745 FOREIGN KEY (diff_id) REFERENCES diffRun(diff_id) 746 ) ENGINE=innodb DEFAULT CHARSET=latin1; 747 748 CREATE TABLE magicTree ( 749 magic_id BIGINT, 750 node VARCHAR(64), 751 dep VARCHAR(64), 752 KEY(magic_id), 753 KEY(node), 754 KEY(dep), 755 INDEX(magic_id, node), 756 FOREIGN KEY (magic_id) REFERENCES magicRun(magic_id) 757 ) ENGINE=innodb DEFAULT CHARSET=latin1; 758 759 CREATE TABLE magicNodeResult ( 760 magic_id BIGINT, 761 node VARCHAR(64), 762 uri VARCHAR(255), 763 fault SMALLINT, 764 PRIMARY KEY(magic_id, node), 765 FOREIGN KEY (magic_id) REFERENCES magicRun(magic_id), 766 FOREIGN KEY (magic_id, node) REFERENCES magicTree(magic_id, node), 767 KEY(fault) 768 ) ENGINE=innodb DEFAULT CHARSET=latin1; 769 770 CREATE TABLE magicMask ( 771 magic_id BIGINT, 772 uri VARCHAR(255), 773 streaks INT, 774 fault SMALLINT, 775 PRIMARY KEY(magic_id), 776 FOREIGN KEY (magic_id) REFERENCES magicRun(magic_id), 777 KEY(fault) 778 ) ENGINE=innodb DEFAULT CHARSET=latin1; 779 727 780 CREATE TABLE calDB (cal_id BIGINT AUTO_INCREMENT, dvodb VARCHAR(64), state VARCHAR(64), PRIMARY KEY(cal_id), KEY(cal_id)) ENGINE=innodb DEFAULT CHARSET=latin1; 728 781 CREATE TABLE calRun (cal_id BIGINT AUTO_INCREMENT, region VARCHAR(64), last_step VARCHAR(64), state VARCHAR(64), PRIMARY KEY(cal_id), KEY(cal_id), KEY(last_step), FOREIGN KEY (cal_id) REFERENCES calDB(cal_id)) ENGINE=innodb DEFAULT CHARSET=latin1; -
trunk/ippTools/src/magictool.c
r18336 r18520 41 41 static bool tomaskMode(pxConfig *config); 42 42 static bool addmaskMode(pxConfig *config); 43 static bool toskyfilemaskMode(pxConfig *config);44 static bool addskyfilemaskMode(pxConfig *config);45 43 46 44 static bool setmagicRunState(pxConfig *config, psS64 magic_id, const char *state); … … 75 73 MODECASE(MAGICTOOL_MODE_TOMASK, tomaskMode); 76 74 MODECASE(MAGICTOOL_MODE_ADDMASK, addmaskMode); 77 MODECASE(MAGICTOOL_MODE_TOSKYFILEMASK, toskyfilemaskMode);78 MODECASE(MAGICTOOL_MODE_ADDSKYFILEMASK, addskyfilemaskMode);79 75 default: 80 76 psAbort("invalid option (this should not happen)"); … … 211 207 NULL, // label 212 208 NULL, // dvodb 213 NULL // registered 209 NULL, // registered 210 0 // fault 214 211 ); 215 212 if (!run) { … … 262 259 PS_ASSERT_PTR_NON_NULL(config, false); 263 260 264 // required 261 // required 265 262 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); 266 263 … … 278 275 label, 279 276 dvodb, 280 registered 277 registered, 278 0 281 279 ); 282 280 psFree(registered); 283 281 if (!run) { 284 282 psError(PS_ERR_UNKNOWN, false, "failed to alloc magicRun object"); 285 return true;283 return false; 286 284 } 287 285 if (!magicRunInsertObject(config->dbh, run)) { 288 286 psError(PS_ERR_UNKNOWN, false, "database error"); 289 287 psFree(run); 290 return true;288 return false; 291 289 } 292 290 … … 444 442 return false; 445 443 } 446 444 447 445 return true; 448 446 } … … 491 489 return false; 492 490 } 493 491 494 492 return true; 495 493 } … … 589 587 return true; 590 588 } 591 589 592 590 psHash *forest = psHashAlloc(psArrayLength(magicTree)); 593 591 … … 642 640 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false); 643 641 PXOPT_LOOKUP_STR(node, config->args, "-node", true, false); 644 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 642 643 // optional 644 PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false); 645 646 // default values 647 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 645 648 646 649 if (!magicNodeResultInsert(config->dbh, 647 (psS64)atoll(magic_id), 648 node, 649 uri 650 (psS64)atoll(magic_id), 651 node, 652 uri, 653 code 650 654 )) { 651 655 psError(PS_ERR_UNKNOWN, false, "database error"); … … 726 730 // required 727 731 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false); 728 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 732 733 // optional 734 PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false); 735 PXOPT_LOOKUP_S32(streaks, config->args, "-streaks", false, false); 736 737 // default values 738 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 729 739 730 740 if (!magicMaskInsert(config->dbh, 731 (psS64)atoll(magic_id), 732 uri 733 )) { 734 psError(PS_ERR_UNKNOWN, false, "database error"); 735 return false; 736 } 737 738 return true; 739 } 740 741 742 static bool toskyfilemaskMode(pxConfig *config) 743 { 744 PS_ASSERT_PTR_NON_NULL(config, false); 745 746 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 747 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 748 749 psString query = pxDataGet("magictool_toskyfilemask.sql"); 750 if (!query) { 751 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 752 return false; 753 } 754 755 // treat limit == 0 as "no limit" 756 if (limit) { 757 psString limitString = psDBGenerateLimitSQL(limit); 758 psStringAppend(&query, " %s", limitString); 759 psFree(limitString); 760 } 761 762 if (!p_psDBRunQuery(config->dbh, query)) { 763 psError(PS_ERR_UNKNOWN, false, "database error"); 764 psFree(query); 765 return false; 766 } 767 psFree(query); 768 769 psArray *output = p_psDBFetchResult(config->dbh); 770 if (!output) { 771 psErrorCode err = psErrorCodeLast(); 772 switch (err) { 773 case PS_ERR_DB_CLIENT: 774 psError(PXTOOLS_ERR_SYS, false, "database error"); 775 case PS_ERR_DB_SERVER: 776 psError(PXTOOLS_ERR_PROG, false, "database error"); 777 default: 778 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 779 } 780 781 return false; 782 } 783 if (!psArrayLength(output)) { 784 psTrace("magictool", PS_LOG_INFO, "no rows found"); 785 psFree(output); 786 return true; 787 } 788 789 if (psArrayLength(output)) { 790 // negative simple so the default is true 791 if (!ippdbPrintMetadatas(stdout, output, "toskyfilemask", !simple)) { 792 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 793 psFree(output); 794 return false; 795 } 796 } 797 798 psFree(output); 799 800 return true; 801 } 802 803 804 static bool addskyfilemaskMode(pxConfig *config) 805 { 806 PS_ASSERT_PTR_NON_NULL(config, false); 807 808 // required 809 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false); 810 PXOPT_LOOKUP_STR(diff_id, config->args, "diff_id", true, false); 811 PXOPT_LOOKUP_STR(uri, config->args, "uri", true, false); 812 813 if (!magicSkyfileMaskInsert(config->dbh, 814 (psS64)atoll(magic_id), 815 (psS64)atoll(diff_id), 816 uri 741 (psS64)atoll(magic_id), 742 uri, 743 streaks, 744 code 817 745 )) { 818 746 psError(PS_ERR_UNKNOWN, false, "database error"); -
trunk/ippTools/src/magictool.h
r18093 r18520 35 35 MAGICTOOL_MODE_TOMASK, 36 36 MAGICTOOL_MODE_ADDMASK, 37 MAGICTOOL_MODE_TOSKYFILEMASK,38 MAGICTOOL_MODE_ADDSKYFILEMASK,39 37 } MAGICtoolMode; 40 38 -
trunk/ippTools/src/magictoolConfig.c
r18172 r18520 104 104 psMetadataAddStr(inputtreeArgs, PS_LIST_TAIL, "-dep_file", 0, 105 105 "order of operations dep. file (required)", NULL); 106 psMetadataAddS16(inputtreeArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 106 107 107 108 // -tooprocess … … 121 122 "define symbolic node name (required)", NULL); 122 123 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-uri", 0, 123 "define URI (required)", NULL); 124 "define URI", NULL); 125 psMetadataAddS16(addresultArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 124 126 125 127 // -tomask … … 134 136 psMetadataAddStr(addmaskArgs, PS_LIST_TAIL, "-magic_id", 0, 135 137 "define magictool ID (required)", NULL); 136 psMetadataAddStr(addmaskArgs, PS_LIST_TAIL, "-uri", 0, 137 "define URI (required)", NULL); 138 139 // -toskyfilemask 140 psMetadata *toskyfilemaskArgs = psMetadataAlloc(); 141 psMetadataAddStr(toskyfilemaskArgs, PS_LIST_TAIL, "-magic_id", 0, 142 "search by magic ID", NULL); 143 psMetadataAddU64(toskyfilemaskArgs, PS_LIST_TAIL, "-limit", 0, 144 "limit result set to N items", 0); 145 psMetadataAddBool(toskyfilemaskArgs, PS_LIST_TAIL, "-simple", 0, 146 "use the simple output format", false); 147 148 // -addskyfilemask 149 psMetadata *addskyfilemaskArgs = psMetadataAlloc(); 150 psMetadataAddStr(addskyfilemaskArgs, PS_LIST_TAIL, "-magic_id", 0, 151 "define magictool ID (required)", NULL); 152 psMetadataAddStr(addskyfilemaskArgs, PS_LIST_TAIL, "-diff_id", 0, 153 "define difftool ID (required)", NULL); 154 psMetadataAddStr(addskyfilemaskArgs, PS_LIST_TAIL, "-uri", 0, 155 "define URI (required)", NULL); 138 psMetadataAddStr(addmaskArgs, PS_LIST_TAIL, "-uri", 0, "define URI", NULL); 139 psMetadataAddS32(addmaskArgs, PS_LIST_TAIL, "-uri", 0, "define number of streaks", 0); 156 140 157 141 psFree(now); … … 170 154 PXOPT_ADD_MODE("-tomask", "", MAGICTOOL_MODE_TOMASK, tomaskArgs); 171 155 PXOPT_ADD_MODE("-addmask", "", MAGICTOOL_MODE_ADDMASK, addmaskArgs); 172 PXOPT_ADD_MODE("-toskyfilemask", "", MAGICTOOL_MODE_TOSKYFILEMASK, toskyfilemaskArgs);173 PXOPT_ADD_MODE("-addskyfilemask", "", MAGICTOOL_MODE_ADDSKYFILEMASK, addskyfilemaskArgs);174 156 175 157 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note:
See TracChangeset
for help on using the changeset viewer.
