Changeset 9107
- Timestamp:
- Oct 2, 2006, 1:49:11 PM (20 years ago)
- Location:
- trunk
- Files:
-
- 19 edited
-
dbconfig/config.md (modified) (1 diff)
-
ippdb/Makefile.am (modified) (2 diffs)
-
ippdb/configure.ac (modified) (1 diff)
-
ippdb/src/ippdb.c (modified) (13 diffs)
-
ippdb/src/ippdb.h (modified) (5 diffs)
-
ippdb/tests/alloc.c (modified) (2 diffs)
-
ippdb/tests/createtable.c (modified) (1 diff)
-
ippdb/tests/dbcleanup.c (modified) (1 diff)
-
ippdb/tests/dbsetup.c (modified) (1 diff)
-
ippdb/tests/droptable.c (modified) (1 diff)
-
ippdb/tests/insert.c (modified) (1 diff)
-
ippdb/tests/insertfits.c (modified) (1 diff)
-
ippdb/tests/insertobject.c (modified) (2 diffs)
-
ippdb/tests/metadatafromobject.c (modified) (2 diffs)
-
ippdb/tests/objectfrommetadata.c (modified) (3 diffs)
-
ippdb/tests/pop.c (modified) (1 diff)
-
ippdb/tests/popfits.c (modified) (1 diff)
-
ippdb/tests/popobject.c (modified) (1 diff)
-
ippdb/tests/selectrowsfits.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dbconfig/config.md
r9049 r9107 2 2 pkg_name STR ippdb 3 3 pkg_namespace STR ippdb 4 pkg_version STR 0.0.3 84 pkg_version STR 0.0.39 5 5 END -
trunk/ippdb/Makefile.am
r9026 r9107 35 35 $(top_builddir)/docs/man/man3/detInputExpRow.3 \ 36 36 $(top_builddir)/docs/man/man3/detProcessedImfileRow.3 \ 37 $(top_builddir)/docs/man/man3/detProcessedExpRow.3 \ 37 38 $(top_builddir)/docs/man/man3/detStackedImfileRow.3 \ 38 39 $(top_builddir)/docs/man/man3/detNormalizedStatImfileRow.3 \ … … 45 46 46 47 47 docs/man/man3/ippdb.3 docs/man/man3/weatherRow.3 docs/man/man3/skyp_transparencyRow.3 docs/man/man3/skyp_absorptionRow.3 docs/man/man3/skyp_emissionRow.3 docs/man/man3/dimmRow.3 docs/man/man3/skyp_irRow.3 docs/man/man3/domeRow.3 docs/man/man3/telescopeRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawDetrendExpRow.3 docs/man/man3/rawScienceExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/det StackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detMasterFrameRow.3 docs/man/man3/detMasterImfileRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3:48 docs/man/man3/ippdb.3 docs/man/man3/weatherRow.3 docs/man/man3/skyp_transparencyRow.3 docs/man/man3/skyp_absorptionRow.3 docs/man/man3/skyp_emissionRow.3 docs/man/man3/dimmRow.3 docs/man/man3/skyp_irRow.3 docs/man/man3/domeRow.3 docs/man/man3/telescopeRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawDetrendExpRow.3 docs/man/man3/rawScienceExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detProcessedExpRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detMasterFrameRow.3 docs/man/man3/detMasterImfileRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3: 48 49 $(DOXYGEN) 49 50 -
trunk/ippdb/configure.ac
r9054 r9107 7 7 AC_PREREQ(2.59) 8 8 9 AC_INIT([ippdb], [0.0.3 8], [pan-starrs.ifa.hawaii.edu])9 AC_INIT([ippdb], [0.0.39], [pan-starrs.ifa.hawaii.edu]) 10 10 AC_CONFIG_SRCDIR([ippdb.pc.in]) 11 11 -
trunk/ippdb/src/ippdb.c
r9054 r9107 63 63 #define DETPROCESSEDIMFILE_TABLE_NAME "detProcessedImfile" 64 64 #define DETPROCESSEDIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME 65 #define DETPROCESSEDEXP_TABLE_NAME "detProcessedExp" 66 #define DETPROCESSEDEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME 65 67 #define DETSTACKEDIMFILE_TABLE_NAME "detStackedImfile" 66 68 #define DETSTACKEDIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME … … 14301 14303 return true; 14302 14304 } 14305 static void detProcessedExpRowFree(detProcessedExpRow *object); 14306 14307 detProcessedExpRow *detProcessedExpRowAlloc(psS32 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri) 14308 { 14309 detProcessedExpRow *object; 14310 14311 object = psAlloc(sizeof(detProcessedExpRow)); 14312 psMemSetDeallocator(object, (psFreeFunc)detProcessedExpRowFree); 14313 14314 object->det_id = det_id; 14315 object->exp_tag = psStringCopy(exp_tag); 14316 object->recipe = psStringCopy(recipe); 14317 object->bg = bg; 14318 object->bg_stdev = bg_stdev; 14319 object->bg_mean_stdev = bg_mean_stdev; 14320 object->b1_uri = psStringCopy(b1_uri); 14321 object->b2_uri = psStringCopy(b2_uri); 14322 14323 return object; 14324 } 14325 14326 static void detProcessedExpRowFree(detProcessedExpRow *object) 14327 { 14328 psFree(object->exp_tag); 14329 psFree(object->recipe); 14330 psFree(object->b1_uri); 14331 psFree(object->b2_uri); 14332 } 14333 14334 bool detProcessedExpCreateTable(psDB *dbh) 14335 { 14336 psMetadata *md; 14337 bool status; 14338 14339 md = psMetadataAlloc(); 14340 if (!psMetadataAdd(md, PS_LIST_TAIL, DETPROCESSEDEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) { 14341 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETPROCESSEDEXP_INDEX_NAME); 14342 psFree(md); 14343 return false; 14344 } 14345 if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) { 14346 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 14347 psFree(md); 14348 return false; 14349 } 14350 if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) { 14351 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag"); 14352 psFree(md); 14353 return false; 14354 } 14355 if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "64")) { 14356 psError(PS_ERR_UNKNOWN, false, "failed to add item recipe"); 14357 psFree(md); 14358 return false; 14359 } 14360 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 0.0)) { 14361 psError(PS_ERR_UNKNOWN, false, "failed to add item bg"); 14362 psFree(md); 14363 return false; 14364 } 14365 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 0.0)) { 14366 psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev"); 14367 psFree(md); 14368 return false; 14369 } 14370 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 0.0)) { 14371 psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev"); 14372 psFree(md); 14373 return false; 14374 } 14375 if (!psMetadataAddStr(md, PS_LIST_TAIL, "b1_uri", 0, NULL, "64")) { 14376 psError(PS_ERR_UNKNOWN, false, "failed to add item b1_uri"); 14377 psFree(md); 14378 return false; 14379 } 14380 if (!psMetadataAddStr(md, PS_LIST_TAIL, "b2_uri", 0, NULL, "64")) { 14381 psError(PS_ERR_UNKNOWN, false, "failed to add item b2_uri"); 14382 psFree(md); 14383 return false; 14384 } 14385 14386 status = psDBCreateTable(dbh, DETPROCESSEDEXP_TABLE_NAME, md); 14387 14388 psFree(md); 14389 14390 return status; 14391 } 14392 14393 bool detProcessedExpDropTable(psDB *dbh) 14394 { 14395 return psDBDropTable(dbh, DETPROCESSEDEXP_TABLE_NAME); 14396 } 14397 14398 bool detProcessedExpInsert(psDB * dbh, psS32 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri) 14399 { 14400 psMetadata *md; 14401 bool status; 14402 14403 md = psMetadataAlloc(); 14404 if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, det_id)) { 14405 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 14406 psFree(md); 14407 return false; 14408 } 14409 if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) { 14410 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag"); 14411 psFree(md); 14412 return false; 14413 } 14414 if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, recipe)) { 14415 psError(PS_ERR_UNKNOWN, false, "failed to add item recipe"); 14416 psFree(md); 14417 return false; 14418 } 14419 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, bg)) { 14420 psError(PS_ERR_UNKNOWN, false, "failed to add item bg"); 14421 psFree(md); 14422 return false; 14423 } 14424 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, bg_stdev)) { 14425 psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev"); 14426 psFree(md); 14427 return false; 14428 } 14429 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, bg_mean_stdev)) { 14430 psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev"); 14431 psFree(md); 14432 return false; 14433 } 14434 if (!psMetadataAddStr(md, PS_LIST_TAIL, "b1_uri", 0, NULL, b1_uri)) { 14435 psError(PS_ERR_UNKNOWN, false, "failed to add item b1_uri"); 14436 psFree(md); 14437 return false; 14438 } 14439 if (!psMetadataAddStr(md, PS_LIST_TAIL, "b2_uri", 0, NULL, b2_uri)) { 14440 psError(PS_ERR_UNKNOWN, false, "failed to add item b2_uri"); 14441 psFree(md); 14442 return false; 14443 } 14444 14445 status = psDBInsertOneRow(dbh, DETPROCESSEDEXP_TABLE_NAME, md); 14446 psFree(md); 14447 14448 return status; 14449 } 14450 14451 long long detProcessedExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit) 14452 { 14453 long long deleted = 0; 14454 14455 long long count = psDBDeleteRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, limit); 14456 if (count < 0) { 14457 psError(PS_ERR_UNKNOWN, true, "failed to delete row from detProcessedExp"); 14458 return count; 14459 14460 deleted += count; 14461 } 14462 14463 return deleted; 14464 } 14465 bool detProcessedExpPop(psDB *dbh, psS32 *det_id, char **exp_tag, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri) 14466 { 14467 psArray *rowSet; 14468 psMetadata *row; 14469 psMetadata *popped; 14470 long deleted; 14471 bool status; 14472 int rowID; 14473 14474 rowSet = psDBSelectRows(dbh, DETPROCESSEDEXP_TABLE_NAME, NULL, 1); 14475 if (!rowSet) { 14476 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETPROCESSEDEXP_INDEX_NAME); 14477 psFree(rowSet); 14478 return NULL; 14479 } 14480 14481 row = psArrayGet(rowSet, 0); 14482 psMemIncrRefCounter(row); 14483 if (!row) { 14484 psError(PS_ERR_UNKNOWN, true, "database error or table is empty"); 14485 return NULL; 14486 } 14487 psFree(rowSet); 14488 14489 rowID = psMetadataLookupS32(&status, row, DETPROCESSEDEXP_INDEX_NAME); 14490 if (!status) { 14491 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETPROCESSEDEXP_INDEX_NAME); 14492 psFree(row); 14493 return NULL; 14494 } 14495 14496 popped = psMetadataAlloc(); 14497 psMetadataAddS32(popped, PS_LIST_TAIL, DETPROCESSEDEXP_INDEX_NAME, 0, NULL, rowID); 14498 14499 deleted = psDBDeleteRows(dbh, DETPROCESSEDEXP_TABLE_NAME, popped, 0); 14500 if (deleted != 1) { 14501 psError(PS_ERR_UNKNOWN, false, "database failed to delete row"); 14502 psFree(popped); 14503 psFree(row); 14504 return NULL; 14505 } 14506 14507 psFree(popped); 14508 14509 *det_id = psMetadataLookupS32(&status, row, "det_id"); 14510 if (!status) { 14511 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id"); 14512 psFree(row); 14513 return false; 14514 } 14515 *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag"); 14516 if (!status) { 14517 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag"); 14518 psFree(row); 14519 return false; 14520 } 14521 *recipe = psMetadataLookupPtr(&status, row, "recipe"); 14522 if (!status) { 14523 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe"); 14524 psFree(row); 14525 return false; 14526 } 14527 *bg = psMetadataLookupF64(&status, row, "bg"); 14528 if (!status) { 14529 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg"); 14530 psFree(row); 14531 return false; 14532 } 14533 *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev"); 14534 if (!status) { 14535 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev"); 14536 psFree(row); 14537 return false; 14538 } 14539 *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev"); 14540 if (!status) { 14541 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev"); 14542 psFree(row); 14543 return false; 14544 } 14545 *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri"); 14546 if (!status) { 14547 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri"); 14548 psFree(row); 14549 return false; 14550 } 14551 *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri"); 14552 if (!status) { 14553 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri"); 14554 psFree(row); 14555 return false; 14556 } 14557 14558 psFree(row); 14559 14560 return true; 14561 } 14562 14563 bool detProcessedExpInsertObject(psDB *dbh, detProcessedExpRow *object) 14564 { 14565 return detProcessedExpInsert(dbh, object->det_id, object->exp_tag, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri); 14566 } 14567 14568 bool detProcessedExpInsertObjects(psDB *dbh, psArray *objects) 14569 { 14570 for (long i = 0; i < psArrayLength(objects); i++) { 14571 if (!detProcessedExpInsertObject(dbh, objects->data[i])) { 14572 return false; 14573 } 14574 } 14575 14576 return true; 14577 } 14578 14579 detProcessedExpRow *detProcessedExpPopObject(psDB *dbh) 14580 { 14581 psS32 det_id; 14582 char exp_tag[256]; 14583 char recipe[256]; 14584 psF64 bg; 14585 psF64 bg_stdev; 14586 psF64 bg_mean_stdev; 14587 char b1_uri[256]; 14588 char b2_uri[256]; 14589 14590 if (!detProcessedExpPop(dbh, &det_id, (char **)&exp_tag, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri)) { 14591 psError(PS_ERR_UNKNOWN, false, "failed to pop a database row"); 14592 return NULL; 14593 } 14594 14595 return detProcessedExpRowAlloc(det_id, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri); 14596 } 14597 14598 bool detProcessedExpInsertFits(psDB *dbh, const psFits *fits) 14599 { 14600 psArray *rowSet; 14601 14602 // move to (the first?) extension named DETPROCESSEDEXP_TABLE_NAME 14603 if (!psFitsMoveExtName(fits, DETPROCESSEDEXP_TABLE_NAME)) { 14604 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETPROCESSEDEXP_TABLE_NAME); 14605 return false; 14606 } 14607 14608 // check HDU type 14609 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) { 14610 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE"); 14611 return false; 14612 } 14613 14614 // read fits table 14615 rowSet = psFitsReadTable(fits); 14616 if (!rowSet) { 14617 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty"); 14618 psFree(rowSet); 14619 return false; 14620 } 14621 14622 if (!psDBInsertRows(dbh, DETPROCESSEDEXP_TABLE_NAME, rowSet)) { 14623 psError(PS_ERR_UNKNOWN, false, "databse insert failed"); 14624 psFree(rowSet); 14625 return false; 14626 } 14627 14628 psFree(rowSet); 14629 14630 return true; 14631 } 14632 14633 bool detProcessedExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit) 14634 { 14635 char query[MAX_STRING_LENGTH]; 14636 14637 if (!detProcessedExpSelectRowsFits(dbh, fits, NULL, limit)) { 14638 psError(PS_ERR_UNKNOWN, true, "database error or table is empty"); 14639 return false; 14640 } 14641 14642 // remove limit rows from the end of the database 14643 if (snprintf(query, MAX_STRING_LENGTH, 14644 "DELETE FROM %s ORDER BY %s DESC LIMIT %lld", 14645 DETPROCESSEDEXP_TABLE_NAME, DETPROCESSEDEXP_INDEX_NAME, limit) < 0) { 14646 psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH); 14647 return false; 14648 } 14649 14650 if (!p_psDBRunQuery(dbh, query)) { 14651 psError(PS_ERR_UNKNOWN, false, "database query failed"); 14652 return false; 14653 } 14654 14655 return true; 14656 } 14657 14658 bool detProcessedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit) 14659 { 14660 psArray *rowSet; 14661 psU64 i; 14662 14663 rowSet = psDBSelectRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, limit); 14664 if (!rowSet) { 14665 return false; 14666 } 14667 14668 // strip index column 14669 for (i = 0; i < rowSet->n; i++) { 14670 if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETPROCESSEDEXP_INDEX_NAME)) { 14671 psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETPROCESSEDEXP_INDEX_NAME); 14672 psFree(rowSet); 14673 return false; 14674 } 14675 } 14676 14677 // output to fits 14678 if (!psFitsWriteTable(fits, NULL, rowSet, DETPROCESSEDEXP_TABLE_NAME)) { 14679 psError(PS_ERR_UNKNOWN, false, "FITS table write failed"); 14680 psFree(rowSet); 14681 return false; 14682 } 14683 14684 psFree(rowSet); 14685 14686 return true; 14687 } 14688 14689 psMetadata *detProcessedExpMetadataFromObject(const detProcessedExpRow *object) 14690 { 14691 psMetadata *md; 14692 14693 md = psMetadataAlloc(); 14694 if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, object->det_id)) { 14695 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 14696 psFree(md); 14697 return NULL; 14698 } 14699 if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) { 14700 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag"); 14701 psFree(md); 14702 return NULL; 14703 } 14704 if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, object->recipe)) { 14705 psError(PS_ERR_UNKNOWN, false, "failed to add item recipe"); 14706 psFree(md); 14707 return NULL; 14708 } 14709 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, object->bg)) { 14710 psError(PS_ERR_UNKNOWN, false, "failed to add item bg"); 14711 psFree(md); 14712 return NULL; 14713 } 14714 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, object->bg_stdev)) { 14715 psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev"); 14716 psFree(md); 14717 return NULL; 14718 } 14719 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, object->bg_mean_stdev)) { 14720 psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev"); 14721 psFree(md); 14722 return NULL; 14723 } 14724 if (!psMetadataAddStr(md, PS_LIST_TAIL, "b1_uri", 0, NULL, object->b1_uri)) { 14725 psError(PS_ERR_UNKNOWN, false, "failed to add item b1_uri"); 14726 psFree(md); 14727 return NULL; 14728 } 14729 if (!psMetadataAddStr(md, PS_LIST_TAIL, "b2_uri", 0, NULL, object->b2_uri)) { 14730 psError(PS_ERR_UNKNOWN, false, "failed to add item b2_uri"); 14731 psFree(md); 14732 return NULL; 14733 } 14734 14735 return md; 14736 } 14737 14738 detProcessedExpRow *detProcessedExpObjectFromMetadata(psMetadata *md) 14739 { 14740 bool status; 14741 psS32 det_id; 14742 char *exp_tag; 14743 char *recipe; 14744 psF64 bg; 14745 psF64 bg_stdev; 14746 psF64 bg_mean_stdev; 14747 char *b1_uri; 14748 char *b2_uri; 14749 14750 det_id = psMetadataLookupS32(&status, md, "det_id"); 14751 if (!status) { 14752 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id"); 14753 return false; 14754 } 14755 exp_tag = psMetadataLookupPtr(&status, md, "exp_tag"); 14756 if (!status) { 14757 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag"); 14758 return false; 14759 } 14760 recipe = psMetadataLookupPtr(&status, md, "recipe"); 14761 if (!status) { 14762 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe"); 14763 return false; 14764 } 14765 bg = psMetadataLookupF64(&status, md, "bg"); 14766 if (!status) { 14767 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg"); 14768 return false; 14769 } 14770 bg_stdev = psMetadataLookupF64(&status, md, "bg_stdev"); 14771 if (!status) { 14772 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev"); 14773 return false; 14774 } 14775 bg_mean_stdev = psMetadataLookupF64(&status, md, "bg_mean_stdev"); 14776 if (!status) { 14777 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev"); 14778 return false; 14779 } 14780 b1_uri = psMetadataLookupPtr(&status, md, "b1_uri"); 14781 if (!status) { 14782 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri"); 14783 return false; 14784 } 14785 b2_uri = psMetadataLookupPtr(&status, md, "b2_uri"); 14786 if (!status) { 14787 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri"); 14788 return false; 14789 } 14790 14791 return detProcessedExpRowAlloc(det_id, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri); 14792 } 14793 psArray *detProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) 14794 { 14795 psArray *rowSet; 14796 psArray *returnSet; 14797 psU64 i; 14798 14799 rowSet = psDBSelectRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, limit); 14800 if (!rowSet) { 14801 return NULL; 14802 } 14803 14804 // strip index column 14805 for (i = 0; i < rowSet->n; i++) { 14806 if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETPROCESSEDEXP_INDEX_NAME)) { 14807 psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETPROCESSEDEXP_INDEX_NAME); 14808 psFree(rowSet); 14809 return false; 14810 } 14811 } 14812 14813 // convert psMetadata rows to row objects 14814 14815 returnSet = psArrayAlloc(rowSet->n); 14816 returnSet->n = 0; 14817 14818 for (i = 0; i < rowSet->n; i++) { 14819 detProcessedExpRow *object = detProcessedExpObjectFromMetadata(rowSet->data[i]); 14820 psArrayAdd(returnSet, 0, object); 14821 psFree(object); 14822 } 14823 14824 psFree(rowSet); 14825 14826 return returnSet; 14827 } 14828 bool detProcessedExpDeleteObject(psDB *dbh, const detProcessedExpRow *object) 14829 { 14830 psMetadata *where = detProcessedExpMetadataFromObject(object); 14831 long long count = psDBDeleteRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, 0); 14832 psFree(where) 14833 if (count < 0) { 14834 psError(PS_ERR_UNKNOWN, true, "failed to delete row from detProcessedExp"); 14835 return false; 14836 } 14837 if (count > 1) { 14838 // XXX should this be a psAbort() instead? It is possible that 14839 // having an object match multiple rows was by design. 14840 psError(PS_ERR_UNKNOWN, true, "detProcessedExpRow object matched more then one row. Check your database schema"); 14841 return false; 14842 } 14843 14844 return true; 14845 } 14846 long long detProcessedExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit) 14847 { 14848 long long deleted = 0; 14849 14850 for (long long i = 0; i < objects->n; i++) { 14851 detProcessedExpRow *object = objects->data[i]; 14852 psMetadata *where = detProcessedExpMetadataFromObject(object); 14853 long long count = psDBDeleteRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, limit); 14854 psFree(where) 14855 if (count < 0) { 14856 psError(PS_ERR_UNKNOWN, true, "failed to delete row from detProcessedExp"); 14857 return count; 14858 } 14859 14860 deleted += count; 14861 } 14862 14863 return deleted; 14864 } 14865 bool detProcessedExpPrintObjects(FILE *stream, psArray *objects, bool mdcf) 14866 { 14867 PS_ASSERT_PTR_NON_NULL(objects, false); 14868 14869 psMetadata *output = psMetadataAlloc(); 14870 for (long i = 0; i < psArrayLength(objects); i++) { 14871 psMetadata *md = detProcessedExpMetadataFromObject(objects->data[i]); 14872 if (!psMetadataAddMetadata( 14873 output, 14874 PS_LIST_TAIL, 14875 DETPROCESSEDEXP_TABLE_NAME, 14876 PS_META_DUPLICATE_OK, 14877 NULL, 14878 md 14879 )) { 14880 psError(PS_ERR_UNKNOWN, false, "failed to add metadata"); 14881 psFree(md); 14882 psFree(output); 14883 return false; 14884 } 14885 psFree(md); 14886 } 14887 14888 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) { 14889 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 14890 psFree(output); 14891 } 14892 psFree(output); 14893 14894 return true; 14895 } 14303 14896 static void detStackedImfileRowFree(detStackedImfileRow *object); 14304 14897 14305 detStackedImfileRow *detStackedImfileRowAlloc(psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev , bool normalize)14898 detStackedImfileRow *detStackedImfileRowAlloc(psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev) 14306 14899 { 14307 14900 detStackedImfileRow *object; … … 14318 14911 object->bg_stdev = bg_stdev; 14319 14912 object->bg_mean_stdev = bg_mean_stdev; 14320 object->normalize = normalize;14321 14913 14322 14914 return object; … … 14381 14973 return false; 14382 14974 } 14383 if (!psMetadataAdd(md, PS_LIST_TAIL, "normalize", PS_DATA_BOOL, NULL, false)) {14384 psError(PS_ERR_UNKNOWN, false, "failed to add item normalize");14385 psFree(md);14386 return false;14387 }14388 14975 14389 14976 status = psDBCreateTable(dbh, DETSTACKEDIMFILE_TABLE_NAME, md); … … 14399 14986 } 14400 14987 14401 bool detStackedImfileInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev , bool normalize)14988 bool detStackedImfileInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev) 14402 14989 { 14403 14990 psMetadata *md; … … 14442 15029 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, bg_mean_stdev)) { 14443 15030 psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev"); 14444 psFree(md);14445 return false;14446 }14447 if (!psMetadataAdd(md, PS_LIST_TAIL, "normalize", PS_DATA_BOOL, NULL, normalize)) {14448 psError(PS_ERR_UNKNOWN, false, "failed to add item normalize");14449 15031 psFree(md); 14450 15032 return false; … … 14471 15053 return deleted; 14472 15054 } 14473 bool detStackedImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev , bool *normalize)15055 bool detStackedImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev) 14474 15056 { 14475 15057 psArray *rowSet; … … 14563 15145 return false; 14564 15146 } 14565 *normalize = psMetadataLookupBool(&status, row, "normalize");14566 if (!status) {14567 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item normalize");14568 psFree(row);14569 return false;14570 }14571 15147 14572 15148 psFree(row); … … 14577 15153 bool detStackedImfileInsertObject(psDB *dbh, detStackedImfileRow *object) 14578 15154 { 14579 return detStackedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev , object->normalize);15155 return detStackedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev); 14580 15156 } 14581 15157 … … 14601 15177 psF64 bg_stdev; 14602 15178 psF64 bg_mean_stdev; 14603 bool normalize; 14604 14605 if (!detStackedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, &normalize)) { 15179 15180 if (!detStackedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev)) { 14606 15181 psError(PS_ERR_UNKNOWN, false, "failed to pop a database row"); 14607 15182 return NULL; 14608 15183 } 14609 15184 14610 return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev , normalize);15185 return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev); 14611 15186 } 14612 15187 … … 14744 15319 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, object->bg_mean_stdev)) { 14745 15320 psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev"); 14746 psFree(md);14747 return NULL;14748 }14749 if (!psMetadataAdd(md, PS_LIST_TAIL, "normalize", PS_DATA_BOOL, NULL, object->normalize)) {14750 psError(PS_ERR_UNKNOWN, false, "failed to add item normalize");14751 15321 psFree(md); 14752 15322 return NULL; … … 14767 15337 psF64 bg_stdev; 14768 15338 psF64 bg_mean_stdev; 14769 bool normalize;14770 15339 14771 15340 det_id = psMetadataLookupS32(&status, md, "det_id"); … … 14809 15378 return false; 14810 15379 } 14811 normalize = psMetadataLookupBool(&status, md, "normalize"); 14812 if (!status) { 14813 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item normalize"); 14814 return false; 14815 } 14816 14817 return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, normalize); 15380 15381 return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev); 14818 15382 } 14819 15383 psArray *detStackedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) -
trunk/ippdb/src/ippdb.h
r9054 r9107 6084 6084 bool mdcf ///< format as mdconfig or simple 6085 6085 ); 6086 /** detProcessedExpRow data structure 6087 * 6088 * Structure for representing a single row of detProcessedExp table data. 6089 */ 6090 6091 typedef struct { 6092 psS32 det_id; 6093 char *exp_tag; 6094 char *recipe; 6095 psF64 bg; 6096 psF64 bg_stdev; 6097 psF64 bg_mean_stdev; 6098 char *b1_uri; 6099 char *b2_uri; 6100 } detProcessedExpRow; 6101 6102 /** Creates a new detProcessedExpRow object 6103 * 6104 * @return A new detProcessedExpRow object or NULL on failure. 6105 */ 6106 6107 detProcessedExpRow *detProcessedExpRowAlloc( 6108 psS32 det_id, 6109 const char *exp_tag, 6110 const char *recipe, 6111 psF64 bg, 6112 psF64 bg_stdev, 6113 psF64 bg_mean_stdev, 6114 const char *b1_uri, 6115 const char *b2_uri 6116 ); 6117 6118 /** Creates a new detProcessedExp table 6119 * 6120 * @return true on success 6121 */ 6122 6123 bool detProcessedExpCreateTable( 6124 psDB *dbh ///< Database handle 6125 ); 6126 6127 /** Deletes a detProcessedExp table 6128 * 6129 * @return true on success 6130 */ 6131 6132 bool detProcessedExpDropTable( 6133 psDB *dbh ///< Database handle 6134 ); 6135 6136 /** Insert a single row into a table 6137 * 6138 * This function constructs and inserts a single row based on it's parameters. 6139 * 6140 * @return true on success 6141 */ 6142 6143 bool detProcessedExpInsert( 6144 psDB *dbh, ///< Database handle 6145 psS32 det_id, 6146 const char *exp_tag, 6147 const char *recipe, 6148 psF64 bg, 6149 psF64 bg_stdev, 6150 psF64 bg_mean_stdev, 6151 const char *b1_uri, 6152 const char *b2_uri 6153 ); 6154 6155 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 6156 * 6157 * @return A The number of rows removed or a negative value on error 6158 */ 6159 6160 long long detProcessedExpDelete( 6161 psDB *dbh, ///< Database handle 6162 const psMetadata *where, ///< Row match criteria 6163 unsigned long long limit ///< Maximum number of elements to delete 6164 ); 6165 6166 /** Removes the last row from the database and returns it 6167 * 6168 * @return true on success 6169 */ 6170 6171 bool detProcessedExpPop( 6172 psDB *dbh, ///< Database handle 6173 psS32 *det_id, 6174 char **exp_tag, 6175 char **recipe, 6176 psF64 *bg, 6177 psF64 *bg_stdev, 6178 psF64 *bg_mean_stdev, 6179 char **b1_uri, 6180 char **b2_uri 6181 ); 6182 6183 /** Insert a single detProcessedExpRow object into a table 6184 * 6185 * This function constructs and inserts a single row based on it's parameters. 6186 * 6187 * @return true on success 6188 */ 6189 6190 bool detProcessedExpInsertObject( 6191 psDB *dbh, ///< Database handle 6192 detProcessedExpRow *object ///< detProcessedExpRow object 6193 ); 6194 6195 /** Insert an array of detProcessedExpRow object into a table 6196 * 6197 * This function constructs and inserts multiple rows based on it's parameters. 6198 * 6199 * @return true on success 6200 */ 6201 6202 bool detProcessedExpInsertObjects( 6203 psDB *dbh, ///< Database handle 6204 psArray *objects ///< array of detProcessedExpRow objects 6205 ); 6206 6207 /** Removes the last row from the database and returns it 6208 * 6209 * @return A new detProcessedExpRow on success or NULL on failure. 6210 */ 6211 6212 detProcessedExpRow *detProcessedExpPopObject( 6213 psDB *dbh ///< Database handle 6214 ); 6215 6216 /** Insert data from a binary FITS table detProcessedExpRow into the database 6217 * 6218 * This function expects a psFits object with a FITS table as the first 6219 * extension. The table must have at least one row of data in it, that is of 6220 * the appropriate format (number of columns and their type). All other 6221 * extensions are ignored. 6222 * 6223 * @return true on success 6224 */ 6225 6226 bool detProcessedExpInsertFits( 6227 psDB *dbh, ///< Database handle 6228 const psFits *fits ///< psFits object 6229 ); 6230 6231 /** Removes the last limit row from the database and returns them in a binary FITS table. 6232 * 6233 * This function assumes an empty psFits object and will create a FITS table as 6234 * the first extension. 6235 * 6236 * @return true on success 6237 */ 6238 6239 bool detProcessedExpPopFits( 6240 psDB *dbh, ///< Database handle 6241 psFits *fits, ///< psFits object 6242 unsigned long long limit ///< Maximum number of elements to return 6243 ); 6244 6245 /** Selects up to limit from the database and returns them in a binary FITS table 6246 * 6247 * This function assumes an empty psFits object and will create a FITS table 6248 * as the first extension. 6249 * 6250 * See psDBSelectRows() for documentation on the format of where. 6251 * 6252 * @return true on success 6253 */ 6254 6255 bool detProcessedExpSelectRowsFits( 6256 psDB *dbh, ///< Database handle 6257 psFits *fits, ///< psFits object 6258 const psMetadata *where, ///< Row match criteria 6259 unsigned long long limit ///< Maximum number of elements to return 6260 ); 6261 6262 /** Convert a detProcessedExpRow into an equivalent psMetadata 6263 * 6264 * @return A psMetadata pointer or NULL on error 6265 */ 6266 6267 psMetadata *detProcessedExpMetadataFromObject( 6268 const detProcessedExpRow *object ///< fooRow to convert into a psMetadata 6269 ); 6270 6271 /** Convert a psMetadata into an equivalent fooRow 6272 * 6273 * @return A detProcessedExpRow pointer or NULL on error 6274 */ 6275 6276 detProcessedExpRow *detProcessedExpObjectFromMetadata( 6277 psMetadata *md ///< psMetadata to convert into a fooRow 6278 ); 6279 /** Selects up to limit rows from the database and returns as detProcessedExpRow objects in a psArray 6280 * 6281 * See psDBSelectRows() for documentation on the format of where. 6282 * 6283 * @return A psArray pointer or NULL on error 6284 */ 6285 6286 psArray *detProcessedExpSelectRowObjects( 6287 psDB *dbh, ///< Database handle 6288 const psMetadata *where, ///< Row match criteria 6289 unsigned long long limit ///< Maximum number of elements to return 6290 ); 6291 /** Deletes a row from the database coresponding to an detProcessedExp 6292 * 6293 * Note that a 'where' search psMetadata is constructed from each object and 6294 * used to find rows to delete. 6295 * 6296 * @return A The number of rows removed or a negative value on error 6297 */ 6298 6299 bool detProcessedExpDeleteObject( 6300 psDB *dbh, ///< Database handle 6301 const detProcessedExpRow *object ///< Object to delete 6302 ); 6303 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 6304 * 6305 * Note that a 'where' search psMetadata is constructed from each object and 6306 * used to find rows to delete. 6307 * 6308 * @return A The number of rows removed or a negative value on error 6309 */ 6310 6311 long long detProcessedExpDeleteRowObjects( 6312 psDB *dbh, ///< Database handle 6313 const psArray *objects, ///< Array of objects to delete 6314 unsigned long long limit ///< Maximum number of elements to delete 6315 ); 6316 /** Formats and prints an array of detProcessedExpRow objects 6317 * 6318 * When mdcf is set the formated output is in psMetadataConfig 6319 * format, otherwise it is in a simple tabular format. 6320 * 6321 * @return true on success 6322 */ 6323 6324 bool detProcessedExpPrintObjects( 6325 FILE *stream, ///< a stream 6326 psArray *objects, ///< An array of detProcessedExpRow objects 6327 bool mdcf ///< format as mdconfig or simple 6328 ); 6086 6329 /** detStackedImfileRow data structure 6087 6330 * … … 6098 6341 psF64 bg_stdev; 6099 6342 psF64 bg_mean_stdev; 6100 bool normalize;6101 6343 } detStackedImfileRow; 6102 6344 … … 6114 6356 psF64 bg, 6115 6357 psF64 bg_stdev, 6116 psF64 bg_mean_stdev, 6117 bool normalize 6358 psF64 bg_mean_stdev 6118 6359 ); 6119 6360 … … 6152 6393 psF64 bg, 6153 6394 psF64 bg_stdev, 6154 psF64 bg_mean_stdev, 6155 bool normalize 6395 psF64 bg_mean_stdev 6156 6396 ); 6157 6397 … … 6181 6421 psF64 *bg, 6182 6422 psF64 *bg_stdev, 6183 psF64 *bg_mean_stdev, 6184 bool *normalize 6423 psF64 *bg_mean_stdev 6185 6424 ); 6186 6425 -
trunk/ippdb/tests/alloc.c
r9054 r9107 1037 1037 1038 1038 { 1039 detProcessedExpRow *object; 1040 1041 object = detProcessedExpRowAlloc(-32, "a string", "a string", 64.64, 64.64, 64.64, "a string", "a string" ); 1042 1043 if (!object) { 1044 exit(EXIT_FAILURE); 1045 } 1046 1047 if (!object->det_id == -32) { 1048 psFree(object); 1049 exit(EXIT_FAILURE); 1050 } 1051 if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) { 1052 psFree(object); 1053 exit(EXIT_FAILURE); 1054 } 1055 if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) { 1056 psFree(object); 1057 exit(EXIT_FAILURE); 1058 } 1059 if (!object->bg == 64.64) { 1060 psFree(object); 1061 exit(EXIT_FAILURE); 1062 } 1063 if (!object->bg_stdev == 64.64) { 1064 psFree(object); 1065 exit(EXIT_FAILURE); 1066 } 1067 if (!object->bg_mean_stdev == 64.64) { 1068 psFree(object); 1069 exit(EXIT_FAILURE); 1070 } 1071 if (strncmp(object->b1_uri, "a string", MAX_STRING_LENGTH)) { 1072 psFree(object); 1073 exit(EXIT_FAILURE); 1074 } 1075 if (strncmp(object->b2_uri, "a string", MAX_STRING_LENGTH)) { 1076 psFree(object); 1077 exit(EXIT_FAILURE); 1078 } 1079 1080 psFree(object); 1081 } 1082 1083 { 1039 1084 detStackedImfileRow *object; 1040 1085 1041 object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64 , true);1086 object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64 ); 1042 1087 1043 1088 if (!object) { … … 1074 1119 } 1075 1120 if (!object->bg_mean_stdev == 64.64) { 1076 psFree(object);1077 exit(EXIT_FAILURE);1078 }1079 if (!object->normalize == true) {1080 1121 psFree(object); 1081 1122 exit(EXIT_FAILURE); -
trunk/ippdb/tests/createtable.c
r8665 r9107 388 388 } 389 389 390 if(!detProcessedExpCreateTable(dbh)) { 391 exit(EXIT_FAILURE); 392 } 393 394 psDBCleanup(dbh); 395 } 396 397 { 398 psDB *dbh; 399 400 dbh = psDBInit("localhost", "test", NULL, "test"); 401 if (!dbh) { 402 exit(EXIT_FAILURE); 403 } 404 390 405 if(!detStackedImfileCreateTable(dbh)) { 391 406 exit(EXIT_FAILURE); -
trunk/ippdb/tests/dbcleanup.c
r8665 r9107 36 36 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detInputExp"); 37 37 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detProcessedImfile"); 38 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detProcessedExp"); 38 39 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detStackedImfile"); 39 40 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detNormalizedStatImfile"); -
trunk/ippdb/tests/dbsetup.c
r8665 r9107 88 88 detProcessedImfileCreateTable(dbh); 89 89 90 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detProcessedExp"); 91 detProcessedExpCreateTable(dbh); 92 90 93 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detStackedImfile"); 91 94 detStackedImfileCreateTable(dbh); -
trunk/ippdb/tests/droptable.c
r8665 r9107 388 388 } 389 389 390 if (!detProcessedExpDropTable(dbh)) { 391 exit(EXIT_FAILURE); 392 } 393 394 psDBCleanup(dbh); 395 } 396 397 { 398 psDB *dbh; 399 400 dbh = psDBInit("localhost", "test", NULL, "test"); 401 if (!dbh) { 402 exit(EXIT_FAILURE); 403 } 404 390 405 if (!detStackedImfileDropTable(dbh)) { 391 406 exit(EXIT_FAILURE); -
trunk/ippdb/tests/insert.c
r9054 r9107 388 388 } 389 389 390 if (!detStackedImfileInsert(dbh, -32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, true)) { 390 if (!detProcessedExpInsert(dbh, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", "a string")) { 391 exit(EXIT_FAILURE); 392 } 393 394 psDBCleanup(dbh); 395 } 396 397 { 398 psDB *dbh; 399 400 dbh = psDBInit("localhost", "test", NULL, "test"); 401 if (!dbh) { 402 exit(EXIT_FAILURE); 403 } 404 405 if (!detStackedImfileInsert(dbh, -32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64)) { 391 406 exit(EXIT_FAILURE); 392 407 } -
trunk/ippdb/tests/insertfits.c
r8665 r9107 674 674 } 675 675 676 if (!detProcessedExpInsertFits(dbh, fits)) { 677 exit(EXIT_FAILURE); 678 } 679 680 if (!psFitsClose(fits)) { 681 exit(EXIT_FAILURE); 682 } 683 684 psDBCleanup(dbh); 685 } 686 687 { 688 psDB *dbh; 689 psFits *fits; 690 691 dbh = psDBInit("localhost", "test", NULL, "test"); 692 if (!dbh) { 693 exit(EXIT_FAILURE); 694 } 695 696 // open a temp 697 fits = psFitsOpen(TMP_FILENAME, "r"); 698 if (!fits) { 699 exit(EXIT_FAILURE); 700 } 701 676 702 if (!detStackedImfileInsertFits(dbh, fits)) { 677 703 exit(EXIT_FAILURE); -
trunk/ippdb/tests/insertobject.c
r9054 r9107 557 557 { 558 558 psDB *dbh; 559 detProcessedExpRow *object; 560 561 dbh = psDBInit("localhost", "test", NULL, "test"); 562 if (!dbh) { 563 exit(EXIT_FAILURE); 564 } 565 566 object = detProcessedExpRowAlloc(-32, "a string", "a string", 64.64, 64.64, 64.64, "a string", "a string"); 567 if (!object) { 568 exit(EXIT_FAILURE); 569 } 570 571 if (!detProcessedExpInsertObject(dbh, object)) { 572 exit(EXIT_FAILURE); 573 } 574 575 psFree(object); 576 psDBCleanup(dbh); 577 } 578 579 { 580 psDB *dbh; 559 581 detStackedImfileRow *object; 560 582 … … 564 586 } 565 587 566 object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64 , true);588 object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64); 567 589 if (!object) { 568 590 exit(EXIT_FAILURE); -
trunk/ippdb/tests/metadatafromobject.c
r9054 r9107 1239 1239 { 1240 1240 psMetadata *md; 1241 detProcessedExpRow *object; 1242 bool status; 1243 1244 object = detProcessedExpRowAlloc(-32, "a string", "a string", 64.64, 64.64, 64.64, "a string", "a string"); 1245 if (!object) { 1246 exit(EXIT_FAILURE); 1247 } 1248 1249 md = detProcessedExpMetadataFromObject(object); 1250 if (!md) { 1251 exit(EXIT_FAILURE); 1252 } 1253 1254 psFree(object); 1255 1256 if (!psMetadataLookupS32(&status, md, "det_id") == -32) { 1257 psFree(md); 1258 exit(EXIT_FAILURE); 1259 } 1260 if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) { 1261 psFree(md); 1262 exit(EXIT_FAILURE); 1263 } 1264 if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) { 1265 psFree(md); 1266 exit(EXIT_FAILURE); 1267 } 1268 if (!psMetadataLookupF64(&status, md, "bg") == 64.64) { 1269 psFree(md); 1270 exit(EXIT_FAILURE); 1271 } 1272 if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) { 1273 psFree(md); 1274 exit(EXIT_FAILURE); 1275 } 1276 if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) { 1277 psFree(md); 1278 exit(EXIT_FAILURE); 1279 } 1280 if (strncmp(psMetadataLookupPtr(&status, md, "b1_uri"), "a string", MAX_STRING_LENGTH)) { 1281 psFree(md); 1282 exit(EXIT_FAILURE); 1283 } 1284 if (strncmp(psMetadataLookupPtr(&status, md, "b2_uri"), "a string", MAX_STRING_LENGTH)) { 1285 psFree(md); 1286 exit(EXIT_FAILURE); 1287 } 1288 1289 psFree(md); 1290 } 1291 1292 { 1293 psMetadata *md; 1241 1294 detStackedImfileRow *object; 1242 1295 bool status; 1243 1296 1244 object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64 , true);1297 object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64); 1245 1298 if (!object) { 1246 1299 exit(EXIT_FAILURE); … … 1283 1336 } 1284 1337 if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) { 1285 psFree(md);1286 exit(EXIT_FAILURE);1287 }1288 if (!psMetadataLookupBool(&status, md, "normalize") == true) {1289 1338 psFree(md); 1290 1339 exit(EXIT_FAILURE); -
trunk/ippdb/tests/objectfrommetadata.c
r9054 r9107 1868 1868 { 1869 1869 psMetadata *md; 1870 detProcessedExpRow *object; 1871 1872 md = psMetadataAlloc(); 1873 if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, -32)) { 1874 psFree(md); 1875 exit(EXIT_FAILURE); 1876 } 1877 if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) { 1878 psFree(md); 1879 exit(EXIT_FAILURE); 1880 } 1881 if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) { 1882 psFree(md); 1883 exit(EXIT_FAILURE); 1884 } 1885 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) { 1886 psFree(md); 1887 exit(EXIT_FAILURE); 1888 } 1889 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) { 1890 psFree(md); 1891 exit(EXIT_FAILURE); 1892 } 1893 if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) { 1894 psFree(md); 1895 exit(EXIT_FAILURE); 1896 } 1897 if (!psMetadataAddStr(md, PS_LIST_TAIL, "b1_uri", 0, NULL, "a string")) { 1898 psFree(md); 1899 exit(EXIT_FAILURE); 1900 } 1901 if (!psMetadataAddStr(md, PS_LIST_TAIL, "b2_uri", 0, NULL, "a string")) { 1902 psFree(md); 1903 exit(EXIT_FAILURE); 1904 } 1905 1906 object = detProcessedExpObjectFromMetadata(md); 1907 if (!object) { 1908 psFree(md); 1909 exit(EXIT_FAILURE); 1910 } 1911 1912 psFree(md); 1913 1914 if (!object->det_id == -32) { 1915 psFree(object); 1916 exit(EXIT_FAILURE); 1917 } 1918 if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) { 1919 psFree(object); 1920 exit(EXIT_FAILURE); 1921 } 1922 if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) { 1923 psFree(object); 1924 exit(EXIT_FAILURE); 1925 } 1926 if (!object->bg == 64.64) { 1927 psFree(object); 1928 exit(EXIT_FAILURE); 1929 } 1930 if (!object->bg_stdev == 64.64) { 1931 psFree(object); 1932 exit(EXIT_FAILURE); 1933 } 1934 if (!object->bg_mean_stdev == 64.64) { 1935 psFree(object); 1936 exit(EXIT_FAILURE); 1937 } 1938 if (strncmp(object->b1_uri, "a string", MAX_STRING_LENGTH)) { 1939 psFree(object); 1940 exit(EXIT_FAILURE); 1941 } 1942 if (strncmp(object->b2_uri, "a string", MAX_STRING_LENGTH)) { 1943 psFree(object); 1944 exit(EXIT_FAILURE); 1945 } 1946 1947 psFree(object); 1948 } 1949 1950 { 1951 psMetadata *md; 1870 1952 detStackedImfileRow *object; 1871 1953 … … 1903 1985 exit(EXIT_FAILURE); 1904 1986 } 1905 if (!psMetadataAdd(md, PS_LIST_TAIL, "normalize", PS_DATA_BOOL, NULL, true)) {1906 psFree(md);1907 exit(EXIT_FAILURE);1908 }1909 1987 1910 1988 object = detStackedImfileObjectFromMetadata(md); … … 1945 2023 } 1946 2024 if (!object->bg_mean_stdev == 64.64) { 1947 psFree(object);1948 exit(EXIT_FAILURE);1949 }1950 if (!object->normalize == true) {1951 2025 psFree(object); 1952 2026 exit(EXIT_FAILURE); -
trunk/ippdb/tests/pop.c
r9054 r9107 559 559 psDB *dbh; 560 560 psS32 det_id; 561 psS32 iteration; 562 char class_id[256]; 563 char uri[256]; 564 char recipe[256]; 565 psF64 bg; 566 psF64 bg_stdev; 567 psF64 bg_mean_stdev; 568 bool normalize; 569 570 dbh = psDBInit("localhost", "test", NULL, "test"); 571 if (!dbh) { 572 exit(EXIT_FAILURE); 573 } 574 575 if (!detStackedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, &normalize)) { 561 char exp_tag[256]; 562 char recipe[256]; 563 psF64 bg; 564 psF64 bg_stdev; 565 psF64 bg_mean_stdev; 566 char b1_uri[256]; 567 char b2_uri[256]; 568 569 dbh = psDBInit("localhost", "test", NULL, "test"); 570 if (!dbh) { 571 exit(EXIT_FAILURE); 572 } 573 574 if (!detProcessedExpPop(dbh, &det_id, (char **)&exp_tag, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri)) { 575 exit(EXIT_FAILURE); 576 } 577 578 psDBCleanup(dbh); 579 } 580 581 { 582 psDB *dbh; 583 psS32 det_id; 584 psS32 iteration; 585 char class_id[256]; 586 char uri[256]; 587 char recipe[256]; 588 psF64 bg; 589 psF64 bg_stdev; 590 psF64 bg_mean_stdev; 591 592 dbh = psDBInit("localhost", "test", NULL, "test"); 593 if (!dbh) { 594 exit(EXIT_FAILURE); 595 } 596 597 if (!detStackedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev)) { 576 598 exit(EXIT_FAILURE); 577 599 } -
trunk/ippdb/tests/popfits.c
r8665 r9107 674 674 } 675 675 676 if (!detProcessedExpPopFits(dbh, fits, 1)) { 677 exit(EXIT_FAILURE); 678 } 679 680 if (!psFitsClose(fits)) { 681 exit(EXIT_FAILURE); 682 } 683 684 psDBCleanup(dbh); 685 } 686 687 { 688 psDB *dbh; 689 psFits *fits; 690 691 dbh = psDBInit("localhost", "test", NULL, "test"); 692 if (!dbh) { 693 exit(EXIT_FAILURE); 694 } 695 696 // allocate a temp 697 fits = psFitsOpen(TMP_FILENAME, "w"); 698 if (!fits) { 699 exit(EXIT_FAILURE); 700 } 701 676 702 if (!detStackedImfilePopFits(dbh, fits, 1)) { 677 703 exit(EXIT_FAILURE); -
trunk/ippdb/tests/popobject.c
r8665 r9107 457 457 { 458 458 psDB *dbh; 459 detProcessedExpRow *object; 460 461 dbh = psDBInit("localhost", "test", NULL, "test"); 462 if (!dbh) { 463 exit(EXIT_FAILURE); 464 } 465 466 object = detProcessedExpPopObject(dbh); 467 if (!object) { 468 exit(EXIT_FAILURE); 469 } 470 471 psFree(object); 472 psDBCleanup(dbh); 473 } 474 475 { 476 psDB *dbh; 459 477 detStackedImfileRow *object; 460 478 -
trunk/ippdb/tests/selectrowsfits.c
r8665 r9107 571 571 } 572 572 573 if (!detProcessedExpSelectRowsFits(dbh, fits, NULL, 1)) { 574 exit(EXIT_FAILURE); 575 } 576 577 psFree(fits); 578 psDBCleanup(dbh); 579 } 580 581 { 582 psDB *dbh; 583 psFits *fits; 584 585 dbh = psDBInit("localhost", "test", NULL, "test"); 586 if (!dbh) { 587 exit(EXIT_FAILURE); 588 } 589 590 fits = psFitsOpen(TMP_FILENAME, "w"); 591 if (!fits) { 592 exit(EXIT_FAILURE); 593 } 594 573 595 if (!detStackedImfileSelectRowsFits(dbh, fits, NULL, 1)) { 574 596 exit(EXIT_FAILURE);
Note:
See TracChangeset
for help on using the changeset viewer.
