Changeset 18676
- Timestamp:
- Jul 23, 2008, 11:50:48 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/stacktool.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/stacktool.c
r18675 r18676 101 101 psMetadata *whereRE = psMetadataAlloc(); // rawExp where 102 102 psMetadata *whereWSF = psMetadataAlloc(); // warpSkyfile where 103 psMetadata *having = psMetadataAlloc(); // HAVING clause 103 104 // map -inst -> camera, etc 104 105 PXOPT_COPY_STR(config->args, whereRE, "-select_inst", "camera", "=="); … … 121 122 122 123 PXOPT_COPY_STR(config->args, having, "-select_skycell_id", "skycell_id", "=="); 124 PXOPT_COPY_S32(config->args, having, "-min_num", "num_warp", ">="); 123 125 124 126 PXOPT_LOOKUP_S32(randomLimit, config->args, "-random", false, false); 125 127 126 PXOPT_LOOKUP_S32(min_num, config->args, "-min_num", false, false);127 128 PXOPT_LOOKUP_S32(min_new, config->args, "-min_new", false, false); 128 129 PXOPT_LOOKUP_F32(min_frac, config->args, "-min_frac", false, false); … … 170 171 psFree(groupby); 171 172 172 psString having = NULL; // HAVING string 173 if (min_num > 0) { 174 psStringAppend(&having, " min_num >= %d", min_num); 175 } 176 if (min_new > 0) { 177 if (having) { 178 psStringAppend(&having, " AND"); 179 } 180 psStringAppend(&having, " ((num_warp - num_stack >= %d) OR num_stack IS NULL)", min_new); 181 } 182 if (isfinite(min_frac)) { 183 if (having) { 184 psStringAppend(&having, " AND"); 185 } 186 // Avoiding division by zero 187 psStringAppend(&select, " ((num_warp >= %f * num_stack) OR num_stack IS NULL)", (double)min_frac); 188 } 189 if (having) { 190 psStringAppend(&select, " HAVING %s", having); 191 psFree(having); 192 } 173 // Restriction on aggregated quantities using HAVING 174 { 175 psString havingClause = NULL; // HAVING string 176 if (psListLength(having->list)) { 177 havingClause = psDBGenerateWhereConditionSQL(having, NULL); 178 } 179 180 if (min_new > 0) { 181 if (havingClause) { 182 psStringAppend(&havingClause, " AND"); 183 } 184 psStringAppend(&havingClause, " ((num_warp - num_stack >= %d) OR num_stack IS NULL)", min_new); 185 } 186 if (isfinite(min_frac)) { 187 if (havingClause) { 188 psStringAppend(&havingClause, " AND"); 189 } 190 // Avoiding division by zero 191 psStringAppend(&havingClause, " ((num_warp >= %f * num_stack) OR num_stack IS NULL)", 192 (double)min_frac); 193 } 194 if (havingClause) { 195 psStringAppend(&select, " HAVING %s", havingClause); 196 psFree(havingClause); 197 } 198 } 199 psFree(having); 193 200 194 201
Note:
See TracChangeset
for help on using the changeset viewer.
