8 namespace persistency {
15 return (x < std::get<0>(y));
22 if (container.empty())
23 return container.end();
25 return (
p != container.begin()) ?
p - 1 : container.end();
31 : m_current(current), m_parent(
parent) {}
45 retVal.
since = std::get<0>(*m_current);
46 auto next = m_current;
50 retVal.
till = m_parent->m_tagInfo.endOfValidity;
52 retVal.
payloadId = std::get<1>(*m_current);
134 boost::posix_time::ptime notime;
150 m_data->tagInfo.payloadType,
151 m_data->tagInfo.synchronizationType,
152 m_data->tagInfo.endOfValidity,
153 m_data->tagInfo.lastValidatedTime,
172 m_data->cacheInitialized =
true;
176 boost::posix_time::ptime no_time;
186 m_session->iovSchema().iovTable().select(
192 boost::posix_time::ptime no_time;
200 throwException(
"No tag has been loaded.",
"IOVProxy::selectRange");
212 throwException(
"No tag has been loaded.",
"IOVProxy::selectRange");
216 boost::posix_time::ptime no_time;
234 m_data->sinceGroups.clear();
235 m_data->iovSequence.clear();
236 m_data->numberOfQueries = 0;
251 if (
target.since >= endOfValidity) {
254 target.till = endOfValidity;
263 throwException(
"No tag has been loaded.",
"IOVProxy::iovSequenceInfo");
268 bool ok =
m_session->iovSchema().iovTable().getLastIov(
269 m_data->tagInfo.name,
m_data->snapshotTime,
ret.lastInterval.since,
ret.lastInterval.payloadId);
278 throwException(
"No tag has been loaded.",
"IOVProxy::getMetadata");
280 std::tuple<std::string, boost::posix_time::ptime, boost::posix_time::ptime>
ret;
281 if (!
m_session->iovSchema().tagTable().getMetadata(
282 m_data->tagInfo.name, std::get<0>(
ret), std::get<1>(
ret), std::get<2>(
ret))) {
283 throwException(
"Metadata for tag \"" +
m_data->tagInfo.name +
"\" have not been found in the database.",
284 "IOVProxy::getMetadata");
292 if (!
m_session->isTransactionActive(
false))
297 m_data->iovSequence.clear();
298 m_session->iovSchema().iovTable().select(
299 m_data->tagInfo.name, lowerGroup, higherGroup,
m_data->snapshotTime,
m_data->iovSequence);
301 if (
m_data->iovSequence.empty()) {
306 m_data->groupLowerIov = std::get<0>(
m_data->iovSequence.front());
310 m_data->groupHigherIov = std::get<0>(
m_data->iovSequence.back());
318 m_data->numberOfQueries++;
325 throwException(
"No tag has been loaded.",
"IOVProxy::getInterval");
327 if (!
m_data->cacheInitialized)
333 time < m_data->groupLowerIov ||
time >=
m_data->groupHigherIov) {
338 if (iGLow ==
m_data->sinceGroups.end()) {
346 if (iGHigh !=
m_data->sinceGroups.end())
355 if (iIov ==
m_data->iovSequence.end()) {
359 retVal.
since = std::get<0>(*iIov);
370 tillVal =
m_data->groupHigherIov;
372 if (tillVal < retVal.
till)
373 retVal.
till = tillVal;
377 if (defaultIovSize == 0) {
382 retVal.
till = retVal.
since + defaultIovSize - 1;
393 bool ok =
m_session->iovSchema().iovTable().getLastIov(