cr->set_interface("");
cr->set_table_name(fm->get_tablevar_name(table_var));
+ if(! schema->contains_field(cr->get_schema_ref(), field)){
+ fprintf(stderr, "Error, field %s is not in stream %s\n", field.c_str(), schema->get_table_name( cr->get_schema_ref() ).c_str());
+ return -1;
+ }
type_name = schema->get_type_name(cr->get_schema_ref(), field);
param_list *modifiers = schema->get_modifier_list(cr->get_schema_ref(), field);
// Require explicit INNER_JOIN, ... specification for join queries.
if(jprop < 0){
if(qs->query_type != MERGE_QUERY && tbl_vec.size() > 1){
- fprintf(stderr,"ERROR, a join query must specify one of INNER_JOIM, OUTER_JOIN, LEFT_OUTER_JOIN, RIGHT_OUTER_JOIN, FILTER_JOIN.\n");
+ fprintf(stderr,"ERROR, a join query must specify one of INNER_JOIM, OUTER_JOIN, LEFT_OUTER_JOIN, RIGHT_OUTER_JOIN, WATCHLIST_JOIN, FILTER_JOIN.\n");
return(NULL);
}
}
tbl_vec[tbl_vec.size()-1]->set_property(1);
if(jprop == FILTER_JOIN_PROPERTY){
if(fta_tree->get_from()->get_temporal_range() == 0){
- fprintf(stderr,"ERROR, a filter join must have a non-zero tempoal range.\n");
+ fprintf(stderr,"ERROR, a filter join must have a non-zero temporal range.\n");
return NULL;
}
if(tbl_vec.size() != 2){
string type_name = schema->get_type_name(tbl_vec[0]->get_schema_ref(),field);
param_list *modifiers = schema->get_modifier_list(cr->get_schema_ref(), field);
data_type *dt0 = new data_type(type_name, modifiers);
- if(dt0->get_type_str() != "UINT"){
- fprintf(stderr,"ERROR, the temporal attribute in a filter join must be a UINT.\n");
+ string dt0_type = dt0->get_type_str();
+ if(dt0_type != "INT" && dt0_type != "UINT" && dt0_type != "LLONG" && dt0_type != "ULLONG"){
+ fprintf(stderr,"ERROR, the temporal attribute in a filter join must be one of INT/UINT/LLONG/ULLONG.\n");
return NULL;
}
if(! dt0->is_increasing()){
- fprintf(stderr,"ERROR, the temporal attribtue in a filter join must be temporal increasing.\n");
+ fprintf(stderr,"ERROR, the temporal attribute in a filter join must be temporal increasing.\n");
return NULL;
}
}
// unpack the param table to a global for easier analysis.
param_tbl=qs->param_tbl;
+
+////////////////// WATCHLIST specialized analysis
+ if(qs->query_type == WATCHLIST_QUERY){
+// Populate a SELECT clause?
+ }
+
////////////////// MERGE specialized analysis
if(qs->query_type == MERGE_QUERY){