/* Result Sets Interface */ #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 */ /* Thread Safety */ typedef void* sql_context; typedef void* SQL_CONTEXT; /* Object support */ 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, }; /* Binding to PL/SQL Records */ struct sqltdss { unsigned int tdsvsn; unsigned short tdsnum; unsigned char* tdsval[1]; }; typedef struct sqltdss sqltdss; static struct sqltdss sqltds = { 1, 0, }; /* File name & Package Name */ struct sqlcxp { unsigned short fillen; char filnam[14]; }; static const struct sqlcxp sqlfpn = { 13, "FairOraInfo.pc" }; static unsigned int sqlctx = 567539; 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[4]; unsigned int sqhstl[4]; int sqhsts[4]; void* sqindv[4]; int sqinds[4]; unsigned int sqharm[4]; unsigned int* sqharc[4]; unsigned short sqadto[4]; unsigned short sqtdso[4]; } sqlstm = {12,4}; // Prototypes 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*); } // Forms Interface static const int IAPSUCC = 0; static const int IAPFAIL = 1403; static const int IAPFTL = 535; extern "C" { void sqliem(char*, int*); } static const char* sq0003 = "select ref_run_id ,ref_run_name ,TO_CHAR(run_start,'DD-MON-YYYY HH24:MI:SS')\ ,TO_CHAR(run_stop,'DD-MON-YYYY HH24:MI:SS') from cbm_ana.simul_subproject p \ ,cbm_ana.simul_ref_run rr where (((upper(project_id)=:b0 and p.subproject_id=r\ r.subproject_id) and run_start between TO_DATE(:b1,'DD-MON-YYYY HH24:MI:SS') a\ nd TO_DATE(:b2,'DD-MON-YYYY HH24:MI:SS')) and rr.generation=(select max(genera\ tion) from cbm_ana.simul_ref_run where subproject_id=p.subproject_id)) order \ by ref_run_id "; typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR; typedef struct { unsigned short len; unsigned char arr[1]; } varchar; /* cud (compilation unit data) array */ static const short sqlcud0[] = { 12,4130,1,0,0, 5,0,0,1,100,0,4,50,0,0,2,1,0,1,0,2,97,0,0,1,3,0,0, 28,0,0,2,82,0,4,72,0,0,2,1,0,1,0,2,3,0,0,1,97,0,0, 51,0,0,3,491,0,9,138,0,0,3,3,0,1,0,1,97,0,0,1,97,0,0,1,97,0,0, 78,0,0,3,0,0,13,140,0,0,4,0,0,1,0,2,3,0,0,2,9,0,0,2,97,0,0,2,97,0,0, 109,0,0,3,0,0,15,156,0,0,0,0,0,1,0, 124,0,0,4,108,0,4,188,0,0,2,1,0,1,0,2,97,0,0,1,3,0,0, 147,0,0,5,110,0,4,194,0,0,2,1,0,1,0,2,97,0,0,1,97,0,0, }; //*-- AUTHOR : Ilse Koenig //*-- Created : 26/11/2004 by I.Koenig ////////////////////////////////////////////////////////////////////////////// // FairOraInfo // // Class for additional information from database Oracle // (uses the Oracle C/C++ precompiler) // Functions in this class are not used by the analysis but can be called // by the user on the ROOT interpreter to get additional information from // Oracle tables. ////////////////////////////////////////////////////////////////////////////// using namespace std; #include "FairOraInfo.h" #include "FairOraConn.h" #include "FairOraRunInfo.h" #include #include #define SQLCA_STORAGE_CLASS extern #define ORACA_STORAGE_CLASS extern // Oracle communication area #include "oraca.h" // Include the SQL Communications Area #include "sqlca.h" ClassImp(FairOraInfo) #define NMAX_INFO 2000 void FairOraInfo::showSqlError(char* f) { // shows SQL error messages Error(f,"\n%s",sqlca.sqlerrm.sqlerrmc); } void FairOraInfo::showRunStart(Int_t run) { // prints the start date and time of given run /* EXEC SQL BEGIN DECLARE SECTION; */ int id; char runDate[21]; short runDate_Ind=-1; /* EXEC SQL END DECLARE SECTION; */ id=run; /* EXEC SQL WHENEVER SQLERROR DO showSqlError("showRunStart(Int_t)"); */ /* EXEC SQL WHENEVER NOT FOUND GOTO notfound; */ /* EXEC SQL SELECT TO_CHAR(run_start,'DD-MON-YYYY HH:MI:SS') INTO :runDate INDICATOR :runDate_Ind FROM cbm_ana.all_runs WHERE run_id = :id; */ { struct sqlexd sqlstm; sqlorat((void**)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 2; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "select TO_CHAR(run_start,'DD-MON-YYYY HH:MI:SS') into :b0:b\ 1 from cbm_ana.all_runs where run_id=: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*)runDate; sqlstm.sqhstl[0] = (unsigned int )21; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( void*)&runDate_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*)&id; 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 == 1403) { goto notfound; } if (sqlca.sqlcode < 0) { showSqlError("showRunStart(Int_t)"); } } if (runDate_Ind>=0) { cout<<"Run "<setRunId(refruns.rid[i]); refruns.ts[i][20]='\0'; p->setStartTime((char*)(refruns.ts[i])); if (refruns_Ind.te_Ind[i]!=-1) { refruns.te[i][20]='\0'; p->setEndTime((char*)(refruns.te[i])); } runsList->Add(p); nTot++; } } while (nLast==NMAX_INFO); /* EXEC SQL CLOSE refruns_cursor; */ { struct sqlexd sqlstm; sqlorat((void**)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 4; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )109; 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<<"*** Total number of runs: "<showSqlError("getListOfRuns"); if (runsList) { runsList->Delete(); delete runsList; runsList=0; } return 0; } Bool_t FairOraInfo::getRefRunStart(const char* startAt,TString& pTime) { // gets the run start for a simulation reference run TString s(startAt); /* EXEC SQL BEGIN DECLARE SECTION; */ char* pfile; int pid; char ts[21]; /* EXEC SQL END DECLARE SECTION; */ /* EXEC SQL WHENEVER SQLERROR GOTO errorfound; */ /* EXEC SQL WHENEVER NOT FOUND GOTO notfound; */ pfile=0; pid=-1; if (s.Contains("-")) { pTime=startAt; } else { char c=startAt[0]; if (c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9') { pid=atoi(startAt); /* EXEC SQL SELECT TO_CHAR(run_start,'DD-MON-YYYY HH24:MI:SS') INTO :ts FROM cbm_ana.simul_ref_run WHERE ref_run_id = :pid; */ { struct sqlexd sqlstm; sqlorat((void**)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 4; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "select TO_CHAR(run_start,'DD-MON-YYYY HH24:MI:SS') into\ :b0 from cbm_ana.simul_ref_run where ref_run_id=:b1"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )124; 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 )21; 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*)&pid; 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 == 1403) { goto notfound; } if (sqlca.sqlcode < 0) { goto errorfound; } } } else { pfile=(char*)startAt; /* EXEC SQL SELECT TO_CHAR(run_start,'DD-MON-YYYY HH24:MI:SS') INTO :ts FROM cbm_ana.simul_ref_run WHERE ref_run_name = :pfile; */ { struct sqlexd sqlstm; sqlorat((void**)0, &sqlctx, &oraca); sqlstm.sqlvsn = 12; sqlstm.arrsiz = 4; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "select TO_CHAR(run_start,'DD-MON-YYYY HH24:MI:SS') into\ :b0 from cbm_ana.simul_ref_run where ref_run_name=:b1"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )147; 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 )21; 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*)pfile; 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 == 1403) { goto notfound; } if (sqlca.sqlcode < 0) { goto errorfound; } } } ts[20]='\0'; pTime=ts; } return kTRUE; errorfound: pConn->showSqlError("getRefRunStart"); return kFALSE; notfound: Error("getRefRunStart","Simulation reference run not found for %s",startAt); return kFALSE; }