99#include " logger.h"
1010#include " opids.h"
1111
12- TimeColumnFilter::TimeColumnFilter (TimeColumn *column, int opid, char *value)
12+ TimeColumnFilter::TimeColumnFilter (TimeColumn *column, int opid, char *value)
1313 : _column(column)
1414 , _opid(abs(opid))
1515 , _negate(opid < 0 )
16- , _ref_string( value)
16+ , _ref_value(convertRefValue( value) )
1717{
1818}
1919
2020// offset from Localtime: header
21- time_t TimeColumnFilter::convertRefValue ()
21+ time_t TimeColumnFilter::convertRefValue (const char *value )
2222{
23- time_t ref_remote = atoi (_ref_string. c_str () );
23+ time_t ref_remote = atoi (value );
2424 if (_query) {
2525 time_t timezone_offset = _query->timezoneOffset ();
2626 return ref_remote - timezone_offset;
@@ -33,14 +33,13 @@ bool TimeColumnFilter::accepts(void *data)
3333{
3434 bool pass = true ;
3535 time_t act_value = _column->getValue (data, _query);
36- time_t ref_value = convertRefValue ();
3736 switch (_opid) {
3837 case OP_EQUAL :
39- pass = act_value == ref_value ; break ;
38+ pass = act_value == _ref_value ; break ;
4039 case OP_GREATER :
41- pass = act_value > ref_value ; break ;
40+ pass = act_value > _ref_value ; break ;
4241 case OP_LESS :
43- pass = act_value < ref_value ; break ;
42+ pass = act_value < _ref_value ; break ;
4443 default :
4544 logger (LG_INFO , " Sorry. Operator %s for time_t not implemented." , op_names_plus_8[_opid]);
4645 break ;
@@ -57,49 +56,47 @@ void TimeColumnFilter::findTimeLimits(const char *columnname, time_t *lower, tim
5756 return ; // already empty interval
5857 }
5958
60- time_t ref_value = convertRefValue ();
61-
6259 /* [lower, upper[ is some interval. This filter might restrict
6360 that interval to a smaller interval.
6461 */
6562 int opref = _opid * (_negate != false ? -1 : 1 );
6663 switch (opref) {
6764 case OP_EQUAL :
68- if (ref_value >= *lower && ref_value < *upper) {
69- *lower = ref_value ;
70- *upper = ref_value + 1 ;
65+ if (_ref_value >= *lower && _ref_value < *upper) {
66+ *lower = _ref_value ;
67+ *upper = _ref_value + 1 ;
7168 }
7269 else
7370 *lower = *upper;
7471 return ;
7572
7673 case -OP_EQUAL :
77- if (ref_value == *lower)
74+ if (_ref_value == *lower)
7875 *lower = *lower + 1 ;
79- else if (ref_value == *upper - 1 )
76+ else if (_ref_value == *upper - 1 )
8077 *upper = *upper - 1 ;
8178 return ;
8279
8380 case OP_GREATER :
84- if (ref_value >= *lower) {
85- *lower = ref_value + 1 ;
81+ if (_ref_value >= *lower) {
82+ *lower = _ref_value + 1 ;
8683 }
8784
8885 return ;
8986
9087 case OP_LESS :
91- if (ref_value < *upper)
92- *upper = ref_value ;
88+ if (_ref_value < *upper)
89+ *upper = _ref_value ;
9390 return ;
9491
9592 case -OP_GREATER : // LESS OR EQUAL
96- if (ref_value < *upper - 1 )
97- *upper = ref_value + 1 ;
93+ if (_ref_value < *upper - 1 )
94+ *upper = _ref_value + 1 ;
9895 return ;
9996
10097 case -OP_LESS : // GREATER OR EQUAL
101- if (ref_value > *lower)
102- *lower = ref_value ;
98+ if (_ref_value > *lower)
99+ *lower = _ref_value ;
103100 return ;
104101 }
105102}
0 commit comments