Changeset 9788
- Timestamp:
- Oct 30, 2006, 11:55:36 AM (20 years ago)
- Location:
- trunk/ippdb
- Files:
-
- 15 edited
-
Makefile.am (modified) (2 diffs)
-
configure.ac (modified) (1 diff)
-
src/ippdb.c (modified) (20 diffs)
-
src/ippdb.h (modified) (7 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) (1 diff)
-
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
r9783 r9788 26 26 $(top_builddir)/docs/man/man3/p3PendingExpRow.3 \ 27 27 $(top_builddir)/docs/man/man3/p3ProcessedExpRow.3 \ 28 $(top_builddir)/docs/man/man3/p3MaskRow.3 \ 28 29 $(top_builddir)/docs/man/man3/detRunRow.3 \ 29 30 $(top_builddir)/docs/man/man3/detInputExpRow.3 \ … … 41 42 42 43 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:44 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/p3MaskRow.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: 44 45 $(DOXYGEN) 45 46 -
trunk/ippdb/configure.ac
r9783 r9788 7 7 AC_PREREQ(2.59) 8 8 9 AC_INIT([ippdb], [0.0.5 2], [pan-starrs.ifa.hawaii.edu])9 AC_INIT([ippdb], [0.0.53], [pan-starrs.ifa.hawaii.edu]) 10 10 AC_CONFIG_SRCDIR([ippdb.pc.in]) 11 11 -
trunk/ippdb/src/ippdb.c
r9783 r9788 47 47 #define P3PENDINGEXP_TABLE_NAME "p3PendingExp" 48 48 #define P3PROCESSEDEXP_TABLE_NAME "p3ProcessedExp" 49 #define P3MASK_TABLE_NAME "p3Mask" 49 50 #define DETRUN_TABLE_NAME "detRun" 50 51 #define DETINPUTEXP_TABLE_NAME "detInputExp" … … 6030 6031 static void p3PendingExpRowFree(p3PendingExpRow *object); 6031 6032 6032 p3PendingExpRow *p3PendingExpRowAlloc(const char *exp_tag, psS32 p2_version, psS32 p3_version )6033 p3PendingExpRow *p3PendingExpRowAlloc(const char *exp_tag, psS32 p2_version, psS32 p3_version, const char *label) 6033 6034 { 6034 6035 p3PendingExpRow *_object; … … 6040 6041 _object->p2_version = p2_version; 6041 6042 _object->p3_version = p3_version; 6043 _object->label = psStringCopy(label); 6042 6044 6043 6045 return _object; … … 6047 6049 { 6048 6050 psFree(object->exp_tag); 6051 psFree(object->label); 6049 6052 } 6050 6053 … … 6067 6070 return false; 6068 6071 } 6072 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) { 6073 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 6074 psFree(md); 6075 return false; 6076 } 6069 6077 6070 6078 bool status = psDBCreateTable(dbh, P3PENDINGEXP_TABLE_NAME, md); … … 6080 6088 } 6081 6089 6082 bool p3PendingExpInsert(psDB * dbh, const char *exp_tag, psS32 p2_version, psS32 p3_version )6090 bool p3PendingExpInsert(psDB * dbh, const char *exp_tag, psS32 p2_version, psS32 p3_version, const char *label) 6083 6091 { 6084 6092 psMetadata *md = psMetadataAlloc(); … … 6095 6103 if (!psMetadataAdd(md, PS_LIST_TAIL, "p3_version", PS_DATA_S32, NULL, p3_version)) { 6096 6104 psError(PS_ERR_UNKNOWN, false, "failed to add item p3_version"); 6105 psFree(md); 6106 return false; 6107 } 6108 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) { 6109 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 6097 6110 psFree(md); 6098 6111 return false; … … 6121 6134 bool p3PendingExpInsertObject(psDB *dbh, p3PendingExpRow *object) 6122 6135 { 6123 return p3PendingExpInsert(dbh, object->exp_tag, object->p2_version, object->p3_version );6136 return p3PendingExpInsert(dbh, object->exp_tag, object->p2_version, object->p3_version, object->label); 6124 6137 } 6125 6138 … … 6209 6222 return false; 6210 6223 } 6224 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) { 6225 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 6226 psFree(md); 6227 return false; 6228 } 6211 6229 6212 6230 … … 6233 6251 return false; 6234 6252 } 6235 6236 return p3PendingExpRowAlloc(exp_tag, p2_version, p3_version); 6253 char* label = psMetadataLookupPtr(&status, md, "label"); 6254 if (!status) { 6255 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label"); 6256 return false; 6257 } 6258 6259 return p3PendingExpRowAlloc(exp_tag, p2_version, p3_version, label); 6237 6260 } 6238 6261 psArray *p3PendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) … … 6331 6354 static void p3ProcessedExpRowFree(p3ProcessedExpRow *object); 6332 6355 6333 p3ProcessedExpRow *p3ProcessedExpRowAlloc(const char *exp_tag, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF32 sigma_ra, psF32 sigma_dec, psS32 nastro, const char *b1_uri, const char *b2_uri, psF32 zp_mean, psF32 zp_stdev, psS32 p2_version, psS32 p3_version )6356 p3ProcessedExpRow *p3ProcessedExpRowAlloc(const char *exp_tag, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF32 sigma_ra, psF32 sigma_dec, psS32 nastro, const char *b1_uri, const char *b2_uri, psF32 zp_mean, psF32 zp_stdev, psS32 p2_version, psS32 p3_version, const char *label) 6334 6357 { 6335 6358 p3ProcessedExpRow *_object; … … 6353 6376 _object->p2_version = p2_version; 6354 6377 _object->p3_version = p3_version; 6378 _object->label = psStringCopy(label); 6355 6379 6356 6380 return _object; … … 6364 6388 psFree(object->b1_uri); 6365 6389 psFree(object->b2_uri); 6390 psFree(object->label); 6366 6391 } 6367 6392 … … 6444 6469 return false; 6445 6470 } 6471 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) { 6472 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 6473 psFree(md); 6474 return false; 6475 } 6446 6476 6447 6477 bool status = psDBCreateTable(dbh, P3PROCESSEDEXP_TABLE_NAME, md); … … 6457 6487 } 6458 6488 6459 bool p3ProcessedExpInsert(psDB * dbh, const char *exp_tag, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF32 sigma_ra, psF32 sigma_dec, psS32 nastro, const char *b1_uri, const char *b2_uri, psF32 zp_mean, psF32 zp_stdev, psS32 p2_version, psS32 p3_version )6489 bool p3ProcessedExpInsert(psDB * dbh, const char *exp_tag, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF32 sigma_ra, psF32 sigma_dec, psS32 nastro, const char *b1_uri, const char *b2_uri, psF32 zp_mean, psF32 zp_stdev, psS32 p2_version, psS32 p3_version, const char *label) 6460 6490 { 6461 6491 psMetadata *md = psMetadataAlloc(); … … 6532 6562 if (!psMetadataAdd(md, PS_LIST_TAIL, "p3_version", PS_DATA_S32, NULL, p3_version)) { 6533 6563 psError(PS_ERR_UNKNOWN, false, "failed to add item p3_version"); 6564 psFree(md); 6565 return false; 6566 } 6567 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) { 6568 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 6534 6569 psFree(md); 6535 6570 return false; … … 6558 6593 bool p3ProcessedExpInsertObject(psDB *dbh, p3ProcessedExpRow *object) 6559 6594 { 6560 return p3ProcessedExpInsert(dbh, object->exp_tag, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->sigma_ra, object->sigma_dec, object->nastro, object->b1_uri, object->b2_uri, object->zp_mean, object->zp_stdev, object->p2_version, object->p3_version );6595 return p3ProcessedExpInsert(dbh, object->exp_tag, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->sigma_ra, object->sigma_dec, object->nastro, object->b1_uri, object->b2_uri, object->zp_mean, object->zp_stdev, object->p2_version, object->p3_version, object->label); 6561 6596 } 6562 6597 … … 6706 6741 return false; 6707 6742 } 6743 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) { 6744 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 6745 psFree(md); 6746 return false; 6747 } 6708 6748 6709 6749 … … 6790 6830 return false; 6791 6831 } 6792 6793 return p3ProcessedExpRowAlloc(exp_tag, uri, recipe, bg, bg_stdev, bg_mean_stdev, sigma_ra, sigma_dec, nastro, b1_uri, b2_uri, zp_mean, zp_stdev, p2_version, p3_version); 6832 char* label = psMetadataLookupPtr(&status, md, "label"); 6833 if (!status) { 6834 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label"); 6835 return false; 6836 } 6837 6838 return p3ProcessedExpRowAlloc(exp_tag, uri, recipe, bg, bg_stdev, bg_mean_stdev, sigma_ra, sigma_dec, nastro, b1_uri, b2_uri, zp_mean, zp_stdev, p2_version, p3_version, label); 6794 6839 } 6795 6840 psArray *p3ProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) … … 6886 6931 return true; 6887 6932 } 6933 static void p3MaskRowFree(p3MaskRow *object); 6934 6935 p3MaskRow *p3MaskRowAlloc(const char *label) 6936 { 6937 p3MaskRow *_object; 6938 6939 _object = psAlloc(sizeof(p3MaskRow)); 6940 psMemSetDeallocator(_object, (psFreeFunc)p3MaskRowFree); 6941 6942 _object->label = psStringCopy(label); 6943 6944 return _object; 6945 } 6946 6947 static void p3MaskRowFree(p3MaskRow *object) 6948 { 6949 psFree(object->label); 6950 } 6951 6952 bool p3MaskCreateTable(psDB *dbh) 6953 { 6954 psMetadata *md = psMetadataAlloc(); 6955 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "Primary Key", "64")) { 6956 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 6957 psFree(md); 6958 return false; 6959 } 6960 6961 bool status = psDBCreateTable(dbh, P3MASK_TABLE_NAME, md); 6962 6963 psFree(md); 6964 6965 return status; 6966 } 6967 6968 bool p3MaskDropTable(psDB *dbh) 6969 { 6970 return psDBDropTable(dbh, P3MASK_TABLE_NAME); 6971 } 6972 6973 bool p3MaskInsert(psDB * dbh, const char *label) 6974 { 6975 psMetadata *md = psMetadataAlloc(); 6976 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) { 6977 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 6978 psFree(md); 6979 return false; 6980 } 6981 6982 bool status = psDBInsertOneRow(dbh, P3MASK_TABLE_NAME, md); 6983 psFree(md); 6984 6985 return status; 6986 } 6987 6988 long long p3MaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit) 6989 { 6990 long long deleted = 0; 6991 6992 long long count = psDBDeleteRows(dbh, P3MASK_TABLE_NAME, where, limit); 6993 if (count < 0) { 6994 psError(PS_ERR_UNKNOWN, true, "failed to delete row from p3Mask"); 6995 return count; 6996 6997 deleted += count; 6998 } 6999 7000 return deleted; 7001 } 7002 bool p3MaskInsertObject(psDB *dbh, p3MaskRow *object) 7003 { 7004 return p3MaskInsert(dbh, object->label); 7005 } 7006 7007 bool p3MaskInsertObjects(psDB *dbh, psArray *objects) 7008 { 7009 for (long i = 0; i < psArrayLength(objects); i++) { 7010 if (!p3MaskInsertObject(dbh, objects->data[i])) { 7011 return false; 7012 } 7013 } 7014 7015 return true; 7016 } 7017 7018 bool p3MaskInsertFits(psDB *dbh, const psFits *fits) 7019 { 7020 psArray *rowSet; 7021 7022 // move to (the first?) extension named P3MASK_TABLE_NAME 7023 if (!psFitsMoveExtName(fits, P3MASK_TABLE_NAME)) { 7024 psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", P3MASK_TABLE_NAME); 7025 return false; 7026 } 7027 7028 // check HDU type 7029 if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE) { 7030 psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE"); 7031 return false; 7032 } 7033 7034 // read fits table 7035 rowSet = psFitsReadTable(fits); 7036 if (!rowSet) { 7037 psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty"); 7038 psFree(rowSet); 7039 return false; 7040 } 7041 7042 if (!psDBInsertRows(dbh, P3MASK_TABLE_NAME, rowSet)) { 7043 psError(PS_ERR_UNKNOWN, false, "databse insert failed"); 7044 psFree(rowSet); 7045 return false; 7046 } 7047 7048 psFree(rowSet); 7049 7050 return true; 7051 } 7052 7053 bool p3MaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit) 7054 { 7055 psArray *rowSet; 7056 7057 rowSet = psDBSelectRows(dbh, P3MASK_TABLE_NAME, where, limit); 7058 if (!rowSet) { 7059 return false; 7060 } 7061 7062 // output to fits 7063 if (!psFitsWriteTable(fits, NULL, rowSet, P3MASK_TABLE_NAME)) { 7064 psError(PS_ERR_UNKNOWN, false, "FITS table write failed"); 7065 psFree(rowSet); 7066 return false; 7067 } 7068 7069 psFree(rowSet); 7070 7071 return true; 7072 } 7073 7074 psMetadata *p3MaskMetadataFromObject(const p3MaskRow *object) 7075 { 7076 psMetadata *md = psMetadataAlloc(); 7077 if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) { 7078 psError(PS_ERR_UNKNOWN, false, "failed to add item label"); 7079 psFree(md); 7080 return false; 7081 } 7082 7083 7084 return md; 7085 } 7086 7087 p3MaskRow *p3MaskObjectFromMetadata(psMetadata *md) 7088 { 7089 7090 bool status = false; 7091 char* label = psMetadataLookupPtr(&status, md, "label"); 7092 if (!status) { 7093 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label"); 7094 return false; 7095 } 7096 7097 return p3MaskRowAlloc(label); 7098 } 7099 psArray *p3MaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit) 7100 { 7101 psArray *rowSet; 7102 psArray *returnSet; 7103 psU64 i; 7104 7105 rowSet = psDBSelectRows(dbh, P3MASK_TABLE_NAME, where, limit); 7106 if (!rowSet) { 7107 return NULL; 7108 } 7109 7110 // convert psMetadata rows to row objects 7111 7112 returnSet = psArrayAllocEmpty(rowSet->n); 7113 7114 for (i = 0; i < rowSet->n; i++) { 7115 p3MaskRow *object = p3MaskObjectFromMetadata(rowSet->data[i]); 7116 psArrayAdd(returnSet, 0, object); 7117 psFree(object); 7118 } 7119 7120 psFree(rowSet); 7121 7122 return returnSet; 7123 } 7124 bool p3MaskDeleteObject(psDB *dbh, const p3MaskRow *object) 7125 { 7126 psMetadata *where = p3MaskMetadataFromObject(object); 7127 long long count = psDBDeleteRows(dbh, P3MASK_TABLE_NAME, where, 0); 7128 psFree(where) 7129 if (count < 0) { 7130 psError(PS_ERR_UNKNOWN, true, "failed to delete row from p3Mask"); 7131 return false; 7132 } 7133 if (count > 1) { 7134 // XXX should this be a psAbort() instead? It is possible that 7135 // having an object match multiple rows was by design. 7136 psError(PS_ERR_UNKNOWN, true, "p3MaskRow object matched more then one row. Check your database schema"); 7137 return false; 7138 } 7139 7140 return true; 7141 } 7142 long long p3MaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit) 7143 { 7144 long long deleted = 0; 7145 7146 for (long long i = 0; i < objects->n; i++) { 7147 p3MaskRow *object = objects->data[i]; 7148 psMetadata *where = p3MaskMetadataFromObject(object); 7149 long long count = psDBDeleteRows(dbh, P3MASK_TABLE_NAME, where, limit); 7150 psFree(where) 7151 if (count < 0) { 7152 psError(PS_ERR_UNKNOWN, true, "failed to delete row from p3Mask"); 7153 return count; 7154 } 7155 7156 deleted += count; 7157 } 7158 7159 return deleted; 7160 } 7161 bool p3MaskPrintObjects(FILE *stream, psArray *objects, bool mdcf) 7162 { 7163 PS_ASSERT_PTR_NON_NULL(objects, false); 7164 7165 psMetadata *output = psMetadataAlloc(); 7166 for (long i = 0; i < psArrayLength(objects); i++) { 7167 psMetadata *md = p3MaskMetadataFromObject(objects->data[i]); 7168 if (!psMetadataAddMetadata( 7169 output, 7170 PS_LIST_TAIL, 7171 P3MASK_TABLE_NAME, 7172 PS_META_DUPLICATE_OK, 7173 NULL, 7174 md 7175 )) { 7176 psError(PS_ERR_UNKNOWN, false, "failed to add metadata"); 7177 psFree(md); 7178 psFree(output); 7179 return false; 7180 } 7181 psFree(md); 7182 } 7183 7184 if (!ippdbPrintMetadataRaw(stream, output, mdcf)) { 7185 psError(PS_ERR_UNKNOWN, false, "failed to print metadata"); 7186 psFree(output); 7187 } 7188 psFree(output); 7189 7190 return true; 7191 } 6888 7192 static void detRunRowFree(detRunRow *object); 6889 7193 -
trunk/ippdb/src/ippdb.h
r9783 r9788 2985 2985 psS32 p2_version; 2986 2986 psS32 p3_version; 2987 char *label; 2987 2988 } p3PendingExpRow; 2988 2989 … … 2995 2996 const char *exp_tag, 2996 2997 psS32 p2_version, 2997 psS32 p3_version 2998 psS32 p3_version, 2999 const char *label 2998 3000 ); 2999 3001 … … 3027 3029 const char *exp_tag, 3028 3030 psS32 p2_version, 3029 psS32 p3_version 3031 psS32 p3_version, 3032 const char *label 3030 3033 ); 3031 3034 … … 3185 3188 psS32 p2_version; 3186 3189 psS32 p3_version; 3190 char *label; 3187 3191 } p3ProcessedExpRow; 3188 3192 … … 3207 3211 psF32 zp_stdev, 3208 3212 psS32 p2_version, 3209 psS32 p3_version 3213 psS32 p3_version, 3214 const char *label 3210 3215 ); 3211 3216 … … 3251 3256 psF32 zp_stdev, 3252 3257 psS32 p2_version, 3253 psS32 p3_version 3258 psS32 p3_version, 3259 const char *label 3254 3260 ); 3255 3261 … … 3386 3392 FILE *stream, ///< a stream 3387 3393 psArray *objects, ///< An array of p3ProcessedExpRow objects 3394 bool mdcf ///< format as mdconfig or simple 3395 ); 3396 /** p3MaskRow data structure 3397 * 3398 * Structure for representing a single row of p3Mask table data. 3399 */ 3400 3401 typedef struct { 3402 char *label; 3403 } p3MaskRow; 3404 3405 /** Creates a new p3MaskRow object 3406 * 3407 * @return A new p3MaskRow object or NULL on failure. 3408 */ 3409 3410 p3MaskRow *p3MaskRowAlloc( 3411 const char *label 3412 ); 3413 3414 /** Creates a new p3Mask table 3415 * 3416 * @return true on success 3417 */ 3418 3419 bool p3MaskCreateTable( 3420 psDB *dbh ///< Database handle 3421 ); 3422 3423 /** Deletes a p3Mask table 3424 * 3425 * @return true on success 3426 */ 3427 3428 bool p3MaskDropTable( 3429 psDB *dbh ///< Database handle 3430 ); 3431 3432 /** Insert a single row into a table 3433 * 3434 * This function constructs and inserts a single row based on it's parameters. 3435 * 3436 * @return true on success 3437 */ 3438 3439 bool p3MaskInsert( 3440 psDB *dbh, ///< Database handle 3441 const char *label 3442 ); 3443 3444 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 3445 * 3446 * @return A The number of rows removed or a negative value on error 3447 */ 3448 3449 long long p3MaskDelete( 3450 psDB *dbh, ///< Database handle 3451 const psMetadata *where, ///< Row match criteria 3452 unsigned long long limit ///< Maximum number of elements to delete 3453 ); 3454 3455 /** Insert a single p3MaskRow object into a table 3456 * 3457 * This function constructs and inserts a single row based on it's parameters. 3458 * 3459 * @return true on success 3460 */ 3461 3462 bool p3MaskInsertObject( 3463 psDB *dbh, ///< Database handle 3464 p3MaskRow *object ///< p3MaskRow object 3465 ); 3466 3467 /** Insert an array of p3MaskRow object into a table 3468 * 3469 * This function constructs and inserts multiple rows based on it's parameters. 3470 * 3471 * @return true on success 3472 */ 3473 3474 bool p3MaskInsertObjects( 3475 psDB *dbh, ///< Database handle 3476 psArray *objects ///< array of p3MaskRow objects 3477 ); 3478 3479 /** Insert data from a binary FITS table p3MaskRow into the database 3480 * 3481 * This function expects a psFits object with a FITS table as the first 3482 * extension. The table must have at least one row of data in it, that is of 3483 * the appropriate format (number of columns and their type). All other 3484 * extensions are ignored. 3485 * 3486 * @return true on success 3487 */ 3488 3489 bool p3MaskInsertFits( 3490 psDB *dbh, ///< Database handle 3491 const psFits *fits ///< psFits object 3492 ); 3493 3494 /** Selects up to limit from the database and returns them in a binary FITS table 3495 * 3496 * This function assumes an empty psFits object and will create a FITS table 3497 * as the first extension. 3498 * 3499 * See psDBSelectRows() for documentation on the format of where. 3500 * 3501 * @return true on success 3502 */ 3503 3504 bool p3MaskSelectRowsFits( 3505 psDB *dbh, ///< Database handle 3506 psFits *fits, ///< psFits object 3507 const psMetadata *where, ///< Row match criteria 3508 unsigned long long limit ///< Maximum number of elements to return 3509 ); 3510 3511 /** Convert a p3MaskRow into an equivalent psMetadata 3512 * 3513 * @return A psMetadata pointer or NULL on error 3514 */ 3515 3516 psMetadata *p3MaskMetadataFromObject( 3517 const p3MaskRow *object ///< fooRow to convert into a psMetadata 3518 ); 3519 3520 /** Convert a psMetadata into an equivalent fooRow 3521 * 3522 * @return A p3MaskRow pointer or NULL on error 3523 */ 3524 3525 p3MaskRow *p3MaskObjectFromMetadata( 3526 psMetadata *md ///< psMetadata to convert into a fooRow 3527 ); 3528 /** Selects up to limit rows from the database and returns as p3MaskRow objects in a psArray 3529 * 3530 * See psDBSelectRows() for documentation on the format of where. 3531 * 3532 * @return A psArray pointer or NULL on error 3533 */ 3534 3535 psArray *p3MaskSelectRowObjects( 3536 psDB *dbh, ///< Database handle 3537 const psMetadata *where, ///< Row match criteria 3538 unsigned long long limit ///< Maximum number of elements to return 3539 ); 3540 /** Deletes a row from the database coresponding to an p3Mask 3541 * 3542 * Note that a 'where' search psMetadata is constructed from each object and 3543 * used to find rows to delete. 3544 * 3545 * @return A The number of rows removed or a negative value on error 3546 */ 3547 3548 bool p3MaskDeleteObject( 3549 psDB *dbh, ///< Database handle 3550 const p3MaskRow *object ///< Object to delete 3551 ); 3552 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 3553 * 3554 * Note that a 'where' search psMetadata is constructed from each object and 3555 * used to find rows to delete. 3556 * 3557 * @return A The number of rows removed or a negative value on error 3558 */ 3559 3560 long long p3MaskDeleteRowObjects( 3561 psDB *dbh, ///< Database handle 3562 const psArray *objects, ///< Array of objects to delete 3563 unsigned long long limit ///< Maximum number of elements to delete 3564 ); 3565 /** Formats and prints an array of p3MaskRow objects 3566 * 3567 * When mdcf is set the formated output is in psMetadataConfig 3568 * format, otherwise it is in a simple tabular format. 3569 * 3570 * @return true on success 3571 */ 3572 3573 bool p3MaskPrintObjects( 3574 FILE *stream, ///< a stream 3575 psArray *objects, ///< An array of p3MaskRow objects 3388 3576 bool mdcf ///< format as mdconfig or simple 3389 3577 ); -
trunk/ippdb/tests/alloc.c
r9783 r9788 650 650 p3PendingExpRow *object; 651 651 652 object = p3PendingExpRowAlloc("a string", -32, -32 );652 object = p3PendingExpRowAlloc("a string", -32, -32, "a string" ); 653 653 654 654 if (!object) { … … 668 668 exit(EXIT_FAILURE); 669 669 } 670 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 671 psFree(object); 672 exit(EXIT_FAILURE); 673 } 670 674 671 675 psFree(object); … … 675 679 p3ProcessedExpRow *object; 676 680 677 object = p3ProcessedExpRowAlloc("a string", "a string", "a string", 64.64, 64.64, 64.64, 32.32, 32.32, -32, "a string", "a string", 32.32, 32.32, -32, -32 );681 object = p3ProcessedExpRowAlloc("a string", "a string", "a string", 64.64, 64.64, 64.64, 32.32, 32.32, -32, "a string", "a string", 32.32, 32.32, -32, -32, "a string" ); 678 682 679 683 if (!object) { … … 738 742 } 739 743 if (!object->p3_version == -32) { 744 psFree(object); 745 exit(EXIT_FAILURE); 746 } 747 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 748 psFree(object); 749 exit(EXIT_FAILURE); 750 } 751 752 psFree(object); 753 } 754 755 { 756 p3MaskRow *object; 757 758 object = p3MaskRowAlloc("a string" ); 759 760 if (!object) { 761 exit(EXIT_FAILURE); 762 } 763 764 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 740 765 psFree(object); 741 766 exit(EXIT_FAILURE); -
trunk/ippdb/tests/createtable.c
r9783 r9788 253 253 } 254 254 255 if(!p3MaskCreateTable(dbh)) { 256 exit(EXIT_FAILURE); 257 } 258 259 psDBCleanup(dbh); 260 } 261 262 { 263 psDB *dbh; 264 265 dbh = psDBInit("localhost", "test", NULL, "test"); 266 if (!dbh) { 267 exit(EXIT_FAILURE); 268 } 269 255 270 if(!detRunCreateTable(dbh)) { 256 271 exit(EXIT_FAILURE); -
trunk/ippdb/tests/dbcleanup.c
r9783 r9788 27 27 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p3PendingExp"); 28 28 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p3ProcessedExp"); 29 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p3Mask"); 29 30 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detRun"); 30 31 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detInputExp"); -
trunk/ippdb/tests/dbsetup.c
r9783 r9788 61 61 p3ProcessedExpCreateTable(dbh); 62 62 63 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p3Mask"); 64 p3MaskCreateTable(dbh); 65 63 66 p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detRun"); 64 67 detRunCreateTable(dbh); -
trunk/ippdb/tests/droptable.c
r9783 r9788 253 253 } 254 254 255 if (!p3MaskDropTable(dbh)) { 256 exit(EXIT_FAILURE); 257 } 258 259 psDBCleanup(dbh); 260 } 261 262 { 263 psDB *dbh; 264 265 dbh = psDBInit("localhost", "test", NULL, "test"); 266 if (!dbh) { 267 exit(EXIT_FAILURE); 268 } 269 255 270 if (!detRunDropTable(dbh)) { 256 271 exit(EXIT_FAILURE); -
trunk/ippdb/tests/insert.c
r9783 r9788 223 223 } 224 224 225 if (!p3PendingExpInsert(dbh, "a string", -32, -32)) { 226 exit(EXIT_FAILURE); 227 } 228 229 psDBCleanup(dbh); 230 } 231 232 { 233 psDB *dbh; 234 235 dbh = psDBInit("localhost", "test", NULL, "test"); 236 if (!dbh) { 237 exit(EXIT_FAILURE); 238 } 239 240 if (!p3ProcessedExpInsert(dbh, "a string", "a string", "a string", 64.64, 64.64, 64.64, 32.32, 32.32, -32, "a string", "a string", 32.32, 32.32, -32, -32)) { 225 if (!p3PendingExpInsert(dbh, "a string", -32, -32, "a string")) { 226 exit(EXIT_FAILURE); 227 } 228 229 psDBCleanup(dbh); 230 } 231 232 { 233 psDB *dbh; 234 235 dbh = psDBInit("localhost", "test", NULL, "test"); 236 if (!dbh) { 237 exit(EXIT_FAILURE); 238 } 239 240 if (!p3ProcessedExpInsert(dbh, "a string", "a string", "a string", 64.64, 64.64, 64.64, 32.32, 32.32, -32, "a string", "a string", 32.32, 32.32, -32, -32, "a string")) { 241 exit(EXIT_FAILURE); 242 } 243 244 psDBCleanup(dbh); 245 } 246 247 { 248 psDB *dbh; 249 250 dbh = psDBInit("localhost", "test", NULL, "test"); 251 if (!dbh) { 252 exit(EXIT_FAILURE); 253 } 254 255 if (!p3MaskInsert(dbh, "a string")) { 241 256 exit(EXIT_FAILURE); 242 257 } -
trunk/ippdb/tests/insertfits.c
r9783 r9788 440 440 } 441 441 442 if (!p3MaskInsertFits(dbh, fits)) { 443 exit(EXIT_FAILURE); 444 } 445 446 if (!psFitsClose(fits)) { 447 exit(EXIT_FAILURE); 448 } 449 450 psDBCleanup(dbh); 451 } 452 453 { 454 psDB *dbh; 455 psFits *fits; 456 457 dbh = psDBInit("localhost", "test", NULL, "test"); 458 if (!dbh) { 459 exit(EXIT_FAILURE); 460 } 461 462 // open a temp 463 fits = psFitsOpen(TMP_FILENAME, "r"); 464 if (!fits) { 465 exit(EXIT_FAILURE); 466 } 467 442 468 if (!detRunInsertFits(dbh, fits)) { 443 469 exit(EXIT_FAILURE); -
trunk/ippdb/tests/insertobject.c
r9783 r9788 322 322 } 323 323 324 object = p3PendingExpRowAlloc("a string", -32, -32 );324 object = p3PendingExpRowAlloc("a string", -32, -32, "a string"); 325 325 if (!object) { 326 326 exit(EXIT_FAILURE); … … 344 344 } 345 345 346 object = p3ProcessedExpRowAlloc("a string", "a string", "a string", 64.64, 64.64, 64.64, 32.32, 32.32, -32, "a string", "a string", 32.32, 32.32, -32, -32 );346 object = p3ProcessedExpRowAlloc("a string", "a string", "a string", 64.64, 64.64, 64.64, 32.32, 32.32, -32, "a string", "a string", 32.32, 32.32, -32, -32, "a string"); 347 347 if (!object) { 348 348 exit(EXIT_FAILURE); … … 350 350 351 351 if (!p3ProcessedExpInsertObject(dbh, object)) { 352 exit(EXIT_FAILURE); 353 } 354 355 psFree(object); 356 psDBCleanup(dbh); 357 } 358 359 { 360 psDB *dbh; 361 p3MaskRow *object; 362 363 dbh = psDBInit("localhost", "test", NULL, "test"); 364 if (!dbh) { 365 exit(EXIT_FAILURE); 366 } 367 368 object = p3MaskRowAlloc("a string"); 369 if (!object) { 370 exit(EXIT_FAILURE); 371 } 372 373 if (!p3MaskInsertObject(dbh, object)) { 352 374 exit(EXIT_FAILURE); 353 375 } -
trunk/ippdb/tests/metadatafromobject.c
r9783 r9788 764 764 bool status; 765 765 766 object = p3PendingExpRowAlloc("a string", -32, -32 );766 object = p3PendingExpRowAlloc("a string", -32, -32, "a string"); 767 767 if (!object) { 768 768 exit(EXIT_FAILURE); … … 788 788 exit(EXIT_FAILURE); 789 789 } 790 if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) { 791 psFree(md); 792 exit(EXIT_FAILURE); 793 } 790 794 791 795 psFree(md); … … 797 801 bool status; 798 802 799 object = p3ProcessedExpRowAlloc("a string", "a string", "a string", 64.64, 64.64, 64.64, 32.32, 32.32, -32, "a string", "a string", 32.32, 32.32, -32, -32 );803 object = p3ProcessedExpRowAlloc("a string", "a string", "a string", 64.64, 64.64, 64.64, 32.32, 32.32, -32, "a string", "a string", 32.32, 32.32, -32, -32, "a string"); 800 804 if (!object) { 801 805 exit(EXIT_FAILURE); … … 866 870 } 867 871 if (!psMetadataLookupS32(&status, md, "p3_version") == -32) { 872 psFree(md); 873 exit(EXIT_FAILURE); 874 } 875 if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) { 876 psFree(md); 877 exit(EXIT_FAILURE); 878 } 879 880 psFree(md); 881 } 882 883 { 884 psMetadata *md; 885 p3MaskRow *object; 886 bool status; 887 888 object = p3MaskRowAlloc("a string"); 889 if (!object) { 890 exit(EXIT_FAILURE); 891 } 892 893 md = p3MaskMetadataFromObject(object); 894 if (!md) { 895 exit(EXIT_FAILURE); 896 } 897 898 psFree(object); 899 900 if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) { 868 901 psFree(md); 869 902 exit(EXIT_FAILURE); -
trunk/ippdb/tests/objectfrommetadata.c
r9783 r9788 1191 1191 exit(EXIT_FAILURE); 1192 1192 } 1193 if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) { 1194 psFree(md); 1195 exit(EXIT_FAILURE); 1196 } 1193 1197 1194 1198 object = p3PendingExpObjectFromMetadata(md); … … 1212 1216 exit(EXIT_FAILURE); 1213 1217 } 1218 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 1219 psFree(object); 1220 exit(EXIT_FAILURE); 1221 } 1214 1222 1215 1223 psFree(object); … … 1281 1289 exit(EXIT_FAILURE); 1282 1290 } 1291 if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) { 1292 psFree(md); 1293 exit(EXIT_FAILURE); 1294 } 1283 1295 1284 1296 object = p3ProcessedExpObjectFromMetadata(md); … … 1347 1359 } 1348 1360 if (!object->p3_version == -32) { 1361 psFree(object); 1362 exit(EXIT_FAILURE); 1363 } 1364 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 1365 psFree(object); 1366 exit(EXIT_FAILURE); 1367 } 1368 1369 psFree(object); 1370 } 1371 1372 { 1373 psMetadata *md; 1374 p3MaskRow *object; 1375 1376 md = psMetadataAlloc(); 1377 if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) { 1378 psFree(md); 1379 exit(EXIT_FAILURE); 1380 } 1381 1382 object = p3MaskObjectFromMetadata(md); 1383 if (!object) { 1384 psFree(md); 1385 exit(EXIT_FAILURE); 1386 } 1387 1388 psFree(md); 1389 1390 if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) { 1349 1391 psFree(object); 1350 1392 exit(EXIT_FAILURE); -
trunk/ippdb/tests/selectrowsfits.c
r9783 r9788 373 373 } 374 374 375 if (!p3MaskSelectRowsFits(dbh, fits, NULL, 1)) { 376 exit(EXIT_FAILURE); 377 } 378 379 psFree(fits); 380 psDBCleanup(dbh); 381 } 382 383 { 384 psDB *dbh; 385 psFits *fits; 386 387 dbh = psDBInit("localhost", "test", NULL, "test"); 388 if (!dbh) { 389 exit(EXIT_FAILURE); 390 } 391 392 fits = psFitsOpen(TMP_FILENAME, "w"); 393 if (!fits) { 394 exit(EXIT_FAILURE); 395 } 396 375 397 if (!detRunSelectRowsFits(dbh, fits, NULL, 1)) { 376 398 exit(EXIT_FAILURE);
Note:
See TracChangeset
for help on using the changeset viewer.
