#ifndef SQL_CRSR
# define SQL_CRSR
struct sql_cursor
{
unsigned int curocn;
void *ptr1;
void *ptr2;
unsigned int magic;
};
typedef struct sql_cursor sql_cursor;
typedef struct sql_cursor SQL_CURSOR;
#endif /* SQL_CRSR */
typedef void * sql_context;
typedef void * SQL_CONTEXT;
struct sqltvn
{
unsigned char *tvnvsn;
unsigned short tvnvsnl;
unsigned char *tvnnm;
unsigned short tvnnml;
unsigned char *tvnsnm;
unsigned short tvnsnml;
};
typedef struct sqltvn sqltvn;
struct sqladts
{
unsigned int adtvsn;
unsigned short adtmode;
unsigned short adtnum;
sqltvn adttvn[1];
};
typedef struct sqladts sqladts;
static struct sqladts sqladt = {
1,1,0,
};
struct sqltdss
{
unsigned int tdsvsn;
unsigned short tdsnum;
unsigned char *tdsval[1];
};
typedef struct sqltdss sqltdss;
static struct sqltdss sqltds =
{
1,
0,
};
struct sqlcxp
{
unsigned short fillen;
char filnam[18];
};
static const struct sqlcxp sqlfpn =
{
17,
"horaslowreader.pc"
};
static unsigned int sqlctx = 9842619;
static struct sqlexd {
unsigned int sqlvsn;
unsigned int arrsiz;
unsigned int iters;
unsigned int offset;
unsigned short selerr;
unsigned short sqlety;
unsigned int occurs;
const short *cud;
unsigned char *sqlest;
const char *stmt;
sqladts *sqladtp;
sqltdss *sqltdsp;
void **sqphsv;
unsigned int *sqphsl;
int *sqphss;
void **sqpind;
int *sqpins;
unsigned int *sqparm;
unsigned int **sqparc;
unsigned short *sqpadto;
unsigned short *sqptdso;
unsigned int sqlcmax;
unsigned int sqlcmin;
unsigned int sqlcincr;
unsigned int sqlctimeout;
unsigned int sqlcnowait;
int sqfoff;
unsigned int sqcmod;
unsigned int sqfmod;
void *sqhstv[14];
unsigned int sqhstl[14];
int sqhsts[14];
void *sqindv[14];
int sqinds[14];
unsigned int sqharm[14];
unsigned int *sqharc[14];
unsigned short sqadto[14];
unsigned short sqtdso[14];
} sqlstm = {12,14};
extern "C" {
void sqlcxt (void **, unsigned int *,
struct sqlexd *, const struct sqlcxp *);
void sqlcx2t(void **, unsigned int *,
struct sqlexd *, const struct sqlcxp *);
void sqlbuft(void **, char *);
void sqlgs2t(void **, char *);
void sqlorat(void **, unsigned int *, void *);
}
static const int IAPSUCC = 0;
static const int IAPFAIL = 1403;
static const int IAPFTL = 535;
extern "C" { void sqliem(char *, int *); }
static const char *sq0002 =
"select TO_CHAR(starttime,'yyyy-mm-dd hh24:mi:ss') , interval ,ndata from h\
ades_slow.hscs_archiver_rate where (starttime>=TO_DATE(:b0,'yyyy-mm-dd hh24:mi\
:ss') and starttime<TO_DATE(:b1,'yyyy-mm-dd hh24:mi:ss')) order by starttime \
";
static const char *sq0004 =
"select period_id ,TO_CHAR(period_begin,'yyyy-mm-dd hh24:mi:ss') ,TO_CHAR(per\
iod_end,'yyyy-mm-dd hh24:mi:ss') ,run_id ,filename from hades_slow.hscs_perio\
ds where (partition=:b0 and period_id between :b1 and :b2) order by period_id \
";
static const char *sq0006 =
"select period_id ,mean_value ,sigma_value ,min_value ,max_value ,num_data_ro\
ws ,stat ,mon_num_data_rows from hades_slow.channel_run_summary_view_ana wher\
e (pv_id=:b0 and period_id between :b1 and :b2) order by period_id ";
static const char *sq0008 =
"select TO_CHAR( timestamp ,'yyyy-mm-dd hh24:mi:ss') ,nanosecs ,nvl(value,0.)\
,sevr from hades_slow.archive_data_f where ( timestamp between TO_DATE(:b0,\
'yyyy-mm-dd hh24:mi:ss') and TO_DATE(:b1,'yyyy-mm-dd hh24:mi:ss') and pv_id=:b\
2) order by timestamp ,nanosecs ";
static const char *sq0009 =
"select TO_CHAR( timestamp ,'yyyy-mm-dd hh24:mi:ss') ,nanosecs ,nvl(value,0) \
,sevr from hades_slow.archive_data_i where ( timestamp between TO_DATE(:b0,'\
yyyy-mm-dd hh24:mi:ss') and TO_DATE(:b1,'yyyy-mm-dd hh24:mi:ss') and pv_id=:b2\
) order by timestamp ,nanosecs ";
static const char *sq0010 =
"select TO_CHAR(starttime,'yyyy-mm-dd hh24:mi:ss') , interval ,ndata from h\
ades_scs.hscs_archiver_rate where (starttime>=TO_DATE(:b0,'yyyy-mm-dd hh24:mi:\
ss') and starttime<TO_DATE(:b1,'yyyy-mm-dd hh24:mi:ss')) order by starttime \
";
static const char *sq0012 =
"select period_id ,TO_CHAR(period_begin,'yyyy-mm-dd hh24:mi:ss') ,TO_CHAR(per\
iod_end,'yyyy-mm-dd hh24:mi:ss') ,run_id ,filename from hades_scs.hscs_period\
s where period_id between :b0 and :b1 order by period_id ";
static const char *sq0013 =
"select period_id ,NVL(mean_value,(-999)) ,NVL(sigma_value,(-999)) ,NVL(min_v\
alue,(-999)) ,NVL(max_value,(-999)) ,num_data_rows ,NVL(stat,0) ,NVL(mon_num_d\
ata_rows,(-1)) from hades_scs.channel_run_summary_view where (pv_id=:b0 and p\
eriod_id between :b1 and :b2) order by period_id ";
static const char *sq0016 =
"select distinct TO_CHAR( timestamp ,'yyyy-mm-dd hh24:mi:ss') ts ,nanosecs ,N\
VL(value,0.) ,sevr from hades_scs.archive_data_f_view where ( timestamp betw\
een TO_DATE(NVL(:b0,(SYSDATE-(1/24))),'yyyy-mm-dd hh24:mi:ss') and TO_DATE(NVL\
(:b1,SYSDATE),'yyyy-mm-dd hh24:mi:ss') and pv_id=:b2) order by ts,nanosecs \
";
static const char *sq0017 =
"select distinct TO_CHAR( timestamp ,'yyyy-mm-dd hh24:mi:ss') ts ,nanosecs ,N\
VL(value,0) ,sevr from hades_scs.archive_data_i_view where ( timestamp betwe\
en TO_DATE(:b0,'yyyy-mm-dd hh24:mi:ss') and TO_DATE(:b1,'yyyy-mm-dd hh24:mi:ss\
') and pv_id=:b2) order by ts,nanosecs ";
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;
static const short sqlcud0[] =
{12,4130,1,0,0,
5,0,0,1,180,0,4,89,0,0,3,1,0,1,0,2,97,0,0,2,97,0,0,1,97,0,0,
32,0,0,2,242,0,9,146,0,0,2,2,0,1,0,1,97,0,0,1,97,0,0,
55,0,0,2,0,0,13,148,0,0,3,0,0,1,0,2,97,0,0,2,3,0,0,2,3,0,0,
82,0,0,2,0,0,15,162,0,0,0,0,0,1,0,
97,0,0,3,219,0,4,198,0,0,6,3,0,1,0,2,3,0,0,2,3,0,0,2,3,0,0,1,97,0,0,1,97,0,0,1,
97,0,0,
136,0,0,4,243,0,9,255,0,0,3,3,0,1,0,1,97,0,0,1,3,0,0,1,3,0,0,
163,0,0,4,0,0,13,257,0,0,5,0,0,1,0,2,3,0,0,2,97,0,0,2,97,0,0,2,3,0,0,2,9,0,0,
198,0,0,4,0,0,15,275,0,0,0,0,0,1,0,
213,0,0,5,82,0,4,298,0,0,3,1,0,1,0,2,3,0,0,2,9,0,0,1,97,0,0,
240,0,0,6,232,0,9,362,0,0,3,3,0,1,0,1,3,0,0,1,3,0,0,1,3,0,0,
267,0,0,6,0,0,13,364,0,0,8,0,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,3,
0,0,2,3,0,0,2,3,0,0,
314,0,0,6,0,0,15,382,0,0,0,0,0,1,0,
329,0,0,7,543,0,4,448,0,0,14,5,0,1,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,
4,0,0,2,9,0,0,2,3,0,0,2,97,0,0,1,3,0,0,1,97,0,0,1,97,0,0,1,97,0,0,1,97,0,0,
400,0,0,8,276,0,9,557,0,0,3,3,0,1,0,1,97,0,0,1,97,0,0,1,3,0,0,
427,0,0,8,0,0,13,559,0,0,4,0,0,1,0,2,97,0,0,2,3,0,0,2,4,0,0,2,3,0,0,
458,0,0,8,0,0,15,574,0,0,0,0,0,1,0,
473,0,0,9,275,0,9,615,0,0,3,3,0,1,0,1,97,0,0,1,97,0,0,1,3,0,0,
500,0,0,9,0,0,13,617,0,0,4,0,0,1,0,2,97,0,0,2,3,0,0,2,3,0,0,2,3,0,0,
531,0,0,9,0,0,15,632,0,0,0,0,0,1,0,
546,0,0,10,241,0,9,672,0,0,2,2,0,1,0,1,97,0,0,1,97,0,0,
569,0,0,10,0,0,13,674,0,0,3,0,0,1,0,2,97,0,0,2,3,0,0,2,3,0,0,
596,0,0,10,0,0,15,688,0,0,0,0,0,1,0,
611,0,0,11,193,0,4,715,0,0,5,2,0,1,0,2,3,0,0,2,3,0,0,2,3,0,0,1,97,0,0,1,97,0,0,
646,0,0,12,222,0,9,768,0,0,2,2,0,1,0,1,3,0,0,1,3,0,0,
669,0,0,12,0,0,13,770,0,0,5,0,0,1,0,2,3,0,0,2,97,0,0,2,97,0,0,2,3,0,0,2,9,0,0,
704,0,0,12,0,0,15,788,0,0,0,0,0,1,0,
719,0,0,13,292,0,9,846,0,0,3,3,0,1,0,1,3,0,0,1,3,0,0,1,3,0,0,
746,0,0,13,0,0,13,848,0,0,8,0,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,
3,0,0,2,3,0,0,2,3,0,0,
793,0,0,13,0,0,15,868,0,0,0,0,0,1,0,
808,0,0,14,303,0,4,920,0,0,10,1,0,1,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,
2,4,0,0,2,9,0,0,2,3,0,0,2,97,0,0,1,3,0,0,
863,0,0,15,88,0,4,975,0,0,3,1,0,1,0,2,3,0,0,2,9,0,0,1,97,0,0,
890,0,0,16,318,0,9,1052,0,0,3,3,0,1,0,1,97,0,0,1,97,0,0,1,3,0,0,
917,0,0,16,0,0,13,1054,0,0,4,0,0,1,0,2,97,0,0,2,3,0,0,2,4,0,0,2,3,0,0,
948,0,0,16,0,0,15,1069,0,0,0,0,0,1,0,
963,0,0,17,282,0,9,1110,0,0,3,3,0,1,0,1,97,0,0,1,97,0,0,1,3,0,0,
990,0,0,17,0,0,13,1112,0,0,4,0,0,1,0,2,97,0,0,2,3,0,0,2,3,0,0,2,3,0,0,
1021,0,0,17,0,0,15,1127,0,0,0,0,0,1,0,
};
#include "hdbconn.h"
#include "horaslowreader.h"
#include "horaslowpartition.h"
#include "horaslowperiod.h"
#include "horaslowchannel.h"
#include "horaslowchanrunsum.h"
#include "horaslowchanmeta.h"
#include "horaslowchanraw.h"
#include "horaslowarchrateobj.h"
#include <stdio.h>
#include <stdlib.h>
#define SQLCA_STORAGE_CLASS extern
#define ORACA_STORAGE_CLASS extern
#include <oraca.h>
#include <sqlca.h>
ClassImp(HOraSlowReader)
#define NMAX_SCS 2000
HOraSlowReader::HOraSlowReader() {
pConn=new HDbConn();
}
HOraSlowReader::~HOraSlowReader() {
if (pConn) {
delete pConn;
pConn=0;
}
}
Bool_t HOraSlowReader::open() {
if (pConn->isOpen()) return kTRUE;
return pConn->connectDb("HADES_ANA");
}
void HOraSlowReader::close() {
pConn->closeDbConn();
}
Bool_t HOraSlowReader::isOpen() {
return pConn->isOpen();
}
void HOraSlowReader::print() {
if (pConn->isOpen())
cout<<"Connected to Oracle-Database db-hades\n";
else cout<<"*** no connection to Oracle established ***\n";
}
Bool_t HOraSlowReader::readPartition(HOraSlowPartition* partition) {
if (!pConn->isOpen()||!partition) return kFALSE;
if (strcmp(partition->GetName(),"online")==0) {
if (strlen(partition->getStartTime())==0) partition->setStartTime("1970-01-01 00:00:00");
if (strlen(partition->getEndTime())==0) partition->setEndTime("4000-01-01 00:00:00");
return kTRUE;
}
char* pname;
char ts[20];
char te[20];
pname=(Char_t*)partition->GetName();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 3;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select TO_CHAR(starttime,'yyyy-mm-dd hh24:mi:ss') ,TO_CHAR(\
NVL(endtime,SYSDATE),'yyyy-mm-dd hh24:mi:ss') into :b0,:b1 from hades_slow.ar\
chive_partitionmgnt where partitionname=:b2";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )5;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)ts;
sqlstm.sqhstl[0] = (unsigned int )20;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)te;
sqlstm.sqhstl[1] = (unsigned int )20;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)pname;
sqlstm.sqhstl[2] = (unsigned int )0;
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
ts[19]='\0';
te[19]='\0';
if (strlen(partition->getStartTime())==0) partition->setStartTime(ts);
if (strlen(partition->getEndTime())==0) partition->setEndTime(te);
return kTRUE;
notfound:
Error("readPartition","Partition %s not found",partition->GetName());
return kFALSE;
errorfound:
pConn->showSqlError("readPartition");
return kFALSE;
}
Bool_t HOraSlowReader::readArchiverRates(HOraSlowPartition* partition) {
if (!pConn->isOpen()||!partition) return kFALSE;
TString start=partition->getStartTime();
TString end=partition->getEndTime();
if (start.IsNull()||end.IsNull()) {
readPartition(partition);
start=partition->getStartTime();
end=partition->getEndTime();
}
if (start.IsNull()||end.IsNull()) return kFALSE;
if (strcmp(partition->GetName(),"online")==0) return readOnlineArchiverRates(partition);
TString t1=start(0,10);
TString t2=end(0,10);
char* tstart;
char* tend;
struct {
char stime[NMAX_SCS][20];
int nminutes[NMAX_SCS];
int nentries[NMAX_SCS];
} rates;
tstart=(Char_t*)t1.Data();
tend=(Char_t*)t2.Data();
TObjArray* data=0;
Int_t nTot=0;
Int_t nLast=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 3;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0002;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )32;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)tstart;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)tend;
sqlstm.sqhstl[1] = (unsigned int )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 3;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )55;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)rates.stime;
sqlstm.sqhstl[0] = (unsigned int )20;
sqlstm.sqhsts[0] = ( int )20;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)rates.nminutes;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)rates.nentries;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )sizeof(int);
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
if (data==0) data=new TObjArray(nLast);
else data->Expand(sqlca.sqlerrd[2]);
for (Int_t i=0;i<nLast;i++) {
rates.stime[i][19]='\0';
Int_t v=(Int_t)(rates.nentries[i]/rates.nminutes[i]);
HOraSlowArchRateObj* p=new HOraSlowArchRateObj(rates.stime[i],v);
data->AddAt(p,nTot);
nTot++;
}
}
} while (nLast==NMAX_SCS&&nTot<=100000);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 3;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )82;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
partition->setRates(data);
return kTRUE;
errorfound:
pConn->showSqlError("readArchiverRates");
return kFALSE;
}
Bool_t HOraSlowReader::readRunPeriods(HOraSlowPartition* partition) {
if (!pConn->isOpen()||!partition) return kFALSE;
TString start=partition->getStartTime();
TString end=partition->getEndTime();
if (start.IsNull()||end.IsNull()) {
readPartition(partition);
start=partition->getStartTime();
end=partition->getEndTime();
}
if (start.IsNull()||end.IsNull()) return kFALSE;
if (strcmp(partition->GetName(),"online")==0) return readOnlineRunPeriods(partition);
char* pname;
char* pstart;
char* pend;
int nruns;
int minid;
int maxid;
short nruns_Ind;
short minid_Ind;
short maxid_Ind;
pname=(Char_t*)partition->GetName();
pstart=(Char_t*)start.Data();
pend=(Char_t*)end.Data();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 6;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select count(1) ,min(id) ,max(id) into :b0:b1,:b2:b3,:b4:b5\
from hades_slow.hscs_run_period where (partition_name=:b6 and starttime betw\
een TO_DATE(:b7,'yyyy-mm-dd hh24:mi:ss') and TO_DATE(:b8,'yyyy-mm-dd hh24:mi:s\
s'))";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )97;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&nruns;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)&nruns_Ind;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&minid;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)&minid_Ind;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&maxid;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)&maxid_Ind;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)pname;
sqlstm.sqhstl[3] = (unsigned int )0;
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)pstart;
sqlstm.sqhstl[4] = (unsigned int )0;
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = ( void *)pend;
sqlstm.sqhstl[5] = (unsigned int )0;
sqlstm.sqhsts[5] = ( int )0;
sqlstm.sqindv[5] = ( void *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned int )0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
if (nruns_Ind!=-1 && nruns>0) {
TObjArray* data=partition->setNumPeriods(nruns);
return readPeriods(pname,data,nruns,minid,maxid);
}
notfound:
Error("readRunPeriods","No run summary for partition %s or specified time range",
partition->GetName());
return kFALSE;
errorfound:
pConn->showSqlError("readRunPeriods");
return kFALSE;
}
Bool_t HOraSlowReader::readPeriods(Char_t* partitionName,TObjArray* data,Int_t nData,
Int_t minPeriodId,Int_t maxPeriodId) {
if (!data) return kFALSE;
char* pname;
int minid;
int maxid;
struct {
int id[NMAX_SCS];
char ts[NMAX_SCS][20];
char te[NMAX_SCS][20];
int rid[NMAX_SCS];
struct { unsigned short len; unsigned char arr[82]; } rname[2000];
} periods;
struct {
short id_Ind[NMAX_SCS];
short ts_Ind[NMAX_SCS];
short te_Ind[NMAX_SCS];
short rid_Ind[NMAX_SCS];
short rname_Ind[NMAX_SCS];
} periods_Ind;
pname=partitionName;
minid=minPeriodId;
maxid=maxPeriodId;
Int_t nTot=0;
Int_t nLast=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 6;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0004;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )136;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)pname;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&minid;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&maxid;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 6;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )163;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)periods.id;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( void *)periods_Ind.id_Ind;
sqlstm.sqinds[0] = ( int )sizeof(short);
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)periods.ts;
sqlstm.sqhstl[1] = (unsigned int )20;
sqlstm.sqhsts[1] = ( int )20;
sqlstm.sqindv[1] = ( void *)periods_Ind.ts_Ind;
sqlstm.sqinds[1] = ( int )sizeof(short);
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)periods.te;
sqlstm.sqhstl[2] = (unsigned int )20;
sqlstm.sqhsts[2] = ( int )20;
sqlstm.sqindv[2] = ( void *)periods_Ind.te_Ind;
sqlstm.sqinds[2] = ( int )sizeof(short);
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)periods.rid;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( void *)periods_Ind.rid_Ind;
sqlstm.sqinds[3] = ( int )sizeof(short);
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)periods.rname;
sqlstm.sqhstl[4] = (unsigned int )83;
sqlstm.sqhsts[4] = ( int )84;
sqlstm.sqindv[4] = ( void *)periods_Ind.rname_Ind;
sqlstm.sqinds[4] = ( int )sizeof(short);
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqharc[4] = (unsigned int *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
for (Int_t i=0;i<nLast;i++) {
HOraSlowPeriod* p=new HOraSlowPeriod();
periods.ts[i][19]='\0';
periods.te[i][19]='\0';
p->setPeriodId(periods.id[i]);
p->setStartTime((Char_t*)(periods.ts[i]));
p->setEndTime((Char_t*)(periods.te[i]));
if (periods_Ind.rid_Ind[i]!=-1) p->setRunId(periods.rid[i]);
if (periods_Ind.rname_Ind[i]!=-1) {
periods.rname[i].arr[periods.rname[i].len]='\0';
p->setFilename((Char_t*)(periods.rname[i].arr));
}
data->AddAt(p,nTot);
nTot++;
}
} while (nLast==NMAX_SCS&&nTot<nData);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 6;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )198;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
cout<<"*** Run periods read: "<<nTot<<endl;
if (nTot==nData) return kTRUE;
else {
Error("readPeriods","Too few data read");
return kFALSE;
}
errorfound:
pConn->showSqlError("readPeriods");
return kFALSE;
}
Int_t HOraSlowReader::readChannelId(HOraSlowChannel* pChannel) {
if (!pConn->isOpen()||!pChannel) return kFALSE;
char* chname;
int chid;
struct { unsigned short len; unsigned char arr[3]; } chtype;
chname=(Char_t*)pChannel->GetName();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 6;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select pv_id ,pv_type into :b0,:b1 from hades_slow.hscs_ch\
annel where pv_name=:b2";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )213;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&chid;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&chtype;
sqlstm.sqhstl[1] = (unsigned int )5;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)chname;
sqlstm.sqhstl[2] = (unsigned int )0;
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
pChannel->setChannelId(chid);
chtype.arr[chtype.len]='\0';
pChannel->setChannelType((Char_t*)chtype.arr);
return chid;
notfound:
Warning("readChannelId","Channel %s not found",chname);
return -1;
errorfound:
pConn->showSqlError("readChannelId");
return -1;
}
Bool_t HOraSlowReader::readChannelRunSum(HOraSlowPartition* partition,
HOraSlowChannel* pChannel) {
if (!pConn->isOpen()||!partition||!pChannel) return kFALSE;
if (strcmp(partition->GetName(),"online")==0) {
return readOnlineChannelRunSum(partition,pChannel);
}
TObjArray* periods=partition->getRunPeriods();
if (!periods) return kFALSE;
Int_t lastIndex=periods->GetLast();
if (lastIndex<0) return kFALSE;
Int_t channelId=pChannel->getChannelId();
if (channelId<0) {
channelId=readChannelId(pChannel);
}
if (channelId<=0) return kFALSE;
int chid;
int pmin;
int pmax;
struct {
int pid[NMAX_SCS];
double vmean[NMAX_SCS];
double vsigma[NMAX_SCS];
double vmin[NMAX_SCS];
double vmax[NMAX_SCS];
int nd[NMAX_SCS];
int vstat[NMAX_SCS];
int vmon[NMAX_SCS];
} runsum;
chid=channelId;
pmin=((HOraSlowPeriod*)(periods->At(0)))->getPeriodId();
pmax=((HOraSlowPeriod*)(periods->At(lastIndex)))->getPeriodId();
Int_t nData=lastIndex+1;
TObjArray* data=new TObjArray(nData);
Int_t nTot=0;
Int_t nLast=0;
Int_t periodId=0;
HOraSlowPeriod* period=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 6;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0006;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )240;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&chid;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&pmin;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&pmax;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )267;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)runsum.pid;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)runsum.vmean;
sqlstm.sqhstl[1] = (unsigned int )sizeof(double);
sqlstm.sqhsts[1] = ( int )sizeof(double);
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)runsum.vsigma;
sqlstm.sqhstl[2] = (unsigned int )sizeof(double);
sqlstm.sqhsts[2] = ( int )sizeof(double);
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)runsum.vmin;
sqlstm.sqhstl[3] = (unsigned int )sizeof(double);
sqlstm.sqhsts[3] = ( int )sizeof(double);
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)runsum.vmax;
sqlstm.sqhstl[4] = (unsigned int )sizeof(double);
sqlstm.sqhsts[4] = ( int )sizeof(double);
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqharc[4] = (unsigned int *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = ( void *)runsum.nd;
sqlstm.sqhstl[5] = (unsigned int )sizeof(int);
sqlstm.sqhsts[5] = ( int )sizeof(int);
sqlstm.sqindv[5] = ( void *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned int )0;
sqlstm.sqharc[5] = (unsigned int *)0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = ( void *)runsum.vstat;
sqlstm.sqhstl[6] = (unsigned int )sizeof(int);
sqlstm.sqhsts[6] = ( int )sizeof(int);
sqlstm.sqindv[6] = ( void *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned int )0;
sqlstm.sqharc[6] = (unsigned int *)0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = ( void *)runsum.vmon;
sqlstm.sqhstl[7] = (unsigned int )sizeof(int);
sqlstm.sqhsts[7] = ( int )sizeof(int);
sqlstm.sqindv[7] = ( void *)0;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned int )0;
sqlstm.sqharc[7] = (unsigned int *)0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
for (Int_t i=0;i<nLast;i++) {
HOraSlowChanRunSum* p=new HOraSlowChanRunSum();
period=(HOraSlowPeriod*)(periods->At(nTot));
periodId=period->getPeriodId();
if (periodId==runsum.pid[i]) {
p->setPeriod(period);
p->fill(runsum.pid[i],runsum.vmean[i],runsum.vsigma[i],
runsum.vmin[i],runsum.vmax[i],runsum.nd[i],
runsum.vstat[i],runsum.vmon[i]);
} else {
p->fill(periodId,-999.,0.,-999.,-999.,0,1,-1);
}
data->AddAt(p,nTot);
nTot++;
}
} while (nLast==NMAX_SCS&&nTot<(lastIndex+1));
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )314;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
pChannel->setRunSumData(data);
if (nTot==nData) {
cout<<"Run summary data for channel "<<pChannel->GetName()<<" read from Oracle\n";
return kTRUE;
} else {
Error("readChannelRunSum","Too few data read");
return kFALSE;
}
errorfound:
pConn->showSqlError("readChannelRunSum");
return kFALSE;
}
Bool_t HOraSlowReader::readChannelMetaData(HOraSlowPartition* partition,
HOraSlowChannel* pChannel) {
if (!pConn->isOpen()||!partition||!pChannel) return kFALSE;
TString start=partition->getStartTime();
TString end=partition->getEndTime();
if (start.IsNull()||end.IsNull()) {
readPartition(partition);
start=partition->getStartTime();
end=partition->getEndTime();
}
if (start.IsNull()||end.IsNull()) return kFALSE;
if (strcmp(partition->GetName(),"online")==0) return readOnlineChannelMetaData(pChannel);
Int_t channelId=pChannel->getChannelId();
if (channelId<0) {
channelId=readChannelId(pChannel);
}
if (channelId<=0) return kFALSE;
int chid;
char* pstart;
char* pend;
struct {
double lgraph[NMAX_SCS];
double hgraph[NMAX_SCS];
double lwarn[NMAX_SCS];
double hwarn[NMAX_SCS];
double lalarm[NMAX_SCS];
double halarm[NMAX_SCS];
struct { unsigned short len; unsigned char arr[22]; } un[2000];
int prec[NMAX_SCS];
char ts[NMAX_SCS][20];
} meta;
struct {
short lgraph_Ind[NMAX_SCS];
short hgraph_Ind[NMAX_SCS];
short lwarn_Ind[NMAX_SCS];
short hwarn_Ind[NMAX_SCS];
short lalarm_Ind[NMAX_SCS];
short halarm_Ind[NMAX_SCS];
short un_Ind[NMAX_SCS];
short prec_Ind[NMAX_SCS];
short ts_Ind[NMAX_SCS];
} meta_Ind;
chid=channelId;
pstart=(Char_t*)start.Data();
pend=(Char_t*)end.Data();
Int_t nData=0;
Int_t maxPrec=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select lgraph_limit ,hgraph_limit ,lwarn_limit ,hwarn_limit\
,lalarm_limit ,halarm_limit ,units ,precision ,TO_CHAR(md_starttime,'yyyy-mm-\
dd hh24:mi:ss') into :s1:s2 ,:s3:s4 ,:s5:s6 ,:s7:s8 ,:s9:s10 ,:s11:s12 ,:s13:s\
14 ,:s15:s16 ,:s17:s18 from hades_slow.arch_meta where (pv_id=:b2 and ((md_s\
tarttime<TO_DATE(:b3,'yyyy-mm-dd hh24:mi:ss') and (md_endtime is null or md_e\
ndtime>TO_DATE(:b3,'yyyy-mm-dd hh24:mi:ss'))) or md_starttime between TO_DATE(\
:b3,'yyyy-mm-dd hh24:mi:ss') and TO_DATE(:b6,'yyyy-mm-dd hh24:mi:ss'))) order \
by md_starttime ";
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )329;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)meta.lgraph;
sqlstm.sqhstl[0] = (unsigned int )sizeof(double);
sqlstm.sqhsts[0] = ( int )sizeof(double);
sqlstm.sqindv[0] = ( void *)meta_Ind.lgraph_Ind;
sqlstm.sqinds[0] = ( int )sizeof(short);
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)meta.hgraph;
sqlstm.sqhstl[1] = (unsigned int )sizeof(double);
sqlstm.sqhsts[1] = ( int )sizeof(double);
sqlstm.sqindv[1] = ( void *)meta_Ind.hgraph_Ind;
sqlstm.sqinds[1] = ( int )sizeof(short);
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)meta.lwarn;
sqlstm.sqhstl[2] = (unsigned int )sizeof(double);
sqlstm.sqhsts[2] = ( int )sizeof(double);
sqlstm.sqindv[2] = ( void *)meta_Ind.lwarn_Ind;
sqlstm.sqinds[2] = ( int )sizeof(short);
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)meta.hwarn;
sqlstm.sqhstl[3] = (unsigned int )sizeof(double);
sqlstm.sqhsts[3] = ( int )sizeof(double);
sqlstm.sqindv[3] = ( void *)meta_Ind.hwarn_Ind;
sqlstm.sqinds[3] = ( int )sizeof(short);
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)meta.lalarm;
sqlstm.sqhstl[4] = (unsigned int )sizeof(double);
sqlstm.sqhsts[4] = ( int )sizeof(double);
sqlstm.sqindv[4] = ( void *)meta_Ind.lalarm_Ind;
sqlstm.sqinds[4] = ( int )sizeof(short);
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqharc[4] = (unsigned int *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = ( void *)meta.halarm;
sqlstm.sqhstl[5] = (unsigned int )sizeof(double);
sqlstm.sqhsts[5] = ( int )sizeof(double);
sqlstm.sqindv[5] = ( void *)meta_Ind.halarm_Ind;
sqlstm.sqinds[5] = ( int )sizeof(short);
sqlstm.sqharm[5] = (unsigned int )0;
sqlstm.sqharc[5] = (unsigned int *)0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = ( void *)meta.un;
sqlstm.sqhstl[6] = (unsigned int )23;
sqlstm.sqhsts[6] = ( int )24;
sqlstm.sqindv[6] = ( void *)meta_Ind.un_Ind;
sqlstm.sqinds[6] = ( int )sizeof(short);
sqlstm.sqharm[6] = (unsigned int )0;
sqlstm.sqharc[6] = (unsigned int *)0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = ( void *)meta.prec;
sqlstm.sqhstl[7] = (unsigned int )sizeof(int);
sqlstm.sqhsts[7] = ( int )sizeof(int);
sqlstm.sqindv[7] = ( void *)meta_Ind.prec_Ind;
sqlstm.sqinds[7] = ( int )sizeof(short);
sqlstm.sqharm[7] = (unsigned int )0;
sqlstm.sqharc[7] = (unsigned int *)0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqhstv[8] = ( void *)meta.ts;
sqlstm.sqhstl[8] = (unsigned int )20;
sqlstm.sqhsts[8] = ( int )20;
sqlstm.sqindv[8] = ( void *)meta_Ind.ts_Ind;
sqlstm.sqinds[8] = ( int )sizeof(short);
sqlstm.sqharm[8] = (unsigned int )0;
sqlstm.sqharc[8] = (unsigned int *)0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = ( void *)&chid;
sqlstm.sqhstl[9] = (unsigned int )sizeof(int);
sqlstm.sqhsts[9] = ( int )sizeof(int);
sqlstm.sqindv[9] = ( void *)0;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned int )0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqhstv[10] = ( void *)pstart;
sqlstm.sqhstl[10] = (unsigned int )0;
sqlstm.sqhsts[10] = ( int )0;
sqlstm.sqindv[10] = ( void *)0;
sqlstm.sqinds[10] = ( int )0;
sqlstm.sqharm[10] = (unsigned int )0;
sqlstm.sqadto[10] = (unsigned short )0;
sqlstm.sqtdso[10] = (unsigned short )0;
sqlstm.sqhstv[11] = ( void *)pstart;
sqlstm.sqhstl[11] = (unsigned int )0;
sqlstm.sqhsts[11] = ( int )0;
sqlstm.sqindv[11] = ( void *)0;
sqlstm.sqinds[11] = ( int )0;
sqlstm.sqharm[11] = (unsigned int )0;
sqlstm.sqadto[11] = (unsigned short )0;
sqlstm.sqtdso[11] = (unsigned short )0;
sqlstm.sqhstv[12] = ( void *)pstart;
sqlstm.sqhstl[12] = (unsigned int )0;
sqlstm.sqhsts[12] = ( int )0;
sqlstm.sqindv[12] = ( void *)0;
sqlstm.sqinds[12] = ( int )0;
sqlstm.sqharm[12] = (unsigned int )0;
sqlstm.sqadto[12] = (unsigned short )0;
sqlstm.sqtdso[12] = (unsigned short )0;
sqlstm.sqhstv[13] = ( void *)pend;
sqlstm.sqhstl[13] = (unsigned int )0;
sqlstm.sqhsts[13] = ( int )0;
sqlstm.sqindv[13] = ( void *)0;
sqlstm.sqinds[13] = ( int )0;
sqlstm.sqharm[13] = (unsigned int )0;
sqlstm.sqadto[13] = (unsigned short )0;
sqlstm.sqtdso[13] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nData=sqlca.sqlerrd[2];
if (nData>0) {
TObjArray* data=new TObjArray(nData);
for (Int_t i=0;i<sqlca.sqlerrd[2];i++) {
HOraSlowChanMeta* p=new HOraSlowChanMeta();
if (meta_Ind.lgraph_Ind[i]!=-1) p->setLowGraphLimit(meta.lgraph[i]);
if (meta_Ind.hgraph_Ind[i]!=-1) p->setHighGraphLimit(meta.hgraph[i]);
if (meta_Ind.lwarn_Ind[i]!=-1) p->setLowWarnLimit(meta.lwarn[i]);
if (meta_Ind.hwarn_Ind[i]!=-1) p->setHighWarnLimit(meta.hwarn[i]);
if (meta_Ind.lalarm_Ind[i]!=-1) p->setLowAlarmLimit(meta.lalarm[i]);
if (meta_Ind.halarm_Ind[i]!=-1) p->setHighAlarmLimit(meta.halarm[i]);
if (meta_Ind.un_Ind[i]!=-1) {
meta.un[i].arr[meta.un[i].len]='\0';
p->setUnits((Char_t*)meta.un[i].arr);
}
if (meta_Ind.prec_Ind[i]!=-1) {
p->setPrecision(meta.prec[i]);
if (meta.prec[i]>maxPrec) maxPrec=meta.prec[i];
}
if (meta_Ind.ts_Ind[i]!=-1) {
meta.ts[i][19]='\0';
p->setStartTime((Char_t*)meta.ts[i]);
}
data->AddAt(p,i);
}
pChannel->setMetaData(data);
pChannel->setMaxPrecision(maxPrec);
cout<<"Meta data for channel "<<pChannel->GetName()<<" read from Oracle\n";
return kTRUE;
}
Error("readChannelMetaData","No meta data found for channel %s",pChannel->GetName());
return kTRUE;
errorfound:
pConn->showSqlError("readChannelMetaData");
return kFALSE;
}
Bool_t HOraSlowReader::readRawData(HOraSlowChannel* channel,
const Char_t* start, const Char_t* end) {
if (!pConn->isOpen()||channel==0||start==0||end==0) return kFALSE;
Int_t channelId=channel->getChannelId();
if (channelId<0) {
channelId=readChannelId(channel);
}
if (channelId<=0) return kFALSE;
TString channelType=channel->getChannelType();
Int_t nData=0;
if (channelType.CompareTo("F")==0) {
nData=readRawF(channel,start,end);
} else if (channelType.CompareTo("I")==0) {
nData=readRawI(channel,start,end);
} else {
Error("readRawData","No interface for channel type %s",channelType.Data());
return kFALSE;
}
if (nData>0) {
cout<<"Number of raw data: "<<nData<<'\n';
return kTRUE;
} else if (nData==0) {
Error("readRawData","No raw data found!");
}
return kFALSE;
}
Int_t HOraSlowReader::readRawF(HOraSlowChannel* channel,
const Char_t* start, const Char_t* end) {
int chid;
char* tstart;
char* tend;
struct {
char ti[NMAX_SCS][20];
int na[NMAX_SCS];
double va[NMAX_SCS];
int se[NMAX_SCS];
} rawdata;
chid=channel->getChannelId();
tstart=(Char_t*)start;
tend=(Char_t*)end;
TObjArray* data=0;
Int_t nTot=0;
Int_t nLast=0;
TString lastTimestamp;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0008;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )400;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)tstart;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)tend;
sqlstm.sqhstl[1] = (unsigned int )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&chid;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )427;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)rawdata.ti;
sqlstm.sqhstl[0] = (unsigned int )20;
sqlstm.sqhsts[0] = ( int )20;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)rawdata.na;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)rawdata.va;
sqlstm.sqhstl[2] = (unsigned int )sizeof(double);
sqlstm.sqhsts[2] = ( int )sizeof(double);
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)rawdata.se;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
if (data==0) data=new TObjArray(nLast);
else data->Expand(sqlca.sqlerrd[2]);
for (Int_t i=0;i<nLast;i++) {
HOraSlowChanRaw* p=new HOraSlowChanRaw();
rawdata.ti[i][19]='\0';
p->fill(rawdata.ti[i],rawdata.na[i],rawdata.va[i],rawdata.se[i]);
data->AddAt(p,nTot);
nTot++;
}
lastTimestamp=rawdata.ti[nLast-1];
}
} while (nLast==NMAX_SCS&&nTot<=20000);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )458;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
if (nTot>=20000) channel->setRawData(data,start,lastTimestamp.Data());
else channel->setRawData(data,start,end);
return nTot;
errorfound:
pConn->showSqlError("readRawF");
return -1;
}
Int_t HOraSlowReader::readRawI(HOraSlowChannel* channel,
const Char_t* start, const Char_t* end) {
int chid;
char* tstart;
char* tend;
struct {
char ti[NMAX_SCS][20];
int na[NMAX_SCS];
int va[NMAX_SCS];
int se[NMAX_SCS];
} rawdata;
chid=channel->getChannelId();
tstart=(Char_t*)start;
tend=(Char_t*)end;
TObjArray* data=0;
Int_t nTot=0;
Int_t nLast=0;
TString lastTimestamp;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0009;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )473;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)tstart;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)tend;
sqlstm.sqhstl[1] = (unsigned int )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&chid;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )500;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)rawdata.ti;
sqlstm.sqhstl[0] = (unsigned int )20;
sqlstm.sqhsts[0] = ( int )20;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)rawdata.na;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)rawdata.va;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )sizeof(int);
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)rawdata.se;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
if (data==0) data=new TObjArray(nLast);
else data->Expand(sqlca.sqlerrd[2]);
for (Int_t i=0;i<nLast;i++) {
HOraSlowChanRaw* p=new HOraSlowChanRaw();
rawdata.ti[i][19]='\0';
p->fill(rawdata.ti[i],rawdata.na[i],rawdata.va[i],rawdata.se[i]);
data->AddAt(p,nTot);
nTot++;
}
lastTimestamp=rawdata.ti[nLast-1];
}
} while (nLast==NMAX_SCS&&nTot<=20000);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )531;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
if (nTot>=20000) channel->setRawData(data,start,lastTimestamp.Data());
else channel->setRawData(data,start,end);
return nTot;
errorfound:
pConn->showSqlError("readRawI");
return -1;
}
Bool_t HOraSlowReader::readOnlineArchiverRates(HOraSlowPartition* partition) {
char* tstart;
char* tend;
struct {
char stime[NMAX_SCS][20];
int nminutes[NMAX_SCS];
int nentries[NMAX_SCS];
} rates;
tstart=(Char_t*)partition->getStartTime();
tend=(Char_t*)partition->getEndTime();
TObjArray* data=0;
Int_t nTot=0;
Int_t nLast=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0010;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )546;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)tstart;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)tend;
sqlstm.sqhstl[1] = (unsigned int )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )569;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)rates.stime;
sqlstm.sqhstl[0] = (unsigned int )20;
sqlstm.sqhsts[0] = ( int )20;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)rates.nminutes;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)rates.nentries;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )sizeof(int);
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
if (data==0) data=new TObjArray(nLast);
else data->Expand(sqlca.sqlerrd[2]);
for (Int_t i=0;i<nLast;i++) {
rates.stime[i][19]='\0';
Int_t v=(Int_t)(rates.nentries[i]/rates.nminutes[i]);
HOraSlowArchRateObj* p=new HOraSlowArchRateObj(rates.stime[i],v);
data->AddAt(p,nTot);
nTot++;
}
}
} while (nLast==NMAX_SCS&&nTot<=100000);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )596;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
partition->setRates(data);
return kTRUE;
errorfound:
pConn->showSqlError("readOnlineArchiverRates");
return kFALSE;
}
Bool_t HOraSlowReader::readOnlineRunPeriods(HOraSlowPartition* partition) {
TString start=partition->getStartTime();
TString end=partition->getEndTime();
cout<<partition->getStartTime()<<" "<<partition->getEndTime()<<endl;
char* pstart;
char* pend;
int nruns;
int minid;
int maxid;
short nruns_Ind;
short minid_Ind;
short maxid_Ind;
pstart=(Char_t*)start.Data();
pend=(Char_t*)end.Data();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select count(1) ,min(id) ,max(id) into :b0:b1,:b2:b3,:b4:b5\
from hades_scs.hscs_run_period where starttime between TO_DATE(:b6,'yyyy-mm-\
dd hh24:mi:ss') and TO_DATE(:b7,'yyyy-mm-dd hh24:mi:ss')";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )611;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&nruns;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)&nruns_Ind;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&minid;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)&minid_Ind;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&maxid;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)&maxid_Ind;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)pstart;
sqlstm.sqhstl[3] = (unsigned int )0;
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)pend;
sqlstm.sqhstl[4] = (unsigned int )0;
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
if (nruns_Ind!=-1 && nruns>0) {
TObjArray* data=partition->setNumPeriods(nruns);
return readOnlinePeriods(data,nruns,minid,maxid);
}
notfound:
Error("readOnlineRunPeriods","No run summary for online partition or specified time range");
return kFALSE;
errorfound:
pConn->showSqlError("readOnlineRunPeriods");
return kFALSE;
}
Bool_t HOraSlowReader::readOnlinePeriods(TObjArray* data,Int_t nData,
Int_t minPeriodId,Int_t maxPeriodId) {
if (!data) return kFALSE;
int minid;
int maxid;
struct {
int id[NMAX_SCS];
char ts[NMAX_SCS][20];
char te[NMAX_SCS][20];
int rid[NMAX_SCS];
struct { unsigned short len; unsigned char arr[82]; } rname[2000];
} periods;
struct {
short id_Ind[NMAX_SCS];
short ts_Ind[NMAX_SCS];
short te_Ind[NMAX_SCS];
short rid_Ind[NMAX_SCS];
short rname_Ind[NMAX_SCS];
} periods_Ind;
minid=minPeriodId;
maxid=maxPeriodId;
Int_t nTot=0;
Int_t nLast=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0012;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )646;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&minid;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&maxid;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )669;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)periods.id;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( void *)periods_Ind.id_Ind;
sqlstm.sqinds[0] = ( int )sizeof(short);
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)periods.ts;
sqlstm.sqhstl[1] = (unsigned int )20;
sqlstm.sqhsts[1] = ( int )20;
sqlstm.sqindv[1] = ( void *)periods_Ind.ts_Ind;
sqlstm.sqinds[1] = ( int )sizeof(short);
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)periods.te;
sqlstm.sqhstl[2] = (unsigned int )20;
sqlstm.sqhsts[2] = ( int )20;
sqlstm.sqindv[2] = ( void *)periods_Ind.te_Ind;
sqlstm.sqinds[2] = ( int )sizeof(short);
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)periods.rid;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( void *)periods_Ind.rid_Ind;
sqlstm.sqinds[3] = ( int )sizeof(short);
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)periods.rname;
sqlstm.sqhstl[4] = (unsigned int )83;
sqlstm.sqhsts[4] = ( int )84;
sqlstm.sqindv[4] = ( void *)periods_Ind.rname_Ind;
sqlstm.sqinds[4] = ( int )sizeof(short);
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqharc[4] = (unsigned int *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
for (Int_t i=0;i<nLast;i++) {
HOraSlowPeriod* p=new HOraSlowPeriod();
periods.ts[i][19]='\0';
periods.te[i][19]='\0';
p->setPeriodId(periods.id[i]);
p->setStartTime((Char_t*)(periods.ts[i]));
p->setEndTime((Char_t*)(periods.te[i]));
if (periods_Ind.rid_Ind[i]!=-1) p->setRunId(periods.rid[i]);
if (periods_Ind.rname_Ind[i]!=-1) {
periods.rname[i].arr[periods.rname[i].len]='\0';
p->setFilename((Char_t*)(periods.rname[i].arr));
}
data->AddAt(p,nTot);
nTot++;
}
} while (nLast==NMAX_SCS&&nTot<nData);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )704;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
cout<<"*** Run periods read: "<<nTot<<endl;
if (nTot==nData) return kTRUE;
else {
Error("readOnlinePeriods","Too few data read");
return kFALSE;
}
errorfound:
pConn->showSqlError("readOnlinePeriods");
return kFALSE;
}
Bool_t HOraSlowReader::readOnlineChannelRunSum(HOraSlowPartition* partition,
HOraSlowChannel* pChannel) {
TObjArray* periods=partition->getRunPeriods();
if (!periods) return kFALSE;
Int_t lastIndex=periods->GetLast();
if (lastIndex<0) return kFALSE;
Int_t channelId=pChannel->getChannelId();
if (channelId<0) {
channelId=readOnlineChannelId(pChannel);
}
if (channelId<=0) return kFALSE;
int chid;
int pmin;
int pmax;
struct {
int pid[NMAX_SCS];
double vmean[NMAX_SCS];
double vsigma[NMAX_SCS];
double vmin[NMAX_SCS];
double vmax[NMAX_SCS];
int nd[NMAX_SCS];
int vstat[NMAX_SCS];
int vmon[NMAX_SCS];
} runsum;
chid=channelId;
pmin=((HOraSlowPeriod*)(periods->At(0)))->getPeriodId();
pmax=((HOraSlowPeriod*)(periods->At(lastIndex)))->getPeriodId();
Int_t nData=lastIndex+1;
TObjArray* data=new TObjArray(nData);
Int_t nTot=0;
Int_t nLast=0;
Int_t periodId=0;
HOraSlowPeriod* period=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0013;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )719;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&chid;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&pmin;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&pmax;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )746;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)runsum.pid;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)runsum.vmean;
sqlstm.sqhstl[1] = (unsigned int )sizeof(double);
sqlstm.sqhsts[1] = ( int )sizeof(double);
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)runsum.vsigma;
sqlstm.sqhstl[2] = (unsigned int )sizeof(double);
sqlstm.sqhsts[2] = ( int )sizeof(double);
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)runsum.vmin;
sqlstm.sqhstl[3] = (unsigned int )sizeof(double);
sqlstm.sqhsts[3] = ( int )sizeof(double);
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)runsum.vmax;
sqlstm.sqhstl[4] = (unsigned int )sizeof(double);
sqlstm.sqhsts[4] = ( int )sizeof(double);
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqharc[4] = (unsigned int *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = ( void *)runsum.nd;
sqlstm.sqhstl[5] = (unsigned int )sizeof(int);
sqlstm.sqhsts[5] = ( int )sizeof(int);
sqlstm.sqindv[5] = ( void *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned int )0;
sqlstm.sqharc[5] = (unsigned int *)0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = ( void *)runsum.vstat;
sqlstm.sqhstl[6] = (unsigned int )sizeof(int);
sqlstm.sqhsts[6] = ( int )sizeof(int);
sqlstm.sqindv[6] = ( void *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned int )0;
sqlstm.sqharc[6] = (unsigned int *)0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = ( void *)runsum.vmon;
sqlstm.sqhstl[7] = (unsigned int )sizeof(int);
sqlstm.sqhsts[7] = ( int )sizeof(int);
sqlstm.sqindv[7] = ( void *)0;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned int )0;
sqlstm.sqharc[7] = (unsigned int *)0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
for (Int_t i=0;i<nLast;i++) {
do {
HOraSlowChanRunSum* p=new HOraSlowChanRunSum();
period=(HOraSlowPeriod*)(periods->At(nTot));
periodId=period->getPeriodId();
if (periodId==runsum.pid[i]) {
p->setPeriod(period);
p->fill(runsum.pid[i],runsum.vmean[i],runsum.vsigma[i],
runsum.vmin[i],runsum.vmax[i],runsum.nd[i],
runsum.vstat[i],runsum.vmon[i]);
} else {
p->fill(periodId,-999.,0.,-999.,-999.,0,1,-1);
}
data->AddAt(p,nTot);
nTot++;
} while (periodId!=runsum.pid[i]&&nTot<(lastIndex+1));
}
} while (nLast==NMAX_SCS&&nTot<(lastIndex+1));
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )793;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
pChannel->setRunSumData(data);
if (nTot==nData) {
cout<<"Run summary data for channel "<<pChannel->GetName()<<" read from Oracle\n";
return kTRUE;
} else {
Error("readOnlineChannelRunSum","Too few data read");
return kFALSE;
}
errorfound:
pConn->showSqlError("readOnlineChannelRunSum");
return kFALSE;
}
Bool_t HOraSlowReader::readOnlineChannelMetaData(HOraSlowChannel* pChannel) {
if (!pConn->isOpen()||!pChannel) return kFALSE;
Int_t channelId=pChannel->getChannelId();
if (channelId<0) {
channelId=readOnlineChannelId(pChannel);
}
if (channelId<=0) return kFALSE;
int chid;
struct {
double lgraph[NMAX_SCS];
double hgraph[NMAX_SCS];
double lwarn[NMAX_SCS];
double hwarn[NMAX_SCS];
double lalarm[NMAX_SCS];
double halarm[NMAX_SCS];
struct { unsigned short len; unsigned char arr[22]; } un[2000];
int prec[NMAX_SCS];
char ts[NMAX_SCS][20];
} meta;
struct {
short lgraph_Ind[NMAX_SCS];
short hgraph_Ind[NMAX_SCS];
short lwarn_Ind[NMAX_SCS];
short hwarn_Ind[NMAX_SCS];
short lalarm_Ind[NMAX_SCS];
short halarm_Ind[NMAX_SCS];
short un_Ind[NMAX_SCS];
short prec_Ind[NMAX_SCS];
short ts_Ind[NMAX_SCS];
} meta_Ind;
chid=channelId;
Int_t nData=0;
Int_t maxPrec=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select lgraph_limit ,hgraph_limit ,lwarn_limit ,hwarn_limit\
,lalarm_limit ,halarm_limit ,units ,precision ,TO_CHAR(md_starttime,'yyyy-mm-\
dd hh24:mi:ss') into :s1:s2 ,:s3:s4 ,:s5:s6 ,:s7:s8 ,:s9:s10 ,:s11:s12 ,:s13:s\
14 ,:s15:s16 ,:s17:s18 from hades_scs.arch_meta where pv_id=:b2 order by md_\
starttime ";
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )808;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)meta.lgraph;
sqlstm.sqhstl[0] = (unsigned int )sizeof(double);
sqlstm.sqhsts[0] = ( int )sizeof(double);
sqlstm.sqindv[0] = ( void *)meta_Ind.lgraph_Ind;
sqlstm.sqinds[0] = ( int )sizeof(short);
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)meta.hgraph;
sqlstm.sqhstl[1] = (unsigned int )sizeof(double);
sqlstm.sqhsts[1] = ( int )sizeof(double);
sqlstm.sqindv[1] = ( void *)meta_Ind.hgraph_Ind;
sqlstm.sqinds[1] = ( int )sizeof(short);
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)meta.lwarn;
sqlstm.sqhstl[2] = (unsigned int )sizeof(double);
sqlstm.sqhsts[2] = ( int )sizeof(double);
sqlstm.sqindv[2] = ( void *)meta_Ind.lwarn_Ind;
sqlstm.sqinds[2] = ( int )sizeof(short);
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)meta.hwarn;
sqlstm.sqhstl[3] = (unsigned int )sizeof(double);
sqlstm.sqhsts[3] = ( int )sizeof(double);
sqlstm.sqindv[3] = ( void *)meta_Ind.hwarn_Ind;
sqlstm.sqinds[3] = ( int )sizeof(short);
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)meta.lalarm;
sqlstm.sqhstl[4] = (unsigned int )sizeof(double);
sqlstm.sqhsts[4] = ( int )sizeof(double);
sqlstm.sqindv[4] = ( void *)meta_Ind.lalarm_Ind;
sqlstm.sqinds[4] = ( int )sizeof(short);
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqharc[4] = (unsigned int *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = ( void *)meta.halarm;
sqlstm.sqhstl[5] = (unsigned int )sizeof(double);
sqlstm.sqhsts[5] = ( int )sizeof(double);
sqlstm.sqindv[5] = ( void *)meta_Ind.halarm_Ind;
sqlstm.sqinds[5] = ( int )sizeof(short);
sqlstm.sqharm[5] = (unsigned int )0;
sqlstm.sqharc[5] = (unsigned int *)0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = ( void *)meta.un;
sqlstm.sqhstl[6] = (unsigned int )23;
sqlstm.sqhsts[6] = ( int )24;
sqlstm.sqindv[6] = ( void *)meta_Ind.un_Ind;
sqlstm.sqinds[6] = ( int )sizeof(short);
sqlstm.sqharm[6] = (unsigned int )0;
sqlstm.sqharc[6] = (unsigned int *)0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = ( void *)meta.prec;
sqlstm.sqhstl[7] = (unsigned int )sizeof(int);
sqlstm.sqhsts[7] = ( int )sizeof(int);
sqlstm.sqindv[7] = ( void *)meta_Ind.prec_Ind;
sqlstm.sqinds[7] = ( int )sizeof(short);
sqlstm.sqharm[7] = (unsigned int )0;
sqlstm.sqharc[7] = (unsigned int *)0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqhstv[8] = ( void *)meta.ts;
sqlstm.sqhstl[8] = (unsigned int )20;
sqlstm.sqhsts[8] = ( int )20;
sqlstm.sqindv[8] = ( void *)meta_Ind.ts_Ind;
sqlstm.sqinds[8] = ( int )sizeof(short);
sqlstm.sqharm[8] = (unsigned int )0;
sqlstm.sqharc[8] = (unsigned int *)0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = ( void *)&chid;
sqlstm.sqhstl[9] = (unsigned int )sizeof(int);
sqlstm.sqhsts[9] = ( int )sizeof(int);
sqlstm.sqindv[9] = ( void *)0;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned int )0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nData=sqlca.sqlerrd[2];
if (nData>0) {
TObjArray* data=new TObjArray(nData);
for (Int_t i=0;i<sqlca.sqlerrd[2];i++) {
HOraSlowChanMeta* p=new HOraSlowChanMeta();
if (meta_Ind.lgraph_Ind[i]!=-1) p->setLowGraphLimit(meta.lgraph[i]);
if (meta_Ind.hgraph_Ind[i]!=-1) p->setHighGraphLimit(meta.hgraph[i]);
if (meta_Ind.lwarn_Ind[i]!=-1) p->setLowWarnLimit(meta.lwarn[i]);
if (meta_Ind.hwarn_Ind[i]!=-1) p->setHighWarnLimit(meta.hwarn[i]);
if (meta_Ind.lalarm_Ind[i]!=-1) p->setLowAlarmLimit(meta.lalarm[i]);
if (meta_Ind.halarm_Ind[i]!=-1) p->setHighAlarmLimit(meta.halarm[i]);
if (meta_Ind.un_Ind[i]!=-1) {
meta.un[i].arr[meta.un[i].len]='\0';
p->setUnits((Char_t*)meta.un[i].arr);
}
if (meta_Ind.prec_Ind[i]!=-1) {
p->setPrecision(meta.prec[i]);
if (meta.prec[i]>maxPrec) maxPrec=meta.prec[i];
}
if (meta_Ind.ts_Ind[i]!=-1) {
meta.ts[i][19]='\0';
p->setStartTime((Char_t*)meta.ts[i]);
}
data->AddAt(p,i);
}
pChannel->setMetaData(data);
pChannel->setMaxPrecision(maxPrec);
cout<<"Meta data for channel "<<pChannel->GetName()<<" read from Oracle\n";
return kTRUE;
}
Error("readOnlineChannelMetaData","No meta data found for channel %s",pChannel->GetName());
return kTRUE;
errorfound:
pConn->showSqlError("readOnlineChannelMetaData");
return kFALSE;
}
Int_t HOraSlowReader::readOnlineChannelId(HOraSlowChannel* pChannel){
if (!pConn->isOpen()||!pChannel) return kFALSE;
char* chname;
int chid;
struct { unsigned short len; unsigned char arr[3]; } chtype;
chname=(Char_t*)pChannel->GetName();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select pv_id ,pv_type into :b0,:b1 from hades_scs.hscs_onl\
ine_channel where pv_name=:b2";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )863;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&chid;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&chtype;
sqlstm.sqhstl[1] = (unsigned int )5;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)chname;
sqlstm.sqhstl[2] = (unsigned int )0;
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
pChannel->setChannelId(chid);
chtype.arr[chtype.len]='\0';
pChannel->setChannelType((Char_t*)chtype.arr);
return chid;
notfound:
Warning("readChannelId","Channel %s not found",chname);
return -1;
errorfound:
pConn->showSqlError("readOnlineChannelId");
return -1;
}
Bool_t HOraSlowReader::readOnlineRawData(HOraSlowChannel* pChannel,
const Char_t* start, const Char_t* end) {
if (!pConn->isOpen()||pChannel==0||start==0||end==0) return kFALSE;
Int_t channelId=pChannel->getChannelId();
if (channelId<0) {
channelId=readOnlineChannelId(pChannel);
}
if (channelId<=0) return kFALSE;
TString channelType=pChannel->getChannelType();
Int_t nData=0;
if (channelType.CompareTo("F")==0) {
nData=readOnlineRawF(pChannel,start,end);
} else if (channelType.CompareTo("I")==0) {
nData=readOnlineRawI(pChannel,start,end);
} else {
Error("readOnlineRawData","No interface for channel type %s",channelType.Data());
return kFALSE;
}
if (nData>0) {
cout<<"Number of raw data: "<<nData<<'\n';
return kTRUE;
} else if (nData==0) {
Error("readOnlineRawData","No raw data found!");
}
return kFALSE;
}
Int_t HOraSlowReader::readOnlineRawF(HOraSlowChannel* pChannel,
const Char_t* start, const Char_t* end) {
int chid;
char* tstart;
char* tend;
struct {
char ti[NMAX_SCS][20];
int na[NMAX_SCS];
double va[NMAX_SCS];
int se[NMAX_SCS];
} rawdata;
chid=pChannel->getChannelId();
tstart=(Char_t*)start;
tend=(Char_t*)end;
TObjArray* data=0;
Int_t nTot=0;
Int_t nLast=0;
TString lastTimestamp;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0016;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )890;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)tstart;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)tend;
sqlstm.sqhstl[1] = (unsigned int )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&chid;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )917;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)rawdata.ti;
sqlstm.sqhstl[0] = (unsigned int )20;
sqlstm.sqhsts[0] = ( int )20;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)rawdata.na;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)rawdata.va;
sqlstm.sqhstl[2] = (unsigned int )sizeof(double);
sqlstm.sqhsts[2] = ( int )sizeof(double);
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)rawdata.se;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
if (data==0) data=new TObjArray(nLast);
else data->Expand(sqlca.sqlerrd[2]);
for (Int_t i=0;i<nLast;i++) {
HOraSlowChanRaw* p=new HOraSlowChanRaw();
rawdata.ti[i][19]='\0';
p->fill(rawdata.ti[i],rawdata.na[i],rawdata.va[i],rawdata.se[i]);
data->AddAt(p,nTot);
nTot++;
}
lastTimestamp=rawdata.ti[nLast-1];
}
} while (nLast==NMAX_SCS&&nTot<=20000);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )948;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
if (nTot>=20000) pChannel->setRawData(data,start,lastTimestamp.Data());
else pChannel->setRawData(data,start,end);
return nTot;
errorfound:
pConn->showSqlError("readOnlineRawF");
return -1;
}
Int_t HOraSlowReader::readOnlineRawI(HOraSlowChannel* pChannel,
const Char_t* start, const Char_t* end) {
int chid;
char* tstart;
char* tend;
struct {
char ti[NMAX_SCS][20];
int na[NMAX_SCS];
int va[NMAX_SCS];
int se[NMAX_SCS];
} rawdata;
chid=pChannel->getChannelId();
tstart=(Char_t*)start;
tend=(Char_t*)end;
TObjArray* data=0;
Int_t nTot=0;
Int_t nLast=0;
TString lastTimestamp;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0017;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )963;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)tstart;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)tend;
sqlstm.sqhstl[1] = (unsigned int )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&chid;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )990;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)rawdata.ti;
sqlstm.sqhstl[0] = (unsigned int )20;
sqlstm.sqhsts[0] = ( int )20;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)rawdata.na;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)rawdata.va;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )sizeof(int);
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)rawdata.se;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
if (data==0) data=new TObjArray(nLast);
else data->Expand(sqlca.sqlerrd[2]);
for (Int_t i=0;i<nLast;i++) {
HOraSlowChanRaw* p=new HOraSlowChanRaw();
rawdata.ti[i][19]='\0';
p->fill(rawdata.ti[i],rawdata.na[i],rawdata.va[i],rawdata.se[i]);
data->AddAt(p,nTot);
nTot++;
}
lastTimestamp=rawdata.ti[nLast-1];
}
} while (nLast==NMAX_SCS&&nTot<=20000);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )1021;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
if (nTot>=20000) pChannel->setRawData(data,start,lastTimestamp.Data());
else pChannel->setRawData(data,start,end);
return nTot;
errorfound:
pConn->showSqlError("readOnlineRawI");
return -1;
}
Last change: Sat May 22 13:05:52 2010
Last generated: 2010-05-22 13:05
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.