From: Mu-Woong Lee Date: Mon, 4 Jul 2016 12:29:11 +0000 (+0900) Subject: sensor: fix the group-by statements of SQL queries to split the timeline properly X-Git-Tag: accepted/tizen/common/20160705.170009^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ca277c1446f956cb719a964e27106635b495c046;p=platform%2Fcore%2Fcontext%2Fcontext-provider.git sensor: fix the group-by statements of SQL queries to split the timeline properly In SQL, deviding an integer by an integer produces an integer. The integers need to be casted into real. Change-Id: I71d407f94fb00503a67255e4935df405e766d757 Signed-off-by: Mu-Woong Lee --- diff --git a/src/sensor/TypesInternal.h b/src/sensor/TypesInternal.h index 1894520..0bd3cb5 100644 --- a/src/sensor/TypesInternal.h +++ b/src/sensor/TypesInternal.h @@ -40,4 +40,7 @@ /* Time Conversions */ #define SEC_TO_MS(X) ((X) * 1000) +/* SQL Helper */ +#define TIME_QUANTIZER(key) "ROUND((CAST(" key " AS REAL) - %llu)/CAST(%llu AS REAL) + 0.5)" + #endif /* __CONTEXT_SENSOR_RECORDER_TYPES_INTERNAL_H__ */ diff --git a/src/sensor/pedometer/PedometerQuerier.cpp b/src/sensor/pedometer/PedometerQuerier.cpp index 020e868..c4bda95 100644 --- a/src/sensor/pedometer/PedometerQuerier.cpp +++ b/src/sensor/pedometer/PedometerQuerier.cpp @@ -59,7 +59,7 @@ int PedometerQuerier::query(int startTime, int endTime, int anchor, int interval "SELECT " PROJECTION \ " FROM " PEDOMETER_RECORD \ " WHERE " KEY_END_TIME " > %llu AND " KEY_END_TIME " <= %llu" \ - " GROUP BY ROUND((" KEY_END_TIME " - %llu) / %llu + 0.5)" \ + " GROUP BY " TIME_QUANTIZER(KEY_END_TIME) \ " ORDER BY " KEY_END_TIME " ASC", SEC_TO_MS(static_cast(startTime)), SEC_TO_MS(static_cast(endTime)), SEC_TO_MS(static_cast(anchor)), SEC_TO_MS(static_cast(interval))); diff --git a/src/sensor/pressure/PressureQuerier.cpp b/src/sensor/pressure/PressureQuerier.cpp index 43d3457..8d19638 100644 --- a/src/sensor/pressure/PressureQuerier.cpp +++ b/src/sensor/pressure/PressureQuerier.cpp @@ -80,7 +80,7 @@ int PressureQuerier::query(int startTime, int endTime, int anchor, int interval) "SELECT " PROJECTION \ " FROM " PRESSURE_RECORD \ " WHERE " KEY_UNIV_TIME " > %llu AND " KEY_UNIV_TIME " <= %llu" \ - " GROUP BY ROUND((" KEY_UNIV_TIME " - %llu) / %llu + 0.5)" \ + " GROUP BY " TIME_QUANTIZER(KEY_UNIV_TIME) \ " ORDER BY " KEY_END_TIME " ASC", SEC_TO_MS(static_cast(startTime)), SEC_TO_MS(static_cast(endTime)), SEC_TO_MS(static_cast(anchor)), SEC_TO_MS(static_cast(interval)));