select distinct name from runsession_parameter sequence: select string_value from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.LVL0:SEQ_NAME' hltkey: select string_value from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.LVL0:HLT_KEY_DESCRIPTION'; fillnumber: select string_value from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.SCAL:FILLN' and rownum<=1; start/stop time: select time from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.LVL0:START_TIME_T'; select time from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.LVL0:STOP_TIME_T';
67 std::string runinfoschema(
"CMS_RUNINFO");
68 std::string runsessionParamTable(
"RUNSESSION_PARAMETER");
69 coral::ConnectionService*
svc=
new coral::ConnectionService;
76 coral::ISessionProxy* runinfosession=svc->connect(
m_source,coral::ReadOnly);
78 coral::ITypeConverter& tpc=runinfosession->typeConverter();
79 tpc.setCppTypeForSqlType(
"unsigned int",
"NUMBER(38)");
80 runinfosession->transaction().start(
true);
81 coral::ISchema& runinfoschemaHandle=runinfosession->schema(runinfoschema);
82 if(!runinfoschemaHandle.existsTable(runsessionParamTable)){
83 throw lumi::Exception(std::string(
"non-existing table "+runsessionParamTable),
"CMSRunSummary2DB",
"retrieveData");
85 coral::IQuery* seqQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
86 coral::AttributeList seqBindVariableList;
87 seqBindVariableList.extend(
"runnumber",
typeid(
unsigned int));
88 seqBindVariableList.extend(
"name",
typeid(std::string));
90 seqBindVariableList[
"runnumber"].data<
unsigned int>()=
runnumber;
91 seqBindVariableList[
"name"].data<std::string>()=std::string(
"CMS.LVL0:SEQ_NAME");
92 seqQuery->setCondition(
"RUNNUMBER =:runnumber AND NAME =:name",seqBindVariableList);
93 seqQuery->addToOutputList(
"STRING_VALUE");
94 coral::ICursor& seqCursor=seqQuery->execute();
96 while( seqCursor.next() ){
97 const coral::AttributeList& row=seqCursor.currentRow();
98 result.sequence=row[
"STRING_VALUE"].data<std::string>();
102 coral::IQuery* hltkeyQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
103 coral::AttributeList hltkeyBindVariableList;
104 hltkeyBindVariableList.extend(
"runnumber",
typeid(
unsigned int));
105 hltkeyBindVariableList.extend(
"name",
typeid(std::string));
107 hltkeyBindVariableList[
"runnumber"].data<
unsigned int>()=
runnumber;
108 hltkeyBindVariableList[
"name"].data<std::string>()=std::string(
"CMS.LVL0:HLT_KEY_DESCRIPTION");
109 hltkeyQuery->setCondition(
"RUNNUMBER =:runnumber AND NAME =:name",hltkeyBindVariableList);
110 hltkeyQuery->addToOutputList(
"STRING_VALUE");
111 coral::ICursor& hltkeyCursor=hltkeyQuery->execute();
113 while( hltkeyCursor.next() ){
114 const coral::AttributeList& row=hltkeyCursor.currentRow();
115 result.hltkey=row[
"STRING_VALUE"].data<std::string>();
119 coral::IQuery* fillQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
120 coral::AttributeList fillBindVariableList;
121 fillBindVariableList.extend(
"runnumber",
typeid(
unsigned int));
122 fillBindVariableList.extend(
"name",
typeid(std::string));
124 fillBindVariableList[
"runnumber"].data<
unsigned int>()=
runnumber;
125 fillBindVariableList[
"name"].data<std::string>()=std::string(
"CMS.SCAL:FILLN");
126 fillQuery->setCondition(
"RUNNUMBER =:runnumber AND NAME =:name",fillBindVariableList);
127 fillQuery->addToOutputList(
"STRING_VALUE");
128 fillQuery->limitReturnedRows(1);
129 coral::ICursor& fillCursor=fillQuery->execute();
131 while( fillCursor.next() ){
132 const coral::AttributeList& row=fillCursor.currentRow();
133 result.fillnumber=row[
"STRING_VALUE"].data<std::string>();
136 if (result.fillnumber.empty()){
137 throw nonCollisionException(
"retrieveData",
"CMSRunSummary2DB");
139 coral::IQuery* startTQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
140 coral::AttributeList startTVariableList;
141 startTVariableList.extend(
"runnumber",
typeid(
unsigned int));
142 startTVariableList.extend(
"name",
typeid(std::string));
144 startTVariableList[
"runnumber"].data<
unsigned int>()=
runnumber;
145 startTVariableList[
"name"].data<std::string>()=std::string(
"CMS.LVL0:START_TIME_T");
146 startTQuery->setCondition(
"RUNNUMBER =:runnumber AND NAME =:name",startTVariableList);
147 startTQuery->addToOutputList(
"TIME");
148 coral::ICursor& startTCursor=startTQuery->execute();
150 while( startTCursor.next() ){
151 const coral::AttributeList& row=startTCursor.currentRow();
152 result.startT=row[
"TIME"].data<coral::TimeStamp>();
155 coral::IQuery* stopTQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
156 coral::AttributeList stopTVariableList;
157 stopTVariableList.extend(
"runnumber",
typeid(
unsigned int));
158 stopTVariableList.extend(
"name",
typeid(std::string));
160 stopTVariableList[
"runnumber"].data<
unsigned int>()=
runnumber;
161 stopTVariableList[
"name"].data<std::string>()=std::string(
"CMS.LVL0:STOP_TIME_T");
162 stopTQuery->setCondition(
"RUNNUMBER =:runnumber AND NAME =:name",stopTVariableList);
163 stopTQuery->addToOutputList(
"TIME");
164 coral::ICursor& stopTCursor=stopTQuery->execute();
166 while( stopTCursor.next() ){
167 const coral::AttributeList& row=stopTCursor.currentRow();
168 result.stopT=row[
"TIME"].data<coral::TimeStamp>();
172 runinfosession->transaction().rollback();
173 delete runinfosession;
177 runinfosession->transaction().commit();
178 delete runinfosession;
184 coral::ITypeConverter& desttpc=destsession->typeConverter();
185 desttpc.setCppTypeForSqlType(
"unsigned int",
"NUMBER(10)");
187 destsession->transaction().start(
false);
188 coral::ISchema& destschema=destsession->nominalSchema();
191 destruntable.dataEditor().rowBuffer(runData);
192 runData[
"RUNNUM"].data<
unsigned int>()=
runnumber;
193 runData[
"FILLNUM"].data<
unsigned int>()=
str2int(result.fillnumber);
194 runData[
"SEQUENCE"].data<std::string>()=result.sequence;
195 runData[
"HLTKEY"].data<std::string>()=result.hltkey;
196 runData[
"STARTTIME"].data<coral::TimeStamp>()=result.startT;
197 runData[
"STOPTIME"].data<coral::TimeStamp>()=result.stopT;
198 destruntable.dataEditor().insertRow(runData);
200 std::cout<<
"database problem "<<er.what()<<std::endl;
201 destsession->transaction().rollback();
206 destsession->transaction().commit();
unsigned int str2int(const std::string &s) const
static const std::string cmsrunsummaryTableName()