6 namespace persistency {
13 return (x < std::get<0>(y));
20 if (container.empty())
21 return container.end();
23 return (
p != container.begin()) ?
p - 1 : container.end();
29 : m_current(current), m_parent(
parent) {}
43 retVal.
since = std::get<0>(*m_current);
44 auto next = m_current;
48 retVal.
till = m_parent->m_tagInfo.endOfValidity;
50 retVal.
payloadId = std::get<1>(*m_current);
132 boost::posix_time::ptime notime;
147 m_data->tagInfo.payloadType,
148 m_data->tagInfo.synchronizationType,
149 m_data->tagInfo.endOfValidity,
150 m_data->tagInfo.lastValidatedTime)) {
168 m_data->cacheInitialized =
true;
172 boost::posix_time::ptime no_time;
182 m_session->iovSchema().iovTable().select(
188 boost::posix_time::ptime no_time;
196 throwException(
"No tag has been loaded.",
"IOVProxy::selectRange");
208 throwException(
"No tag has been loaded.",
"IOVProxy::selectRange");
212 boost::posix_time::ptime no_time;
230 m_data->sinceGroups.clear();
231 m_data->iovSequence.clear();
232 m_data->numberOfQueries = 0;
247 if (
target.since >= endOfValidity) {
250 target.till = endOfValidity;
259 throwException(
"No tag has been loaded.",
"IOVProxy::iovSequenceInfo");
264 bool ok =
m_session->iovSchema().iovTable().getLastIov(
265 m_data->tagInfo.name,
m_data->snapshotTime,
ret.lastInterval.since,
ret.lastInterval.payloadId);
274 throwException(
"No tag has been loaded.",
"IOVProxy::getMetadata");
276 std::tuple<std::string, boost::posix_time::ptime, boost::posix_time::ptime>
ret;
277 if (!
m_session->iovSchema().tagTable().getMetadata(
278 m_data->tagInfo.name, std::get<0>(
ret), std::get<1>(
ret), std::get<2>(
ret))) {
279 throwException(
"Metadata for tag \"" +
m_data->tagInfo.name +
"\" have not been found in the database.",
280 "IOVProxy::getMetadata");
288 if (!
m_session->isTransactionActive(
false))
293 m_data->iovSequence.clear();
294 m_session->iovSchema().iovTable().select(
295 m_data->tagInfo.name, lowerGroup, higherGroup,
m_data->snapshotTime,
m_data->iovSequence);
297 if (
m_data->iovSequence.empty()) {
302 m_data->groupLowerIov = std::get<0>(
m_data->iovSequence.front());
306 m_data->groupHigherIov = std::get<0>(
m_data->iovSequence.back());
314 m_data->numberOfQueries++;
321 throwException(
"No tag has been loaded.",
"IOVProxy::getInterval");
323 if (!
m_data->cacheInitialized)
329 time < m_data->groupLowerIov ||
time >=
m_data->groupHigherIov) {
334 if (iGLow ==
m_data->sinceGroups.end()) {
342 if (iGHigh !=
m_data->sinceGroups.end())
351 if (iIov ==
m_data->iovSequence.end()) {
355 retVal.
since = std::get<0>(*iIov);
366 tillVal =
m_data->groupHigherIov;
368 if (tillVal < retVal.
till)
369 retVal.
till = tillVal;
373 if (defaultIovSize == 0) {
378 retVal.
till = retVal.
since + defaultIovSize - 1;
389 bool ok =
m_session->iovSchema().iovTable().getLastIov(