Changeset 18595 for trunk/ippdb/src/ippdb.c
- Timestamp:
- Jul 17, 2008, 10:15:51 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ippdb/src/ippdb.c (modified) (63 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippdb/src/ippdb.c
r18044 r18595 79 79 #define MAGICNODERESULT_TABLE_NAME "magicNodeResult" 80 80 #define MAGICMASK_TABLE_NAME "magicMask" 81 #define MAGICSKYFILEMASK_TABLE_NAME "magicSkyfileMask"82 81 #define CALDB_TABLE_NAME "calDB" 83 82 #define CALRUN_TABLE_NAME "calRun" … … 14075 14074 static void stackRunRowFree(stackRunRow *object); 14076 14075 14077 stackRunRow *stackRunRowAlloc(psS64 stack_id, const char *state, const char *workdir, const char *dvodb, psTime* registered, const char *skycell_id, const char *tess_id )14076 stackRunRow *stackRunRowAlloc(psS64 stack_id, const char *state, const char *workdir, const char *dvodb, psTime* registered, const char *skycell_id, const char *tess_id, const char *filter) 14078 14077 { 14079 14078 stackRunRow *_object; … … 14089 14088 _object->skycell_id = psStringCopy(skycell_id); 14090 14089 _object->tess_id = psStringCopy(tess_id); 14090 _object->filter = psStringCopy(filter); 14091 14091 14092 14092 return _object; … … 14101 14101 psFree(object->skycell_id); 14102 14102 psFree(object->tess_id); 14103 psFree(object->filter); 14103 14104 } 14104 14105 … … 14141 14142 return false; 14142 14143 } 14144 if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, "64")) { 14145 psError(PS_ERR_UNKNOWN, false, "failed to add item filter"); 14146 psFree(md); 14147 return false; 14148 } 14143 14149 14144 14150 bool status = psDBCreateTable(dbh, STACKRUN_TABLE_NAME, md); … … 14154 14160 } 14155 14161 14156 bool stackRunInsert(psDB * dbh, psS64 stack_id, const char *state, const char *workdir, const char *dvodb, psTime* registered, const char *skycell_id, const char *tess_id )14162 bool stackRunInsert(psDB * dbh, psS64 stack_id, const char *state, const char *workdir, const char *dvodb, psTime* registered, const char *skycell_id, const char *tess_id, const char *filter) 14157 14163 { 14158 14164 psMetadata *md = psMetadataAlloc(); … … 14189 14195 if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, NULL, tess_id)) { 14190 14196 psError(PS_ERR_UNKNOWN, false, "failed to add item tess_id"); 14197 psFree(md); 14198 return false; 14199 } 14200 if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, filter)) { 14201 psError(PS_ERR_UNKNOWN, false, "failed to add item filter"); 14191 14202 psFree(md); 14192 14203 return false; … … 14215 14226 bool stackRunInsertObject(psDB *dbh, stackRunRow *object) 14216 14227 { 14217 return stackRunInsert(dbh, object->stack_id, object->state, object->workdir, object->dvodb, object->registered, object->skycell_id, object->tess_id );14228 return stackRunInsert(dbh, object->stack_id, object->state, object->workdir, object->dvodb, object->registered, object->skycell_id, object->tess_id, object->filter); 14218 14229 } 14219 14230 … … 14323 14334 return false; 14324 14335 } 14336 if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, object->filter)) { 14337 psError(PS_ERR_UNKNOWN, false, "failed to add item filter"); 14338 psFree(md); 14339 return false; 14340 } 14325 14341 14326 14342 … … 14367 14383 return false; 14368 14384 } 14369 14370 return stackRunRowAlloc(stack_id, state, workdir, dvodb, registered, skycell_id, tess_id); 14385 char* filter = psMetadataLookupPtr(&status, md, "filter"); 14386 if (!status) { 14387 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item filter"); 14388 return false; 14389 } 14390 14391 return stackRunRowAlloc(stack_id, state, workdir, dvodb, registered, skycell_id, tess_id, filter); 14371 14392 } 14372 14393 psArray *stackRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) … … 23032 23053 static void magicRunRowFree(magicRunRow *object); 23033 23054 23034 magicRunRow *magicRunRowAlloc(psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered )23055 magicRunRow *magicRunRowAlloc(psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered, psS16 fault) 23035 23056 { 23036 23057 magicRunRow *_object; … … 23046 23067 _object->dvodb = psStringCopy(dvodb); 23047 23068 _object->registered = psTimeCopy(registered); 23069 _object->fault = fault; 23048 23070 23049 23071 return _object; … … 23098 23120 return false; 23099 23121 } 23122 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) { 23123 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 23124 psFree(md); 23125 return false; 23126 } 23100 23127 23101 23128 bool status = psDBCreateTable(dbh, MAGICRUN_TABLE_NAME, md); … … 23111 23138 } 23112 23139 23113 bool magicRunInsert(psDB * dbh, psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered )23140 bool magicRunInsert(psDB * dbh, psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered, psS16 fault) 23114 23141 { 23115 23142 psMetadata *md = psMetadataAlloc(); … … 23146 23173 if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, registered)) { 23147 23174 psError(PS_ERR_UNKNOWN, false, "failed to add item registered"); 23175 psFree(md); 23176 return false; 23177 } 23178 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) { 23179 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 23148 23180 psFree(md); 23149 23181 return false; … … 23172 23204 bool magicRunInsertObject(psDB *dbh, magicRunRow *object) 23173 23205 { 23174 return magicRunInsert(dbh, object->magic_id, object->state, object->workdir, object->workdir_state, object->label, object->dvodb, object->registered );23206 return magicRunInsert(dbh, object->magic_id, object->state, object->workdir, object->workdir_state, object->label, object->dvodb, object->registered, object->fault); 23175 23207 } 23176 23208 … … 23280 23312 return false; 23281 23313 } 23314 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) { 23315 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 23316 psFree(md); 23317 return false; 23318 } 23282 23319 23283 23320 … … 23324 23361 return false; 23325 23362 } 23326 23327 return magicRunRowAlloc(magic_id, state, workdir, workdir_state, label, dvodb, registered); 23363 psS16 fault = psMetadataLookupS16(&status, md, "fault"); 23364 if (!status) { 23365 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault"); 23366 return false; 23367 } 23368 23369 return magicRunRowAlloc(magic_id, state, workdir, workdir_state, label, dvodb, registered, fault); 23328 23370 } 23329 23371 psArray *magicRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) … … 24088 24130 static void magicNodeResultRowFree(magicNodeResultRow *object); 24089 24131 24090 magicNodeResultRow *magicNodeResultRowAlloc(psS64 magic_id, const char *node, const char *uri )24132 magicNodeResultRow *magicNodeResultRowAlloc(psS64 magic_id, const char *node, const char *uri, psS16 fault) 24091 24133 { 24092 24134 magicNodeResultRow *_object; … … 24098 24140 _object->node = psStringCopy(node); 24099 24141 _object->uri = psStringCopy(uri); 24142 _object->fault = fault; 24100 24143 24101 24144 return _object; … … 24126 24169 return false; 24127 24170 } 24171 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) { 24172 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 24173 psFree(md); 24174 return false; 24175 } 24128 24176 24129 24177 bool status = psDBCreateTable(dbh, MAGICNODERESULT_TABLE_NAME, md); … … 24139 24187 } 24140 24188 24141 bool magicNodeResultInsert(psDB * dbh, psS64 magic_id, const char *node, const char *uri )24189 bool magicNodeResultInsert(psDB * dbh, psS64 magic_id, const char *node, const char *uri, psS16 fault) 24142 24190 { 24143 24191 psMetadata *md = psMetadataAlloc(); … … 24154 24202 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) { 24155 24203 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 24204 psFree(md); 24205 return false; 24206 } 24207 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) { 24208 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 24156 24209 psFree(md); 24157 24210 return false; … … 24180 24233 bool magicNodeResultInsertObject(psDB *dbh, magicNodeResultRow *object) 24181 24234 { 24182 return magicNodeResultInsert(dbh, object->magic_id, object->node, object->uri );24235 return magicNodeResultInsert(dbh, object->magic_id, object->node, object->uri, object->fault); 24183 24236 } 24184 24237 … … 24268 24321 return false; 24269 24322 } 24323 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) { 24324 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 24325 psFree(md); 24326 return false; 24327 } 24270 24328 24271 24329 … … 24292 24350 return false; 24293 24351 } 24294 24295 return magicNodeResultRowAlloc(magic_id, node, uri); 24352 psS16 fault = psMetadataLookupS16(&status, md, "fault"); 24353 if (!status) { 24354 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault"); 24355 return false; 24356 } 24357 24358 return magicNodeResultRowAlloc(magic_id, node, uri, fault); 24296 24359 } 24297 24360 psArray *magicNodeResultSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) … … 24411 24474 static void magicMaskRowFree(magicMaskRow *object); 24412 24475 24413 magicMaskRow *magicMaskRowAlloc(psS64 magic_id, const char *uri )24476 magicMaskRow *magicMaskRowAlloc(psS64 magic_id, const char *uri, psS32 streaks, psS16 fault) 24414 24477 { 24415 24478 magicMaskRow *_object; … … 24420 24483 _object->magic_id = magic_id; 24421 24484 _object->uri = psStringCopy(uri); 24485 _object->streaks = streaks; 24486 _object->fault = fault; 24422 24487 24423 24488 return _object; … … 24442 24507 return false; 24443 24508 } 24509 if (!psMetadataAdd(md, PS_LIST_TAIL, "streaks", PS_DATA_S32, NULL, 0)) { 24510 psError(PS_ERR_UNKNOWN, false, "failed to add item streaks"); 24511 psFree(md); 24512 return false; 24513 } 24514 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) { 24515 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 24516 psFree(md); 24517 return false; 24518 } 24444 24519 24445 24520 bool status = psDBCreateTable(dbh, MAGICMASK_TABLE_NAME, md); … … 24455 24530 } 24456 24531 24457 bool magicMaskInsert(psDB * dbh, psS64 magic_id, const char *uri )24532 bool magicMaskInsert(psDB * dbh, psS64 magic_id, const char *uri, psS32 streaks, psS16 fault) 24458 24533 { 24459 24534 psMetadata *md = psMetadataAlloc(); … … 24465 24540 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) { 24466 24541 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 24542 psFree(md); 24543 return false; 24544 } 24545 if (!psMetadataAdd(md, PS_LIST_TAIL, "streaks", PS_DATA_S32, NULL, streaks)) { 24546 psError(PS_ERR_UNKNOWN, false, "failed to add item streaks"); 24547 psFree(md); 24548 return false; 24549 } 24550 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) { 24551 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 24467 24552 psFree(md); 24468 24553 return false; … … 24491 24576 bool magicMaskInsertObject(psDB *dbh, magicMaskRow *object) 24492 24577 { 24493 return magicMaskInsert(dbh, object->magic_id, object->uri );24578 return magicMaskInsert(dbh, object->magic_id, object->uri, object->streaks, object->fault); 24494 24579 } 24495 24580 … … 24574 24659 return false; 24575 24660 } 24661 if (!psMetadataAdd(md, PS_LIST_TAIL, "streaks", PS_DATA_S32, NULL, object->streaks)) { 24662 psError(PS_ERR_UNKNOWN, false, "failed to add item streaks"); 24663 psFree(md); 24664 return false; 24665 } 24666 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) { 24667 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 24668 psFree(md); 24669 return false; 24670 } 24576 24671 24577 24672 … … 24593 24688 return false; 24594 24689 } 24595 24596 return magicMaskRowAlloc(magic_id, uri); 24690 psS32 streaks = psMetadataLookupS32(&status, md, "streaks"); 24691 if (!status) { 24692 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item streaks"); 24693 return false; 24694 } 24695 psS16 fault = psMetadataLookupS16(&status, md, "fault"); 24696 if (!status) { 24697 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault"); 24698 return false; 24699 } 24700 24701 return magicMaskRowAlloc(magic_id, uri, streaks, fault); 24597 24702 } 24598 24703 psArray *magicMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) … … 24710 24815 return true; 24711 24816 } 24712 static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object);24713 24714 magicSkyfileMaskRow *magicSkyfileMaskRowAlloc(psS64 magic_id, psS64 diff_id, const char *uri)24715 {24716 magicSkyfileMaskRow *_object;24717 24718 _object = psAlloc(sizeof(magicSkyfileMaskRow));24719 psMemSetDeallocator(_object, (psFreeFunc)magicSkyfileMaskRowFree);24720 24721 _object->magic_id = magic_id;24722 _object->diff_id = diff_id;24723 _object->uri = psStringCopy(uri);24724 24725 return _object;24726 }24727 24728 static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object)24729 {24730 psFree(object->uri);24731 }24732 24733 bool magicSkyfileMaskCreateTable(psDB *dbh)24734 {24735 psMetadata *md = psMetadataAlloc();24736 if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {24737 psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");24738 psFree(md);24739 return false;24740 }24741 if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, "Primary Key fkey(magic_id, diff_id) ref magicInputSkyfile(magic_id, diff_id)", 0)) {24742 psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");24743 psFree(md);24744 return false;24745 }24746 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "fkey(magic_id) ref magicMask(magic_id)", "255")) {24747 psError(PS_ERR_UNKNOWN, false, "failed to add item uri");24748 psFree(md);24749 return false;24750 }24751 24752 bool status = psDBCreateTable(dbh, MAGICSKYFILEMASK_TABLE_NAME, md);24753 24754 psFree(md);24755 24756 return status;24757 }24758 24759 bool magicSkyfileMaskDropTable(psDB *dbh)24760 {24761 return psDBDropTable(dbh, MAGICSKYFILEMASK_TABLE_NAME);24762 }24763 24764 bool magicSkyfileMaskInsert(psDB * dbh, psS64 magic_id, psS64 diff_id, const char *uri)24765 {24766 psMetadata *md = psMetadataAlloc();24767 if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {24768 psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");24769 psFree(md);24770 return false;24771 }24772 if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, diff_id)) {24773 psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");24774 psFree(md);24775 return false;24776 }24777 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {24778 psError(PS_ERR_UNKNOWN, false, "failed to add item uri");24779 psFree(md);24780 return false;24781 }24782 24783 bool status = psDBInsertOneRow(dbh, MAGICSKYFILEMASK_TABLE_NAME, md);24784 psFree(md);24785 24786 return status;24787 }24788 24789 long long magicSkyfileMaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)24790 {24791 long long deleted = 0;24792 24793 long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);24794 if (count < 0) {24795 psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");24796 return count;24797 24798 deleted += count;24799 }24800 24801 return deleted;24802 }24803 bool magicSkyfileMaskInsertObject(psDB *dbh, magicSkyfileMaskRow *object)24804 {24805 return magicSkyfileMaskInsert(dbh, object->magic_id, object->diff_id, object->uri);24806 }24807 24808 bool magicSkyfileMaskInsertObjects(psDB *dbh, psArray *objects)24809 {24810 for (long i = 0; i < psArrayLength(objects); i++) {24811 if (!magicSkyfileMaskInsertObject(dbh, objects->data[i])) {24812 return false;24813 }24814 }24815 24816 return true;24817 }24818 24819 bool magicSkyfileMaskInsertFits(psDB *dbh, const psFits *fits)24820 {24821 psArray *rowSet;24822 24823 // move to (the first?) extension named MAGICSKYFILEMASK_TABLE_NAME24824 if (!psFitsMoveExtName(fits, MAGICSKYFILEMASK_TABLE_NAME)) {24825 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICSKYFILEMASK_TABLE_NAME);24826 return false;24827 }24828 24829 // check HDU type24830 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) {24831 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");24832 return false;24833 }24834 24835 // read fits table24836 rowSet = psFitsReadTable(fits);24837 if (!rowSet) {24838 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");24839 psFree(rowSet);24840 return false;24841 }24842 24843 if (!psDBInsertRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, rowSet)) {24844 psError(PS_ERR_UNKNOWN, false, "databse insert failed");24845 psFree(rowSet);24846 return false;24847 }24848 24849 psFree(rowSet);24850 24851 return true;24852 }24853 24854 bool magicSkyfileMaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)24855 {24856 psArray *rowSet;24857 24858 rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);24859 if (!rowSet) {24860 return false;24861 }24862 24863 // output to fits24864 if (!psFitsWriteTable(fits, NULL, rowSet, MAGICSKYFILEMASK_TABLE_NAME)) {24865 psError(PS_ERR_UNKNOWN, false, "FITS table write failed");24866 psFree(rowSet);24867 return false;24868 }24869 24870 psFree(rowSet);24871 24872 return true;24873 }24874 24875 psMetadata *magicSkyfileMaskMetadataFromObject(const magicSkyfileMaskRow *object)24876 {24877 psMetadata *md = psMetadataAlloc();24878 if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {24879 psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");24880 psFree(md);24881 return false;24882 }24883 if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, object->diff_id)) {24884 psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");24885 psFree(md);24886 return false;24887 }24888 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {24889 psError(PS_ERR_UNKNOWN, false, "failed to add item uri");24890 psFree(md);24891 return false;24892 }24893 24894 24895 return md;24896 }24897 24898 magicSkyfileMaskRow *magicSkyfileMaskObjectFromMetadata(psMetadata *md)24899 {24900 24901 bool status = false;24902 psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");24903 if (!status) {24904 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");24905 return false;24906 }24907 psS64 diff_id = psMetadataLookupS64(&status, md, "diff_id");24908 if (!status) {24909 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item diff_id");24910 return false;24911 }24912 char* uri = psMetadataLookupPtr(&status, md, "uri");24913 if (!status) {24914 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");24915 return false;24916 }24917 24918 return magicSkyfileMaskRowAlloc(magic_id, diff_id, uri);24919 }24920 psArray *magicSkyfileMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)24921 {24922 psArray *rowSet;24923 psArray *returnSet;24924 psU64 i;24925 24926 rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);24927 if (!rowSet) {24928 return NULL;24929 }24930 24931 // convert psMetadata rows to row objects24932 24933 returnSet = psArrayAllocEmpty(rowSet->n);24934 24935 for (i = 0; i < rowSet->n; i++) {24936 magicSkyfileMaskRow *object = magicSkyfileMaskObjectFromMetadata(rowSet->data[i]);24937 if (!object) {24938 psFree(object);24939 psFree(returnSet);24940 psError(PS_ERR_UNKNOWN, false, "database error");24941 return NULL;24942 }24943 psArrayAdd(returnSet, 0, object);24944 psFree(object);24945 }24946 24947 psFree(rowSet);24948 24949 return returnSet;24950 }24951 bool magicSkyfileMaskDeleteObject(psDB *dbh, const magicSkyfileMaskRow *object)24952 {24953 psMetadata *where = magicSkyfileMaskMetadataFromObject(object);24954 long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, 0);24955 psFree(where);24956 if (count < 0) {24957 psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");24958 return false;24959 }24960 if (count > 1) {24961 // XXX should this be a psAbort() instead? It is possible that24962 // having an object match multiple rows was by design.24963 psError(PS_ERR_UNKNOWN, true, "magicSkyfileMaskRow object matched more then one row. Check your database schema");24964 return false;24965 }24966 24967 return true;24968 }24969 long long magicSkyfileMaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)24970 {24971 long long deleted = 0;24972 24973 for (long long i = 0; i < objects->n; i++) {24974 magicSkyfileMaskRow *object = objects->data[i];24975 psMetadata *where = magicSkyfileMaskMetadataFromObject(object);24976 long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);24977 psFree(where);24978 if (count < 0) {24979 psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");24980 return count;24981 }24982 24983 deleted += count;24984 }24985 24986 return deleted;24987 }24988 bool magicSkyfileMaskPrintObjects(FILE *stream, psArray *objects, bool mdcf)24989 {24990 PS_ASSERT_PTR_NON_NULL(objects, false);24991 24992 psMetadata *output = psMetadataAlloc();24993 for (long i = 0; i < psArrayLength(objects); i++) {24994 psMetadata *md = magicSkyfileMaskMetadataFromObject(objects->data[i]);24995 if (!psMetadataAddMetadata(24996 output,24997 PS_LIST_TAIL,24998 MAGICSKYFILEMASK_TABLE_NAME,24999 PS_META_DUPLICATE_OK,25000 NULL,25001 md25002 )) {25003 psError(PS_ERR_UNKNOWN, false, "failed to add metadata");25004 psFree(md);25005 psFree(output);25006 return false;25007 }25008 psFree(md);25009 }25010 25011 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {25012 psError(PS_ERR_UNKNOWN, false, "failed to print metadata");25013 psFree(output);25014 }25015 psFree(output);25016 25017 return true;25018 }25019 bool magicSkyfileMaskPrintObject(FILE *stream, magicSkyfileMaskRow *object, bool mdcf)25020 {25021 PS_ASSERT_PTR_NON_NULL(object, false);25022 25023 psMetadata *md = magicSkyfileMaskMetadataFromObject(object);25024 25025 if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {25026 psError(PS_ERR_UNKNOWN, false, "failed to print metadata");25027 psFree(md);25028 }25029 25030 psFree(md);25031 25032 return true;25033 }25034 24817 static void calDBRowFree(calDBRow *object); 25035 24818 … … 26477 26260 return false; 26478 26261 } 26479 if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, "UNIQUE", "64")) {26262 if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, NULL, "64")) { 26480 26263 psError(PS_ERR_UNKNOWN, false, "failed to add item outProduct"); 26481 26264 psFree(md); … … 26802 26585 static void pstampRequestRowFree(pstampRequestRow *object); 26803 26586 26804 pstampRequestRow *pstampRequestRowAlloc(psS64 req_id, psS64 ds_id, const char *state, const char * outFileset, const char *uri, psS16 resultsFile)26587 pstampRequestRow *pstampRequestRowAlloc(psS64 req_id, psS64 ds_id, const char *state, const char *name, const char *reqType, const char *outProduct, const char *uri, psS32 fault) 26805 26588 { 26806 26589 pstampRequestRow *_object; … … 26812 26595 _object->ds_id = ds_id; 26813 26596 _object->state = psStringCopy(state); 26814 _object->outFileset = psStringCopy(outFileset); 26597 _object->name = psStringCopy(name); 26598 _object->reqType = psStringCopy(reqType); 26599 _object->outProduct = psStringCopy(outProduct); 26815 26600 _object->uri = psStringCopy(uri); 26816 _object-> resultsFile = resultsFile;26601 _object->fault = fault; 26817 26602 26818 26603 return _object; … … 26822 26607 { 26823 26608 psFree(object->state); 26824 psFree(object->outFileset); 26609 psFree(object->name); 26610 psFree(object->reqType); 26611 psFree(object->outProduct); 26825 26612 psFree(object->uri); 26826 26613 } … … 26844 26631 return false; 26845 26632 } 26846 if (!psMetadataAdd(md, PS_LIST_TAIL, "outFileset", PS_DATA_STRING, "UNIQUE", "64")) { 26847 psError(PS_ERR_UNKNOWN, false, "failed to add item outFileset"); 26633 if (!psMetadataAdd(md, PS_LIST_TAIL, "name", PS_DATA_STRING, "UNIQUE", "64")) { 26634 psError(PS_ERR_UNKNOWN, false, "failed to add item name"); 26635 psFree(md); 26636 return false; 26637 } 26638 if (!psMetadataAdd(md, PS_LIST_TAIL, "reqType", PS_DATA_STRING, NULL, "16")) { 26639 psError(PS_ERR_UNKNOWN, false, "failed to add item reqType"); 26640 psFree(md); 26641 return false; 26642 } 26643 if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, NULL, "64")) { 26644 psError(PS_ERR_UNKNOWN, false, "failed to add item outProduct"); 26848 26645 psFree(md); 26849 26646 return false; … … 26854 26651 return false; 26855 26652 } 26856 if (!psMetadataAdd(md, PS_LIST_TAIL, " resultsFile", PS_DATA_S16, NULL, 0)) {26857 psError(PS_ERR_UNKNOWN, false, "failed to add item resultsFile");26653 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, 0)) { 26654 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 26858 26655 psFree(md); 26859 26656 return false; … … 26872 26669 } 26873 26670 26874 bool pstampRequestInsert(psDB * dbh, psS64 req_id, psS64 ds_id, const char *state, const char * outFileset, const char *uri, psS16 resultsFile)26671 bool pstampRequestInsert(psDB * dbh, psS64 req_id, psS64 ds_id, const char *state, const char *name, const char *reqType, const char *outProduct, const char *uri, psS32 fault) 26875 26672 { 26876 26673 psMetadata *md = psMetadataAlloc(); … … 26890 26687 return false; 26891 26688 } 26892 if (!psMetadataAdd(md, PS_LIST_TAIL, "outFileset", PS_DATA_STRING, NULL, outFileset)) { 26893 psError(PS_ERR_UNKNOWN, false, "failed to add item outFileset"); 26689 if (!psMetadataAdd(md, PS_LIST_TAIL, "name", PS_DATA_STRING, NULL, name)) { 26690 psError(PS_ERR_UNKNOWN, false, "failed to add item name"); 26691 psFree(md); 26692 return false; 26693 } 26694 if (!psMetadataAdd(md, PS_LIST_TAIL, "reqType", PS_DATA_STRING, NULL, reqType)) { 26695 psError(PS_ERR_UNKNOWN, false, "failed to add item reqType"); 26696 psFree(md); 26697 return false; 26698 } 26699 if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, NULL, outProduct)) { 26700 psError(PS_ERR_UNKNOWN, false, "failed to add item outProduct"); 26894 26701 psFree(md); 26895 26702 return false; … … 26900 26707 return false; 26901 26708 } 26902 if (!psMetadataAdd(md, PS_LIST_TAIL, " resultsFile", PS_DATA_S16, NULL, resultsFile)) {26903 psError(PS_ERR_UNKNOWN, false, "failed to add item resultsFile");26709 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, fault)) { 26710 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 26904 26711 psFree(md); 26905 26712 return false; … … 26928 26735 bool pstampRequestInsertObject(psDB *dbh, pstampRequestRow *object) 26929 26736 { 26930 return pstampRequestInsert(dbh, object->req_id, object->ds_id, object->state, object-> outFileset, object->uri, object->resultsFile);26737 return pstampRequestInsert(dbh, object->req_id, object->ds_id, object->state, object->name, object->reqType, object->outProduct, object->uri, object->fault); 26931 26738 } 26932 26739 … … 27016 26823 return false; 27017 26824 } 27018 if (!psMetadataAdd(md, PS_LIST_TAIL, "outFileset", PS_DATA_STRING, NULL, object->outFileset)) { 27019 psError(PS_ERR_UNKNOWN, false, "failed to add item outFileset"); 26825 if (!psMetadataAdd(md, PS_LIST_TAIL, "name", PS_DATA_STRING, NULL, object->name)) { 26826 psError(PS_ERR_UNKNOWN, false, "failed to add item name"); 26827 psFree(md); 26828 return false; 26829 } 26830 if (!psMetadataAdd(md, PS_LIST_TAIL, "reqType", PS_DATA_STRING, NULL, object->reqType)) { 26831 psError(PS_ERR_UNKNOWN, false, "failed to add item reqType"); 26832 psFree(md); 26833 return false; 26834 } 26835 if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, NULL, object->outProduct)) { 26836 psError(PS_ERR_UNKNOWN, false, "failed to add item outProduct"); 27020 26837 psFree(md); 27021 26838 return false; … … 27026 26843 return false; 27027 26844 } 27028 if (!psMetadataAdd(md, PS_LIST_TAIL, " resultsFile", PS_DATA_S16, NULL, object->resultsFile)) {27029 psError(PS_ERR_UNKNOWN, false, "failed to add item resultsFile");26845 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, object->fault)) { 26846 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 27030 26847 psFree(md); 27031 26848 return false; … … 27055 26872 return false; 27056 26873 } 27057 char* outFileset = psMetadataLookupPtr(&status, md, "outFileset"); 27058 if (!status) { 27059 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item outFileset"); 26874 char* name = psMetadataLookupPtr(&status, md, "name"); 26875 if (!status) { 26876 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item name"); 26877 return false; 26878 } 26879 char* reqType = psMetadataLookupPtr(&status, md, "reqType"); 26880 if (!status) { 26881 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item reqType"); 26882 return false; 26883 } 26884 char* outProduct = psMetadataLookupPtr(&status, md, "outProduct"); 26885 if (!status) { 26886 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item outProduct"); 27060 26887 return false; 27061 26888 } … … 27065 26892 return false; 27066 26893 } 27067 psS 16 resultsFile = psMetadataLookupS16(&status, md, "resultsFile");27068 if (!status) { 27069 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item resultsFile");27070 return false; 27071 } 27072 27073 return pstampRequestRowAlloc(req_id, ds_id, state, outFileset, uri, resultsFile);26894 psS32 fault = psMetadataLookupS32(&status, md, "fault"); 26895 if (!status) { 26896 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault"); 26897 return false; 26898 } 26899 26900 return pstampRequestRowAlloc(req_id, ds_id, state, name, reqType, outProduct, uri, fault); 27074 26901 } 27075 26902 psArray *pstampRequestSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) … … 27189 27016 static void pstampJobRowFree(pstampJobRow *object); 27190 27017 27191 pstampJobRow *pstampJobRowAlloc(psS64 job_id, psS64 req_id, const char * state, const char *jobType, psS32 result, const char *uri, const char *outputBase, const char *args)27018 pstampJobRow *pstampJobRowAlloc(psS64 job_id, psS64 req_id, const char *rownum, const char *state, const char *jobType, psS32 fault, const char *uri, const char *outputBase, const char *args) 27192 27019 { 27193 27020 pstampJobRow *_object; … … 27198 27025 _object->job_id = job_id; 27199 27026 _object->req_id = req_id; 27027 _object->rownum = psStringCopy(rownum); 27200 27028 _object->state = psStringCopy(state); 27201 27029 _object->jobType = psStringCopy(jobType); 27202 _object-> result = result;27030 _object->fault = fault; 27203 27031 _object->uri = psStringCopy(uri); 27204 27032 _object->outputBase = psStringCopy(outputBase); … … 27210 27038 static void pstampJobRowFree(pstampJobRow *object) 27211 27039 { 27040 psFree(object->rownum); 27212 27041 psFree(object->state); 27213 27042 psFree(object->jobType); … … 27230 27059 return false; 27231 27060 } 27061 if (!psMetadataAdd(md, PS_LIST_TAIL, "rownum", PS_DATA_STRING, NULL, "64")) { 27062 psError(PS_ERR_UNKNOWN, false, "failed to add item rownum"); 27063 psFree(md); 27064 return false; 27065 } 27232 27066 if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, "64")) { 27233 27067 psError(PS_ERR_UNKNOWN, false, "failed to add item state"); … … 27240 27074 return false; 27241 27075 } 27242 if (!psMetadataAdd(md, PS_LIST_TAIL, " result", PS_DATA_S32, NULL, 0)) {27243 psError(PS_ERR_UNKNOWN, false, "failed to add item result");27076 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, 0)) { 27077 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 27244 27078 psFree(md); 27245 27079 return false; … … 27273 27107 } 27274 27108 27275 bool pstampJobInsert(psDB * dbh, psS64 job_id, psS64 req_id, const char * state, const char *jobType, psS32 result, const char *uri, const char *outputBase, const char *args)27109 bool pstampJobInsert(psDB * dbh, psS64 job_id, psS64 req_id, const char *rownum, const char *state, const char *jobType, psS32 fault, const char *uri, const char *outputBase, const char *args) 27276 27110 { 27277 27111 psMetadata *md = psMetadataAlloc(); … … 27286 27120 return false; 27287 27121 } 27122 if (!psMetadataAdd(md, PS_LIST_TAIL, "rownum", PS_DATA_STRING, NULL, rownum)) { 27123 psError(PS_ERR_UNKNOWN, false, "failed to add item rownum"); 27124 psFree(md); 27125 return false; 27126 } 27288 27127 if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, state)) { 27289 27128 psError(PS_ERR_UNKNOWN, false, "failed to add item state"); … … 27296 27135 return false; 27297 27136 } 27298 if (!psMetadataAdd(md, PS_LIST_TAIL, " result", PS_DATA_S32, NULL, result)) {27299 psError(PS_ERR_UNKNOWN, false, "failed to add item result");27137 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, fault)) { 27138 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 27300 27139 psFree(md); 27301 27140 return false; … … 27339 27178 bool pstampJobInsertObject(psDB *dbh, pstampJobRow *object) 27340 27179 { 27341 return pstampJobInsert(dbh, object->job_id, object->req_id, object-> state, object->jobType, object->result, object->uri, object->outputBase, object->args);27180 return pstampJobInsert(dbh, object->job_id, object->req_id, object->rownum, object->state, object->jobType, object->fault, object->uri, object->outputBase, object->args); 27342 27181 } 27343 27182 … … 27422 27261 return false; 27423 27262 } 27263 if (!psMetadataAdd(md, PS_LIST_TAIL, "rownum", PS_DATA_STRING, NULL, object->rownum)) { 27264 psError(PS_ERR_UNKNOWN, false, "failed to add item rownum"); 27265 psFree(md); 27266 return false; 27267 } 27424 27268 if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) { 27425 27269 psError(PS_ERR_UNKNOWN, false, "failed to add item state"); … … 27432 27276 return false; 27433 27277 } 27434 if (!psMetadataAdd(md, PS_LIST_TAIL, " result", PS_DATA_S32, NULL, object->result)) {27435 psError(PS_ERR_UNKNOWN, false, "failed to add item result");27278 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, object->fault)) { 27279 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 27436 27280 psFree(md); 27437 27281 return false; … … 27471 27315 return false; 27472 27316 } 27317 char* rownum = psMetadataLookupPtr(&status, md, "rownum"); 27318 if (!status) { 27319 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item rownum"); 27320 return false; 27321 } 27473 27322 char* state = psMetadataLookupPtr(&status, md, "state"); 27474 27323 if (!status) { … … 27481 27330 return false; 27482 27331 } 27483 psS32 result = psMetadataLookupS32(&status, md, "result");27484 if (!status) { 27485 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item result");27332 psS32 fault = psMetadataLookupS32(&status, md, "fault"); 27333 if (!status) { 27334 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault"); 27486 27335 return false; 27487 27336 } … … 27502 27351 } 27503 27352 27504 return pstampJobRowAlloc(job_id, req_id, state, jobType, result, uri, outputBase, args);27353 return pstampJobRowAlloc(job_id, req_id, rownum, state, jobType, fault, uri, outputBase, args); 27505 27354 } 27506 27355 psArray *pstampJobSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
Note:
See TracChangeset
for help on using the changeset viewer.
