Changeset 15343
- Timestamp:
- Oct 19, 2007, 3:59:06 PM (19 years ago)
- Location:
- trunk/ippdb
- Files:
-
- 14 edited
-
Makefile.am (modified) (2 diffs)
-
src/ippdb.c (modified) (9 diffs)
-
src/ippdb.h (modified) (4 diffs)
-
tests/alloc.c (modified) (3 diffs)
-
tests/createtable.c (modified) (3 diffs)
-
tests/dbcleanup.c (modified) (3 diffs)
-
tests/dbsetup.c (modified) (3 diffs)
-
tests/droptable.c (modified) (3 diffs)
-
tests/insert.c (modified) (3 diffs)
-
tests/insertfits.c (modified) (3 diffs)
-
tests/insertobject.c (modified) (3 diffs)
-
tests/metadatafromobject.c (modified) (3 diffs)
-
tests/objectfrommetadata.c (modified) (3 diffs)
-
tests/selectrowsfits.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippdb/Makefile.am
r14598 r15343 10 10 man_MANS = \ 11 11 $(top_builddir)/docs/man/man3/ippdb.3 \ 12 $(top_builddir)/docs/man/man3/pzDataStoreRow.3 \ 12 13 $(top_builddir)/docs/man/man3/summitExpRow.3 \ 13 14 $(top_builddir)/docs/man/man3/summitImfileRow.3 \ … … 49 50 $(top_builddir)/docs/man/man3/detRunSummaryRow.3 \ 50 51 $(top_builddir)/docs/man/man3/detRegisteredImfileRow.3 \ 52 $(top_builddir)/docs/man/man3/detCorrectedExpRow.3 \ 53 $(top_builddir)/docs/man/man3/detCorrectedImfileRow.3 \ 51 54 $(top_builddir)/docs/man/man3/magicRunRow.3 \ 52 55 $(top_builddir)/docs/man/man3/magicInputSkyfileRow.3 \ 53 56 $(top_builddir)/docs/man/man3/magicTreeRow.3 \ 54 57 $(top_builddir)/docs/man/man3/magicNodeResultRow.3 \ 55 $(top_builddir)/docs/man/man3/magicMaskRow.3 58 $(top_builddir)/docs/man/man3/magicMaskRow.3 \ 59 $(top_builddir)/docs/man/man3/magicSkyfileMaskRow.3 56 60 57 61 58 docs/man/man3/ippdb.3 docs/man/man3/ summitExpRow.3 docs/man/man3/summitImfileRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/pzDoneExpRow.3 docs/man/man3/pzDoneImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/guidePendingExpRow.3 docs/man/man3/chipRunRow.3 docs/man/man3/chipProcessedImfileRow.3 docs/man/man3/chipMaskRow.3 docs/man/man3/camRunRow.3 docs/man/man3/camProcessedExpRow.3 docs/man/man3/camMaskRow.3 docs/man/man3/warpRunRow.3 docs/man/man3/warpInputExpRow.3 docs/man/man3/warpSkyCellMapRow.3 docs/man/man3/warpSkyfileRow.3 docs/man/man3/diffRunRow.3 docs/man/man3/diffInputSkyfileRow.3 docs/man/man3/diffSkyfileRow.3 docs/man/man3/stackRunRow.3 docs/man/man3/stackInputSkyfileRow.3 docs/man/man3/stackSumSkyfileRow.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/detNormalizedExpRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3 docs/man/man3/detRegisteredImfileRow.3 docs/man/man3/magicRunRow.3 docs/man/man3/magicInputSkyfileRow.3 docs/man/man3/magicTreeRow.3 docs/man/man3/magicNodeResultRow.3 docs/man/man3/magicMaskRow.3:62 docs/man/man3/ippdb.3 docs/man/man3/pzDataStoreRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/summitImfileRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/pzDoneExpRow.3 docs/man/man3/pzDoneImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/guidePendingExpRow.3 docs/man/man3/chipRunRow.3 docs/man/man3/chipProcessedImfileRow.3 docs/man/man3/chipMaskRow.3 docs/man/man3/camRunRow.3 docs/man/man3/camProcessedExpRow.3 docs/man/man3/camMaskRow.3 docs/man/man3/warpRunRow.3 docs/man/man3/warpInputExpRow.3 docs/man/man3/warpSkyCellMapRow.3 docs/man/man3/warpSkyfileRow.3 docs/man/man3/diffRunRow.3 docs/man/man3/diffInputSkyfileRow.3 docs/man/man3/diffSkyfileRow.3 docs/man/man3/stackRunRow.3 docs/man/man3/stackInputSkyfileRow.3 docs/man/man3/stackSumSkyfileRow.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/detNormalizedExpRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3 docs/man/man3/detRegisteredImfileRow.3 docs/man/man3/detCorrectedExpRow.3 docs/man/man3/detCorrectedImfileRow.3 docs/man/man3/magicRunRow.3 docs/man/man3/magicInputSkyfileRow.3 docs/man/man3/magicTreeRow.3 docs/man/man3/magicNodeResultRow.3 docs/man/man3/magicMaskRow.3 docs/man/man3/magicSkyfileMaskRow.3: 59 63 $(DOXYGEN) 60 64 -
trunk/ippdb/src/ippdb.c
r15003 r15343 31 31 #include "ippdb.h" 32 32 33 #define PZDATASTORE_TABLE_NAME "pzDataStore" 33 34 #define SUMMITEXP_TABLE_NAME "summitExp" 34 35 #define SUMMITIMFILE_TABLE_NAME "summitImfile" … … 70 71 #define DETRUNSUMMARY_TABLE_NAME "detRunSummary" 71 72 #define DETREGISTEREDIMFILE_TABLE_NAME "detRegisteredImfile" 73 #define DETCORRECTEDEXP_TABLE_NAME "detCorrectedExp" 74 #define DETCORRECTEDIMFILE_TABLE_NAME "detCorrectedImfile" 72 75 #define MAGICRUN_TABLE_NAME "magicRun" 73 76 #define MAGICINPUTSKYFILE_TABLE_NAME "magicInputSkyfile" … … 75 78 #define MAGICNODERESULT_TABLE_NAME "magicNodeResult" 76 79 #define MAGICMASK_TABLE_NAME "magicMask" 80 #define MAGICSKYFILEMASK_TABLE_NAME "magicSkyfileMask" 77 81 #define MAX_STRING_LENGTH 1024 78 82 … … 251 255 } 252 256 257 static void pzDataStoreRowFree(pzDataStoreRow *object); 258 259 pzDataStoreRow *pzDataStoreRowAlloc(const char *camera, const char *telescope, const char *uri) 260 { 261 pzDataStoreRow *_object; 262 263 _object = psAlloc(sizeof(pzDataStoreRow)); 264 psMemSetDeallocator(_object, (psFreeFunc)pzDataStoreRowFree); 265 266 _object->camera = psStringCopy(camera); 267 _object->telescope = psStringCopy(telescope); 268 _object->uri = psStringCopy(uri); 269 270 return _object; 271 } 272 273 static void pzDataStoreRowFree(pzDataStoreRow *object) 274 { 275 psFree(object->camera); 276 psFree(object->telescope); 277 psFree(object->uri); 278 } 279 280 bool pzDataStoreCreateTable(psDB *dbh) 281 { 282 psMetadata *md = psMetadataAlloc(); 283 if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, "Primary Key", "64")) { 284 psError(PS_ERR_UNKNOWN, false, "failed to add item camera"); 285 psFree(md); 286 return false; 287 } 288 if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, "Primary Key", "64")) { 289 psError(PS_ERR_UNKNOWN, false, "failed to add item telescope"); 290 psFree(md); 291 return false; 292 } 293 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) { 294 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 295 psFree(md); 296 return false; 297 } 298 299 bool status = psDBCreateTable(dbh, PZDATASTORE_TABLE_NAME, md); 300 301 psFree(md); 302 303 return status; 304 } 305 306 bool pzDataStoreDropTable(psDB *dbh) 307 { 308 return psDBDropTable(dbh, PZDATASTORE_TABLE_NAME); 309 } 310 311 bool pzDataStoreInsert(psDB * dbh, const char *camera, const char *telescope, const char *uri) 312 { 313 psMetadata *md = psMetadataAlloc(); 314 if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, camera)) { 315 psError(PS_ERR_UNKNOWN, false, "failed to add item camera"); 316 psFree(md); 317 return false; 318 } 319 if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, telescope)) { 320 psError(PS_ERR_UNKNOWN, false, "failed to add item telescope"); 321 psFree(md); 322 return false; 323 } 324 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) { 325 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 326 psFree(md); 327 return false; 328 } 329 330 bool status = psDBInsertOneRow(dbh, PZDATASTORE_TABLE_NAME, md); 331 psFree(md); 332 333 return status; 334 } 335 336 long long pzDataStoreDelete(psDB *dbh, const psMetadata *where, unsigned long long limit) 337 { 338 long long deleted = 0; 339 340 long long count = psDBDeleteRows(dbh, PZDATASTORE_TABLE_NAME, where, limit); 341 if (count < 0) { 342 psError(PS_ERR_UNKNOWN, true, "failed to delete row from pzDataStore"); 343 return count; 344 345 deleted += count; 346 } 347 348 return deleted; 349 } 350 bool pzDataStoreInsertObject(psDB *dbh, pzDataStoreRow *object) 351 { 352 return pzDataStoreInsert(dbh, object->camera, object->telescope, object->uri); 353 } 354 355 bool pzDataStoreInsertObjects(psDB *dbh, psArray *objects) 356 { 357 for (long i = 0; i < psArrayLength(objects); i++) { 358 if (!pzDataStoreInsertObject(dbh, objects->data[i])) { 359 return false; 360 } 361 } 362 363 return true; 364 } 365 366 bool pzDataStoreInsertFits(psDB *dbh, const psFits *fits) 367 { 368 psArray *rowSet; 369 370 // move to (the first?) extension named PZDATASTORE_TABLE_NAME 371 if (!psFitsMoveExtName(fits, PZDATASTORE_TABLE_NAME)) { 372 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", PZDATASTORE_TABLE_NAME); 373 return false; 374 } 375 376 // check HDU type 377 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) { 378 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE"); 379 return false; 380 } 381 382 // read fits table 383 rowSet = psFitsReadTable(fits); 384 if (!rowSet) { 385 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty"); 386 psFree(rowSet); 387 return false; 388 } 389 390 if (!psDBInsertRows(dbh, PZDATASTORE_TABLE_NAME, rowSet)) { 391 psError(PS_ERR_UNKNOWN, false, "databse insert failed"); 392 psFree(rowSet); 393 return false; 394 } 395 396 psFree(rowSet); 397 398 return true; 399 } 400 401 bool pzDataStoreSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit) 402 { 403 psArray *rowSet; 404 405 rowSet = psDBSelectRows(dbh, PZDATASTORE_TABLE_NAME, where, limit); 406 if (!rowSet) { 407 return false; 408 } 409 410 // output to fits 411 if (!psFitsWriteTable(fits, NULL, rowSet, PZDATASTORE_TABLE_NAME)) { 412 psError(PS_ERR_UNKNOWN, false, "FITS table write failed"); 413 psFree(rowSet); 414 return false; 415 } 416 417 psFree(rowSet); 418 419 return true; 420 } 421 422 psMetadata *pzDataStoreMetadataFromObject(const pzDataStoreRow *object) 423 { 424 psMetadata *md = psMetadataAlloc(); 425 if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, object->camera)) { 426 psError(PS_ERR_UNKNOWN, false, "failed to add item camera"); 427 psFree(md); 428 return false; 429 } 430 if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, object->telescope)) { 431 psError(PS_ERR_UNKNOWN, false, "failed to add item telescope"); 432 psFree(md); 433 return false; 434 } 435 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) { 436 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 437 psFree(md); 438 return false; 439 } 440 441 442 return md; 443 } 444 445 pzDataStoreRow *pzDataStoreObjectFromMetadata(psMetadata *md) 446 { 447 448 bool status = false; 449 char* camera = psMetadataLookupPtr(&status, md, "camera"); 450 if (!status) { 451 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera"); 452 return false; 453 } 454 char* telescope = psMetadataLookupPtr(&status, md, "telescope"); 455 if (!status) { 456 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope"); 457 return false; 458 } 459 char* uri = psMetadataLookupPtr(&status, md, "uri"); 460 if (!status) { 461 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri"); 462 return false; 463 } 464 465 return pzDataStoreRowAlloc(camera, telescope, uri); 466 } 467 psArray *pzDataStoreSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) 468 { 469 psArray *rowSet; 470 psArray *returnSet; 471 psU64 i; 472 473 rowSet = psDBSelectRows(dbh, PZDATASTORE_TABLE_NAME, where, limit); 474 if (!rowSet) { 475 return NULL; 476 } 477 478 // convert psMetadata rows to row objects 479 480 returnSet = psArrayAllocEmpty(rowSet->n); 481 482 for (i = 0; i < rowSet->n; i++) { 483 pzDataStoreRow *object = pzDataStoreObjectFromMetadata(rowSet->data[i]); 484 psArrayAdd(returnSet, 0, object); 485 psFree(object); 486 } 487 488 psFree(rowSet); 489 490 return returnSet; 491 } 492 bool pzDataStoreDeleteObject(psDB *dbh, const pzDataStoreRow *object) 493 { 494 psMetadata *where = pzDataStoreMetadataFromObject(object); 495 long long count = psDBDeleteRows(dbh, PZDATASTORE_TABLE_NAME, where, 0); 496 psFree(where); 497 if (count < 0) { 498 psError(PS_ERR_UNKNOWN, true, "failed to delete row from pzDataStore"); 499 return false; 500 } 501 if (count > 1) { 502 // XXX should this be a psAbort() instead? It is possible that 503 // having an object match multiple rows was by design. 504 psError(PS_ERR_UNKNOWN, true, "pzDataStoreRow object matched more then one row. Check your database schema"); 505 return false; 506 } 507 508 return true; 509 } 510 long long pzDataStoreDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit) 511 { 512 long long deleted = 0; 513 514 for (long long i = 0; i < objects->n; i++) { 515 pzDataStoreRow *object = objects->data[i]; 516 psMetadata *where = pzDataStoreMetadataFromObject(object); 517 long long count = psDBDeleteRows(dbh, PZDATASTORE_TABLE_NAME, where, limit); 518 psFree(where); 519 if (count < 0) { 520 psError(PS_ERR_UNKNOWN, true, "failed to delete row from pzDataStore"); 521 return count; 522 } 523 524 deleted += count; 525 } 526 527 return deleted; 528 } 529 bool pzDataStorePrintObjects(FILE *stream, psArray *objects, bool mdcf) 530 { 531 PS_ASSERT_PTR_NON_NULL(objects, false); 532 533 psMetadata *output = psMetadataAlloc(); 534 for (long i = 0; i < psArrayLength(objects); i++) { 535 psMetadata *md = pzDataStoreMetadataFromObject(objects->data[i]); 536 if (!psMetadataAddMetadata( 537 output, 538 PS_LIST_TAIL, 539 PZDATASTORE_TABLE_NAME, 540 PS_META_DUPLICATE_OK, 541 NULL, 542 md 543 )) { 544 psError(PS_ERR_UNKNOWN, false, "failed to add metadata"); 545 psFree(md); 546 psFree(output); 547 return false; 548 } 549 psFree(md); 550 } 551 552 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) { 553 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 554 psFree(output); 555 } 556 psFree(output); 557 558 return true; 559 } 560 bool pzDataStorePrintObject(FILE *stream, pzDataStoreRow *object, bool mdcf) 561 { 562 PS_ASSERT_PTR_NON_NULL(object, false); 563 564 psMetadata *md = pzDataStoreMetadataFromObject(object); 565 566 if (!ippdbPrintMetadataRaw(stream, md, mdcf)) { 567 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 568 psFree(md); 569 } 570 571 psFree(md); 572 573 return true; 574 } 253 575 static void summitExpRowFree(summitExpRow *object); 254 576 … … 18886 19208 return true; 18887 19209 } 19210 static void detCorrectedExpRowFree(detCorrectedExpRow *object); 19211 19212 detCorrectedExpRow *detCorrectedExpRowAlloc(psS64 det_id, psS64 exp_id, const char *uri, psS64 corr_id, const char *corr_type, const char *recipe, const char *path_base, psS16 fault) 19213 { 19214 detCorrectedExpRow *_object; 19215 19216 _object = psAlloc(sizeof(detCorrectedExpRow)); 19217 psMemSetDeallocator(_object, (psFreeFunc)detCorrectedExpRowFree); 19218 19219 _object->det_id = det_id; 19220 _object->exp_id = exp_id; 19221 _object->uri = psStringCopy(uri); 19222 _object->corr_id = corr_id; 19223 _object->corr_type = psStringCopy(corr_type); 19224 _object->recipe = psStringCopy(recipe); 19225 _object->path_base = psStringCopy(path_base); 19226 _object->fault = fault; 19227 19228 return _object; 19229 } 19230 19231 static void detCorrectedExpRowFree(detCorrectedExpRow *object) 19232 { 19233 psFree(object->uri); 19234 psFree(object->corr_type); 19235 psFree(object->recipe); 19236 psFree(object->path_base); 19237 } 19238 19239 bool detCorrectedExpCreateTable(psDB *dbh) 19240 { 19241 psMetadata *md = psMetadataAlloc(); 19242 if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, exp_id) ref detInputExp(det_id, exp_id)", 0)) { 19243 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 19244 psFree(md); 19245 return false; 19246 } 19247 if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(exp_id, class_id) ref rawImfile(exp_id, class_id)", 64)) { 19248 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 19249 psFree(md); 19250 return false; 19251 } 19252 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "INDEX(det_id, exp_id)", "255")) { 19253 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 19254 psFree(md); 19255 return false; 19256 } 19257 if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_id", PS_DATA_S64, NULL, 0)) { 19258 psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id"); 19259 psFree(md); 19260 return false; 19261 } 19262 if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_type", PS_DATA_STRING, NULL, "64")) { 19263 psError(PS_ERR_UNKNOWN, false, "failed to add item corr_type"); 19264 psFree(md); 19265 return false; 19266 } 19267 if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, "64")) { 19268 psError(PS_ERR_UNKNOWN, false, "failed to add item recipe"); 19269 psFree(md); 19270 return false; 19271 } 19272 if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) { 19273 psError(PS_ERR_UNKNOWN, false, "failed to add item path_base"); 19274 psFree(md); 19275 return false; 19276 } 19277 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) { 19278 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 19279 psFree(md); 19280 return false; 19281 } 19282 19283 bool status = psDBCreateTable(dbh, DETCORRECTEDEXP_TABLE_NAME, md); 19284 19285 psFree(md); 19286 19287 return status; 19288 } 19289 19290 bool detCorrectedExpDropTable(psDB *dbh) 19291 { 19292 return psDBDropTable(dbh, DETCORRECTEDEXP_TABLE_NAME); 19293 } 19294 19295 bool detCorrectedExpInsert(psDB * dbh, psS64 det_id, psS64 exp_id, const char *uri, psS64 corr_id, const char *corr_type, const char *recipe, const char *path_base, psS16 fault) 19296 { 19297 psMetadata *md = psMetadataAlloc(); 19298 if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, det_id)) { 19299 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 19300 psFree(md); 19301 return false; 19302 } 19303 if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) { 19304 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 19305 psFree(md); 19306 return false; 19307 } 19308 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) { 19309 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 19310 psFree(md); 19311 return false; 19312 } 19313 if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_id", PS_DATA_S64, NULL, corr_id)) { 19314 psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id"); 19315 psFree(md); 19316 return false; 19317 } 19318 if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_type", PS_DATA_STRING, NULL, corr_type)) { 19319 psError(PS_ERR_UNKNOWN, false, "failed to add item corr_type"); 19320 psFree(md); 19321 return false; 19322 } 19323 if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, recipe)) { 19324 psError(PS_ERR_UNKNOWN, false, "failed to add item recipe"); 19325 psFree(md); 19326 return false; 19327 } 19328 if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, path_base)) { 19329 psError(PS_ERR_UNKNOWN, false, "failed to add item path_base"); 19330 psFree(md); 19331 return false; 19332 } 19333 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) { 19334 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 19335 psFree(md); 19336 return false; 19337 } 19338 19339 bool status = psDBInsertOneRow(dbh, DETCORRECTEDEXP_TABLE_NAME, md); 19340 psFree(md); 19341 19342 return status; 19343 } 19344 19345 long long detCorrectedExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit) 19346 { 19347 long long deleted = 0; 19348 19349 long long count = psDBDeleteRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit); 19350 if (count < 0) { 19351 psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedExp"); 19352 return count; 19353 19354 deleted += count; 19355 } 19356 19357 return deleted; 19358 } 19359 bool detCorrectedExpInsertObject(psDB *dbh, detCorrectedExpRow *object) 19360 { 19361 return detCorrectedExpInsert(dbh, object->det_id, object->exp_id, object->uri, object->corr_id, object->corr_type, object->recipe, object->path_base, object->fault); 19362 } 19363 19364 bool detCorrectedExpInsertObjects(psDB *dbh, psArray *objects) 19365 { 19366 for (long i = 0; i < psArrayLength(objects); i++) { 19367 if (!detCorrectedExpInsertObject(dbh, objects->data[i])) { 19368 return false; 19369 } 19370 } 19371 19372 return true; 19373 } 19374 19375 bool detCorrectedExpInsertFits(psDB *dbh, const psFits *fits) 19376 { 19377 psArray *rowSet; 19378 19379 // move to (the first?) extension named DETCORRECTEDEXP_TABLE_NAME 19380 if (!psFitsMoveExtName(fits, DETCORRECTEDEXP_TABLE_NAME)) { 19381 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETCORRECTEDEXP_TABLE_NAME); 19382 return false; 19383 } 19384 19385 // check HDU type 19386 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) { 19387 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE"); 19388 return false; 19389 } 19390 19391 // read fits table 19392 rowSet = psFitsReadTable(fits); 19393 if (!rowSet) { 19394 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty"); 19395 psFree(rowSet); 19396 return false; 19397 } 19398 19399 if (!psDBInsertRows(dbh, DETCORRECTEDEXP_TABLE_NAME, rowSet)) { 19400 psError(PS_ERR_UNKNOWN, false, "databse insert failed"); 19401 psFree(rowSet); 19402 return false; 19403 } 19404 19405 psFree(rowSet); 19406 19407 return true; 19408 } 19409 19410 bool detCorrectedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit) 19411 { 19412 psArray *rowSet; 19413 19414 rowSet = psDBSelectRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit); 19415 if (!rowSet) { 19416 return false; 19417 } 19418 19419 // output to fits 19420 if (!psFitsWriteTable(fits, NULL, rowSet, DETCORRECTEDEXP_TABLE_NAME)) { 19421 psError(PS_ERR_UNKNOWN, false, "FITS table write failed"); 19422 psFree(rowSet); 19423 return false; 19424 } 19425 19426 psFree(rowSet); 19427 19428 return true; 19429 } 19430 19431 psMetadata *detCorrectedExpMetadataFromObject(const detCorrectedExpRow *object) 19432 { 19433 psMetadata *md = psMetadataAlloc(); 19434 if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, object->det_id)) { 19435 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 19436 psFree(md); 19437 return false; 19438 } 19439 if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) { 19440 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 19441 psFree(md); 19442 return false; 19443 } 19444 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) { 19445 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 19446 psFree(md); 19447 return false; 19448 } 19449 if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_id", PS_DATA_S64, NULL, object->corr_id)) { 19450 psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id"); 19451 psFree(md); 19452 return false; 19453 } 19454 if (!psMetadataAdd(md, PS_LIST_TAIL, "corr_type", PS_DATA_STRING, NULL, object->corr_type)) { 19455 psError(PS_ERR_UNKNOWN, false, "failed to add item corr_type"); 19456 psFree(md); 19457 return false; 19458 } 19459 if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, object->recipe)) { 19460 psError(PS_ERR_UNKNOWN, false, "failed to add item recipe"); 19461 psFree(md); 19462 return false; 19463 } 19464 if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) { 19465 psError(PS_ERR_UNKNOWN, false, "failed to add item path_base"); 19466 psFree(md); 19467 return false; 19468 } 19469 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) { 19470 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 19471 psFree(md); 19472 return false; 19473 } 19474 19475 19476 return md; 19477 } 19478 19479 detCorrectedExpRow *detCorrectedExpObjectFromMetadata(psMetadata *md) 19480 { 19481 19482 bool status = false; 19483 psS64 det_id = psMetadataLookupS64(&status, md, "det_id"); 19484 if (!status) { 19485 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id"); 19486 return false; 19487 } 19488 psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id"); 19489 if (!status) { 19490 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id"); 19491 return false; 19492 } 19493 char* uri = psMetadataLookupPtr(&status, md, "uri"); 19494 if (!status) { 19495 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri"); 19496 return false; 19497 } 19498 psS64 corr_id = psMetadataLookupS64(&status, md, "corr_id"); 19499 if (!status) { 19500 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item corr_id"); 19501 return false; 19502 } 19503 char* corr_type = psMetadataLookupPtr(&status, md, "corr_type"); 19504 if (!status) { 19505 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item corr_type"); 19506 return false; 19507 } 19508 char* recipe = psMetadataLookupPtr(&status, md, "recipe"); 19509 if (!status) { 19510 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe"); 19511 return false; 19512 } 19513 char* path_base = psMetadataLookupPtr(&status, md, "path_base"); 19514 if (!status) { 19515 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item path_base"); 19516 return false; 19517 } 19518 psS16 fault = psMetadataLookupS16(&status, md, "fault"); 19519 if (!status) { 19520 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault"); 19521 return false; 19522 } 19523 19524 return detCorrectedExpRowAlloc(det_id, exp_id, uri, corr_id, corr_type, recipe, path_base, fault); 19525 } 19526 psArray *detCorrectedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) 19527 { 19528 psArray *rowSet; 19529 psArray *returnSet; 19530 psU64 i; 19531 19532 rowSet = psDBSelectRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit); 19533 if (!rowSet) { 19534 return NULL; 19535 } 19536 19537 // convert psMetadata rows to row objects 19538 19539 returnSet = psArrayAllocEmpty(rowSet->n); 19540 19541 for (i = 0; i < rowSet->n; i++) { 19542 detCorrectedExpRow *object = detCorrectedExpObjectFromMetadata(rowSet->data[i]); 19543 psArrayAdd(returnSet, 0, object); 19544 psFree(object); 19545 } 19546 19547 psFree(rowSet); 19548 19549 return returnSet; 19550 } 19551 bool detCorrectedExpDeleteObject(psDB *dbh, const detCorrectedExpRow *object) 19552 { 19553 psMetadata *where = detCorrectedExpMetadataFromObject(object); 19554 long long count = psDBDeleteRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, 0); 19555 psFree(where); 19556 if (count < 0) { 19557 psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedExp"); 19558 return false; 19559 } 19560 if (count > 1) { 19561 // XXX should this be a psAbort() instead? It is possible that 19562 // having an object match multiple rows was by design. 19563 psError(PS_ERR_UNKNOWN, true, "detCorrectedExpRow object matched more then one row. Check your database schema"); 19564 return false; 19565 } 19566 19567 return true; 19568 } 19569 long long detCorrectedExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit) 19570 { 19571 long long deleted = 0; 19572 19573 for (long long i = 0; i < objects->n; i++) { 19574 detCorrectedExpRow *object = objects->data[i]; 19575 psMetadata *where = detCorrectedExpMetadataFromObject(object); 19576 long long count = psDBDeleteRows(dbh, DETCORRECTEDEXP_TABLE_NAME, where, limit); 19577 psFree(where); 19578 if (count < 0) { 19579 psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedExp"); 19580 return count; 19581 } 19582 19583 deleted += count; 19584 } 19585 19586 return deleted; 19587 } 19588 bool detCorrectedExpPrintObjects(FILE *stream, psArray *objects, bool mdcf) 19589 { 19590 PS_ASSERT_PTR_NON_NULL(objects, false); 19591 19592 psMetadata *output = psMetadataAlloc(); 19593 for (long i = 0; i < psArrayLength(objects); i++) { 19594 psMetadata *md = detCorrectedExpMetadataFromObject(objects->data[i]); 19595 if (!psMetadataAddMetadata( 19596 output, 19597 PS_LIST_TAIL, 19598 DETCORRECTEDEXP_TABLE_NAME, 19599 PS_META_DUPLICATE_OK, 19600 NULL, 19601 md 19602 )) { 19603 psError(PS_ERR_UNKNOWN, false, "failed to add metadata"); 19604 psFree(md); 19605 psFree(output); 19606 return false; 19607 } 19608 psFree(md); 19609 } 19610 19611 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) { 19612 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 19613 psFree(output); 19614 } 19615 psFree(output); 19616 19617 return true; 19618 } 19619 bool detCorrectedExpPrintObject(FILE *stream, detCorrectedExpRow *object, bool mdcf) 19620 { 19621 PS_ASSERT_PTR_NON_NULL(object, false); 19622 19623 psMetadata *md = detCorrectedExpMetadataFromObject(object); 19624 19625 if (!ippdbPrintMetadataRaw(stream, md, mdcf)) { 19626 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 19627 psFree(md); 19628 } 19629 19630 psFree(md); 19631 19632 return true; 19633 } 19634 static void detCorrectedImfileRowFree(detCorrectedImfileRow *object); 19635 19636 detCorrectedImfileRow *detCorrectedImfileRowAlloc(psS64 det_id, psS64 exp_id, const char *class_id, const char *uri, const char *path_base, psS16 fault) 19637 { 19638 detCorrectedImfileRow *_object; 19639 19640 _object = psAlloc(sizeof(detCorrectedImfileRow)); 19641 psMemSetDeallocator(_object, (psFreeFunc)detCorrectedImfileRowFree); 19642 19643 _object->det_id = det_id; 19644 _object->exp_id = exp_id; 19645 _object->class_id = psStringCopy(class_id); 19646 _object->uri = psStringCopy(uri); 19647 _object->path_base = psStringCopy(path_base); 19648 _object->fault = fault; 19649 19650 return _object; 19651 } 19652 19653 static void detCorrectedImfileRowFree(detCorrectedImfileRow *object) 19654 { 19655 psFree(object->class_id); 19656 psFree(object->uri); 19657 psFree(object->path_base); 19658 } 19659 19660 bool detCorrectedImfileCreateTable(psDB *dbh) 19661 { 19662 psMetadata *md = psMetadataAlloc(); 19663 if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, "Primary Key fkey(det_id, exp_id) ref detInputExp(det_id, exp_id)", 0)) { 19664 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 19665 psFree(md); 19666 return false; 19667 } 19668 if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, "Primary Key fkey(exp_id, class_id) ref rawImfile(exp_id, class_id)", 64)) { 19669 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 19670 psFree(md); 19671 return false; 19672 } 19673 if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key INDEX(det_id, class_id)", "64")) { 19674 psError(PS_ERR_UNKNOWN, false, "failed to add item class_id"); 19675 psFree(md); 19676 return false; 19677 } 19678 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "INDEX(det_id, exp_id)", "255")) { 19679 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 19680 psFree(md); 19681 return false; 19682 } 19683 if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) { 19684 psError(PS_ERR_UNKNOWN, false, "failed to add item path_base"); 19685 psFree(md); 19686 return false; 19687 } 19688 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) { 19689 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 19690 psFree(md); 19691 return false; 19692 } 19693 19694 bool status = psDBCreateTable(dbh, DETCORRECTEDIMFILE_TABLE_NAME, md); 19695 19696 psFree(md); 19697 19698 return status; 19699 } 19700 19701 bool detCorrectedImfileDropTable(psDB *dbh) 19702 { 19703 return psDBDropTable(dbh, DETCORRECTEDIMFILE_TABLE_NAME); 19704 } 19705 19706 bool detCorrectedImfileInsert(psDB * dbh, psS64 det_id, psS64 exp_id, const char *class_id, const char *uri, const char *path_base, psS16 fault) 19707 { 19708 psMetadata *md = psMetadataAlloc(); 19709 if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, det_id)) { 19710 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 19711 psFree(md); 19712 return false; 19713 } 19714 if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, exp_id)) { 19715 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 19716 psFree(md); 19717 return false; 19718 } 19719 if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) { 19720 psError(PS_ERR_UNKNOWN, false, "failed to add item class_id"); 19721 psFree(md); 19722 return false; 19723 } 19724 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) { 19725 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 19726 psFree(md); 19727 return false; 19728 } 19729 if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, path_base)) { 19730 psError(PS_ERR_UNKNOWN, false, "failed to add item path_base"); 19731 psFree(md); 19732 return false; 19733 } 19734 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) { 19735 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 19736 psFree(md); 19737 return false; 19738 } 19739 19740 bool status = psDBInsertOneRow(dbh, DETCORRECTEDIMFILE_TABLE_NAME, md); 19741 psFree(md); 19742 19743 return status; 19744 } 19745 19746 long long detCorrectedImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit) 19747 { 19748 long long deleted = 0; 19749 19750 long long count = psDBDeleteRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit); 19751 if (count < 0) { 19752 psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedImfile"); 19753 return count; 19754 19755 deleted += count; 19756 } 19757 19758 return deleted; 19759 } 19760 bool detCorrectedImfileInsertObject(psDB *dbh, detCorrectedImfileRow *object) 19761 { 19762 return detCorrectedImfileInsert(dbh, object->det_id, object->exp_id, object->class_id, object->uri, object->path_base, object->fault); 19763 } 19764 19765 bool detCorrectedImfileInsertObjects(psDB *dbh, psArray *objects) 19766 { 19767 for (long i = 0; i < psArrayLength(objects); i++) { 19768 if (!detCorrectedImfileInsertObject(dbh, objects->data[i])) { 19769 return false; 19770 } 19771 } 19772 19773 return true; 19774 } 19775 19776 bool detCorrectedImfileInsertFits(psDB *dbh, const psFits *fits) 19777 { 19778 psArray *rowSet; 19779 19780 // move to (the first?) extension named DETCORRECTEDIMFILE_TABLE_NAME 19781 if (!psFitsMoveExtName(fits, DETCORRECTEDIMFILE_TABLE_NAME)) { 19782 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETCORRECTEDIMFILE_TABLE_NAME); 19783 return false; 19784 } 19785 19786 // check HDU type 19787 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) { 19788 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE"); 19789 return false; 19790 } 19791 19792 // read fits table 19793 rowSet = psFitsReadTable(fits); 19794 if (!rowSet) { 19795 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty"); 19796 psFree(rowSet); 19797 return false; 19798 } 19799 19800 if (!psDBInsertRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, rowSet)) { 19801 psError(PS_ERR_UNKNOWN, false, "databse insert failed"); 19802 psFree(rowSet); 19803 return false; 19804 } 19805 19806 psFree(rowSet); 19807 19808 return true; 19809 } 19810 19811 bool detCorrectedImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit) 19812 { 19813 psArray *rowSet; 19814 19815 rowSet = psDBSelectRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit); 19816 if (!rowSet) { 19817 return false; 19818 } 19819 19820 // output to fits 19821 if (!psFitsWriteTable(fits, NULL, rowSet, DETCORRECTEDIMFILE_TABLE_NAME)) { 19822 psError(PS_ERR_UNKNOWN, false, "FITS table write failed"); 19823 psFree(rowSet); 19824 return false; 19825 } 19826 19827 psFree(rowSet); 19828 19829 return true; 19830 } 19831 19832 psMetadata *detCorrectedImfileMetadataFromObject(const detCorrectedImfileRow *object) 19833 { 19834 psMetadata *md = psMetadataAlloc(); 19835 if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S64, NULL, object->det_id)) { 19836 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 19837 psFree(md); 19838 return false; 19839 } 19840 if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_id", PS_DATA_S64, NULL, object->exp_id)) { 19841 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 19842 psFree(md); 19843 return false; 19844 } 19845 if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) { 19846 psError(PS_ERR_UNKNOWN, false, "failed to add item class_id"); 19847 psFree(md); 19848 return false; 19849 } 19850 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) { 19851 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 19852 psFree(md); 19853 return false; 19854 } 19855 if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) { 19856 psError(PS_ERR_UNKNOWN, false, "failed to add item path_base"); 19857 psFree(md); 19858 return false; 19859 } 19860 if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) { 19861 psError(PS_ERR_UNKNOWN, false, "failed to add item fault"); 19862 psFree(md); 19863 return false; 19864 } 19865 19866 19867 return md; 19868 } 19869 19870 detCorrectedImfileRow *detCorrectedImfileObjectFromMetadata(psMetadata *md) 19871 { 19872 19873 bool status = false; 19874 psS64 det_id = psMetadataLookupS64(&status, md, "det_id"); 19875 if (!status) { 19876 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id"); 19877 return false; 19878 } 19879 psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id"); 19880 if (!status) { 19881 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id"); 19882 return false; 19883 } 19884 char* class_id = psMetadataLookupPtr(&status, md, "class_id"); 19885 if (!status) { 19886 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id"); 19887 return false; 19888 } 19889 char* uri = psMetadataLookupPtr(&status, md, "uri"); 19890 if (!status) { 19891 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri"); 19892 return false; 19893 } 19894 char* path_base = psMetadataLookupPtr(&status, md, "path_base"); 19895 if (!status) { 19896 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item path_base"); 19897 return false; 19898 } 19899 psS16 fault = psMetadataLookupS16(&status, md, "fault"); 19900 if (!status) { 19901 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault"); 19902 return false; 19903 } 19904 19905 return detCorrectedImfileRowAlloc(det_id, exp_id, class_id, uri, path_base, fault); 19906 } 19907 psArray *detCorrectedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) 19908 { 19909 psArray *rowSet; 19910 psArray *returnSet; 19911 psU64 i; 19912 19913 rowSet = psDBSelectRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit); 19914 if (!rowSet) { 19915 return NULL; 19916 } 19917 19918 // convert psMetadata rows to row objects 19919 19920 returnSet = psArrayAllocEmpty(rowSet->n); 19921 19922 for (i = 0; i < rowSet->n; i++) { 19923 detCorrectedImfileRow *object = detCorrectedImfileObjectFromMetadata(rowSet->data[i]); 19924 psArrayAdd(returnSet, 0, object); 19925 psFree(object); 19926 } 19927 19928 psFree(rowSet); 19929 19930 return returnSet; 19931 } 19932 bool detCorrectedImfileDeleteObject(psDB *dbh, const detCorrectedImfileRow *object) 19933 { 19934 psMetadata *where = detCorrectedImfileMetadataFromObject(object); 19935 long long count = psDBDeleteRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, 0); 19936 psFree(where); 19937 if (count < 0) { 19938 psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedImfile"); 19939 return false; 19940 } 19941 if (count > 1) { 19942 // XXX should this be a psAbort() instead? It is possible that 19943 // having an object match multiple rows was by design. 19944 psError(PS_ERR_UNKNOWN, true, "detCorrectedImfileRow object matched more then one row. Check your database schema"); 19945 return false; 19946 } 19947 19948 return true; 19949 } 19950 long long detCorrectedImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit) 19951 { 19952 long long deleted = 0; 19953 19954 for (long long i = 0; i < objects->n; i++) { 19955 detCorrectedImfileRow *object = objects->data[i]; 19956 psMetadata *where = detCorrectedImfileMetadataFromObject(object); 19957 long long count = psDBDeleteRows(dbh, DETCORRECTEDIMFILE_TABLE_NAME, where, limit); 19958 psFree(where); 19959 if (count < 0) { 19960 psError(PS_ERR_UNKNOWN, true, "failed to delete row from detCorrectedImfile"); 19961 return count; 19962 } 19963 19964 deleted += count; 19965 } 19966 19967 return deleted; 19968 } 19969 bool detCorrectedImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf) 19970 { 19971 PS_ASSERT_PTR_NON_NULL(objects, false); 19972 19973 psMetadata *output = psMetadataAlloc(); 19974 for (long i = 0; i < psArrayLength(objects); i++) { 19975 psMetadata *md = detCorrectedImfileMetadataFromObject(objects->data[i]); 19976 if (!psMetadataAddMetadata( 19977 output, 19978 PS_LIST_TAIL, 19979 DETCORRECTEDIMFILE_TABLE_NAME, 19980 PS_META_DUPLICATE_OK, 19981 NULL, 19982 md 19983 )) { 19984 psError(PS_ERR_UNKNOWN, false, "failed to add metadata"); 19985 psFree(md); 19986 psFree(output); 19987 return false; 19988 } 19989 psFree(md); 19990 } 19991 19992 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) { 19993 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 19994 psFree(output); 19995 } 19996 psFree(output); 19997 19998 return true; 19999 } 20000 bool detCorrectedImfilePrintObject(FILE *stream, detCorrectedImfileRow *object, bool mdcf) 20001 { 20002 PS_ASSERT_PTR_NON_NULL(object, false); 20003 20004 psMetadata *md = detCorrectedImfileMetadataFromObject(object); 20005 20006 if (!ippdbPrintMetadataRaw(stream, md, mdcf)) { 20007 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 20008 psFree(md); 20009 } 20010 20011 psFree(md); 20012 20013 return true; 20014 } 18888 20015 static void magicRunRowFree(magicRunRow *object); 18889 20016 … … 19320 20447 return false; 19321 20448 } 19322 if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, " Key fkey(diff_id) ref diffRun(diff_id)", 0)) {20449 if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, "Primary Key fkey(diff_id) ref diffRun(diff_id)", 0)) { 19323 20450 psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id"); 19324 20451 psFree(md); 19325 20452 return false; 19326 20453 } 19327 if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, "INDEX(magic_id, node)", "64")) {20454 if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, NULL, "64")) { 19328 20455 psError(PS_ERR_UNKNOWN, false, "failed to add item node"); 19329 20456 psFree(md); … … 19632 20759 { 19633 20760 psMetadata *md = psMetadataAlloc(); 19634 if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, " PrimaryKey fkey(magic_id) ref magicRun(magic_id)", 0)) {20761 if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Key fkey(magic_id) ref magicRun(magic_id)", 0)) { 19635 20762 psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id"); 19636 20763 psFree(md); 19637 20764 return false; 19638 20765 } 19639 if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, " Primary Key fkey(magic_id, node) ref magicInputSkyfile(magic_id, node)", "64")) {20766 if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, "Key INDEX(magic_id, node)", "64")) { 19640 20767 psError(PS_ERR_UNKNOWN, false, "failed to add item node"); 19641 20768 psFree(md); 19642 20769 return false; 19643 20770 } 19644 if (!psMetadataAdd(md, PS_LIST_TAIL, "dep", PS_DATA_STRING, " fkey(magic_id, dep) ref magicInputSkyfile(magic_id, node)", "64")) {20771 if (!psMetadataAdd(md, PS_LIST_TAIL, "dep", PS_DATA_STRING, "Key", "64")) { 19645 20772 psError(PS_ERR_UNKNOWN, false, "failed to add item dep"); 19646 20773 psFree(md); … … 19954 21081 return false; 19955 21082 } 19956 if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, "Primary Key fkey(magic_id, node) ref magic InputSkyfile(magic_id, node)", "64")) {21083 if (!psMetadataAdd(md, PS_LIST_TAIL, "node", PS_DATA_STRING, "Primary Key fkey(magic_id, node) ref magicTree(magic_id, node)", "64")) { 19957 21084 psError(PS_ERR_UNKNOWN, false, "failed to add item node"); 19958 21085 psFree(md); … … 20536 21663 return true; 20537 21664 } 21665 static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object); 21666 21667 magicSkyfileMaskRow *magicSkyfileMaskRowAlloc(psS64 magic_id, psS64 diff_id, const char *uri) 21668 { 21669 magicSkyfileMaskRow *_object; 21670 21671 _object = psAlloc(sizeof(magicSkyfileMaskRow)); 21672 psMemSetDeallocator(_object, (psFreeFunc)magicSkyfileMaskRowFree); 21673 21674 _object->magic_id = magic_id; 21675 _object->diff_id = diff_id; 21676 _object->uri = psStringCopy(uri); 21677 21678 return _object; 21679 } 21680 21681 static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object) 21682 { 21683 psFree(object->uri); 21684 } 21685 21686 bool magicSkyfileMaskCreateTable(psDB *dbh) 21687 { 21688 psMetadata *md = psMetadataAlloc(); 21689 if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) { 21690 psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id"); 21691 psFree(md); 21692 return false; 21693 } 21694 if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, "Primary Key fkey(diff_id) ref magicInputSkyfile(magic_id, diff_id)", 0)) { 21695 psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id"); 21696 psFree(md); 21697 return false; 21698 } 21699 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "fkey(magic_id) ref magicMask(magic_id)", "255")) { 21700 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 21701 psFree(md); 21702 return false; 21703 } 21704 21705 bool status = psDBCreateTable(dbh, MAGICSKYFILEMASK_TABLE_NAME, md); 21706 21707 psFree(md); 21708 21709 return status; 21710 } 21711 21712 bool magicSkyfileMaskDropTable(psDB *dbh) 21713 { 21714 return psDBDropTable(dbh, MAGICSKYFILEMASK_TABLE_NAME); 21715 } 21716 21717 bool magicSkyfileMaskInsert(psDB * dbh, psS64 magic_id, psS64 diff_id, const char *uri) 21718 { 21719 psMetadata *md = psMetadataAlloc(); 21720 if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) { 21721 psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id"); 21722 psFree(md); 21723 return false; 21724 } 21725 if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, diff_id)) { 21726 psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id"); 21727 psFree(md); 21728 return false; 21729 } 21730 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) { 21731 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 21732 psFree(md); 21733 return false; 21734 } 21735 21736 bool status = psDBInsertOneRow(dbh, MAGICSKYFILEMASK_TABLE_NAME, md); 21737 psFree(md); 21738 21739 return status; 21740 } 21741 21742 long long magicSkyfileMaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit) 21743 { 21744 long long deleted = 0; 21745 21746 long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit); 21747 if (count < 0) { 21748 psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask"); 21749 return count; 21750 21751 deleted += count; 21752 } 21753 21754 return deleted; 21755 } 21756 bool magicSkyfileMaskInsertObject(psDB *dbh, magicSkyfileMaskRow *object) 21757 { 21758 return magicSkyfileMaskInsert(dbh, object->magic_id, object->diff_id, object->uri); 21759 } 21760 21761 bool magicSkyfileMaskInsertObjects(psDB *dbh, psArray *objects) 21762 { 21763 for (long i = 0; i < psArrayLength(objects); i++) { 21764 if (!magicSkyfileMaskInsertObject(dbh, objects->data[i])) { 21765 return false; 21766 } 21767 } 21768 21769 return true; 21770 } 21771 21772 bool magicSkyfileMaskInsertFits(psDB *dbh, const psFits *fits) 21773 { 21774 psArray *rowSet; 21775 21776 // move to (the first?) extension named MAGICSKYFILEMASK_TABLE_NAME 21777 if (!psFitsMoveExtName(fits, MAGICSKYFILEMASK_TABLE_NAME)) { 21778 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICSKYFILEMASK_TABLE_NAME); 21779 return false; 21780 } 21781 21782 // check HDU type 21783 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) { 21784 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE"); 21785 return false; 21786 } 21787 21788 // read fits table 21789 rowSet = psFitsReadTable(fits); 21790 if (!rowSet) { 21791 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty"); 21792 psFree(rowSet); 21793 return false; 21794 } 21795 21796 if (!psDBInsertRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, rowSet)) { 21797 psError(PS_ERR_UNKNOWN, false, "databse insert failed"); 21798 psFree(rowSet); 21799 return false; 21800 } 21801 21802 psFree(rowSet); 21803 21804 return true; 21805 } 21806 21807 bool magicSkyfileMaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit) 21808 { 21809 psArray *rowSet; 21810 21811 rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit); 21812 if (!rowSet) { 21813 return false; 21814 } 21815 21816 // output to fits 21817 if (!psFitsWriteTable(fits, NULL, rowSet, MAGICSKYFILEMASK_TABLE_NAME)) { 21818 psError(PS_ERR_UNKNOWN, false, "FITS table write failed"); 21819 psFree(rowSet); 21820 return false; 21821 } 21822 21823 psFree(rowSet); 21824 21825 return true; 21826 } 21827 21828 psMetadata *magicSkyfileMaskMetadataFromObject(const magicSkyfileMaskRow *object) 21829 { 21830 psMetadata *md = psMetadataAlloc(); 21831 if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) { 21832 psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id"); 21833 psFree(md); 21834 return false; 21835 } 21836 if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, object->diff_id)) { 21837 psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id"); 21838 psFree(md); 21839 return false; 21840 } 21841 if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) { 21842 psError(PS_ERR_UNKNOWN, false, "failed to add item uri"); 21843 psFree(md); 21844 return false; 21845 } 21846 21847 21848 return md; 21849 } 21850 21851 magicSkyfileMaskRow *magicSkyfileMaskObjectFromMetadata(psMetadata *md) 21852 { 21853 21854 bool status = false; 21855 psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id"); 21856 if (!status) { 21857 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id"); 21858 return false; 21859 } 21860 psS64 diff_id = psMetadataLookupS64(&status, md, "diff_id"); 21861 if (!status) { 21862 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item diff_id"); 21863 return false; 21864 } 21865 char* uri = psMetadataLookupPtr(&status, md, "uri"); 21866 if (!status) { 21867 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri"); 21868 return false; 21869 } 21870 21871 return magicSkyfileMaskRowAlloc(magic_id, diff_id, uri); 21872 } 21873 psArray *magicSkyfileMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) 21874 { 21875 psArray *rowSet; 21876 psArray *returnSet; 21877 psU64 i; 21878 21879 rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit); 21880 if (!rowSet) { 21881 return NULL; 21882 } 21883 21884 // convert psMetadata rows to row objects 21885 21886 returnSet = psArrayAllocEmpty(rowSet->n); 21887 21888 for (i = 0; i < rowSet->n; i++) { 21889 magicSkyfileMaskRow *object = magicSkyfileMaskObjectFromMetadata(rowSet->data[i]); 21890 psArrayAdd(returnSet, 0, object); 21891 psFree(object); 21892 } 21893 21894 psFree(rowSet); 21895 21896 return returnSet; 21897 } 21898 bool magicSkyfileMaskDeleteObject(psDB *dbh, const magicSkyfileMaskRow *object) 21899 { 21900 psMetadata *where = magicSkyfileMaskMetadataFromObject(object); 21901 long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, 0); 21902 psFree(where); 21903 if (count < 0) { 21904 psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask"); 21905 return false; 21906 } 21907 if (count > 1) { 21908 // XXX should this be a psAbort() instead? It is possible that 21909 // having an object match multiple rows was by design. 21910 psError(PS_ERR_UNKNOWN, true, "magicSkyfileMaskRow object matched more then one row. Check your database schema"); 21911 return false; 21912 } 21913 21914 return true; 21915 } 21916 long long magicSkyfileMaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit) 21917 { 21918 long long deleted = 0; 21919 21920 for (long long i = 0; i < objects->n; i++) { 21921 magicSkyfileMaskRow *object = objects->data[i]; 21922 psMetadata *where = magicSkyfileMaskMetadataFromObject(object); 21923 long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit); 21924 psFree(where); 21925 if (count < 0) { 21926 psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask"); 21927 return count; 21928 } 21929 21930 deleted += count; 21931 } 21932 21933 return deleted; 21934 } 21935 bool magicSkyfileMaskPrintObjects(FILE *stream, psArray *objects, bool mdcf) 21936 { 21937 PS_ASSERT_PTR_NON_NULL(objects, false); 21938 21939 psMetadata *output = psMetadataAlloc(); 21940 for (long i = 0; i < psArrayLength(objects); i++) { 21941 psMetadata *md = magicSkyfileMaskMetadataFromObject(objects->data[i]); 21942 if (!psMetadataAddMetadata( 21943 output, 21944 PS_LIST_TAIL, 21945 MAGICSKYFILEMASK_TABLE_NAME, 21946 PS_META_DUPLICATE_OK, 21947 NULL, 21948 md 21949 )) { 21950 psError(PS_ERR_UNKNOWN, false, "failed to add metadata"); 21951 psFree(md); 21952 psFree(output); 21953 return false; 21954 } 21955 psFree(md); 21956 } 21957 21958 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) { 21959 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 21960 psFree(output); 21961 } 21962 psFree(output); 21963 21964 return true; 21965 } 21966 bool magicSkyfileMaskPrintObject(FILE *stream, magicSkyfileMaskRow *object, bool mdcf) 21967 { 21968 PS_ASSERT_PTR_NON_NULL(object, false); 21969 21970 psMetadata *md = magicSkyfileMaskMetadataFromObject(object); 21971 21972 if (!ippdbPrintMetadataRaw(stream, md, mdcf)) { 21973 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 21974 psFree(md); 21975 } 21976 21977 psFree(md); 21978 21979 return true; 21980 } -
trunk/ippdb/src/ippdb.h
r15003 r15343 125 125 ); 126 126 127 /** pzDataStoreRow data structure 128 * 129 * Structure for representing a single row of pzDataStore table data. 130 */ 131 132 typedef struct { 133 char *camera; 134 char *telescope; 135 char *uri; 136 } pzDataStoreRow; 137 138 /** Creates a new pzDataStoreRow object 139 * 140 * @return A new pzDataStoreRow object or NULL on failure. 141 */ 142 143 pzDataStoreRow *pzDataStoreRowAlloc( 144 const char *camera, 145 const char *telescope, 146 const char *uri 147 ); 148 149 /** Creates a new pzDataStore table 150 * 151 * @return true on success 152 */ 153 154 bool pzDataStoreCreateTable( 155 psDB *dbh ///< Database handle 156 ); 157 158 /** Deletes a pzDataStore table 159 * 160 * @return true on success 161 */ 162 163 bool pzDataStoreDropTable( 164 psDB *dbh ///< Database handle 165 ); 166 167 /** Insert a single row into a table 168 * 169 * This function constructs and inserts a single row based on it's parameters. 170 * 171 * @return true on success 172 */ 173 174 bool pzDataStoreInsert( 175 psDB *dbh, ///< Database handle 176 const char *camera, 177 const char *telescope, 178 const char *uri 179 ); 180 181 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 182 * 183 * @return A The number of rows removed or a negative value on error 184 */ 185 186 long long pzDataStoreDelete( 187 psDB *dbh, ///< Database handle 188 const psMetadata *where, ///< Row match criteria 189 unsigned long long limit ///< Maximum number of elements to delete 190 ); 191 192 /** Insert a single pzDataStoreRow object into a table 193 * 194 * This function constructs and inserts a single row based on it's parameters. 195 * 196 * @return true on success 197 */ 198 199 bool pzDataStoreInsertObject( 200 psDB *dbh, ///< Database handle 201 pzDataStoreRow *object ///< pzDataStoreRow object 202 ); 203 204 /** Insert an array of pzDataStoreRow object into a table 205 * 206 * This function constructs and inserts multiple rows based on it's parameters. 207 * 208 * @return true on success 209 */ 210 211 bool pzDataStoreInsertObjects( 212 psDB *dbh, ///< Database handle 213 psArray *objects ///< array of pzDataStoreRow objects 214 ); 215 216 /** Insert data from a binary FITS table pzDataStoreRow into the database 217 * 218 * This function expects a psFits object with a FITS table as the first 219 * extension. The table must have at least one row of data in it, that is of 220 * the appropriate format (number of columns and their type). All other 221 * extensions are ignored. 222 * 223 * @return true on success 224 */ 225 226 bool pzDataStoreInsertFits( 227 psDB *dbh, ///< Database handle 228 const psFits *fits ///< psFits object 229 ); 230 231 /** Selects up to limit from the database and returns them in a binary FITS table 232 * 233 * This function assumes an empty psFits object and will create a FITS table 234 * as the first extension. 235 * 236 * See psDBSelectRows() for documentation on the format of where. 237 * 238 * @return true on success 239 */ 240 241 bool pzDataStoreSelectRowsFits( 242 psDB *dbh, ///< Database handle 243 psFits *fits, ///< psFits object 244 const psMetadata *where, ///< Row match criteria 245 unsigned long long limit ///< Maximum number of elements to return 246 ); 247 248 /** Convert a pzDataStoreRow into an equivalent psMetadata 249 * 250 * @return A psMetadata pointer or NULL on error 251 */ 252 253 psMetadata *pzDataStoreMetadataFromObject( 254 const pzDataStoreRow *object ///< fooRow to convert into a psMetadata 255 ); 256 257 /** Convert a psMetadata into an equivalent fooRow 258 * 259 * @return A pzDataStoreRow pointer or NULL on error 260 */ 261 262 pzDataStoreRow *pzDataStoreObjectFromMetadata( 263 psMetadata *md ///< psMetadata to convert into a fooRow 264 ); 265 /** Selects up to limit rows from the database and returns as pzDataStoreRow objects in a psArray 266 * 267 * See psDBSelectRows() for documentation on the format of where. 268 * 269 * @return A psArray pointer or NULL on error 270 */ 271 272 psArray *pzDataStoreSelectRowObjects( 273 psDB *dbh, ///< Database handle 274 const psMetadata *where, ///< Row match criteria 275 unsigned long long limit ///< Maximum number of elements to return 276 ); 277 /** Deletes a row from the database coresponding to an pzDataStore 278 * 279 * Note that a 'where' search psMetadata is constructed from each object and 280 * used to find rows to delete. 281 * 282 * @return A The number of rows removed or a negative value on error 283 */ 284 285 bool pzDataStoreDeleteObject( 286 psDB *dbh, ///< Database handle 287 const pzDataStoreRow *object ///< Object to delete 288 ); 289 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 290 * 291 * Note that a 'where' search psMetadata is constructed from each object and 292 * used to find rows to delete. 293 * 294 * @return A The number of rows removed or a negative value on error 295 */ 296 297 long long pzDataStoreDeleteRowObjects( 298 psDB *dbh, ///< Database handle 299 const psArray *objects, ///< Array of objects to delete 300 unsigned long long limit ///< Maximum number of elements to delete 301 ); 302 /** Formats and prints an array of pzDataStoreRow objects 303 * 304 * When mdcf is set the formated output is in psMetadataConfig 305 * format, otherwise it is in a simple tabular format. 306 * 307 * @return true on success 308 */ 309 310 bool pzDataStorePrintObjects( 311 FILE *stream, ///< a stream 312 psArray *objects, ///< An array of pzDataStoreRow objects 313 bool mdcf ///< format as mdconfig or simple 314 ); 315 /** Formats and prints an pzDataStoreRow object 316 * 317 * When mdcf is set the formated output is in psMetadataConfig 318 * format, otherwise it is in a simple tabular format. 319 * 320 * @return true on success 321 */ 322 323 bool pzDataStorePrintObject( 324 FILE *stream, ///< a stream 325 pzDataStoreRow *object, ///< an pzDataStoreRow object 326 bool mdcf ///< format as mdconfig or simple 327 ); 127 328 /** summitExpRow data structure 128 329 * … … 8849 9050 bool mdcf ///< format as mdconfig or simple 8850 9051 ); 9052 /** detCorrectedExpRow data structure 9053 * 9054 * Structure for representing a single row of detCorrectedExp table data. 9055 */ 9056 9057 typedef struct { 9058 psS64 det_id; 9059 psS64 exp_id; 9060 char *uri; 9061 psS64 corr_id; 9062 char *corr_type; 9063 char *recipe; 9064 char *path_base; 9065 psS16 fault; 9066 } detCorrectedExpRow; 9067 9068 /** Creates a new detCorrectedExpRow object 9069 * 9070 * @return A new detCorrectedExpRow object or NULL on failure. 9071 */ 9072 9073 detCorrectedExpRow *detCorrectedExpRowAlloc( 9074 psS64 det_id, 9075 psS64 exp_id, 9076 const char *uri, 9077 psS64 corr_id, 9078 const char *corr_type, 9079 const char *recipe, 9080 const char *path_base, 9081 psS16 fault 9082 ); 9083 9084 /** Creates a new detCorrectedExp table 9085 * 9086 * @return true on success 9087 */ 9088 9089 bool detCorrectedExpCreateTable( 9090 psDB *dbh ///< Database handle 9091 ); 9092 9093 /** Deletes a detCorrectedExp table 9094 * 9095 * @return true on success 9096 */ 9097 9098 bool detCorrectedExpDropTable( 9099 psDB *dbh ///< Database handle 9100 ); 9101 9102 /** Insert a single row into a table 9103 * 9104 * This function constructs and inserts a single row based on it's parameters. 9105 * 9106 * @return true on success 9107 */ 9108 9109 bool detCorrectedExpInsert( 9110 psDB *dbh, ///< Database handle 9111 psS64 det_id, 9112 psS64 exp_id, 9113 const char *uri, 9114 psS64 corr_id, 9115 const char *corr_type, 9116 const char *recipe, 9117 const char *path_base, 9118 psS16 fault 9119 ); 9120 9121 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 9122 * 9123 * @return A The number of rows removed or a negative value on error 9124 */ 9125 9126 long long detCorrectedExpDelete( 9127 psDB *dbh, ///< Database handle 9128 const psMetadata *where, ///< Row match criteria 9129 unsigned long long limit ///< Maximum number of elements to delete 9130 ); 9131 9132 /** Insert a single detCorrectedExpRow object into a table 9133 * 9134 * This function constructs and inserts a single row based on it's parameters. 9135 * 9136 * @return true on success 9137 */ 9138 9139 bool detCorrectedExpInsertObject( 9140 psDB *dbh, ///< Database handle 9141 detCorrectedExpRow *object ///< detCorrectedExpRow object 9142 ); 9143 9144 /** Insert an array of detCorrectedExpRow object into a table 9145 * 9146 * This function constructs and inserts multiple rows based on it's parameters. 9147 * 9148 * @return true on success 9149 */ 9150 9151 bool detCorrectedExpInsertObjects( 9152 psDB *dbh, ///< Database handle 9153 psArray *objects ///< array of detCorrectedExpRow objects 9154 ); 9155 9156 /** Insert data from a binary FITS table detCorrectedExpRow into the database 9157 * 9158 * This function expects a psFits object with a FITS table as the first 9159 * extension. The table must have at least one row of data in it, that is of 9160 * the appropriate format (number of columns and their type). All other 9161 * extensions are ignored. 9162 * 9163 * @return true on success 9164 */ 9165 9166 bool detCorrectedExpInsertFits( 9167 psDB *dbh, ///< Database handle 9168 const psFits *fits ///< psFits object 9169 ); 9170 9171 /** Selects up to limit from the database and returns them in a binary FITS table 9172 * 9173 * This function assumes an empty psFits object and will create a FITS table 9174 * as the first extension. 9175 * 9176 * See psDBSelectRows() for documentation on the format of where. 9177 * 9178 * @return true on success 9179 */ 9180 9181 bool detCorrectedExpSelectRowsFits( 9182 psDB *dbh, ///< Database handle 9183 psFits *fits, ///< psFits object 9184 const psMetadata *where, ///< Row match criteria 9185 unsigned long long limit ///< Maximum number of elements to return 9186 ); 9187 9188 /** Convert a detCorrectedExpRow into an equivalent psMetadata 9189 * 9190 * @return A psMetadata pointer or NULL on error 9191 */ 9192 9193 psMetadata *detCorrectedExpMetadataFromObject( 9194 const detCorrectedExpRow *object ///< fooRow to convert into a psMetadata 9195 ); 9196 9197 /** Convert a psMetadata into an equivalent fooRow 9198 * 9199 * @return A detCorrectedExpRow pointer or NULL on error 9200 */ 9201 9202 detCorrectedExpRow *detCorrectedExpObjectFromMetadata( 9203 psMetadata *md ///< psMetadata to convert into a fooRow 9204 ); 9205 /** Selects up to limit rows from the database and returns as detCorrectedExpRow objects in a psArray 9206 * 9207 * See psDBSelectRows() for documentation on the format of where. 9208 * 9209 * @return A psArray pointer or NULL on error 9210 */ 9211 9212 psArray *detCorrectedExpSelectRowObjects( 9213 psDB *dbh, ///< Database handle 9214 const psMetadata *where, ///< Row match criteria 9215 unsigned long long limit ///< Maximum number of elements to return 9216 ); 9217 /** Deletes a row from the database coresponding to an detCorrectedExp 9218 * 9219 * Note that a 'where' search psMetadata is constructed from each object and 9220 * used to find rows to delete. 9221 * 9222 * @return A The number of rows removed or a negative value on error 9223 */ 9224 9225 bool detCorrectedExpDeleteObject( 9226 psDB *dbh, ///< Database handle 9227 const detCorrectedExpRow *object ///< Object to delete 9228 ); 9229 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 9230 * 9231 * Note that a 'where' search psMetadata is constructed from each object and 9232 * used to find rows to delete. 9233 * 9234 * @return A The number of rows removed or a negative value on error 9235 */ 9236 9237 long long detCorrectedExpDeleteRowObjects( 9238 psDB *dbh, ///< Database handle 9239 const psArray *objects, ///< Array of objects to delete 9240 unsigned long long limit ///< Maximum number of elements to delete 9241 ); 9242 /** Formats and prints an array of detCorrectedExpRow objects 9243 * 9244 * When mdcf is set the formated output is in psMetadataConfig 9245 * format, otherwise it is in a simple tabular format. 9246 * 9247 * @return true on success 9248 */ 9249 9250 bool detCorrectedExpPrintObjects( 9251 FILE *stream, ///< a stream 9252 psArray *objects, ///< An array of detCorrectedExpRow objects 9253 bool mdcf ///< format as mdconfig or simple 9254 ); 9255 /** Formats and prints an detCorrectedExpRow object 9256 * 9257 * When mdcf is set the formated output is in psMetadataConfig 9258 * format, otherwise it is in a simple tabular format. 9259 * 9260 * @return true on success 9261 */ 9262 9263 bool detCorrectedExpPrintObject( 9264 FILE *stream, ///< a stream 9265 detCorrectedExpRow *object, ///< an detCorrectedExpRow object 9266 bool mdcf ///< format as mdconfig or simple 9267 ); 9268 /** detCorrectedImfileRow data structure 9269 * 9270 * Structure for representing a single row of detCorrectedImfile table data. 9271 */ 9272 9273 typedef struct { 9274 psS64 det_id; 9275 psS64 exp_id; 9276 char *class_id; 9277 char *uri; 9278 char *path_base; 9279 psS16 fault; 9280 } detCorrectedImfileRow; 9281 9282 /** Creates a new detCorrectedImfileRow object 9283 * 9284 * @return A new detCorrectedImfileRow object or NULL on failure. 9285 */ 9286 9287 detCorrectedImfileRow *detCorrectedImfileRowAlloc( 9288 psS64 det_id, 9289 psS64 exp_id, 9290 const char *class_id, 9291 const char *uri, 9292 const char *path_base, 9293 psS16 fault 9294 ); 9295 9296 /** Creates a new detCorrectedImfile table 9297 * 9298 * @return true on success 9299 */ 9300 9301 bool detCorrectedImfileCreateTable( 9302 psDB *dbh ///< Database handle 9303 ); 9304 9305 /** Deletes a detCorrectedImfile table 9306 * 9307 * @return true on success 9308 */ 9309 9310 bool detCorrectedImfileDropTable( 9311 psDB *dbh ///< Database handle 9312 ); 9313 9314 /** Insert a single row into a table 9315 * 9316 * This function constructs and inserts a single row based on it's parameters. 9317 * 9318 * @return true on success 9319 */ 9320 9321 bool detCorrectedImfileInsert( 9322 psDB *dbh, ///< Database handle 9323 psS64 det_id, 9324 psS64 exp_id, 9325 const char *class_id, 9326 const char *uri, 9327 const char *path_base, 9328 psS16 fault 9329 ); 9330 9331 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 9332 * 9333 * @return A The number of rows removed or a negative value on error 9334 */ 9335 9336 long long detCorrectedImfileDelete( 9337 psDB *dbh, ///< Database handle 9338 const psMetadata *where, ///< Row match criteria 9339 unsigned long long limit ///< Maximum number of elements to delete 9340 ); 9341 9342 /** Insert a single detCorrectedImfileRow object into a table 9343 * 9344 * This function constructs and inserts a single row based on it's parameters. 9345 * 9346 * @return true on success 9347 */ 9348 9349 bool detCorrectedImfileInsertObject( 9350 psDB *dbh, ///< Database handle 9351 detCorrectedImfileRow *object ///< detCorrectedImfileRow object 9352 ); 9353 9354 /** Insert an array of detCorrectedImfileRow object into a table 9355 * 9356 * This function constructs and inserts multiple rows based on it's parameters. 9357 * 9358 * @return true on success 9359 */ 9360 9361 bool detCorrectedImfileInsertObjects( 9362 psDB *dbh, ///< Database handle 9363 psArray *objects ///< array of detCorrectedImfileRow objects 9364 ); 9365 9366 /** Insert data from a binary FITS table detCorrectedImfileRow into the database 9367 * 9368 * This function expects a psFits object with a FITS table as the first 9369 * extension. The table must have at least one row of data in it, that is of 9370 * the appropriate format (number of columns and their type). All other 9371 * extensions are ignored. 9372 * 9373 * @return true on success 9374 */ 9375 9376 bool detCorrectedImfileInsertFits( 9377 psDB *dbh, ///< Database handle 9378 const psFits *fits ///< psFits object 9379 ); 9380 9381 /** Selects up to limit from the database and returns them in a binary FITS table 9382 * 9383 * This function assumes an empty psFits object and will create a FITS table 9384 * as the first extension. 9385 * 9386 * See psDBSelectRows() for documentation on the format of where. 9387 * 9388 * @return true on success 9389 */ 9390 9391 bool detCorrectedImfileSelectRowsFits( 9392 psDB *dbh, ///< Database handle 9393 psFits *fits, ///< psFits object 9394 const psMetadata *where, ///< Row match criteria 9395 unsigned long long limit ///< Maximum number of elements to return 9396 ); 9397 9398 /** Convert a detCorrectedImfileRow into an equivalent psMetadata 9399 * 9400 * @return A psMetadata pointer or NULL on error 9401 */ 9402 9403 psMetadata *detCorrectedImfileMetadataFromObject( 9404 const detCorrectedImfileRow *object ///< fooRow to convert into a psMetadata 9405 ); 9406 9407 /** Convert a psMetadata into an equivalent fooRow 9408 * 9409 * @return A detCorrectedImfileRow pointer or NULL on error 9410 */ 9411 9412 detCorrectedImfileRow *detCorrectedImfileObjectFromMetadata( 9413 psMetadata *md ///< psMetadata to convert into a fooRow 9414 ); 9415 /** Selects up to limit rows from the database and returns as detCorrectedImfileRow objects in a psArray 9416 * 9417 * See psDBSelectRows() for documentation on the format of where. 9418 * 9419 * @return A psArray pointer or NULL on error 9420 */ 9421 9422 psArray *detCorrectedImfileSelectRowObjects( 9423 psDB *dbh, ///< Database handle 9424 const psMetadata *where, ///< Row match criteria 9425 unsigned long long limit ///< Maximum number of elements to return 9426 ); 9427 /** Deletes a row from the database coresponding to an detCorrectedImfile 9428 * 9429 * Note that a 'where' search psMetadata is constructed from each object and 9430 * used to find rows to delete. 9431 * 9432 * @return A The number of rows removed or a negative value on error 9433 */ 9434 9435 bool detCorrectedImfileDeleteObject( 9436 psDB *dbh, ///< Database handle 9437 const detCorrectedImfileRow *object ///< Object to delete 9438 ); 9439 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 9440 * 9441 * Note that a 'where' search psMetadata is constructed from each object and 9442 * used to find rows to delete. 9443 * 9444 * @return A The number of rows removed or a negative value on error 9445 */ 9446 9447 long long detCorrectedImfileDeleteRowObjects( 9448 psDB *dbh, ///< Database handle 9449 const psArray *objects, ///< Array of objects to delete 9450 unsigned long long limit ///< Maximum number of elements to delete 9451 ); 9452 /** Formats and prints an array of detCorrectedImfileRow objects 9453 * 9454 * When mdcf is set the formated output is in psMetadataConfig 9455 * format, otherwise it is in a simple tabular format. 9456 * 9457 * @return true on success 9458 */ 9459 9460 bool detCorrectedImfilePrintObjects( 9461 FILE *stream, ///< a stream 9462 psArray *objects, ///< An array of detCorrectedImfileRow objects 9463 bool mdcf ///< format as mdconfig or simple 9464 ); 9465 /** Formats and prints an detCorrectedImfileRow object 9466 * 9467 * When mdcf is set the formated output is in psMetadataConfig 9468 * format, otherwise it is in a simple tabular format. 9469 * 9470 * @return true on success 9471 */ 9472 9473 bool detCorrectedImfilePrintObject( 9474 FILE *stream, ///< a stream 9475 detCorrectedImfileRow *object, ///< an detCorrectedImfileRow object 9476 bool mdcf ///< format as mdconfig or simple 9477 ); 8851 9478 /** magicRunRow data structure 8852 9479 * … … 9863 10490 bool mdcf ///< format as mdconfig or simple 9864 10491 ); 10492 /** magicSkyfileMaskRow data structure 10493 * 10494 * Structure for representing a single row of magicSkyfileMask table data. 10495 */ 10496 10497 typedef struct { 10498 psS64 magic_id; 10499 psS64 diff_id; 10500 char *uri; 10501 } magicSkyfileMaskRow; 10502 10503 /** Creates a new magicSkyfileMaskRow object 10504 * 10505 * @return A new magicSkyfileMaskRow object or NULL on failure. 10506 */ 10507 10508 magicSkyfileMaskRow *magicSkyfileMaskRowAlloc( 10509 psS64 magic_id, 10510 psS64 diff_id, 10511 const char *uri 10512 ); 10513 10514 /** Creates a new magicSkyfileMask table 10515 * 10516 * @return true on success 10517 */ 10518 10519 bool magicSkyfileMaskCreateTable( 10520 psDB *dbh ///< Database handle 10521 ); 10522 10523 /** Deletes a magicSkyfileMask table 10524 * 10525 * @return true on success 10526 */ 10527 10528 bool magicSkyfileMaskDropTable( 10529 psDB *dbh ///< Database handle 10530 ); 10531 10532 /** Insert a single row into a table 10533 * 10534 * This function constructs and inserts a single row based on it's parameters. 10535 * 10536 * @return true on success 10537 */ 10538 10539 bool magicSkyfileMaskInsert( 10540 psDB *dbh, ///< Database handle 10541 psS64 magic_id, 10542 psS64 diff_id, 10543 const char *uri 10544 ); 10545 10546 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 10547 * 10548 * @return A The number of rows removed or a negative value on error 10549 */ 10550 10551 long long magicSkyfileMaskDelete( 10552 psDB *dbh, ///< Database handle 10553 const psMetadata *where, ///< Row match criteria 10554 unsigned long long limit ///< Maximum number of elements to delete 10555 ); 10556 10557 /** Insert a single magicSkyfileMaskRow object into a table 10558 * 10559 * This function constructs and inserts a single row based on it's parameters. 10560 * 10561 * @return true on success 10562 */ 10563 10564 bool magicSkyfileMaskInsertObject( 10565 psDB *dbh, ///< Database handle 10566 magicSkyfileMaskRow *object ///< magicSkyfileMaskRow object 10567 ); 10568 10569 /** Insert an array of magicSkyfileMaskRow object into a table 10570 * 10571 * This function constructs and inserts multiple rows based on it's parameters. 10572 * 10573 * @return true on success 10574 */ 10575 10576 bool magicSkyfileMaskInsertObjects( 10577 psDB *dbh, ///< Database handle 10578 psArray *objects ///< array of magicSkyfileMaskRow objects 10579 ); 10580 10581 /** Insert data from a binary FITS table magicSkyfileMaskRow into the database 10582 * 10583 * This function expects a psFits object with a FITS table as the first 10584 * extension. The table must have at least one row of data in it, that is of 10585 * the appropriate format (number of columns and their type). All other 10586 * extensions are ignored. 10587 * 10588 * @return true on success 10589 */ 10590 10591 bool magicSkyfileMaskInsertFits( 10592 psDB *dbh, ///< Database handle 10593 const psFits *fits ///< psFits object 10594 ); 10595 10596 /** Selects up to limit from the database and returns them in a binary FITS table 10597 * 10598 * This function assumes an empty psFits object and will create a FITS table 10599 * as the first extension. 10600 * 10601 * See psDBSelectRows() for documentation on the format of where. 10602 * 10603 * @return true on success 10604 */ 10605 10606 bool magicSkyfileMaskSelectRowsFits( 10607 psDB *dbh, ///< Database handle 10608 psFits *fits, ///< psFits object 10609 const psMetadata *where, ///< Row match criteria 10610 unsigned long long limit ///< Maximum number of elements to return 10611 ); 10612 10613 /** Convert a magicSkyfileMaskRow into an equivalent psMetadata 10614 * 10615 * @return A psMetadata pointer or NULL on error 10616 */ 10617 10618 psMetadata *magicSkyfileMaskMetadataFromObject( 10619 const magicSkyfileMaskRow *object ///< fooRow to convert into a psMetadata 10620 ); 10621 10622 /** Convert a psMetadata into an equivalent fooRow 10623 * 10624 * @return A magicSkyfileMaskRow pointer or NULL on error 10625 */ 10626 10627 magicSkyfileMaskRow *magicSkyfileMaskObjectFromMetadata( 10628 psMetadata *md ///< psMetadata to convert into a fooRow 10629 ); 10630 /** Selects up to limit rows from the database and returns as magicSkyfileMaskRow objects in a psArray 10631 * 10632 * See psDBSelectRows() for documentation on the format of where. 10633 * 10634 * @return A psArray pointer or NULL on error 10635 */ 10636 10637 psArray *magicSkyfileMaskSelectRowObjects( 10638 psDB *dbh, ///< Database handle 10639 const psMetadata *where, ///< Row match criteria 10640 unsigned long long limit ///< Maximum number of elements to return 10641 ); 10642 /** Deletes a row from the database coresponding to an magicSkyfileMask 10643 * 10644 * Note that a 'where' search psMetadata is constructed from each object and 10645 * used to find rows to delete. 10646 * 10647 * @return A The number of rows removed or a negative value on error 10648 */ 10649 10650 bool magicSkyfileMaskDeleteObject( 10651 psDB *dbh, ///< Database handle 10652 const magicSkyfileMaskRow *object ///< Object to delete 10653 ); 10654 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 10655 * 10656 * Note that a 'where' search psMetadata is constructed from each object and 10657 * used to find rows to delete. 10658 * 10659 * @return A The number of rows removed or a negative value on error 10660 */ 10661 10662 long long magicSkyfileMaskDeleteRowObjects( 10663 psDB *dbh, ///< Database handle 10664 const psArray *objects, ///< Array of objects to delete 10665 unsigned long long limit ///< Maximum number of elements to delete 10666 ); 10667 /** Formats and prints an array of magicSkyfileMaskRow objects 10668 * 10669 * When mdcf is set the formated output is in psMetadataConfig 10670 * format, otherwise it is in a simple tabular format. 10671 * 10672 * @return true on success 10673 */ 10674 10675 bool magicSkyfileMaskPrintObjects( 10676 FILE *stream, ///< a stream 10677 psArray *objects, ///< An array of magicSkyfileMaskRow objects 10678 bool mdcf ///< format as mdconfig or simple 10679 ); 10680 /** Formats and prints an magicSkyfileMaskRow object 10681 * 10682 * When mdcf is set the formated output is in psMetadataConfig 10683 * format, otherwise it is in a simple tabular format. 10684 * 10685 * @return true on success 10686 */ 10687 10688 bool magicSkyfileMaskPrintObject( 10689 FILE *stream, ///< a stream 10690 magicSkyfileMaskRow *object, ///< an magicSkyfileMaskRow object 10691 bool mdcf ///< format as mdconfig or simple 10692 ); 9865 10693 9866 10694 /// @} … … 9870 10698 #endif 9871 10699 9872 #endif // MAGIC MASK_DB_H10700 #endif // MAGICSKYFILEMASK_DB_H -
trunk/ippdb/tests/alloc.c
r15003 r15343 9 9 { 10 10 { 11 pzDataStoreRow *object; 12 13 object = pzDataStoreRowAlloc("a string", "a string", "a string" ); 14 15 if (!object) { 16 exit(EXIT_FAILURE); 17 } 18 19 if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) { 20 psFree(object); 21 exit(EXIT_FAILURE); 22 } 23 if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) { 24 psFree(object); 25 exit(EXIT_FAILURE); 26 } 27 if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) { 28 psFree(object); 29 exit(EXIT_FAILURE); 30 } 31 32 psFree(object); 33 } 34 35 { 11 36 summitExpRow *object; 12 37 … … 2153 2178 2154 2179 { 2180 detCorrectedExpRow *object; 2181 2182 object = detCorrectedExpRowAlloc(-64, -64, "a string", -64, "a string", "a string", "a string", -16 ); 2183 2184 if (!object) { 2185 exit(EXIT_FAILURE); 2186 } 2187 2188 if (!object->det_id == -64) { 2189 psFree(object); 2190 exit(EXIT_FAILURE); 2191 } 2192 if (!object->exp_id == -64) { 2193 psFree(object); 2194 exit(EXIT_FAILURE); 2195 } 2196 if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) { 2197 psFree(object); 2198 exit(EXIT_FAILURE); 2199 } 2200 if (!object->corr_id == -64) { 2201 psFree(object); 2202 exit(EXIT_FAILURE); 2203 } 2204 if (strncmp(object->corr_type, "a string", MAX_STRING_LENGTH)) { 2205 psFree(object); 2206 exit(EXIT_FAILURE); 2207 } 2208 if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) { 2209 psFree(object); 2210 exit(EXIT_FAILURE); 2211 } 2212 if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) { 2213 psFree(object); 2214 exit(EXIT_FAILURE); 2215 } 2216 if (!object->fault == -16) { 2217 psFree(object); 2218 exit(EXIT_FAILURE); 2219 } 2220 2221 psFree(object); 2222 } 2223 2224 { 2225 detCorrectedImfileRow *object; 2226 2227 object = detCorrectedImfileRowAlloc(-64, -64, "a string", "a string", "a string", -16 ); 2228 2229 if (!object) { 2230 exit(EXIT_FAILURE); 2231 } 2232 2233 if (!object->det_id == -64) { 2234 psFree(object); 2235 exit(EXIT_FAILURE); 2236 } 2237 if (!object->exp_id == -64) { 2238 psFree(object); 2239 exit(EXIT_FAILURE); 2240 } 2241 if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) { 2242 psFree(object); 2243 exit(EXIT_FAILURE); 2244 } 2245 if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) { 2246 psFree(object); 2247 exit(EXIT_FAILURE); 2248 } 2249 if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) { 2250 psFree(object); 2251 exit(EXIT_FAILURE); 2252 } 2253 if (!object->fault == -16) { 2254 psFree(object); 2255 exit(EXIT_FAILURE); 2256 } 2257 2258 psFree(object); 2259 } 2260 2261 { 2155 2262 magicRunRow *object; 2156 2263 … … 2277 2384 2278 2385 if (!object->magic_id == -64) { 2386 psFree(object); 2387 exit(EXIT_FAILURE); 2388 } 2389 if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) { 2390 psFree(object); 2391 exit(EXIT_FAILURE); 2392 } 2393 2394 psFree(object); 2395 } 2396 2397 { 2398 magicSkyfileMaskRow *object; 2399 2400 object = magicSkyfileMaskRowAlloc(-64, -64, "a string" ); 2401 2402 if (!object) { 2403 exit(EXIT_FAILURE); 2404 } 2405 2406 if (!object->magic_id == -64) { 2407 psFree(object); 2408 exit(EXIT_FAILURE); 2409 } 2410 if (!object->diff_id == -64) { 2279 2411 psFree(object); 2280 2412 exit(EXIT_FAILURE); -
trunk/ippdb/tests/createtable.c
r14598 r15343 13 13 } 14 14 15 if(!pzDataStoreCreateTable(dbh)) { 16 exit(EXIT_FAILURE); 17 } 18 19 psDBCleanup(dbh); 20 } 21 22 { 23 psDB *dbh; 24 25 dbh = psDBInit("localhost", "test", NULL, "test"); 26 if (!dbh) { 27 exit(EXIT_FAILURE); 28 } 29 15 30 if(!summitExpCreateTable(dbh)) { 16 31 exit(EXIT_FAILURE); … … 598 613 } 599 614 615 if(!detCorrectedExpCreateTable(dbh)) { 616 exit(EXIT_FAILURE); 617 } 618 619 psDBCleanup(dbh); 620 } 621 622 { 623 psDB *dbh; 624 625 dbh = psDBInit("localhost", "test", NULL, "test"); 626 if (!dbh) { 627 exit(EXIT_FAILURE); 628 } 629 630 if(!detCorrectedImfileCreateTable(dbh)) { 631 exit(EXIT_FAILURE); 632 } 633 634 psDBCleanup(dbh); 635 } 636 637 { 638 psDB *dbh; 639 640 dbh = psDBInit("localhost", "test", NULL, "test"); 641 if (!dbh) { 642 exit(EXIT_FAILURE); 643 } 644 600 645 if(!magicRunCreateTable(dbh)) { 601 646 exit(EXIT_FAILURE); … … 659 704 660 705 if(!magicMaskCreateTable(dbh)) { 706 exit(EXIT_FAILURE); 707 } 708 709 psDBCleanup(dbh); 710 } 711 712 { 713 psDB *dbh; 714 715 dbh = psDBInit("localhost", "test", NULL, "test"); 716 if (!dbh) { 717 exit(EXIT_FAILURE); 718 } 719 720 if(!magicSkyfileMaskCreateTable(dbh)) { 661 721 exit(EXIT_FAILURE); 662 722 } -
trunk/ippdb/tests/dbcleanup.c
r14598 r15343 11 11 } 12 12 13 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS pzDataStore"); 13 14 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitExp"); 14 15 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitImfile"); … … 50 51 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detRunSummary"); 51 52 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detRegisteredImfile"); 53 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detCorrectedExp"); 54 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detCorrectedImfile"); 52 55 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicRun"); 53 56 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicInputSkyfile"); … … 55 58 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicNodeResult"); 56 59 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicMask"); 60 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicSkyfileMask"); 57 61 58 62 psDBCleanup(dbh); -
trunk/ippdb/tests/dbsetup.c
r14598 r15343 13 13 14 14 // remove the table if it already exists 15 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS pzDataStore"); 16 pzDataStoreCreateTable(dbh); 17 15 18 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS summitExp"); 16 19 summitExpCreateTable(dbh); … … 130 133 detRegisteredImfileCreateTable(dbh); 131 134 135 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detCorrectedExp"); 136 detCorrectedExpCreateTable(dbh); 137 138 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detCorrectedImfile"); 139 detCorrectedImfileCreateTable(dbh); 140 132 141 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicRun"); 133 142 magicRunCreateTable(dbh); … … 145 154 magicMaskCreateTable(dbh); 146 155 156 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS magicSkyfileMask"); 157 magicSkyfileMaskCreateTable(dbh); 158 147 159 psDBCleanup(dbh); 148 160 -
trunk/ippdb/tests/droptable.c
r14598 r15343 13 13 } 14 14 15 if (!pzDataStoreDropTable(dbh)) { 16 exit(EXIT_FAILURE); 17 } 18 19 psDBCleanup(dbh); 20 } 21 22 { 23 psDB *dbh; 24 25 dbh = psDBInit("localhost", "test", NULL, "test"); 26 if (!dbh) { 27 exit(EXIT_FAILURE); 28 } 29 15 30 if (!summitExpDropTable(dbh)) { 16 31 exit(EXIT_FAILURE); … … 598 613 } 599 614 615 if (!detCorrectedExpDropTable(dbh)) { 616 exit(EXIT_FAILURE); 617 } 618 619 psDBCleanup(dbh); 620 } 621 622 { 623 psDB *dbh; 624 625 dbh = psDBInit("localhost", "test", NULL, "test"); 626 if (!dbh) { 627 exit(EXIT_FAILURE); 628 } 629 630 if (!detCorrectedImfileDropTable(dbh)) { 631 exit(EXIT_FAILURE); 632 } 633 634 psDBCleanup(dbh); 635 } 636 637 { 638 psDB *dbh; 639 640 dbh = psDBInit("localhost", "test", NULL, "test"); 641 if (!dbh) { 642 exit(EXIT_FAILURE); 643 } 644 600 645 if (!magicRunDropTable(dbh)) { 601 646 exit(EXIT_FAILURE); … … 659 704 660 705 if (!magicMaskDropTable(dbh)) { 706 exit(EXIT_FAILURE); 707 } 708 709 psDBCleanup(dbh); 710 } 711 712 { 713 psDB *dbh; 714 715 dbh = psDBInit("localhost", "test", NULL, "test"); 716 if (!dbh) { 717 exit(EXIT_FAILURE); 718 } 719 720 if (!magicSkyfileMaskDropTable(dbh)) { 661 721 exit(EXIT_FAILURE); 662 722 } -
trunk/ippdb/tests/insert.c
r15003 r15343 13 13 } 14 14 15 if (!pzDataStoreInsert(dbh, "a string", "a string", "a string")) { 16 exit(EXIT_FAILURE); 17 } 18 19 psDBCleanup(dbh); 20 } 21 22 { 23 psDB *dbh; 24 25 dbh = psDBInit("localhost", "test", NULL, "test"); 26 if (!dbh) { 27 exit(EXIT_FAILURE); 28 } 29 15 30 if (!summitExpInsert(dbh, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", -32)) { 16 31 exit(EXIT_FAILURE); … … 598 613 } 599 614 615 if (!detCorrectedExpInsert(dbh, -64, -64, "a string", -64, "a string", "a string", "a string", -16)) { 616 exit(EXIT_FAILURE); 617 } 618 619 psDBCleanup(dbh); 620 } 621 622 { 623 psDB *dbh; 624 625 dbh = psDBInit("localhost", "test", NULL, "test"); 626 if (!dbh) { 627 exit(EXIT_FAILURE); 628 } 629 630 if (!detCorrectedImfileInsert(dbh, -64, -64, "a string", "a string", "a string", -16)) { 631 exit(EXIT_FAILURE); 632 } 633 634 psDBCleanup(dbh); 635 } 636 637 { 638 psDB *dbh; 639 640 dbh = psDBInit("localhost", "test", NULL, "test"); 641 if (!dbh) { 642 exit(EXIT_FAILURE); 643 } 644 600 645 if (!magicRunInsert(dbh, -64, "a string", "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z")) { 601 646 exit(EXIT_FAILURE); … … 659 704 660 705 if (!magicMaskInsert(dbh, -64, "a string")) { 706 exit(EXIT_FAILURE); 707 } 708 709 psDBCleanup(dbh); 710 } 711 712 { 713 psDB *dbh; 714 715 dbh = psDBInit("localhost", "test", NULL, "test"); 716 if (!dbh) { 717 exit(EXIT_FAILURE); 718 } 719 720 if (!magicSkyfileMaskInsert(dbh, -64, -64, "a string")) { 661 721 exit(EXIT_FAILURE); 662 722 } -
trunk/ippdb/tests/insertfits.c
r14598 r15343 24 24 } 25 25 26 if (!pzDataStoreInsertFits(dbh, fits)) { 27 exit(EXIT_FAILURE); 28 } 29 30 if (!psFitsClose(fits)) { 31 exit(EXIT_FAILURE); 32 } 33 34 psDBCleanup(dbh); 35 } 36 37 { 38 psDB *dbh; 39 psFits *fits; 40 41 dbh = psDBInit("localhost", "test", NULL, "test"); 42 if (!dbh) { 43 exit(EXIT_FAILURE); 44 } 45 46 // open a temp 47 fits = psFitsOpen(TMP_FILENAME, "r"); 48 if (!fits) { 49 exit(EXIT_FAILURE); 50 } 51 26 52 if (!summitExpInsertFits(dbh, fits)) { 27 53 exit(EXIT_FAILURE); … … 1038 1064 } 1039 1065 1066 if (!detCorrectedExpInsertFits(dbh, fits)) { 1067 exit(EXIT_FAILURE); 1068 } 1069 1070 if (!psFitsClose(fits)) { 1071 exit(EXIT_FAILURE); 1072 } 1073 1074 psDBCleanup(dbh); 1075 } 1076 1077 { 1078 psDB *dbh; 1079 psFits *fits; 1080 1081 dbh = psDBInit("localhost", "test", NULL, "test"); 1082 if (!dbh) { 1083 exit(EXIT_FAILURE); 1084 } 1085 1086 // open a temp 1087 fits = psFitsOpen(TMP_FILENAME, "r"); 1088 if (!fits) { 1089 exit(EXIT_FAILURE); 1090 } 1091 1092 if (!detCorrectedImfileInsertFits(dbh, fits)) { 1093 exit(EXIT_FAILURE); 1094 } 1095 1096 if (!psFitsClose(fits)) { 1097 exit(EXIT_FAILURE); 1098 } 1099 1100 psDBCleanup(dbh); 1101 } 1102 1103 { 1104 psDB *dbh; 1105 psFits *fits; 1106 1107 dbh = psDBInit("localhost", "test", NULL, "test"); 1108 if (!dbh) { 1109 exit(EXIT_FAILURE); 1110 } 1111 1112 // open a temp 1113 fits = psFitsOpen(TMP_FILENAME, "r"); 1114 if (!fits) { 1115 exit(EXIT_FAILURE); 1116 } 1117 1040 1118 if (!magicRunInsertFits(dbh, fits)) { 1041 1119 exit(EXIT_FAILURE); … … 1143 1221 1144 1222 if (!magicMaskInsertFits(dbh, fits)) { 1223 exit(EXIT_FAILURE); 1224 } 1225 1226 if (!psFitsClose(fits)) { 1227 exit(EXIT_FAILURE); 1228 } 1229 1230 psDBCleanup(dbh); 1231 } 1232 1233 { 1234 psDB *dbh; 1235 psFits *fits; 1236 1237 dbh = psDBInit("localhost", "test", NULL, "test"); 1238 if (!dbh) { 1239 exit(EXIT_FAILURE); 1240 } 1241 1242 // open a temp 1243 fits = psFitsOpen(TMP_FILENAME, "r"); 1244 if (!fits) { 1245 exit(EXIT_FAILURE); 1246 } 1247 1248 if (!magicSkyfileMaskInsertFits(dbh, fits)) { 1145 1249 exit(EXIT_FAILURE); 1146 1250 } -
trunk/ippdb/tests/insertobject.c
r15003 r15343 7 7 { 8 8 psDB *dbh; 9 pzDataStoreRow *object; 10 11 dbh = psDBInit("localhost", "test", NULL, "test"); 12 if (!dbh) { 13 exit(EXIT_FAILURE); 14 } 15 16 object = pzDataStoreRowAlloc("a string", "a string", "a string"); 17 if (!object) { 18 exit(EXIT_FAILURE); 19 } 20 21 if (!pzDataStoreInsertObject(dbh, object)) { 22 exit(EXIT_FAILURE); 23 } 24 25 psFree(object); 26 psDBCleanup(dbh); 27 } 28 29 { 30 psDB *dbh; 9 31 summitExpRow *object; 10 32 … … 865 887 { 866 888 psDB *dbh; 889 detCorrectedExpRow *object; 890 891 dbh = psDBInit("localhost", "test", NULL, "test"); 892 if (!dbh) { 893 exit(EXIT_FAILURE); 894 } 895 896 object = detCorrectedExpRowAlloc(-64, -64, "a string", -64, "a string", "a string", "a string", -16); 897 if (!object) { 898 exit(EXIT_FAILURE); 899 } 900 901 if (!detCorrectedExpInsertObject(dbh, object)) { 902 exit(EXIT_FAILURE); 903 } 904 905 psFree(object); 906 psDBCleanup(dbh); 907 } 908 909 { 910 psDB *dbh; 911 detCorrectedImfileRow *object; 912 913 dbh = psDBInit("localhost", "test", NULL, "test"); 914 if (!dbh) { 915 exit(EXIT_FAILURE); 916 } 917 918 object = detCorrectedImfileRowAlloc(-64, -64, "a string", "a string", "a string", -16); 919 if (!object) { 920 exit(EXIT_FAILURE); 921 } 922 923 if (!detCorrectedImfileInsertObject(dbh, object)) { 924 exit(EXIT_FAILURE); 925 } 926 927 psFree(object); 928 psDBCleanup(dbh); 929 } 930 931 { 932 psDB *dbh; 867 933 magicRunRow *object; 868 934 … … 966 1032 967 1033 if (!magicMaskInsertObject(dbh, object)) { 1034 exit(EXIT_FAILURE); 1035 } 1036 1037 psFree(object); 1038 psDBCleanup(dbh); 1039 } 1040 1041 { 1042 psDB *dbh; 1043 magicSkyfileMaskRow *object; 1044 1045 dbh = psDBInit("localhost", "test", NULL, "test"); 1046 if (!dbh) { 1047 exit(EXIT_FAILURE); 1048 } 1049 1050 object = magicSkyfileMaskRowAlloc(-64, -64, "a string"); 1051 if (!object) { 1052 exit(EXIT_FAILURE); 1053 } 1054 1055 if (!magicSkyfileMaskInsertObject(dbh, object)) { 968 1056 exit(EXIT_FAILURE); 969 1057 } -
trunk/ippdb/tests/metadatafromobject.c
r15003 r15343 10 10 { 11 11 psMetadata *md; 12 pzDataStoreRow *object; 13 bool status; 14 15 object = pzDataStoreRowAlloc("a string", "a string", "a string"); 16 if (!object) { 17 exit(EXIT_FAILURE); 18 } 19 20 md = pzDataStoreMetadataFromObject(object); 21 if (!md) { 22 exit(EXIT_FAILURE); 23 } 24 25 psFree(object); 26 27 if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) { 28 psFree(md); 29 exit(EXIT_FAILURE); 30 } 31 if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) { 32 psFree(md); 33 exit(EXIT_FAILURE); 34 } 35 if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) { 36 psFree(md); 37 exit(EXIT_FAILURE); 38 } 39 40 psFree(md); 41 } 42 43 { 44 psMetadata *md; 12 45 summitExpRow *object; 13 46 bool status; … … 2402 2435 { 2403 2436 psMetadata *md; 2437 detCorrectedExpRow *object; 2438 bool status; 2439 2440 object = detCorrectedExpRowAlloc(-64, -64, "a string", -64, "a string", "a string", "a string", -16); 2441 if (!object) { 2442 exit(EXIT_FAILURE); 2443 } 2444 2445 md = detCorrectedExpMetadataFromObject(object); 2446 if (!md) { 2447 exit(EXIT_FAILURE); 2448 } 2449 2450 psFree(object); 2451 2452 psFree(md); 2453 exit(EXIT_FAILURE); 2454 } 2455 psFree(md); 2456 exit(EXIT_FAILURE); 2457 } 2458 if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) { 2459 psFree(md); 2460 exit(EXIT_FAILURE); 2461 } 2462 psFree(md); 2463 exit(EXIT_FAILURE); 2464 } 2465 if (strncmp(psMetadataLookupPtr(&status, md, "corr_type"), "a string", MAX_STRING_LENGTH)) { 2466 psFree(md); 2467 exit(EXIT_FAILURE); 2468 } 2469 if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) { 2470 psFree(md); 2471 exit(EXIT_FAILURE); 2472 } 2473 if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) { 2474 psFree(md); 2475 exit(EXIT_FAILURE); 2476 } 2477 psFree(md); 2478 exit(EXIT_FAILURE); 2479 } 2480 2481 psFree(md); 2482 } 2483 2484 { 2485 psMetadata *md; 2486 detCorrectedImfileRow *object; 2487 bool status; 2488 2489 object = detCorrectedImfileRowAlloc(-64, -64, "a string", "a string", "a string", -16); 2490 if (!object) { 2491 exit(EXIT_FAILURE); 2492 } 2493 2494 md = detCorrectedImfileMetadataFromObject(object); 2495 if (!md) { 2496 exit(EXIT_FAILURE); 2497 } 2498 2499 psFree(object); 2500 2501 psFree(md); 2502 exit(EXIT_FAILURE); 2503 } 2504 psFree(md); 2505 exit(EXIT_FAILURE); 2506 } 2507 if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) { 2508 psFree(md); 2509 exit(EXIT_FAILURE); 2510 } 2511 if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) { 2512 psFree(md); 2513 exit(EXIT_FAILURE); 2514 } 2515 if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) { 2516 psFree(md); 2517 exit(EXIT_FAILURE); 2518 } 2519 psFree(md); 2520 exit(EXIT_FAILURE); 2521 } 2522 2523 psFree(md); 2524 } 2525 2526 { 2527 psMetadata *md; 2404 2528 magicRunRow *object; 2405 2529 bool status; … … 2559 2683 psFree(object); 2560 2684 2685 psFree(md); 2686 exit(EXIT_FAILURE); 2687 } 2688 if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) { 2689 psFree(md); 2690 exit(EXIT_FAILURE); 2691 } 2692 2693 psFree(md); 2694 } 2695 2696 { 2697 psMetadata *md; 2698 magicSkyfileMaskRow *object; 2699 bool status; 2700 2701 object = magicSkyfileMaskRowAlloc(-64, -64, "a string"); 2702 if (!object) { 2703 exit(EXIT_FAILURE); 2704 } 2705 2706 md = magicSkyfileMaskMetadataFromObject(object); 2707 if (!md) { 2708 exit(EXIT_FAILURE); 2709 } 2710 2711 psFree(object); 2712 2713 psFree(md); 2714 exit(EXIT_FAILURE); 2715 } 2561 2716 psFree(md); 2562 2717 exit(EXIT_FAILURE); -
trunk/ippdb/tests/objectfrommetadata.c
r15003 r15343 10 10 { 11 11 psMetadata *md; 12 pzDataStoreRow *object; 13 14 md = psMetadataAlloc(); 15 if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) { 16 psFree(md); 17 exit(EXIT_FAILURE); 18 } 19 if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) { 20 psFree(md); 21 exit(EXIT_FAILURE); 22 } 23 if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) { 24 psFree(md); 25 exit(EXIT_FAILURE); 26 } 27 28 object = pzDataStoreObjectFromMetadata(md); 29 if (!object) { 30 psFree(md); 31 exit(EXIT_FAILURE); 32 } 33 34 psFree(md); 35 36 if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) { 37 psFree(object); 38 exit(EXIT_FAILURE); 39 } 40 if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) { 41 psFree(object); 42 exit(EXIT_FAILURE); 43 } 44 if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) { 45 psFree(object); 46 exit(EXIT_FAILURE); 47 } 48 49 psFree(object); 50 } 51 52 { 53 psMetadata *md; 12 54 summitExpRow *object; 13 55 … … 3858 3900 { 3859 3901 psMetadata *md; 3902 detCorrectedExpRow *object; 3903 3904 md = psMetadataAlloc(); 3905 psFree(md); 3906 exit(EXIT_FAILURE); 3907 } 3908 psFree(md); 3909 exit(EXIT_FAILURE); 3910 } 3911 if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) { 3912 psFree(md); 3913 exit(EXIT_FAILURE); 3914 } 3915 psFree(md); 3916 exit(EXIT_FAILURE); 3917 } 3918 if (!psMetadataAddStr(md, PS_LIST_TAIL, "corr_type", 0, NULL, "a string")) { 3919 psFree(md); 3920 exit(EXIT_FAILURE); 3921 } 3922 if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) { 3923 psFree(md); 3924 exit(EXIT_FAILURE); 3925 } 3926 if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) { 3927 psFree(md); 3928 exit(EXIT_FAILURE); 3929 } 3930 psFree(md); 3931 exit(EXIT_FAILURE); 3932 } 3933 3934 object = detCorrectedExpObjectFromMetadata(md); 3935 if (!object) { 3936 psFree(md); 3937 exit(EXIT_FAILURE); 3938 } 3939 3940 psFree(md); 3941 3942 psFree(object); 3943 exit(EXIT_FAILURE); 3944 } 3945 psFree(object); 3946 exit(EXIT_FAILURE); 3947 } 3948 if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) { 3949 psFree(object); 3950 exit(EXIT_FAILURE); 3951 } 3952 psFree(object); 3953 exit(EXIT_FAILURE); 3954 } 3955 if (strncmp(object->corr_type, "a string", MAX_STRING_LENGTH)) { 3956 psFree(object); 3957 exit(EXIT_FAILURE); 3958 } 3959 if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) { 3960 psFree(object); 3961 exit(EXIT_FAILURE); 3962 } 3963 if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) { 3964 psFree(object); 3965 exit(EXIT_FAILURE); 3966 } 3967 psFree(object); 3968 exit(EXIT_FAILURE); 3969 } 3970 3971 psFree(object); 3972 } 3973 3974 { 3975 psMetadata *md; 3976 detCorrectedImfileRow *object; 3977 3978 md = psMetadataAlloc(); 3979 psFree(md); 3980 exit(EXIT_FAILURE); 3981 } 3982 psFree(md); 3983 exit(EXIT_FAILURE); 3984 } 3985 if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) { 3986 psFree(md); 3987 exit(EXIT_FAILURE); 3988 } 3989 if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) { 3990 psFree(md); 3991 exit(EXIT_FAILURE); 3992 } 3993 if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) { 3994 psFree(md); 3995 exit(EXIT_FAILURE); 3996 } 3997 psFree(md); 3998 exit(EXIT_FAILURE); 3999 } 4000 4001 object = detCorrectedImfileObjectFromMetadata(md); 4002 if (!object) { 4003 psFree(md); 4004 exit(EXIT_FAILURE); 4005 } 4006 4007 psFree(md); 4008 4009 psFree(object); 4010 exit(EXIT_FAILURE); 4011 } 4012 psFree(object); 4013 exit(EXIT_FAILURE); 4014 } 4015 if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) { 4016 psFree(object); 4017 exit(EXIT_FAILURE); 4018 } 4019 if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) { 4020 psFree(object); 4021 exit(EXIT_FAILURE); 4022 } 4023 if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) { 4024 psFree(object); 4025 exit(EXIT_FAILURE); 4026 } 4027 psFree(object); 4028 exit(EXIT_FAILURE); 4029 } 4030 4031 psFree(object); 4032 } 4033 4034 { 4035 psMetadata *md; 3860 4036 magicRunRow *object; 3861 4037 … … 4065 4241 psFree(md); 4066 4242 4243 psFree(object); 4244 exit(EXIT_FAILURE); 4245 } 4246 if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) { 4247 psFree(object); 4248 exit(EXIT_FAILURE); 4249 } 4250 4251 psFree(object); 4252 } 4253 4254 { 4255 psMetadata *md; 4256 magicSkyfileMaskRow *object; 4257 4258 md = psMetadataAlloc(); 4259 psFree(md); 4260 exit(EXIT_FAILURE); 4261 } 4262 psFree(md); 4263 exit(EXIT_FAILURE); 4264 } 4265 if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) { 4266 psFree(md); 4267 exit(EXIT_FAILURE); 4268 } 4269 4270 object = magicSkyfileMaskObjectFromMetadata(md); 4271 if (!object) { 4272 psFree(md); 4273 exit(EXIT_FAILURE); 4274 } 4275 4276 psFree(md); 4277 4278 psFree(object); 4279 exit(EXIT_FAILURE); 4280 } 4067 4281 psFree(object); 4068 4282 exit(EXIT_FAILURE); -
trunk/ippdb/tests/selectrowsfits.c
r14598 r15343 21 21 } 22 22 23 if (!pzDataStoreSelectRowsFits(dbh, fits, NULL, 1)) { 24 exit(EXIT_FAILURE); 25 } 26 27 psFree(fits); 28 psDBCleanup(dbh); 29 } 30 31 { 32 psDB *dbh; 33 psFits *fits; 34 35 dbh = psDBInit("localhost", "test", NULL, "test"); 36 if (!dbh) { 37 exit(EXIT_FAILURE); 38 } 39 40 fits = psFitsOpen(TMP_FILENAME, "w"); 41 if (!fits) { 42 exit(EXIT_FAILURE); 43 } 44 23 45 if (!summitExpSelectRowsFits(dbh, fits, NULL, 1)) { 24 46 exit(EXIT_FAILURE); … … 879 901 } 880 902 903 if (!detCorrectedExpSelectRowsFits(dbh, fits, NULL, 1)) { 904 exit(EXIT_FAILURE); 905 } 906 907 psFree(fits); 908 psDBCleanup(dbh); 909 } 910 911 { 912 psDB *dbh; 913 psFits *fits; 914 915 dbh = psDBInit("localhost", "test", NULL, "test"); 916 if (!dbh) { 917 exit(EXIT_FAILURE); 918 } 919 920 fits = psFitsOpen(TMP_FILENAME, "w"); 921 if (!fits) { 922 exit(EXIT_FAILURE); 923 } 924 925 if (!detCorrectedImfileSelectRowsFits(dbh, fits, NULL, 1)) { 926 exit(EXIT_FAILURE); 927 } 928 929 psFree(fits); 930 psDBCleanup(dbh); 931 } 932 933 { 934 psDB *dbh; 935 psFits *fits; 936 937 dbh = psDBInit("localhost", "test", NULL, "test"); 938 if (!dbh) { 939 exit(EXIT_FAILURE); 940 } 941 942 fits = psFitsOpen(TMP_FILENAME, "w"); 943 if (!fits) { 944 exit(EXIT_FAILURE); 945 } 946 881 947 if (!magicRunSelectRowsFits(dbh, fits, NULL, 1)) { 882 948 exit(EXIT_FAILURE); … … 968 1034 969 1035 if (!magicMaskSelectRowsFits(dbh, fits, NULL, 1)) { 1036 exit(EXIT_FAILURE); 1037 } 1038 1039 psFree(fits); 1040 psDBCleanup(dbh); 1041 } 1042 1043 { 1044 psDB *dbh; 1045 psFits *fits; 1046 1047 dbh = psDBInit("localhost", "test", NULL, "test"); 1048 if (!dbh) { 1049 exit(EXIT_FAILURE); 1050 } 1051 1052 fits = psFitsOpen(TMP_FILENAME, "w"); 1053 if (!fits) { 1054 exit(EXIT_FAILURE); 1055 } 1056 1057 if (!magicSkyfileMaskSelectRowsFits(dbh, fits, NULL, 1)) { 970 1058 exit(EXIT_FAILURE); 971 1059 }
Note:
See TracChangeset
for help on using the changeset viewer.
