Changeset 9783
- Timestamp:
- Oct 30, 2006, 11:25:59 AM (20 years ago)
- Location:
- trunk/ippdb
- Files:
-
- 15 edited
-
Makefile.am (modified) (2 diffs)
-
configure.ac (modified) (2 diffs)
-
src/ippdb.c (modified) (21 diffs)
-
src/ippdb.h (modified) (8 diffs)
-
tests/alloc.c (modified) (4 diffs)
-
tests/createtable.c (modified) (1 diff)
-
tests/dbcleanup.c (modified) (1 diff)
-
tests/dbsetup.c (modified) (1 diff)
-
tests/droptable.c (modified) (1 diff)
-
tests/insert.c (modified) (2 diffs)
-
tests/insertfits.c (modified) (1 diff)
-
tests/insertobject.c (modified) (3 diffs)
-
tests/metadatafromobject.c (modified) (4 diffs)
-
tests/objectfrommetadata.c (modified) (4 diffs)
-
tests/selectrowsfits.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippdb/Makefile.am
r9684 r9783 22 22 $(top_builddir)/docs/man/man3/p2PendingImfileRow.3 \ 23 23 $(top_builddir)/docs/man/man3/p2ProcessedExpRow.3 \ 24 $(top_builddir)/docs/man/man3/p2MaskRow.3 \ 24 25 $(top_builddir)/docs/man/man3/p2ProcessedImfileRow.3 \ 25 26 $(top_builddir)/docs/man/man3/p3PendingExpRow.3 \ … … 40 41 41 42 42 docs/man/man3/ippdb.3 docs/man/man3/summitExpRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawDetrendExpRow.3 docs/man/man3/rawScienceExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2 ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/p3ProcessedExpRow.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/detMasterFrameRow.3 docs/man/man3/detMasterImfileRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3:43 docs/man/man3/ippdb.3 docs/man/man3/summitExpRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawDetrendExpRow.3 docs/man/man3/rawScienceExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2MaskRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/p3ProcessedExpRow.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/detMasterFrameRow.3 docs/man/man3/detMasterImfileRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3: 43 44 $(DOXYGEN) 44 45 -
trunk/ippdb/configure.ac
r9705 r9783 1 1 dnl 2 dnl This file was generated by glueforge 0. 292 dnl This file was generated by glueforge 0.30 3 3 dnl 4 4 dnl Do NOT directly edit this file. … … 7 7 AC_PREREQ(2.59) 8 8 9 AC_INIT([ippdb], [0.0.5 1], [pan-starrs.ifa.hawaii.edu])9 AC_INIT([ippdb], [0.0.52], [pan-starrs.ifa.hawaii.edu]) 10 10 AC_CONFIG_SRCDIR([ippdb.pc.in]) 11 11 -
trunk/ippdb/src/ippdb.c
r9742 r9783 20 20 /* 21 21 * 22 * This file was generated by glueforge 0. 2922 * This file was generated by glueforge 0.30 23 23 * 24 24 * Do NOT directly edit this file. … … 43 43 #define P2PENDINGIMFILE_TABLE_NAME "p2PendingImfile" 44 44 #define P2PROCESSEDEXP_TABLE_NAME "p2ProcessedExp" 45 #define P2MASK_TABLE_NAME "p2Mask" 45 46 #define P2PROCESSEDIMFILE_TABLE_NAME "p2ProcessedImfile" 46 47 #define P3PENDINGEXP_TABLE_NAME "p3PendingExp" … … 4261 4262 static void p2PendingExpRowFree(p2PendingExpRow *object); 4262 4263 4263 p2PendingExpRow *p2PendingExpRowAlloc(const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version )4264 p2PendingExpRow *p2PendingExpRowAlloc(const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version, const char *label) 4264 4265 { 4265 4266 p2PendingExpRow *_object; … … 4272 4273 _object->p1_version = p1_version; 4273 4274 _object->p2_version = p2_version; 4275 _object->label = psStringCopy(label); 4274 4276 4275 4277 return _object; … … 4280 4282 psFree(object->exp_tag); 4281 4283 psFree(object->recipe); 4284 psFree(object->label); 4282 4285 } 4283 4286 … … 4305 4308 return false; 4306 4309 } 4310 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) { 4311 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 4312 psFree(md); 4313 return false; 4314 } 4307 4315 4308 4316 bool status = psDBCreateTable(dbh, P2PENDINGEXP_TABLE_NAME, md); … … 4318 4326 } 4319 4327 4320 bool p2PendingExpInsert(psDB * dbh, const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version )4328 bool p2PendingExpInsert(psDB * dbh, const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version, const char *label) 4321 4329 { 4322 4330 psMetadata *md = psMetadataAlloc(); … … 4338 4346 if (!psMetadataAdd(md, PS_LIST_TAIL, "p2_version", PS_DATA_S32, NULL, p2_version)) { 4339 4347 psError(PS_ERR_UNKNOWN, false, "failed to add item p2_version"); 4348 psFree(md); 4349 return false; 4350 } 4351 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) { 4352 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 4340 4353 psFree(md); 4341 4354 return false; … … 4364 4377 bool p2PendingExpInsertObject(psDB *dbh, p2PendingExpRow *object) 4365 4378 { 4366 return p2PendingExpInsert(dbh, object->exp_tag, object->recipe, object->p1_version, object->p2_version );4379 return p2PendingExpInsert(dbh, object->exp_tag, object->recipe, object->p1_version, object->p2_version, object->label); 4367 4380 } 4368 4381 … … 4457 4470 return false; 4458 4471 } 4472 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) { 4473 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 4474 psFree(md); 4475 return false; 4476 } 4459 4477 4460 4478 … … 4486 4504 return false; 4487 4505 } 4488 4489 return p2PendingExpRowAlloc(exp_tag, recipe, p1_version, p2_version); 4506 char* label = psMetadataLookupPtr(&status, md, "label"); 4507 if (!status) { 4508 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label"); 4509 return false; 4510 } 4511 4512 return p2PendingExpRowAlloc(exp_tag, recipe, p1_version, p2_version, label); 4490 4513 } 4491 4514 psArray *p2PendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) … … 4951 4974 static void p2ProcessedExpRowFree(p2ProcessedExpRow *object); 4952 4975 4953 p2ProcessedExpRow *p2ProcessedExpRowAlloc(const char *exp_tag, psS32 p1_version, psS32 p2_version )4976 p2ProcessedExpRow *p2ProcessedExpRowAlloc(const char *exp_tag, psS32 p1_version, psS32 p2_version, const char *label) 4954 4977 { 4955 4978 p2ProcessedExpRow *_object; … … 4961 4984 _object->p1_version = p1_version; 4962 4985 _object->p2_version = p2_version; 4986 _object->label = psStringCopy(label); 4963 4987 4964 4988 return _object; … … 4968 4992 { 4969 4993 psFree(object->exp_tag); 4994 psFree(object->label); 4970 4995 } 4971 4996 … … 4988 5013 return false; 4989 5014 } 5015 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) { 5016 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 5017 psFree(md); 5018 return false; 5019 } 4990 5020 4991 5021 bool status = psDBCreateTable(dbh, P2PROCESSEDEXP_TABLE_NAME, md); … … 5001 5031 } 5002 5032 5003 bool p2ProcessedExpInsert(psDB * dbh, const char *exp_tag, psS32 p1_version, psS32 p2_version )5033 bool p2ProcessedExpInsert(psDB * dbh, const char *exp_tag, psS32 p1_version, psS32 p2_version, const char *label) 5004 5034 { 5005 5035 psMetadata *md = psMetadataAlloc(); … … 5016 5046 if (!psMetadataAdd(md, PS_LIST_TAIL, "p2_version", PS_DATA_S32, NULL, p2_version)) { 5017 5047 psError(PS_ERR_UNKNOWN, false, "failed to add item p2_version"); 5048 psFree(md); 5049 return false; 5050 } 5051 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) { 5052 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 5018 5053 psFree(md); 5019 5054 return false; … … 5042 5077 bool p2ProcessedExpInsertObject(psDB *dbh, p2ProcessedExpRow *object) 5043 5078 { 5044 return p2ProcessedExpInsert(dbh, object->exp_tag, object->p1_version, object->p2_version );5079 return p2ProcessedExpInsert(dbh, object->exp_tag, object->p1_version, object->p2_version, object->label); 5045 5080 } 5046 5081 … … 5130 5165 return false; 5131 5166 } 5167 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) { 5168 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 5169 psFree(md); 5170 return false; 5171 } 5132 5172 5133 5173 … … 5154 5194 return false; 5155 5195 } 5156 5157 return p2ProcessedExpRowAlloc(exp_tag, p1_version, p2_version); 5196 char* label = psMetadataLookupPtr(&status, md, "label"); 5197 if (!status) { 5198 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label"); 5199 return false; 5200 } 5201 5202 return p2ProcessedExpRowAlloc(exp_tag, p1_version, p2_version, label); 5158 5203 } 5159 5204 psArray *p2ProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) … … 5250 5295 return true; 5251 5296 } 5297 static void p2MaskRowFree(p2MaskRow *object); 5298 5299 p2MaskRow *p2MaskRowAlloc(const char *label) 5300 { 5301 p2MaskRow *_object; 5302 5303 _object = psAlloc(sizeof(p2MaskRow)); 5304 psMemSetDeallocator(_object, (psFreeFunc)p2MaskRowFree); 5305 5306 _object->label = psStringCopy(label); 5307 5308 return _object; 5309 } 5310 5311 static void p2MaskRowFree(p2MaskRow *object) 5312 { 5313 psFree(object->label); 5314 } 5315 5316 bool p2MaskCreateTable(psDB *dbh) 5317 { 5318 psMetadata *md = psMetadataAlloc(); 5319 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "Primary Key", "64")) { 5320 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 5321 psFree(md); 5322 return false; 5323 } 5324 5325 bool status = psDBCreateTable(dbh, P2MASK_TABLE_NAME, md); 5326 5327 psFree(md); 5328 5329 return status; 5330 } 5331 5332 bool p2MaskDropTable(psDB *dbh) 5333 { 5334 return psDBDropTable(dbh, P2MASK_TABLE_NAME); 5335 } 5336 5337 bool p2MaskInsert(psDB * dbh, const char *label) 5338 { 5339 psMetadata *md = psMetadataAlloc(); 5340 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) { 5341 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 5342 psFree(md); 5343 return false; 5344 } 5345 5346 bool status = psDBInsertOneRow(dbh, P2MASK_TABLE_NAME, md); 5347 psFree(md); 5348 5349 return status; 5350 } 5351 5352 long long p2MaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit) 5353 { 5354 long long deleted = 0; 5355 5356 long long count = psDBDeleteRows(dbh, P2MASK_TABLE_NAME, where, limit); 5357 if (count < 0) { 5358 psError(PS_ERR_UNKNOWN, true, "failed to delete row from p2Mask"); 5359 return count; 5360 5361 deleted += count; 5362 } 5363 5364 return deleted; 5365 } 5366 bool p2MaskInsertObject(psDB *dbh, p2MaskRow *object) 5367 { 5368 return p2MaskInsert(dbh, object->label); 5369 } 5370 5371 bool p2MaskInsertObjects(psDB *dbh, psArray *objects) 5372 { 5373 for (long i = 0; i < psArrayLength(objects); i++) { 5374 if (!p2MaskInsertObject(dbh, objects->data[i])) { 5375 return false; 5376 } 5377 } 5378 5379 return true; 5380 } 5381 5382 bool p2MaskInsertFits(psDB *dbh, const psFits *fits) 5383 { 5384 psArray *rowSet; 5385 5386 // move to (the first?) extension named P2MASK_TABLE_NAME 5387 if (!psFitsMoveExtName(fits, P2MASK_TABLE_NAME)) { 5388 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", P2MASK_TABLE_NAME); 5389 return false; 5390 } 5391 5392 // check HDU type 5393 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) { 5394 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE"); 5395 return false; 5396 } 5397 5398 // read fits table 5399 rowSet = psFitsReadTable(fits); 5400 if (!rowSet) { 5401 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty"); 5402 psFree(rowSet); 5403 return false; 5404 } 5405 5406 if (!psDBInsertRows(dbh, P2MASK_TABLE_NAME, rowSet)) { 5407 psError(PS_ERR_UNKNOWN, false, "databse insert failed"); 5408 psFree(rowSet); 5409 return false; 5410 } 5411 5412 psFree(rowSet); 5413 5414 return true; 5415 } 5416 5417 bool p2MaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit) 5418 { 5419 psArray *rowSet; 5420 5421 rowSet = psDBSelectRows(dbh, P2MASK_TABLE_NAME, where, limit); 5422 if (!rowSet) { 5423 return false; 5424 } 5425 5426 // output to fits 5427 if (!psFitsWriteTable(fits, NULL, rowSet, P2MASK_TABLE_NAME)) { 5428 psError(PS_ERR_UNKNOWN, false, "FITS table write failed"); 5429 psFree(rowSet); 5430 return false; 5431 } 5432 5433 psFree(rowSet); 5434 5435 return true; 5436 } 5437 5438 psMetadata *p2MaskMetadataFromObject(const p2MaskRow *object) 5439 { 5440 psMetadata *md = psMetadataAlloc(); 5441 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) { 5442 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 5443 psFree(md); 5444 return false; 5445 } 5446 5447 5448 return md; 5449 } 5450 5451 p2MaskRow *p2MaskObjectFromMetadata(psMetadata *md) 5452 { 5453 5454 bool status = false; 5455 char* label = psMetadataLookupPtr(&status, md, "label"); 5456 if (!status) { 5457 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label"); 5458 return false; 5459 } 5460 5461 return p2MaskRowAlloc(label); 5462 } 5463 psArray *p2MaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) 5464 { 5465 psArray *rowSet; 5466 psArray *returnSet; 5467 psU64 i; 5468 5469 rowSet = psDBSelectRows(dbh, P2MASK_TABLE_NAME, where, limit); 5470 if (!rowSet) { 5471 return NULL; 5472 } 5473 5474 // convert psMetadata rows to row objects 5475 5476 returnSet = psArrayAllocEmpty(rowSet->n); 5477 5478 for (i = 0; i < rowSet->n; i++) { 5479 p2MaskRow *object = p2MaskObjectFromMetadata(rowSet->data[i]); 5480 psArrayAdd(returnSet, 0, object); 5481 psFree(object); 5482 } 5483 5484 psFree(rowSet); 5485 5486 return returnSet; 5487 } 5488 bool p2MaskDeleteObject(psDB *dbh, const p2MaskRow *object) 5489 { 5490 psMetadata *where = p2MaskMetadataFromObject(object); 5491 long long count = psDBDeleteRows(dbh, P2MASK_TABLE_NAME, where, 0); 5492 psFree(where) 5493 if (count < 0) { 5494 psError(PS_ERR_UNKNOWN, true, "failed to delete row from p2Mask"); 5495 return false; 5496 } 5497 if (count > 1) { 5498 // XXX should this be a psAbort() instead? It is possible that 5499 // having an object match multiple rows was by design. 5500 psError(PS_ERR_UNKNOWN, true, "p2MaskRow object matched more then one row. Check your database schema"); 5501 return false; 5502 } 5503 5504 return true; 5505 } 5506 long long p2MaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit) 5507 { 5508 long long deleted = 0; 5509 5510 for (long long i = 0; i < objects->n; i++) { 5511 p2MaskRow *object = objects->data[i]; 5512 psMetadata *where = p2MaskMetadataFromObject(object); 5513 long long count = psDBDeleteRows(dbh, P2MASK_TABLE_NAME, where, limit); 5514 psFree(where) 5515 if (count < 0) { 5516 psError(PS_ERR_UNKNOWN, true, "failed to delete row from p2Mask"); 5517 return count; 5518 } 5519 5520 deleted += count; 5521 } 5522 5523 return deleted; 5524 } 5525 bool p2MaskPrintObjects(FILE *stream, psArray *objects, bool mdcf) 5526 { 5527 PS_ASSERT_PTR_NON_NULL(objects, false); 5528 5529 psMetadata *output = psMetadataAlloc(); 5530 for (long i = 0; i < psArrayLength(objects); i++) { 5531 psMetadata *md = p2MaskMetadataFromObject(objects->data[i]); 5532 if (!psMetadataAddMetadata( 5533 output, 5534 PS_LIST_TAIL, 5535 P2MASK_TABLE_NAME, 5536 PS_META_DUPLICATE_OK, 5537 NULL, 5538 md 5539 )) { 5540 psError(PS_ERR_UNKNOWN, false, "failed to add metadata"); 5541 psFree(md); 5542 psFree(output); 5543 return false; 5544 } 5545 psFree(md); 5546 } 5547 5548 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) { 5549 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 5550 psFree(output); 5551 } 5552 psFree(output); 5553 5554 return true; 5555 } 5252 5556 static void p2ProcessedImfileRowFree(p2ProcessedImfileRow *object); 5253 5557 -
trunk/ippdb/src/ippdb.h
r9705 r9783 20 20 /* 21 21 * 22 * This file was generated by glueforge 0. 2922 * This file was generated by glueforge 0.30 23 23 * 24 24 * Do NOT directly edit this file. … … 2010 2010 psS32 p1_version; 2011 2011 psS32 p2_version; 2012 char *label; 2012 2013 } p2PendingExpRow; 2013 2014 … … 2021 2022 const char *recipe, 2022 2023 psS32 p1_version, 2023 psS32 p2_version 2024 psS32 p2_version, 2025 const char *label 2024 2026 ); 2025 2027 … … 2054 2056 const char *recipe, 2055 2057 psS32 p1_version, 2056 psS32 p2_version 2058 psS32 p2_version, 2059 const char *label 2057 2060 ); 2058 2061 … … 2397 2400 psS32 p1_version; 2398 2401 psS32 p2_version; 2402 char *label; 2399 2403 } p2ProcessedExpRow; 2400 2404 … … 2407 2411 const char *exp_tag, 2408 2412 psS32 p1_version, 2409 psS32 p2_version 2413 psS32 p2_version, 2414 const char *label 2410 2415 ); 2411 2416 … … 2439 2444 const char *exp_tag, 2440 2445 psS32 p1_version, 2441 psS32 p2_version 2446 psS32 p2_version, 2447 const char *label 2442 2448 ); 2443 2449 … … 2574 2580 FILE *stream, ///< a stream 2575 2581 psArray *objects, ///< An array of p2ProcessedExpRow objects 2582 bool mdcf ///< format as mdconfig or simple 2583 ); 2584 /** p2MaskRow data structure 2585 * 2586 * Structure for representing a single row of p2Mask table data. 2587 */ 2588 2589 typedef struct { 2590 char *label; 2591 } p2MaskRow; 2592 2593 /** Creates a new p2MaskRow object 2594 * 2595 * @return A new p2MaskRow object or NULL on failure. 2596 */ 2597 2598 p2MaskRow *p2MaskRowAlloc( 2599 const char *label 2600 ); 2601 2602 /** Creates a new p2Mask table 2603 * 2604 * @return true on success 2605 */ 2606 2607 bool p2MaskCreateTable( 2608 psDB *dbh ///< Database handle 2609 ); 2610 2611 /** Deletes a p2Mask table 2612 * 2613 * @return true on success 2614 */ 2615 2616 bool p2MaskDropTable( 2617 psDB *dbh ///< Database handle 2618 ); 2619 2620 /** Insert a single row into a table 2621 * 2622 * This function constructs and inserts a single row based on it's parameters. 2623 * 2624 * @return true on success 2625 */ 2626 2627 bool p2MaskInsert( 2628 psDB *dbh, ///< Database handle 2629 const char *label 2630 ); 2631 2632 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 2633 * 2634 * @return A The number of rows removed or a negative value on error 2635 */ 2636 2637 long long p2MaskDelete( 2638 psDB *dbh, ///< Database handle 2639 const psMetadata *where, ///< Row match criteria 2640 unsigned long long limit ///< Maximum number of elements to delete 2641 ); 2642 2643 /** Insert a single p2MaskRow object into a table 2644 * 2645 * This function constructs and inserts a single row based on it's parameters. 2646 * 2647 * @return true on success 2648 */ 2649 2650 bool p2MaskInsertObject( 2651 psDB *dbh, ///< Database handle 2652 p2MaskRow *object ///< p2MaskRow object 2653 ); 2654 2655 /** Insert an array of p2MaskRow object into a table 2656 * 2657 * This function constructs and inserts multiple rows based on it's parameters. 2658 * 2659 * @return true on success 2660 */ 2661 2662 bool p2MaskInsertObjects( 2663 psDB *dbh, ///< Database handle 2664 psArray *objects ///< array of p2MaskRow objects 2665 ); 2666 2667 /** Insert data from a binary FITS table p2MaskRow into the database 2668 * 2669 * This function expects a psFits object with a FITS table as the first 2670 * extension. The table must have at least one row of data in it, that is of 2671 * the appropriate format (number of columns and their type). All other 2672 * extensions are ignored. 2673 * 2674 * @return true on success 2675 */ 2676 2677 bool p2MaskInsertFits( 2678 psDB *dbh, ///< Database handle 2679 const psFits *fits ///< psFits object 2680 ); 2681 2682 /** Selects up to limit from the database and returns them in a binary FITS table 2683 * 2684 * This function assumes an empty psFits object and will create a FITS table 2685 * as the first extension. 2686 * 2687 * See psDBSelectRows() for documentation on the format of where. 2688 * 2689 * @return true on success 2690 */ 2691 2692 bool p2MaskSelectRowsFits( 2693 psDB *dbh, ///< Database handle 2694 psFits *fits, ///< psFits object 2695 const psMetadata *where, ///< Row match criteria 2696 unsigned long long limit ///< Maximum number of elements to return 2697 ); 2698 2699 /** Convert a p2MaskRow into an equivalent psMetadata 2700 * 2701 * @return A psMetadata pointer or NULL on error 2702 */ 2703 2704 psMetadata *p2MaskMetadataFromObject( 2705 const p2MaskRow *object ///< fooRow to convert into a psMetadata 2706 ); 2707 2708 /** Convert a psMetadata into an equivalent fooRow 2709 * 2710 * @return A p2MaskRow pointer or NULL on error 2711 */ 2712 2713 p2MaskRow *p2MaskObjectFromMetadata( 2714 psMetadata *md ///< psMetadata to convert into a fooRow 2715 ); 2716 /** Selects up to limit rows from the database and returns as p2MaskRow objects in a psArray 2717 * 2718 * See psDBSelectRows() for documentation on the format of where. 2719 * 2720 * @return A psArray pointer or NULL on error 2721 */ 2722 2723 psArray *p2MaskSelectRowObjects( 2724 psDB *dbh, ///< Database handle 2725 const psMetadata *where, ///< Row match criteria 2726 unsigned long long limit ///< Maximum number of elements to return 2727 ); 2728 /** Deletes a row from the database coresponding to an p2Mask 2729 * 2730 * Note that a 'where' search psMetadata is constructed from each object and 2731 * used to find rows to delete. 2732 * 2733 * @return A The number of rows removed or a negative value on error 2734 */ 2735 2736 bool p2MaskDeleteObject( 2737 psDB *dbh, ///< Database handle 2738 const p2MaskRow *object ///< Object to delete 2739 ); 2740 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 2741 * 2742 * Note that a 'where' search psMetadata is constructed from each object and 2743 * used to find rows to delete. 2744 * 2745 * @return A The number of rows removed or a negative value on error 2746 */ 2747 2748 long long p2MaskDeleteRowObjects( 2749 psDB *dbh, ///< Database handle 2750 const psArray *objects, ///< Array of objects to delete 2751 unsigned long long limit ///< Maximum number of elements to delete 2752 ); 2753 /** Formats and prints an array of p2MaskRow objects 2754 * 2755 * When mdcf is set the formated output is in psMetadataConfig 2756 * format, otherwise it is in a simple tabular format. 2757 * 2758 * @return true on success 2759 */ 2760 2761 bool p2MaskPrintObjects( 2762 FILE *stream, ///< a stream 2763 psArray *objects, ///< An array of p2MaskRow objects 2576 2764 bool mdcf ///< format as mdconfig or simple 2577 2765 ); -
trunk/ippdb/tests/alloc.c
r9705 r9783 477 477 p2PendingExpRow *object; 478 478 479 object = p2PendingExpRowAlloc("a string", "a string", -32, -32 );479 object = p2PendingExpRowAlloc("a string", "a string", -32, -32, "a string" ); 480 480 481 481 if (!object) { … … 499 499 exit(EXIT_FAILURE); 500 500 } 501 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 502 psFree(object); 503 exit(EXIT_FAILURE); 504 } 501 505 502 506 psFree(object); … … 543 547 p2ProcessedExpRow *object; 544 548 545 object = p2ProcessedExpRowAlloc("a string", -32, -32 );549 object = p2ProcessedExpRowAlloc("a string", -32, -32, "a string" ); 546 550 547 551 if (!object) { … … 558 562 } 559 563 if (!object->p2_version == -32) { 564 psFree(object); 565 exit(EXIT_FAILURE); 566 } 567 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 568 psFree(object); 569 exit(EXIT_FAILURE); 570 } 571 572 psFree(object); 573 } 574 575 { 576 p2MaskRow *object; 577 578 object = p2MaskRowAlloc("a string" ); 579 580 if (!object) { 581 exit(EXIT_FAILURE); 582 } 583 584 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 560 585 psFree(object); 561 586 exit(EXIT_FAILURE); -
trunk/ippdb/tests/createtable.c
r9684 r9783 193 193 } 194 194 195 if(!p2MaskCreateTable(dbh)) { 196 exit(EXIT_FAILURE); 197 } 198 199 psDBCleanup(dbh); 200 } 201 202 { 203 psDB *dbh; 204 205 dbh = psDBInit("localhost", "test", NULL, "test"); 206 if (!dbh) { 207 exit(EXIT_FAILURE); 208 } 209 195 210 if(!p2ProcessedImfileCreateTable(dbh)) { 196 211 exit(EXIT_FAILURE); -
trunk/ippdb/tests/dbcleanup.c
r9684 r9783 23 23 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2PendingImfile"); 24 24 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2ProcessedExp"); 25 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2Mask"); 25 26 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2ProcessedImfile"); 26 27 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p3PendingExp"); -
trunk/ippdb/tests/dbsetup.c
r9684 r9783 48 48 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2ProcessedExp"); 49 49 p2ProcessedExpCreateTable(dbh); 50 51 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2Mask"); 52 p2MaskCreateTable(dbh); 50 53 51 54 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2ProcessedImfile"); -
trunk/ippdb/tests/droptable.c
r9684 r9783 193 193 } 194 194 195 if (!p2MaskDropTable(dbh)) { 196 exit(EXIT_FAILURE); 197 } 198 199 psDBCleanup(dbh); 200 } 201 202 { 203 psDB *dbh; 204 205 dbh = psDBInit("localhost", "test", NULL, "test"); 206 if (!dbh) { 207 exit(EXIT_FAILURE); 208 } 209 195 210 if (!p2ProcessedImfileDropTable(dbh)) { 196 211 exit(EXIT_FAILURE); -
trunk/ippdb/tests/insert.c
r9705 r9783 148 148 } 149 149 150 if (!p2PendingExpInsert(dbh, "a string", "a string", -32, -32 )) {150 if (!p2PendingExpInsert(dbh, "a string", "a string", -32, -32, "a string")) { 151 151 exit(EXIT_FAILURE); 152 152 } … … 178 178 } 179 179 180 if (!p2ProcessedExpInsert(dbh, "a string", -32, -32)) { 180 if (!p2ProcessedExpInsert(dbh, "a string", -32, -32, "a string")) { 181 exit(EXIT_FAILURE); 182 } 183 184 psDBCleanup(dbh); 185 } 186 187 { 188 psDB *dbh; 189 190 dbh = psDBInit("localhost", "test", NULL, "test"); 191 if (!dbh) { 192 exit(EXIT_FAILURE); 193 } 194 195 if (!p2MaskInsert(dbh, "a string")) { 181 196 exit(EXIT_FAILURE); 182 197 } -
trunk/ippdb/tests/insertfits.c
r9684 r9783 336 336 } 337 337 338 if (!p2MaskInsertFits(dbh, fits)) { 339 exit(EXIT_FAILURE); 340 } 341 342 if (!psFitsClose(fits)) { 343 exit(EXIT_FAILURE); 344 } 345 346 psDBCleanup(dbh); 347 } 348 349 { 350 psDB *dbh; 351 psFits *fits; 352 353 dbh = psDBInit("localhost", "test", NULL, "test"); 354 if (!dbh) { 355 exit(EXIT_FAILURE); 356 } 357 358 // open a temp 359 fits = psFitsOpen(TMP_FILENAME, "r"); 360 if (!fits) { 361 exit(EXIT_FAILURE); 362 } 363 338 364 if (!p2ProcessedImfileInsertFits(dbh, fits)) { 339 365 exit(EXIT_FAILURE); -
trunk/ippdb/tests/insertobject.c
r9705 r9783 212 212 } 213 213 214 object = p2PendingExpRowAlloc("a string", "a string", -32, -32 );214 object = p2PendingExpRowAlloc("a string", "a string", -32, -32, "a string"); 215 215 if (!object) { 216 216 exit(EXIT_FAILURE); … … 256 256 } 257 257 258 object = p2ProcessedExpRowAlloc("a string", -32, -32 );258 object = p2ProcessedExpRowAlloc("a string", -32, -32, "a string"); 259 259 if (!object) { 260 260 exit(EXIT_FAILURE); … … 262 262 263 263 if (!p2ProcessedExpInsertObject(dbh, object)) { 264 exit(EXIT_FAILURE); 265 } 266 267 psFree(object); 268 psDBCleanup(dbh); 269 } 270 271 { 272 psDB *dbh; 273 p2MaskRow *object; 274 275 dbh = psDBInit("localhost", "test", NULL, "test"); 276 if (!dbh) { 277 exit(EXIT_FAILURE); 278 } 279 280 object = p2MaskRowAlloc("a string"); 281 if (!object) { 282 exit(EXIT_FAILURE); 283 } 284 285 if (!p2MaskInsertObject(dbh, object)) { 264 286 exit(EXIT_FAILURE); 265 287 } -
trunk/ippdb/tests/metadatafromobject.c
r9705 r9783 551 551 bool status; 552 552 553 object = p2PendingExpRowAlloc("a string", "a string", -32, -32 );553 object = p2PendingExpRowAlloc("a string", "a string", -32, -32, "a string"); 554 554 if (!object) { 555 555 exit(EXIT_FAILURE); … … 579 579 exit(EXIT_FAILURE); 580 580 } 581 if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) { 582 psFree(md); 583 exit(EXIT_FAILURE); 584 } 581 585 582 586 psFree(md); … … 633 637 bool status; 634 638 635 object = p2ProcessedExpRowAlloc("a string", -32, -32 );639 object = p2ProcessedExpRowAlloc("a string", -32, -32, "a string"); 636 640 if (!object) { 637 641 exit(EXIT_FAILURE); … … 654 658 } 655 659 if (!psMetadataLookupS32(&status, md, "p2_version") == -32) { 660 psFree(md); 661 exit(EXIT_FAILURE); 662 } 663 if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) { 664 psFree(md); 665 exit(EXIT_FAILURE); 666 } 667 668 psFree(md); 669 } 670 671 { 672 psMetadata *md; 673 p2MaskRow *object; 674 bool status; 675 676 object = p2MaskRowAlloc("a string"); 677 if (!object) { 678 exit(EXIT_FAILURE); 679 } 680 681 md = p2MaskMetadataFromObject(object); 682 if (!md) { 683 exit(EXIT_FAILURE); 684 } 685 686 psFree(object); 687 688 if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) { 656 689 psFree(md); 657 690 exit(EXIT_FAILURE); -
trunk/ippdb/tests/objectfrommetadata.c
r9705 r9783 889 889 exit(EXIT_FAILURE); 890 890 } 891 if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) { 892 psFree(md); 893 exit(EXIT_FAILURE); 894 } 891 895 892 896 object = p2PendingExpObjectFromMetadata(md); … … 914 918 exit(EXIT_FAILURE); 915 919 } 920 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 921 psFree(object); 922 exit(EXIT_FAILURE); 923 } 916 924 917 925 psFree(object); … … 1001 1009 exit(EXIT_FAILURE); 1002 1010 } 1011 if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) { 1012 psFree(md); 1013 exit(EXIT_FAILURE); 1014 } 1003 1015 1004 1016 object = p2ProcessedExpObjectFromMetadata(md); … … 1019 1031 } 1020 1032 if (!object->p2_version == -32) { 1033 psFree(object); 1034 exit(EXIT_FAILURE); 1035 } 1036 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 1037 psFree(object); 1038 exit(EXIT_FAILURE); 1039 } 1040 1041 psFree(object); 1042 } 1043 1044 { 1045 psMetadata *md; 1046 p2MaskRow *object; 1047 1048 md = psMetadataAlloc(); 1049 if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) { 1050 psFree(md); 1051 exit(EXIT_FAILURE); 1052 } 1053 1054 object = p2MaskObjectFromMetadata(md); 1055 if (!object) { 1056 psFree(md); 1057 exit(EXIT_FAILURE); 1058 } 1059 1060 psFree(md); 1061 1062 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 1021 1063 psFree(object); 1022 1064 exit(EXIT_FAILURE); -
trunk/ippdb/tests/selectrowsfits.c
r9684 r9783 285 285 } 286 286 287 if (!p2MaskSelectRowsFits(dbh, fits, NULL, 1)) { 288 exit(EXIT_FAILURE); 289 } 290 291 psFree(fits); 292 psDBCleanup(dbh); 293 } 294 295 { 296 psDB *dbh; 297 psFits *fits; 298 299 dbh = psDBInit("localhost", "test", NULL, "test"); 300 if (!dbh) { 301 exit(EXIT_FAILURE); 302 } 303 304 fits = psFitsOpen(TMP_FILENAME, "w"); 305 if (!fits) { 306 exit(EXIT_FAILURE); 307 } 308 287 309 if (!p2ProcessedImfileSelectRowsFits(dbh, fits, NULL, 1)) { 288 310 exit(EXIT_FAILURE);
Note:
See TracChangeset
for help on using the changeset viewer.
