int main( int argc, char *argv[] ) { int i; struct deltadb *db = deltadb_create(); for (i=1; i<argc; i++){ char *attr = strtok(argv[i], ","); char *type = strtok(0,","); struct deltadb_reduction *r = deltadb_reduction_create(type,attr); if(!r) { fprintf(stderr,"%s: invalid deltadb_reduction: %s\n",argv[0],type); return 1; } db->deltadb_reductions[db->ndeltadb_reductions++] = r; } log_play(db,stdin); deltadb_delete(db); return 0; }
int main( int argc, char *argv[] ) { struct deltadb *db = deltadb_create(); int i; for(i=1;i<argc;i++) { db->fields[db->nfields++] = argv[i]; } emit_table_header(db); log_play(db,stdin); deltadb_delete(db); return 0; }
int main( int argc, char *argv[] ) { struct deltadb *db = deltadb_create(); int i; db->attr_len = argc-1; db->attr_list = malloc(sizeof(char*)*db->attr_len); for (i=1; i<argc; i++) { db->attr_list[i-1] = argv[i]; } parse_input(db); deltadb_delete(db); return 0; }
int main( int argc, char *argv[] ) { struct deltadb *db = deltadb_create(NULL); int i; for (i=1; i<argc; i++){ struct argument arg; arg.param = argv[i]; char *delim = strpbrk(argv[i], "<>=!"); arg.val = strpbrk(delim, "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); int operator_size = (int)(arg.val-delim); strncpy(arg.operator,delim,operator_size); arg.operator[operator_size] = '\0'; delim[0] = '\0'; /*char *dop = strstr(arg.operator,"..."); if ( dop!=NULL ){ arg.dynamic = 1; dop[0] = '\0'; db->static_variables_only = 0; } else arg.dynamic = 0;*/ arg.next = db->args; db->args = &arg; } parse_input(db); deltadb_delete(db); return 0; }
int main( int argc, char *argv[] ) { const char *dbdir=0; const char *dbfile=0; struct jx *where_expr = 0; struct jx *filter_expr = 0; struct list *output_exprs = list_create(); struct list *reduce_exprs = list_create(); time_t start_time = 0; time_t stop_time = 0; int display_every = 0; int epoch_mode = 0; char reduce_name[1024]; char reduce_attr[1024]; time_t current = time(0); int c; while((c=getopt_long(argc,argv,"D:L:o:w:f:F:T:e:tvh",long_options,0))!=-1) { switch(c) { case 'D': dbdir = optarg; break; case 'L': dbfile = optarg; break; case 'o': if(2==sscanf(optarg,"%[^(](%[^)])",reduce_name,reduce_attr)) { struct jx *reduce_expr = jx_parse_string(reduce_attr); if(!reduce_expr) { fprintf(stderr,"deltadb_query: invalid expression: %s\n",reduce_attr); return 1; } struct deltadb_reduction *r = deltadb_reduction_create(reduce_name,reduce_expr); if(!r) { fprintf(stderr,"deltadb_query: invalid reduction: %s\n",reduce_name); return 1; } list_push_tail(reduce_exprs,r); } else { struct jx *j = jx_parse_string(optarg); if(!j) { fprintf(stderr,"invalid expression: %s\n",optarg); return 1; } list_push_tail(output_exprs,j); } break; case 'w': if(where_expr) { fprintf(stderr,"Only one --where expression is allowed. Try joining the expressions with the && (and) operator."); return 1; } where_expr = jx_parse_string(optarg); if(!where_expr) { fprintf(stderr,"invalid expression: %s\n",optarg); return 1; } break; case 'f': if(filter_expr) { fprintf(stderr,"Only one --filter expression is allowed. Try joining the expressions with the && (and) operator."); return 1; } filter_expr = jx_parse_string(optarg); if(!filter_expr) { fprintf(stderr,"invalid expression: %s\n",optarg); return 1; } break; case 'F': start_time = parse_time(optarg,current); break; case 'T': stop_time = parse_time(optarg,current); break; case 'e': display_every = string_time_parse(optarg); break; case 't': epoch_mode = 1; break; case 'v': cctools_version_print(stdout,"deltadb_query"); break; case 'h': show_help(); break; } } if(!dbdir && !dbfile) { fprintf(stderr,"deltadb_query: either --db or --file argument is required\n"); return 1; } if(start_time==0) { fprintf(stderr,"deltadb_query: invalid --from time (must be \"YY-MM-DD\" or \"YY-MM-DD HH:MM:SS\")\n"); return 1; } if(stop_time==0) { stop_time = time(0); } struct deltadb *db = deltadb_create(dbdir); db->where_expr = where_expr; db->filter_expr = filter_expr; db->epoch_mode = epoch_mode; db->output_exprs = output_exprs; db->reduce_exprs = reduce_exprs; db->display_every = display_every; if(list_size(db->reduce_exprs) && list_size(db->output_exprs) ) { struct deltadb_reduction *r = db->reduce_exprs->head->data; const char *name = jx_print_string(db->output_exprs->head->data); fprintf(stderr,"deltadb_query: cannot mix reductions like 'MAX(%s)' with plain outputs like '%s'\n",jx_print_string(r->expr),name); return 1; } if(list_size(db->reduce_exprs)) { display_mode = MODE_REDUCE; } else if(list_size(db->output_exprs)) { display_mode = MODE_OBJECT; } else { display_mode = MODE_STREAM; } if(dbfile) { FILE *file = fopen(dbfile,"r"); if(!file) { fprintf(stderr,"deltadb_query: couldn't open %s: %s\n",dbfile,strerror(errno)); return 1; } deltadb_process_stream(db,file,start_time,stop_time); fclose(file); } else { log_play_time(db,start_time,stop_time); } return 0; }