1 rick 1.1 /*
2 * smpl_03.c $DRMS/proj/cookbook/
3 *
4 * Prints the number of unique records in the selected data series, and
5 * the defined number of data segments per record for the series
6 * Illustrates features of the DRMS_Record struct, and concept of uniqueness
7 * for DRMS records
8 *
9 * Usage:
10 * smpl_03 ds= ...
11 *
12 * Revision history is at end of file.
13 */
14
15 char *module_name = "CookbookRecipe:03";
16 char *version_id = "1.0";
17
18 #include <jsoc_main.h>
19 #include <regex.h>
20
21 ModuleArgs_t module_args[] = {
22 rick 1.1 {ARG_STRING, "ds", "", "name of data series"},
23 {ARG_END}
24 };
25
26 int DoIt (void) {
27 CmdParams_t *params = &cmdparams;
28 DB_Text_Result_t *qres;
29 DRMS_Record_t *record;
30 regmatch_t pmatch[10];
31 int series, seriesct;
32 int status = 0;
33 char query[DRMS_MAXQUERYLEN];
34
35 char *ds = params_get_str (params, "ds");
36
37 record = drms_template_record (drms_env, ds, &status);
38 if (record && !status) {
39 if (record->seriesinfo->pidx_num) {
40 char qry[1024];
41 sprintf (query, "select %s from %s group by %s",
42 (record->seriesinfo->pidx_keywords[0])->info->name, ds,
43 rick 1.1 (record->seriesinfo->pidx_keywords[0])->info->name);
44 for (int i=1; i<record->seriesinfo->pidx_num; i++) {
45 sprintf (qry, ", %s",
46 (record->seriesinfo->pidx_keywords[i])->info->name);
47 strcat (query, qry);
48 }
49 if ((qres = drms_query_txt (drms_env->session, query))) {
50 printf ("%s contains %d unique records", ds, qres->num_rows);
51 db_free_text_result (qres);
52 }
53 } else printf ("%s: no records found", ds);
54 printf (", with %d data segment(s) per record\n", record->segments.num_total);
55 drms_free_record (record);
56 } else printf ("%s: no such series\n", ds);
57
58 return status;
59 }
60
61 /*
62 * Revision History
63 *
64 rick 1.1 * 09.04.20 file created by R Bogart
65 */
|