2 #include "RelationalAccess/ISchema.h" 3 #include "RelationalAccess/ITable.h" 4 #include "RelationalAccess/ITableDataEditor.h" 5 #include "RelationalAccess/IQuery.h" 6 #include "RelationalAccess/ICursor.h" 7 #include "RelationalAccess/SchemaException.h" 8 #include "CoralBase/AttributeList.h" 9 #include "CoralBase/Attribute.h" 10 #include "CoralBase/AttributeSpecification.h" 11 #include "CoralBase/TimeStamp.h" 20 unsigned long long entry_id = 0;
21 coral::IQuery* qHandle = schema.newQuery();
24 qHandle->addToOutputList(
"e.ENTRY_ID",
"entry_id");
26 coral::AttributeList qCondition;
27 qCondition.extend(
"entryname",
typeid(
std::string));
28 qCondition.extend(
"branchname",
typeid(
std::string));
29 qCondition[
"entryname"].data<
std::string>() = entryname;
30 qCondition[
"branchname"].data<
std::string>() = branchname;
31 std::string qConditionStr(
"r.REVISION_ID=e.REVISION_ID and e.NAME=:entryname AND r.BRANCH_NAME=:branchname");
33 coral::AttributeList qResult;
34 qResult.extend(
"entry_id",
typeid(
unsigned long long));
35 qHandle->defineOutput(qResult);
36 qHandle->setCondition(qConditionStr, qCondition);
37 coral::ICursor& cursor = qHandle->execute();
38 while (cursor.next()) {
39 entry_id = cursor.currentRow()[
"entry_id"].data<
unsigned long long>();
63 unsigned long long branchid,
65 coral::AttributeList revdata;
66 revdata.extend(
"REVISION_ID",
typeid(
unsigned long long));
67 revdata.extend(
"BRANCH_ID",
typeid(
unsigned long long));
69 revdata.extend(
"CTIME",
typeid(coral::TimeStamp));
70 revdata[
"REVISION_ID"].data<
unsigned long long>() =
entry.revision_id;
71 revdata[
"BRANCH_ID"].data<
unsigned long long>() = branchid;
72 revdata[
"BRANCH_NAME"].data<
std::string>() = branchname;
75 schema.tableHandle(revTableName).dataEditor().insertRow(revdata);
77 coral::AttributeList entrydata;
78 entrydata.extend(
"REVISION_ID",
typeid(
unsigned long long));
79 entrydata.extend(
"ENTRY_ID",
typeid(
unsigned long long));
81 entrydata[
"REVISION_ID"].data<
unsigned long long>() =
entry.revision_id;
82 entrydata[
"ENTRY_ID"].data<
unsigned long long>() =
entry.entry_id;
85 schema.tableHandle(entryTableName).dataEditor().insertRow(entrydata);
87 coral::AttributeList revmapdata;
88 revmapdata.extend(
"REVISION_ID",
typeid(
unsigned long long));
89 revmapdata.extend(
"DATA_ID",
typeid(
unsigned long long));
91 revmapdata[
"REVISION_ID"].data<
unsigned long long>() =
entry.revision_id;
92 revmapdata[
"DATA_ID"].data<
unsigned long long>() =
entry.data_id;
95 schema.tableHandle(revmapTableName).dataEditor().insertRow(revmapdata);
100 unsigned long long branchid,
102 coral::AttributeList revdata;
103 revdata.extend(
"REVISION_ID",
typeid(
unsigned long long));
104 revdata.extend(
"BRANCH_ID",
typeid(
unsigned long long));
105 revdata.extend(
"BRANCH_NAME",
typeid(
std::string));
106 revdata.extend(
"CTIME",
typeid(coral::TimeStamp));
107 revdata[
"REVISION_ID"].data<
unsigned long long>() = revision.
revision_id;
108 revdata[
"BRANCH_ID"].data<
unsigned long long>() = branchid;
109 revdata[
"BRANCH_NAME"].data<
std::string>() = branchname;
112 coral::AttributeList revmapdata;
113 revmapdata.extend(
"REVISION_ID",
typeid(
unsigned long long));
114 revmapdata.extend(
"DATA_ID",
typeid(
unsigned long long));
115 revmapdata[
"REVISION_ID"].data<
unsigned long long>() = revision.
revision_id;
116 revmapdata[
"DATA_ID"].data<
unsigned long long>() = revision.
data_id;
118 schema.tableHandle(revmapTableName).dataEditor().insertRow(revmapdata);
121 coral::AttributeList lumirundata;
122 lumirundata.extend(
"DATA_ID",
typeid(
unsigned long long));
123 lumirundata.extend(
"ENTRY_ID",
typeid(
unsigned long long));
124 lumirundata.extend(
"ENTRY_NAME",
typeid(
std::string));
125 lumirundata.extend(
"RUNNUM",
typeid(
unsigned int));
127 lumirundata.extend(
"NOMINALEGEV",
typeid(
float));
128 lumirundata.extend(
"NCOLLIDINGBUNCHES",
typeid(
unsigned int));
129 lumirundata[
"DATA_ID"].data<
unsigned long long>() = lumientry.
data_id;
130 lumirundata[
"ENTRY_ID"].data<
unsigned long long>() = lumientry.
entry_id;
132 lumirundata[
"RUNNUM"].data<
unsigned int>() = lumientry.
runnumber;
134 lumirundata[
"NOMINALEGEV"].data<
float>() = lumientry.
bgev;
135 lumirundata[
"NCOLLIDINGBUNCHES"].data<
unsigned int>() = lumientry.
ncollidingbunches;
137 schema.tableHandle(lumidataTableName).dataEditor().insertRow(lumirundata);
140 coral::AttributeList trgrundata;
141 trgrundata.extend(
"DATA_ID",
typeid(
unsigned long long));
142 trgrundata.extend(
"ENTRY_ID",
typeid(
unsigned long long));
143 trgrundata.extend(
"ENTRY_NAME",
typeid(
std::string));
144 trgrundata.extend(
"RUNNUM",
typeid(
unsigned int));
146 trgrundata.extend(
"BITZERONAME",
typeid(
std::string));
147 trgrundata.extend(
"BITNAMECLOB",
typeid(
std::string));
148 trgrundata[
"DATA_ID"].data<
unsigned long long>() = trgentry.
data_id;
149 trgrundata[
"ENTRY_ID"].data<
unsigned long long>() = trgentry.
entry_id;
151 trgrundata[
"RUNNUM"].data<
unsigned int>() = trgentry.
runnumber;
156 schema.tableHandle(trgdataTableName).dataEditor().insertRow(trgrundata);
159 coral::AttributeList hltrundata;
160 hltrundata.extend(
"DATA_ID",
typeid(
unsigned long long));
161 hltrundata.extend(
"ENTRY_ID",
typeid(
unsigned long long));
162 hltrundata.extend(
"ENTRY_NAME",
typeid(
std::string));
163 hltrundata.extend(
"RUNNUM",
typeid(
unsigned int));
165 hltrundata.extend(
"NPATH",
typeid(
unsigned int));
166 hltrundata.extend(
"PATHNAMECLOB",
typeid(
std::string));
167 hltrundata[
"DATA_ID"].data<
unsigned long long>() = hltentry.
data_id;
168 hltrundata[
"ENTRY_ID"].data<
unsigned long long>() = hltentry.
entry_id;
170 hltrundata[
"RUNNUM"].data<
unsigned int>() = hltentry.
runnumber;
172 hltrundata[
"NPATH"].data<
unsigned int>() = hltentry.
npath;
175 schema.tableHandle(hltdataTableName).dataEditor().insertRow(hltrundata);
179 unsigned long long currentdatatagid = 0;
180 std::vector<unsigned long long> alltagids;
181 coral::IQuery* qHandle = schema.newQuery();
183 qHandle->addToOutputList(
"TAGID");
184 coral::AttributeList qResult;
185 qResult.extend(
"TAGID",
typeid(
unsigned long long));
186 qHandle->defineOutput(qResult);
187 coral::ICursor& cursor = qHandle->execute();
188 while (cursor.next()) {
189 if (!cursor.currentRow()[
"TAGID"].isNull()) {
190 alltagids.push_back(cursor.currentRow()[
"TAGID"].data<
unsigned long long>());
194 if (!alltagids.empty()) {
195 std::vector<unsigned long long>::iterator currentdatatagidIt = std::max_element(alltagids.begin(), alltagids.end());
196 currentdatatagid = *currentdatatagidIt;
198 return currentdatatagid;
202 unsigned long long datatagid = 0;
203 coral::IQuery* qHandle = schema.newQuery();
205 const std::string conditionStr(
"TAGNAME=:tagname");
206 coral::AttributeList condition;
208 condition[
"tagname"].data<
std::string>() = datatagname;
209 qHandle->addToOutputList(
"TAGID");
210 coral::AttributeList qResult;
211 qResult.extend(
"TAGID",
typeid(
unsigned long long));
212 qHandle->setCondition(conditionStr, condition);
213 qHandle->defineOutput(qResult);
214 coral::ICursor& cursor = qHandle->execute();
215 while (cursor.next()) {
216 if (!cursor.currentRow()[
"TAGID"].isNull()) {
217 datatagid = cursor.currentRow()[
"TAGID"].data<
unsigned long long>();
226 unsigned long long lumiid,
227 unsigned long long trgid,
228 unsigned long long hltid,
230 unsigned long long currenttagid = currentHFDataTagId(schema);
231 coral::AttributeList tagrundata;
232 tagrundata.extend(
"TAGID",
typeid(
unsigned long long));
233 tagrundata.extend(
"RUNNUM",
typeid(
unsigned int));
234 tagrundata.extend(
"LUMIDATAID",
typeid(
unsigned long long));
235 tagrundata.extend(
"TRGDATAID",
typeid(
unsigned long long));
236 tagrundata.extend(
"HLTDATAID",
typeid(
unsigned long long));
237 tagrundata.extend(
"CREATIONTIME",
typeid(coral::TimeStamp));
239 tagrundata[
"TAGID"].data<
unsigned long long>() = currenttagid;
240 tagrundata[
"RUNNUM"].data<
unsigned int>() =
runnum;
241 tagrundata[
"LUMIDATAID"].data<
unsigned long long>() =
lumiid;
242 tagrundata[
"TRGDATAID"].data<
unsigned long long>() = trgid;
243 tagrundata[
"HLTDATAID"].data<
unsigned long long>() = hltid;
245 tagrundata[
"COMMENT"].data<
std::string>() = patchcomment;
249 }
catch (
const coral::DuplicateEntryInUniqueKeyException& er) {
257 unsigned long long tagid) {
259 coral::IQuery* qHandle = schema.newQuery();
261 qHandle->addToOutputList(
"LUMIDATAID");
262 qHandle->addToOutputList(
"TRGDATAID");
263 qHandle->addToOutputList(
"HLTDATAID");
264 coral::AttributeList qResult;
265 qResult.extend(
"LUMIDATAID",
typeid(
unsigned long long));
266 qResult.extend(
"TRGDATAID",
typeid(
unsigned long long));
267 qResult.extend(
"HLTDATAID",
typeid(
unsigned long long));
268 qHandle->defineOutput(qResult);
269 coral::AttributeList qCondition;
270 qCondition.extend(
"tagid",
typeid(
unsigned long long));
271 qCondition.extend(
"runnum",
typeid(
unsigned int));
272 qCondition[
"tagid"].data<
unsigned long long>() = tagid;
273 qCondition[
"runnum"].data<
unsigned int>() =
runnum;
274 std::string qConditionStr(
"TAGID<=:tagid AND RUNNUM=:runnum");
275 qHandle->setCondition(qConditionStr, qCondition);
276 coral::ICursor& cursor = qHandle->execute();
277 unsigned long long minlumid = 0;
278 unsigned long long mintrgid = 0;
279 unsigned long long minhltid = 0;
280 while (cursor.next()) {
281 if (!cursor.currentRow()[
"LUMIDATAID"].isNull()) {
282 unsigned long long lumiid = cursor.currentRow()[
"LUMIDATAID"].data<
unsigned long long>();
287 if (!cursor.currentRow()[
"TRGDATAID"].isNull()) {
288 unsigned long long trgid = cursor.currentRow()[
"TRGDATAID"].data<
unsigned long long>();
289 if (trgid > mintrgid) {
293 if (!cursor.currentRow()[
"HLTDATAID"].isNull()) {
294 unsigned long long hltid = cursor.currentRow()[
"HLTDATAID"].data<
unsigned long long>();
295 if (hltid > minhltid) {
static const std::string trgdataTableName()
void addEntry(coral::ISchema &schema, const std::string &datatableName, const Entry &entry, unsigned long long branch_id, const std::string &branchname)
DataID dataIDForRun(coral::ISchema &schema, unsigned int runnum, unsigned long long tagid)
static const std::string hltdataTableName()
void insertLumiRunData(coral::ISchema &schema, const LumiEntry &lumientry)
unsigned long long data_id
static const std::string tagRunsTableName()
static const std::string revmapTableName(const std::string &datatablename)
unsigned long long getEntryInBranchByName(coral::ISchema &schema, const std::string &datatableName, const std::string &entryname, const std::string &branchname)
static const std::string entryTableName(const std::string &datatablename)
static const std::string tagsTableName()
unsigned long long HFDataTagIdByName(coral::ISchema &schema, const std::string &datatagname)
unsigned long long addRunToCurrentHFDataTag(coral::ISchema &schema, unsigned int runnum, unsigned long long lumiid, unsigned long long trgid, unsigned long long hltid, const std::string &patchcomment)
unsigned long long revision_id
void insertTrgRunData(coral::ISchema &schema, const TrgEntry &trgentry)
static const std::string lumidataTableName()
unsigned long long entry_id
void bookNewEntry(coral::ISchema &schema, const std::string &datatableName, Entry &entry)
void insertHltRunData(coral::ISchema &schema, const HltEntry &hltentry)
unsigned int ncollidingbunches
unsigned long long generateNextIDForTable(const std::string &tableName, unsigned int interval=1)
void addRevision(coral::ISchema &schema, const std::string &datatableName, const Entry &revision, unsigned long long branch_id, std::string &branchname)
unsigned long long currentHFDataTagId(coral::ISchema &schema)
static const std::string revisionTableName()
void bookNewRevision(coral::ISchema &schema, const std::string &datatableName, Entry &revision)