Logo ROOT  
Reference Guide
TSQLFile Class Referencefinal

Access an SQL db via the TFile interface.

The main motivation for the TSQLFile development is to have "transparent" access to SQL data base via standard TFile interface. The main approach that each class (but not each object) has one or two tables with names like _ver$(VERSION) and _raw$(VERSION) For example: TAxis_ver8 or TList_raw5 Second kind of tables appears, when some of class members can not be converted to normalized form or when class has custom streamer. For instance, for TH1 class two tables are required: TH1_ver4 and TH1_raw4 Most of members are stored in TH1_ver4 table column-wise, and only member: Double_t* fBuffer; //[fBufferSize] can not be represented as column while size of array is not fixed. Therefore, fBuffer will be written as list of values in TH1_raw4 table. All objects, stored in the DB, will be registered in table "ObjectsTable". In this there are following columns:

Name Description
"key:id" key identifier to which belong object
"obj:id" object identifier
"Class" object class name
"Version" object class version

Data in each "ObjectsTable" row uniquely identify, in which table and which column object is stored.

In normal situation all class data should be sorted column-wise. Up to now following member are supported:

  1. Basic data types. Here is everything clear. Column SQL type will be as much as possible close to the original type of value.
  2. Fixed array of basic data types. In this case n columns like fArr[0], fArr[1] and so on will be created. If there is multidimensional array, names will be fArr2[1][2][1] and so on
  3. Parent class. In this case version of parent class is stored and data of parent class will be stored with the same obj:id in correspondent table. There is a special case, when parent store nothing (this is for instance TQObject). In that case just -1 is written to avoid any extra checks if table exist or not.
  4. Object as data member. In that case object is saved in normal way to data base and column will contain id of this object.
  5. Pointer on object. Same as before. In case if object was already stored, just its id will be placed in the column. For NULL pointer 0 is used.
  6. TString. Now column with limited width like VARCAHR(255) in MySQL is used. Later this will be improved to support maximum possible strings
  7. Anything else. Data will be converted to raw format and saved in streamer table. Each row supplied with obj:id and row:id, where row:id indicates data, corresponding to this particular data member, and column will contain this raw:id

All conversion to SQL statements are done with help of TSQLStructure class. This is special hierarchical structure wich internally is very similar to XML structures. TBufferSQL2 creates these structures, when object data is streamed by ROOT and only afterwards all SQL statements will be produced and applied all together. When data is reading, TBufferSQL2 will produce requests to database during unstreaming of object data. Optionally (default this options on) name of column includes suffix which indicates type of column. For instance:

Name Description
*:parent parent class, column contain class version
*:object other object, column contain object id
*:rawdata raw data, column contains id of raw data from streamer table
*:Int_t column with integer value

Use TSQLFile::SetUseSuffixes(kFALSE) to disable suffixes usage. This and several other options can be changed only when TSQLFile created with options "CREATE" or "RECREATE" and only before first write operation. These options are:

Name Description
SetUseSuffixes() suffix usage in column names (default - on)
SetArrayLimit() defines maximum array size, which can has column for each element (default 21)
SetTablesType() table type name in MySQL database (default "InnoDB")
SetUseIndexes() usage of indexes in database (default kIndexesBasic)

Normally these functions should be called immediately after TSQLFile constructor. When objects data written to database, by default START TRANSACTION/COMMIT SQL commands are used before and after data storage. If TSQLFile detects any problems, ROLLBACK command will be used to restore previous state of data base. If transactions not supported by SQL server, they can be disabled by SetUseTransactions(kTransactionsOff). Or user can take responsibility to use transactions function himself. By default only indexes for basic tables are created. In most cases usage of indexes increase performance to data reading, but it also can increase time of writing data to database. There are several modes of index usage available in SetUseIndexes() method There is MakeSelectQuery(TClass*) method, which produces SELECT statement to get objects data of specified class. Difference from simple statement like: mysql> SELECT * FROM TH1I_ver1 that not only data for that class, but also data from parent classes will be extracted from other tables and combined in single result table. Such select query can be useful for external access to objects data.

Up to now MySQL 4.1 and Oracle 9i were tested. Some extra work is required for other SQL databases. Hopefully, this should be straightforward.

Known problems and open questions.

  1. TTree is not supported by TSQLFile. There is independent development of TTreeSQL class, which allows to store trees directly in SQL database
  2. TClonesArray is store objects in raw format, which can not be accessed outside ROOT. This will be changed later.
  3. TDirectory cannot work. Hopefully, will (changes in ROOT basic I/O is required)
  4. Streamer infos are not written to file, therefore schema evolution is not yet supported. All eforts are done to enable this feature in the near future

Example how TSQLFile can be used

A session saving data to a SQL data base

auto dbname = "mysql://host.domain:3306/dbname";
auto username = "username";
auto userpass = "userpass";
// Clean data base and create primary tables
auto f = new TSQLFile(dbname, "recreate", username, userpass);
// Write with standard I/O functions
arr->Write("arr", TObject::kSingleKey);
h1->Write("histo");
// Close connection to DB
delete f;
#define f(i)
Definition: RSha256.hxx:104
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
Definition: TObject.cxx:785
@ kSingleKey
write collection with single key
Definition: TObject.h:87
TSQLFile()
default TSQLFile constructor
Definition: TSQLFile.cxx:273
TH1F * h1
Definition: legend1.C:5

A session read data from SQL data base

// Open database again in read-only mode
auto f = new TSQLFile(dbname, "open", username, userpass);
// Show list of keys
f->ls();
// Read stored object, again standard ROOT I/O
auto h1 = (TH1*) f->Get("histo");
if (h1!=0) { h1->SetDirectory(0); h1->Draw(); }
auto obj = f->Get("arr");
if (obj!=0) obj->Print("*");
// close connection to DB
delete f;
The TH1 histogram class.
Definition: TH1.h:56
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
Definition: TH1.cxx:8381
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Definition: TH1.cxx:2998

The "SQL I/O" package is currently under development. Any bug reports and suggestions are welcome. Author: S.Linev, GSI Darmstadt, S.Lin.nosp@m.ev@g.nosp@m.si.de

Definition at line 30 of file TSQLFile.h.

Public Types

enum  EIndexesKinds { kIndexesNone = 0 , kIndexesBasic = 1 , kIndexesClass = 2 , kIndexesAll = 3 }
 
enum  ETransactionKinds { kTransactionsOff = 0 , kTransactionsAuto = 1 , kTransactionsUser = 2 }
 
- Public Types inherited from TFile
enum  { kStartBigFile = 2000000000 }
 
enum  EAsyncOpenStatus { kAOSNotAsync = -1 , kAOSFailure = 0 , kAOSInProgress = 1 , kAOSSuccess = 2 }
 Asynchronous open request status. More...
 
enum  ECacheAction { kDisconnect = 0 , kDoNotDisconnect = 1 }
 TTreeCache flushing semantics. More...
 
enum  EFileType {
  kDefault = 0 , kLocal = 1 , kNet = 2 , kWeb = 3 ,
  kFile = 4 , kMerge = 5
}
 File type. More...
 
enum  EOpenTimeOut { kInstantTimeout = 0 , kEternalTimeout = 999999999 }
 Open timeout constants. More...
 
enum  ERelativeTo { kBeg = 0 , kCur = 1 , kEnd = 2 }
 
enum  EStatusBits {
  kRecovered = BIT(10) , kHasReferences = BIT(11) , kDevNull = BIT(12) , kWriteError = BIT(14) ,
  kBinaryFile = BIT(15) , kRedirected = BIT(16) , kReproducible = BIT(17)
}
 TFile status bits. BIT(13) is taken up by TObject. More...
 
- Public Types inherited from TDirectoryFile
enum  EStatusBits { kCloseDirectory = BIT(7) }
 
- Public Types inherited from TObject
enum  {
  kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
  kBitMask = 0x00ffffff
}
 
enum  { kSingleKey = BIT(0) , kOverwrite = BIT(1) , kWriteDelete = BIT(2) }
 
enum  EDeprecatedStatusBits { kObjInCanvas = BIT(3) }
 
enum  EStatusBits {
  kCanDelete = BIT(0) , kMustCleanup = BIT(3) , kIsReferenced = BIT(4) , kHasUUID = BIT(5) ,
  kCannotPick = BIT(6) , kNoContextMenu = BIT(8) , kInvalidObject = BIT(13)
}
 

Public Member Functions

 TSQLFile ()
 default TSQLFile constructor More...
 
 TSQLFile (const char *dbname, Option_t *option="read", const char *user="user", const char *pass="pass")
 Connects to SQL server with provided arguments. More...
 
virtual ~TSQLFile ()
 destructor of TSQLFile object More...
 
void Close (Option_t *option="") final
 Close a SQL file For more comments see TFile::Close() function. More...
 
Bool_t Commit ()
 Commit transaction, started by StartTransaction() call. More...
 
TKeyCreateKey (TDirectory *mother, const TObject *obj, const char *name, Int_t bufsize) final
 create SQL key, which will store object in data base More...
 
TKeyCreateKey (TDirectory *mother, const void *obj, const TClass *cl, const char *name, Int_t bufsize) final
 create SQL key, which will store object in data base More...
 
void DrawMap (const char *="*", Option_t *="") final
 Draw map of objects in this file. More...
 
void FillBuffer (char *&) final
 Encode file output buffer. More...
 
void Flush () final
 Synchronize a file's in-memory and on-disk states. More...
 
Int_t GetArrayLimit () const
 
const char * GetDataBaseName () const
 Return name of data base on the host For Oracle always return 0. More...
 
Long64_t GetEND () const final
 
Int_t GetErrno () const final
 Method returning errno. More...
 
Int_t GetIOVersion () const
 
Int_t GetNbytesFree () const final
 
Int_t GetNbytesInfo () const final
 
Int_t GetNfree () const final
 
Int_t GetQuerisCounter () const
 
Long64_t GetSeekFree () const final
 
Long64_t GetSeekInfo () const final
 
Long64_t GetSize () const final
 Returns the current file size. More...
 
const char * GetTablesType () const
 
Int_t GetUseIndexes () const
 
Bool_t GetUseSuffixes () const
 
Int_t GetUseTransactions () const
 
Bool_t IsMySQL () const
 checks, if MySQL database More...
 
Bool_t IsODBC () const
 checks, if ODBC driver used for database connection More...
 
Bool_t IsOpen () const final
 return kTRUE if file is opened and can be accessed More...
 
Bool_t IsOracle () const
 checks, if Oracle database More...
 
void MakeFree (Long64_t, Long64_t) final
 Mark unused bytes on the file. More...
 
void MakeProject (const char *, const char *="*", Option_t *="new") final
 Generate source code necessary to access the objects stored in the file. More...
 
TString MakeSelectQuery (TClass *cl)
 Produce SELECT statement which can be used to get all data of class cl in one SELECT statement. More...
 
void Map () final
 
void Map (Option_t *) final
 List the contents of a file sequentially. More...
 
void Paint (Option_t *="") final
 Paint all objects in the file. More...
 
void Print (Option_t *="") const final
 Print all objects in the file. More...
 
Bool_t ReadBuffer (char *, Int_t) final
 Read a buffer from the file. More...
 
Bool_t ReadBuffer (char *, Long64_t, Int_t) final
 Read a buffer from the file at the offset 'pos' in the file. More...
 
void ReadFree () final
 Read the FREE linked list. More...
 
Int_t Recover () final
 Attempt to recover file if not correctly closed. More...
 
Int_t ReOpen (Option_t *mode) final
 Reopen a file with a different access mode, like from READ to See TFile::Open() for details. More...
 
void ResetErrno () const final
 Method resetting the errno. More...
 
Bool_t Rollback ()
 Rollback all operations, done after StartTransaction() call. More...
 
void Seek (Long64_t, ERelativeTo=kBeg) final
 Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd. More...
 
void SetArrayLimit (Int_t limit=20)
 Defines maximum number of columns for array representation If array size bigger than limit, array data will be converted to raw format This is usefull to prevent tables with very big number of columns If limit==0, all arrays will be stored in raw format If limit<0, all array values will be stored in column form Default value is 21. More...
 
void SetEND (Long64_t) final
 
void SetTablesType (const char *table_type)
 Defines tables type, which is used in CREATE TABLE statements Now is only used for MySQL database, where following types are supported: "BDB", "HEAP", "ISAM", "InnoDB", "MERGE", "MRG_MYISAM", "MYISAM" Default for TSQLFile is "InnoDB". More...
 
void SetUseIndexes (Int_t use_type=kIndexesBasic)
 Specify usage of indexes for data tables. More...
 
void SetUseSuffixes (Bool_t on=kTRUE)
 enable/disable uasge of suffixes in columns names can be changed before first object is saved into file More...
 
void SetUseTransactions (Int_t mode=kTransactionsAuto)
 Defines usage of transactions statements for writing objects data to database. More...
 
Int_t Sizeof () const final
 Return the size in bytes of the file header. More...
 
void SkipArrayLimit ()
 
void StartLogFile (const char *fname)
 start logging of all SQL statements in specified file More...
 
Bool_t StartTransaction ()
 Start user transaction. More...
 
void StopLogFile ()
 close logging file More...
 
Int_t Write (const char *=nullptr, Int_t=0, Int_t=0) const final
 One can not save a const TDirectory object. More...
 
Int_t Write (const char *=nullptr, Int_t=0, Int_t=0) final
 Write memory objects to this file. More...
 
Bool_t WriteBuffer (const char *, Int_t) final
 Write a buffer to the file. More...
 
void WriteFree () final
 Write FREE linked list on the file. More...
 
void WriteHeader () final
 Write file info like configurations, title, UUID and other. More...
 
void WriteStreamerInfo () final
 Store all TVirtualStreamerInfo, used in file, in sql database. More...
 
- Public Member Functions inherited from TFile
 TFile ()
 File default Constructor. More...
 
 TFile (const char *fname, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
 Opens or creates a local ROOT file. More...
 
virtual ~TFile ()
 File destructor. More...
 
void Close (Option_t *option="") override
 Close a file. More...
 
void Copy (TObject &) const override
 Copy this to obj. More...
 
virtual Bool_t Cp (const char *dst, Bool_t progressbar=kTRUE, UInt_t buffersize=1000000)
 Allows to copy this file to the dst URL. More...
 
virtual TKeyCreateKey (TDirectory *mother, const TObject *obj, const char *name, Int_t bufsize)
 Creates key for object and converts data to buffer. More...
 
virtual TKeyCreateKey (TDirectory *mother, const void *obj, const TClass *cl, const char *name, Int_t bufsize)
 Creates key for object and converts data to buffer. More...
 
void Delete (const char *namecycle="") override
 Delete object namecycle. More...
 
void Draw (Option_t *option="") override
 Fill Graphics Structure and Paint. More...
 
virtual void DrawMap (const char *keys="*", Option_t *option="")
 Draw map of objects in this file. More...
 
void FillBuffer (char *&buffer) override
 Encode file output buffer. More...
 
virtual void Flush ()
 Synchronize a file's in-memory and on-disk states. More...
 
TArchiveFileGetArchive () const
 
Long64_t GetArchiveOffset () const
 
Int_t GetBestBuffer () const
 Return the best buffer size of objects on this file. More...
 
virtual Long64_t GetBytesRead () const
 
virtual Long64_t GetBytesReadExtra () const
 
virtual Int_t GetBytesToPrefetch () const
 Max number of bytes to prefetch. More...
 
virtual Long64_t GetBytesWritten () const
 Return the total number of bytes written so far to the file. More...
 
TFileCacheReadGetCacheRead (const TObject *tree=nullptr) const
 Return a pointer to the current read cache. More...
 
TFileCacheWriteGetCacheWrite () const
 Return a pointer to the current write cache. More...
 
TArrayCGetClassIndex () const
 
Int_t GetCompressionAlgorithm () const
 
Float_t GetCompressionFactor ()
 Return the file compression factor. More...
 
Int_t GetCompressionLevel () const
 
Int_t GetCompressionSettings () const
 
virtual Long64_t GetEND () const
 
virtual const TUrlGetEndpointUrl () const
 
virtual Int_t GetErrno () const
 Method returning errno. More...
 
Int_t GetFd () const
 
TListGetListOfFree () const
 
TObjArrayGetListOfProcessIDs () const
 
virtual Int_t GetNbytesFree () const
 
virtual Int_t GetNbytesInfo () const
 
virtual TString GetNewUrl ()
 
virtual Int_t GetNfree () const
 
virtual Int_t GetNProcessIDs () const
 
Option_tGetOption () const override
 
virtual Int_t GetReadCalls () const
 
Int_t GetRecordHeader (char *buf, Long64_t first, Int_t maxbytes, Int_t &nbytes, Int_t &objlen, Int_t &keylen)
 Read the logical record header starting at a certain postion. More...
 
Long64_t GetRelOffset () const
 
virtual Long64_t GetSeekFree () const
 
virtual Long64_t GetSeekInfo () const
 
virtual Long64_t GetSize () const
 Returns the current file size. More...
 
const TListGetStreamerInfoCache ()
 Returns the cached list of StreamerInfos used in this file. More...
 
virtual TListGetStreamerInfoList () final
 Read the list of TStreamerInfo objects written to this file. More...
 
Int_t GetVersion () const
 
virtual void IncrementProcessIDs ()
 
virtual Bool_t IsArchive () const
 
Bool_t IsBinary () const
 
virtual Bool_t IsOpen () const
 Returns kTRUE in case file is open and kFALSE if file is not open. More...
 
Bool_t IsRaw () const
 
void ls (Option_t *option="") const override
 List file contents. More...
 
virtual void MakeFree (Long64_t first, Long64_t last)
 Mark unused bytes on the file. More...
 
virtual void MakeProject (const char *dirname, const char *classes="*", Option_t *option="new")
 Generate source code necessary to access the objects stored in the file. More...
 
virtual void Map ()
 
virtual void Map (Option_t *opt)
 List the contents of a file sequentially. More...
 
virtual Bool_t Matches (const char *name)
 Return kTRUE if 'url' matches the coordinates of this file. More...
 
virtual Bool_t MustFlush () const
 
void Paint (Option_t *option="") override
 Paint all objects in the file. More...
 
void Print (Option_t *option="") const override
 Print all objects in the file. More...
 
virtual Bool_t ReadBuffer (char *buf, Int_t len)
 Read a buffer from the file. More...
 
virtual Bool_t ReadBuffer (char *buf, Long64_t pos, Int_t len)
 Read a buffer from the file at the offset 'pos' in the file. More...
 
virtual Bool_t ReadBufferAsync (Long64_t offs, Int_t len)
 
virtual Bool_t ReadBuffers (char *buf, Long64_t *pos, Int_t *len, Int_t nbuf)
 Read the nbuf blocks described in arrays pos and len. More...
 
virtual void ReadFree ()
 Read the FREE linked list. More...
 
virtual TProcessIDReadProcessID (UShort_t pidf)
 The TProcessID with number pidf is read from this file. More...
 
virtual void ReadStreamerInfo ()
 Read the list of StreamerInfo from this file. More...
 
virtual Int_t Recover ()
 Attempt to recover file if not correctly closed. More...
 
virtual Int_t ReOpen (Option_t *mode)
 Reopen a file with a different access mode. More...
 
virtual void ResetErrno () const
 Method resetting the errno. More...
 
virtual void Seek (Long64_t offset, ERelativeTo pos=kBeg)
 Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd. More...
 
virtual void SetCacheRead (TFileCacheRead *cache, TObject *tree=0, ECacheAction action=kDisconnect)
 Set a pointer to the read cache. More...
 
virtual void SetCacheWrite (TFileCacheWrite *cache)
 Set a pointer to the write cache. More...
 
virtual void SetCompressionAlgorithm (Int_t algorithm=ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
 See comments for function SetCompressionSettings. More...
 
virtual void SetCompressionLevel (Int_t level=ROOT::RCompressionSetting::ELevel::kUseMin)
 See comments for function SetCompressionSettings. More...
 
virtual void SetCompressionSettings (Int_t settings=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
 Used to specify the compression level and algorithm. More...
 
virtual void SetEND (Long64_t last)
 
virtual void SetOffset (Long64_t offset, ERelativeTo pos=kBeg)
 Set position from where to start reading. More...
 
virtual void SetOption (Option_t *option=">")
 
virtual void SetReadCalls (Int_t readcalls=0)
 
virtual void ShowStreamerInfo ()
 Show the StreamerInfo of all classes written to this file. More...
 
Int_t Sizeof () const override
 Return the size in bytes of the file header. More...
 
void SumBuffer (Int_t bufsize)
 Increment statistics for buffer sizes of objects in this file. More...
 
Int_t Write (const char *name=nullptr, Int_t opt=0, Int_t bufsiz=0) const override
 One can not save a const TDirectory object. More...
 
Int_t Write (const char *name=nullptr, Int_t opt=0, Int_t bufsiz=0) override
 Write memory objects to this file. More...
 
virtual Bool_t WriteBuffer (const char *buf, Int_t len)
 Write a buffer to the file. More...
 
virtual void WriteFree ()
 Write FREE linked list on the file. More...
 
virtual void WriteHeader ()
 Write File Header. More...
 
virtual UShort_t WriteProcessID (TProcessID *pid)
 Check if the ProcessID pidd is already in the file, if not, add it and return the index number in the local file list. More...
 
virtual void WriteStreamerInfo ()
 Write the list of TStreamerInfo as a single object in this file The class Streamer description for all classes written to this file is saved. More...
 
- Public Member Functions inherited from TDirectoryFile
 TDirectoryFile ()
 Default TDirectoryFile constructor. More...
 
 TDirectoryFile (const char *name, const char *title, Option_t *option="", TDirectory *motherDir=nullptr)
 Create a new TDirectoryFile. More...
 
virtual ~TDirectoryFile ()
 Destructor. More...
 
void Add (TObject *obj, Bool_t replace=kFALSE) override
 
void Append (TObject *obj, Bool_t replace=kFALSE) override
 Append object to this directory. More...
 
Int_t AppendKey (TKey *key) override
 Insert key in the linked list of keys of this directory. More...
 
void Browse (TBrowser *b) override
 Browse the content of the directory. More...
 
void Build (TFile *motherFile=nullptr, TDirectory *motherDir=nullptr) override
 
Bool_t cd (const char *path=nullptr) override
 Change current directory to "this" directory. More...
 
TObjectCloneObject (const TObject *obj, Bool_t autoadd=kTRUE) override
 Make a clone of an object using the Streamer facility. More...
 
void Close (Option_t *option="") override
 Delete all objects from memory and directory structure itself. More...
 
void Copy (TObject &) const override
 Copy this to obj. More...
 
void Delete (const char *namecycle="") override
 Delete Objects or/and keys in a directory. More...
 
void FillBuffer (char *&buffer) override
 Encode directory header into output buffer. More...
 
TKeyFindKey (const char *keyname) const override
 Find key with name keyname in the current directory. More...
 
TKeyFindKeyAny (const char *keyname) const override
 Find key with name keyname in the current directory or its subdirectories. More...
 
TObjectFindObjectAny (const char *name) const override
 Find object by name in the list of memory objects of the current directory or its sub-directories. More...
 
TObjectFindObjectAnyFile (const char *name) const override
 Scan the memory lists of all files for an object with name. More...
 
template<class T >
T * Get (const char *namecycle)
 See documentation of TDirectoryFile::Get(const char *namecycle) More...
 
TObjectGet (const char *namecycle) override
 Return pointer to object identified by namecycle. More...
 
Int_t GetBufferSize () const override
 Return the buffer size to create new TKeys. More...
 
const TDatimeGetCreationDate () const
 
TDirectoryGetDirectory (const char *apath, Bool_t printError=false, const char *funcname="GetDirectory") override
 Find a directory named "apath". More...
 
TFileGetFile () const override
 
TKeyGetKey (const char *name, Short_t cycle=9999) const override
 Return pointer to key with name,cycle. More...
 
TListGetListOfKeys () const override
 
const TDatimeGetModificationDate () const
 
Int_t GetNbytesKeys () const override
 
Int_t GetNkeys () const override
 
voidGetObjectChecked (const char *namecycle, const char *classname) override
 See documentation of TDirectoryFile::GetObjectCheck(const char *namecycle, const TClass *cl) More...
 
voidGetObjectChecked (const char *namecycle, const TClass *cl) override
 Return pointer to object identified by namecycle if and only if the actual object is a type suitable to be stored as a pointer to a "expectedClass" If expectedClass is null, no check is performed. More...
 
voidGetObjectUnchecked (const char *namecycle) override
 Return pointer to object identified by namecycle. More...
 
Long64_t GetSeekDir () const override
 
Long64_t GetSeekKeys () const override
 
Long64_t GetSeekParent () const override
 
Bool_t IsModified () const override
 
Bool_t IsWritable () const override
 
void ls (Option_t *option="") const override
 List Directory contents. More...
 
TDirectorymkdir (const char *name, const char *title="", Bool_t returnExistingDirectory=kFALSE) override
 Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...". More...
 
TFileOpenFile (const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0) override
 Interface to TFile::Open. More...
 
void Purge (Short_t nkeep=1) override
 Purge lowest key cycles in a directory. More...
 
void ReadAll (Option_t *option="") override
 Read objects from a ROOT file directory into memory. More...
 
Int_t ReadKeys (Bool_t forceRead=kTRUE) override
 Read the linked list of keys. More...
 
Int_t ReadTObject (TObject *obj, const char *keyname) override
 Read object with keyname from the current directory. More...
 
virtual void ResetAfterMerge (TFileMergeInfo *)
 Reset the TDirectory after its content has been merged into another Directory. More...
 
void rmdir (const char *name) override
 Removes subdirectory from the directory. More...
 
void Save () override
 Save recursively all directory keys and headers. More...
 
Int_t SaveObjectAs (const TObject *obj, const char *filename="", Option_t *option="") const override
 Save object in filename. More...
 
void SaveSelf (Bool_t force=kFALSE) override
 Save Directory keys and header. More...
 
void SetBufferSize (Int_t bufsize) override
 Set the default buffer size when creating new TKeys. More...
 
void SetModified () override
 
void SetSeekDir (Long64_t v) override
 
void SetTRefAction (TObject *ref, TObject *parent) override
 Find the action to be executed in the dictionary of the parent class and store the corresponding exec number into fBits. More...
 
void SetWritable (Bool_t writable=kTRUE) override
 Set the new value of fWritable recursively. More...
 
Int_t Sizeof () const override
 Return the size in bytes of the directory header. More...
 
Int_t Write (const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) const override
 One can not save a const TDirectory object. More...
 
Int_t Write (const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) override
 Write all objects in memory to disk. More...
 
void WriteDirHeader () override
 Overwrite the Directory header record. More...
 
void WriteKeys () override
 Write Keys linked list on the file. More...
 
Int_t WriteObjectAny (const void *obj, const char *classname, const char *name, Option_t *option="", Int_t bufsize=0) override
 Write object from pointer of class classname in this directory. More...
 
Int_t WriteObjectAny (const void *obj, const TClass *cl, const char *name, Option_t *option="", Int_t bufsize=0) override
 Write object of class with dictionary cl in this directory. More...
 
Int_t WriteTObject (const TObject *obj, const char *name=nullptr, Option_t *option="", Int_t bufsize=0) override
 Write object obj to this directory. More...
 
- Public Member Functions inherited from TDirectory
 TDirectory ()
 Directory default constructor. More...
 
 TDirectory (const char *name, const char *title, Option_t *option="", TDirectory *motherDir=nullptr)
 Create a new Directory. More...
 
virtual ~TDirectory ()
 Destructor. More...
 
virtual void Add (TObject *obj, Bool_t replace=kFALSE)
 
virtual void Append (TObject *obj, Bool_t replace=kFALSE)
 Append object to this directory. More...
 
virtual Int_t AppendKey (TKey *)
 
void Browse (TBrowser *b) override
 Browse the content of the directory. More...
 
virtual void Build (TFile *motherFile=nullptr, TDirectory *motherDir=nullptr)
 
virtual Bool_t cd (const char *path=nullptr)
 Change current directory to "this" directory. More...
 
void Clear (Option_t *option="") override
 Delete all objects from a Directory list. More...
 
virtual TObjectCloneObject (const TObject *obj, Bool_t autoadd=kTRUE)
 Clone an object. More...
 
virtual void Close (Option_t *option="")
 Delete all objects from memory and directory structure itself. More...
 
void Copy (TObject &) const override
 Copy this to obj. More...
 
void Delete (const char *namecycle="") override
 Delete Objects or/and keys in a directory. More...
 
virtual void DeleteAll (Option_t *option="")
 Delete all objects from memory. More...
 
void Draw (Option_t *option="") override
 Fill Graphics Structure and Paint. More...
 
virtual TKeyFindKey (const char *) const
 
virtual TKeyFindKeyAny (const char *) const
 
TObjectFindObject (const char *name) const override
 Find object by name in the list of memory objects. More...
 
TObjectFindObject (const TObject *obj) const override
 Find object in the list of memory objects. More...
 
virtual TObjectFindObjectAny (const char *name) const
 Find object by name in the list of memory objects of the current directory or its sub-directories. More...
 
virtual TObjectFindObjectAnyFile (const char *) const
 
virtual TObjectGet (const char *namecycle)
 Return pointer to object identified by namecycle. More...
 
template<class T >
T * Get (const char *namecycle)
 See documentation of TDirectoryFile::Get(const char *namecycle) More...
 
virtual Int_t GetBufferSize () const
 
virtual TDirectoryGetDirectory (const char *namecycle, Bool_t printError=false, const char *funcname="GetDirectory")
 Find a directory using apath. More...
 
virtual TFileGetFile () const
 
virtual TKeyGetKey (const char *, Short_t=9999) const
 
virtual TListGetList () const
 
virtual TListGetListOfKeys () const
 
TObjectGetMother () const
 
TDirectoryGetMotherDir () const
 
virtual Int_t GetNbytesKeys () const
 
virtual Int_t GetNkeys () const
 
template<class T >
void GetObject (const char *namecycle, T *&ptr)
 
virtual voidGetObjectChecked (const char *namecycle, const char *classname)
 See documentation of TDirectory::GetObjectCheck(const char *namecycle, const TClass *cl) More...
 
virtual voidGetObjectChecked (const char *namecycle, const TClass *cl)
 Return pointer to object identified by namecycle if and only if the actual object is a type suitable to be stored as a pointer to a "expectedClass" If expectedClass is null, no check is performed. More...
 
virtual voidGetObjectUnchecked (const char *namecycle)
 Return pointer to object identified by namecycle. More...
 
virtual const char * GetPath () const
 Returns the full path of the directory. More...
 
virtual const char * GetPathStatic () const
 Returns the full path of the directory. More...
 
virtual Long64_t GetSeekDir () const
 
virtual Long64_t GetSeekKeys () const
 
virtual Long64_t GetSeekParent () const
 
TUUID GetUUID () const
 
Bool_t IsFolder () const override
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects). More...
 
virtual Bool_t IsModified () const
 
virtual Bool_t IsWritable () const
 
void ls (Option_t *option="") const override
 List Directory contents. More...
 
virtual TDirectorymkdir (const char *name, const char *title="", Bool_t returnExistingDirectory=kFALSE)
 Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...". More...
 
virtual TFileOpenFile (const char *, Option_t *="", const char *="", Int_t=1, Int_t=0)
 
void Paint (Option_t *option="") override
 Paint all objects in the directory. More...
 
void Print (Option_t *option="") const override
 Print all objects in the directory. More...
 
virtual void Purge (Short_t=1)
 
virtual void pwd () const
 Print the path of the directory. More...
 
virtual void ReadAll (Option_t *="")
 
virtual Int_t ReadKeys (Bool_t=kTRUE)
 
virtual Int_t ReadTObject (TObject *, const char *)
 
void RecursiveRemove (TObject *obj) override
 Recursively remove object from a Directory. More...
 
virtual TObjectRemove (TObject *)
 Remove an object from the in-memory list. More...
 
virtual void rmdir (const char *name)
 Removes subdirectory from the directory When directory is deleted, all keys in all subdirectories will be read first and deleted from file (if exists) Equivalent call is Delete("name;*");. More...
 
virtual void Save ()
 
virtual Int_t SaveObjectAs (const TObject *, const char *="", Option_t *="") const
 Save object in filename, if filename is 0 or "", a file with "objectname.root" is created. More...
 
virtual void SaveSelf (Bool_t=kFALSE)
 
virtual void SetBufferSize (Int_t)
 
virtual void SetModified ()
 
virtual void SetMother (TObject *mother)
 
void SetName (const char *newname) override
 Set the name for directory If the directory name is changed after the directory was written once, ROOT currently would NOT change the name of correspondent key in the mother directory. More...
 
virtual void SetSeekDir (Long64_t)
 
virtual void SetTRefAction (TObject *, TObject *)
 
virtual void SetWritable (Bool_t)
 
Int_t Sizeof () const override
 Return size of the TNamed part of the TObject. More...
 
virtual Int_t Write (const char *=nullptr, Int_t=0, Int_t=0) const override
 Write this object to the current directory. More...
 
virtual Int_t Write (const char *=nullptr, Int_t=0, Int_t=0) override
 Write this object to the current directory. More...
 
virtual void WriteDirHeader ()
 
virtual void WriteKeys ()
 
template<class T >
Int_t WriteObject (const T *obj, const char *name, Option_t *option="", Int_t bufsize=0)
 
virtual Int_t WriteObjectAny (const void *, const char *, const char *, Option_t *="", Int_t=0)
 
virtual Int_t WriteObjectAny (const void *, const TClass *, const char *, Option_t *="", Int_t=0)
 
virtual Int_t WriteTObject (const TObject *obj, const char *name=nullptr, Option_t *="", Int_t=0)
 See TDirectoryFile::WriteTObject for details. More...
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TNamed &named)
 TNamed copy ctor. More...
 
 TNamed (const TString &name, const TString &title)
 
virtual ~TNamed ()
 TNamed destructor. More...
 
virtual void Clear (Option_t *option="")
 Set name and title to empty strings (""). More...
 
virtual TObjectClone (const char *newname="") const
 Make a clone of an object using the Streamer facility. More...
 
virtual Int_t Compare (const TObject *obj) const
 Compare two TNamed objects. More...
 
virtual void Copy (TObject &named) const
 Copy this to obj. More...
 
virtual void FillBuffer (char *&buffer)
 Encode TNamed into output buffer. More...
 
virtual const char * GetName () const
 Returns name of object. More...
 
virtual const char * GetTitle () const
 Returns title of object. More...
 
virtual ULong_t Hash () const
 Return hash value for this object. More...
 
virtual Bool_t IsSortable () const
 
virtual void ls (Option_t *option="") const
 List TNamed name and title. More...
 
TNamedoperator= (const TNamed &rhs)
 TNamed assignment operator. More...
 
virtual void Print (Option_t *option="") const
 Print TNamed name and title. More...
 
virtual void SetName (const char *name)
 Set the name of the TNamed. More...
 
virtual void SetNameTitle (const char *name, const char *title)
 Set all the TNamed parameters (name and title). More...
 
virtual void SetTitle (const char *title="")
 Set the title of the TNamed. More...
 
virtual Int_t Sizeof () const
 Return size of the TNamed part of the TObject. More...
 
- Public Member Functions inherited from TObject
 TObject ()
 TObject constructor. More...
 
 TObject (const TObject &object)
 TObject copy ctor. More...
 
virtual ~TObject ()
 TObject destructor. More...
 
void AbstractMethod (const char *method) const
 Use this method to implement an "abstract" method that you don't want to leave purely abstract. More...
 
virtual void AppendPad (Option_t *option="")
 Append graphics object to current pad. More...
 
virtual void Browse (TBrowser *b)
 Browse object. May be overridden for another default action. More...
 
ULong_t CheckedHash ()
 Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object. More...
 
virtual const char * ClassName () const
 Returns name of class to which the object belongs. More...
 
virtual void Clear (Option_t *="")
 
virtual TObjectClone (const char *newname="") const
 Make a clone of an object using the Streamer facility. More...
 
virtual Int_t Compare (const TObject *obj) const
 Compare abstract method. More...
 
virtual void Copy (TObject &object) const
 Copy this to obj. More...
 
virtual void Delete (Option_t *option="")
 Delete this object. More...
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object. More...
 
virtual void Draw (Option_t *option="")
 Default Draw method for all objects. More...
 
virtual void DrawClass () const
 Draw class inheritance tree of the class to which this object belongs. More...
 
virtual TObjectDrawClone (Option_t *option="") const
 Draw a clone of this object in the current selected pad for instance with: gROOT->SetSelectedPad(gPad). More...
 
virtual void Dump () const
 Dump contents of object on stdout. More...
 
virtual void Error (const char *method, const char *msgfmt,...) const
 Issue error message. More...
 
virtual void Execute (const char *method, const char *params, Int_t *error=0)
 Execute method on this object with the given parameter string, e.g. More...
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=0)
 Execute method on this object with parameters stored in the TObjArray. More...
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute action corresponding to an event at (px,py). More...
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 Issue fatal error message. More...
 
virtual TObjectFindObject (const char *name) const
 Must be redefined in derived classes. More...
 
virtual TObjectFindObject (const TObject *obj) const
 Must be redefined in derived classes. More...
 
virtual Option_tGetDrawOption () const
 Get option used by the graphics system to draw this object. More...
 
virtual const char * GetIconName () const
 Returns mime type name of object. More...
 
virtual const char * GetName () const
 Returns name of object. More...
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Returns string containing info about the object at position (px,py). More...
 
virtual Option_tGetOption () const
 
virtual const char * GetTitle () const
 Returns title of object. More...
 
virtual UInt_t GetUniqueID () const
 Return the unique object id. More...
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out. More...
 
virtual ULong_t Hash () const
 Return hash value for this object. More...
 
Bool_t HasInconsistentHash () const
 Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e. More...
 
virtual void Info (const char *method, const char *msgfmt,...) const
 Issue info message. More...
 
virtual Bool_t InheritsFrom (const char *classname) const
 Returns kTRUE if object inherits from class "classname". More...
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 Returns kTRUE if object inherits from TClass cl. More...
 
virtual void Inspect () const
 Dump contents of this object in a graphics canvas. More...
 
void InvertBit (UInt_t f)
 
virtual Bool_t IsEqual (const TObject *obj) const
 Default equal comparison (objects are equal if they have the same address in memory). More...
 
virtual Bool_t IsFolder () const
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects). More...
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
virtual Bool_t IsSortable () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
virtual void ls (Option_t *option="") const
 The ls function lists the contents of a class on stdout. More...
 
void MayNotUse (const char *method) const
 Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary). More...
 
virtual Bool_t Notify ()
 This method must be overridden to handle object notification. More...
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 Use this method to declare a method obsolete. More...
 
void operator delete (void *ptr)
 Operator delete. More...
 
void operator delete[] (void *ptr)
 Operator delete []. More...
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator. More...
 
virtual void Paint (Option_t *option="")
 This method must be overridden if a class wants to paint itself. More...
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list. More...
 
virtual void Print (Option_t *option="") const
 This method must be overridden when a class wants to print itself. More...
 
virtual Int_t Read (const char *name)
 Read contents of object with specified name from the current directory. More...
 
virtual void RecursiveRemove (TObject *obj)
 Recursively remove this object from a list. More...
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save this object in the file specified by filename. More...
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out". More...
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 Set or unset the user status bits as specified in f. More...
 
virtual void SetDrawOption (Option_t *option="")
 Set drawing option for object. More...
 
virtual void SetUniqueID (UInt_t uid)
 Set the unique object id. More...
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 Issue system error message. More...
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked. More...
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 Issue warning message. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory. More...
 

Protected Types

enum  ELockingKinds { kLockFree = 0 , kLockBusy = 1 }
 

Protected Member Functions

void AddIdEntry (Long64_t tableid, Int_t subid, Int_t type, const char *name, const char *sqlname, const char *info)
 Add entry into IdsTable, where all tables names and columns names are listed. More...
 
TString CodeLongString (Long64_t objid, Int_t strid)
 Produces id which will be placed in column instead of string itself. More...
 
void CreateBasicTables ()
 Creates initial tables in database This is table with configurations and table with keys Function called once when first object is stored to the file. More...
 
Bool_t CreateClassTable (TSQLClassInfo *sqlinfo, TObjArray *colinfos)
 Create normal class table if required. More...
 
Bool_t CreateRawTable (TSQLClassInfo *sqlinfo)
 Create the raw table. More...
 
Long64_t DefineNextKeyId ()
 Returns next possible key identifier. More...
 
TString DefineTableName (const char *clname, Int_t version, Bool_t rawtable)
 Proposes table name for class. More...
 
void DeleteKeyFromDB (Long64_t keyid)
 Remove key with specified id from keys table also removes all objects data, related to this table. More...
 
Long64_t DirCreateEntry (TDirectory *) final
 Create entry for directory in database. More...
 
Int_t DirReadKeys (TDirectory *) final
 Read directory list of keys from database. More...
 
void DirWriteHeader (TDirectory *) final
 Update dir header in the file. More...
 
void DirWriteKeys (TDirectory *) final
 Write directory keys list to database. More...
 
TSQLClassInfoFindSQLClassInfo (const char *clname, Int_t version)
 Return (if exists) TSQLClassInfo for specified class name and version. More...
 
TSQLClassInfoFindSQLClassInfo (const TClass *cl)
 return (if exists) TSQLClassInfo for specified class More...
 
TKeySQLFindSQLKey (TDirectory *dir, Long64_t keyid)
 Search for TKeySQL object with specified keyid. More...
 
TSQLResultGetBlobClassData (Long64_t objid, TSQLClassInfo *sqlinfo)
 Method return request results for specified objid from streamer classtable. More...
 
TSQLStatementGetBlobClassDataStmt (Long64_t objid, TSQLClassInfo *sqlinfo)
 Method return request results for specified objid from streamer classtable Data returned in form of statement, where direct access to values are possible. More...
 
Int_t GetLocking ()
 Return current locking mode for that file. More...
 
Bool_t GetLongString (Long64_t objid, Int_t strid, TString &value)
 Returns value of string, extracted from special table, where long strings are stored. More...
 
TSQLResultGetNormalClassData (Long64_t objid, TSQLClassInfo *sqlinfo)
 Method return request result for specified objid from normal classtable. More...
 
TSQLResultGetNormalClassDataAll (Long64_t minobjid, Long64_t maxobjid, TSQLClassInfo *sqlinfo)
 Return data for several objects from the range from normal class table. More...
 
InfoListRet GetStreamerInfoListImpl (bool) final
 Read back streamer infos from database List of streamer infos is always stored with key:id 0, which is not shown in normal keys list. More...
 
Bool_t HasTable (const char *name)
 Test if table name exists. More...
 
void IncrementModifyCounter ()
 Update value of modify counter in config table Modify counter used to indicate that something was changed in database. More...
 
void InitSqlDatabase (Bool_t create)
 initialize sql database and correspondent structures identical to TFile::Init() function More...
 
Int_t IsLongStringCode (Long64_t objid, const char *value)
 Checks if this is long string code returns 0, if not or string id. More...
 
Bool_t IsReadAccess ()
 dummy, in future should check about read access to database More...
 
Bool_t IsTablesExists ()
 Checks if main keys table is existing. More...
 
Bool_t IsWriteAccess ()
 Checkis, if lock is free in configuration tables. More...
 
Bool_t ProduceClassSelectQuery (TVirtualStreamerInfo *info, TSQLClassInfo *sqlinfo, TString &columns, TString &tables, Int_t &tablecnt)
 used by MakeClassSelectQuery method to add columns from table of class, specified by TVirtualStreamerInfo structure More...
 
Bool_t ReadConfigurations ()
 read table configurations as special table More...
 
TObjectReadSpecialObject (Long64_t keyid, TObject *obj=0)
 Read data of special kind of objects. More...
 
void ReadSQLClassInfos ()
 Read all class infos from IdsTable. More...
 
TSQLClassInfoRequestSQLClassInfo (const char *clname, Int_t version)
 Search in database tables for specified class and return TSQLClassInfo object. More...
 
TSQLClassInfoRequestSQLClassInfo (const TClass *cl)
 Search in database tables for specified class and return TSQLClassInfo object. More...
 
void SaveToDatabase ()
 save data which is not yet in Database Typically this is streamerinfos structures or More...
 
void SetLocking (Int_t mode)
 Set locking mode for current database. More...
 
Bool_t SQLApplyCommands (TObjArray *cmds)
 supplies set of commands to server Commands is stored as array of TObjString More...
 
const char * SQLBigTextType () const
 
Bool_t SQLCanStatement ()
 Test if DB support statement and number of open statements is not exceeded. More...
 
Bool_t SQLCommit ()
 Commit SQL transaction. More...
 
const char * SQLCompatibleType (Int_t typ) const
 Returns sql type name which is most closer to ROOT basic type. More...
 
const char * SQLDatetimeType () const
 
const char * SQLDefaultTableType () const
 
void SQLDeleteAllTables ()
 Delete all tables in database. More...
 
void SQLDeleteStatement (TSQLStatement *stmt)
 delete statement and decrease counter More...
 
const char * SQLDirIdColumn () const
 
const char * SQLIdentifierQuote () const
 
const char * SQLIntType () const
 return SQL integer type More...
 
const char * SQLKeyIdColumn () const
 
Int_t SQLMaxIdentifierLength ()
 returns maximum allowed length of identifiers More...
 
Long64_t SQLMaximumValue (const char *tablename, const char *columnname)
 Returns maximum value, found in specified columnname of table tablename Column type should be numeric. More...
 
const char * SQLNameSeparator () const
 
const char * SQLObjectIdColumn () const
 
Bool_t SQLObjectInfo (Long64_t objid, TString &clname, Version_t &version)
 Read from objects table data for specified objectid. More...
 
TObjArraySQLObjectsInfo (Long64_t keyid)
 Produce array of TSQLObjectInfo objects for all objects, belong to that key Array should be deleted by calling function afterwards. More...
 
TSQLResultSQLQuery (const char *cmd, Int_t flag=0, Bool_t *res=0)
 Submits query to SQL server. More...
 
const char * SQLRawIdColumn () const
 
Bool_t SQLRollback ()
 Rollback all SQL operations, done after start transaction. More...
 
const char * SQLSmallTextType () const
 
Int_t SQLSmallTextTypeLimit () const
 
Bool_t SQLStartTransaction ()
 Start SQL transaction. More...
 
TSQLStatementSQLStatement (const char *cmd, Int_t bufsize=1000)
 Produces SQL statement for currently conected DB server. More...
 
const char * SQLStrIdColumn () const
 
Bool_t SQLTestTable (const char *tablename)
 Test, if table of specified name exists. More...
 
const char * SQLValueQuote () const
 
Long64_t StoreObjectInTables (Long64_t keyid, const void *obj, const TClass *cl)
 Store object in database. Return stored object id or -1 if error. More...
 
Int_t StreamKeysForDirectory (TDirectory *dir, Bool_t doupdate, Long64_t specialkeyid=-1, TKeySQL **specialkey=0)
 read keys for specified directory (when update == kFALSE) or update value for modified keys when update == kTRUE Returns number of successfully read keys or -1 if error More...
 
Int_t SysClose (Int_t) final
 Interface to system close. All arguments like in POSIX close(). More...
 
Int_t SysOpen (const char *, Int_t, UInt_t) final
 Interface to system open. All arguments like in POSIX open(). More...
 
Int_t SysRead (Int_t, void *, Int_t) final
 Interface to system read. All arguments like in POSIX read(). More...
 
Long64_t SysSeek (Int_t, Long64_t, Int_t) final
 Interface to system lseek. More...
 
Int_t SysStat (Int_t, Long_t *, Long64_t *, Long_t *, Long_t *) final
 Return file stat information. More...
 
Int_t SysSync (Int_t) final
 Interface to system fsync. All arguments like in POSIX fsync(). More...
 
Int_t SysWrite (Int_t, const void *, Int_t) final
 Interface to system write. All arguments like in POSIX write(). More...
 
Bool_t UpdateKeyData (TKeySQL *key)
 Updates (overwrites) key data in KeysTable. More...
 
Bool_t VerifyLongStringTable ()
 Checks that table for big strings is exists If not, will be created. More...
 
Long64_t VerifyObjectTable ()
 Checks that objects table is exists If not, table will be created Returns maximum value for existing objects id. More...
 
Bool_t WriteKeyData (TKeySQL *key)
 Add entry into keys table. More...
 
Bool_t WriteSpecialObject (Long64_t keyid, TObject *obj, const char *name, const char *title)
 write special kind of object like streamer infos or file itself keys for that objects should exist in tables but not indicated in list of keys, therefore users can not get them with TDirectoryFile::Get() method More...
 
- Protected Member Functions inherited from TFile
virtual Long64_t DirCreateEntry (TDirectory *)
 
virtual Int_t DirReadKeys (TDirectory *)
 
virtual void DirWriteHeader (TDirectory *)
 
virtual void DirWriteKeys (TDirectory *)
 
Bool_t FlushWriteCache ()
 Flush the write cache if active. More...
 
virtual EAsyncOpenStatus GetAsyncOpenStatus ()
 
virtual InfoListRet GetStreamerInfoListImpl (bool lookupSICache)
 See documentation of GetStreamerInfoList for more details. More...
 
virtual void Init (Bool_t create)
 Initialize a TFile object. More...
 
Int_t MakeProjectParMake (const char *packname, const char *filename)
 Create makefile at 'filemake' for PAR package 'pack'. More...
 
Int_t MakeProjectParProofInf (const char *packname, const char *proofinfdir)
 Create BUILD.sh and SETUP.C under 'proofinf' for PAR package 'pack'. More...
 
Int_t ReadBufferViaCache (char *buf, Int_t len)
 Read buffer via cache. More...
 
virtual Int_t SysClose (Int_t fd)
 Interface to system close. All arguments like in POSIX close(). More...
 
virtual Int_t SysOpen (const char *pathname, Int_t flags, UInt_t mode)
 Interface to system open. All arguments like in POSIX open(). More...
 
virtual Int_t SysRead (Int_t fd, void *buf, Int_t len)
 Interface to system read. All arguments like in POSIX read(). More...
 
virtual Long64_t SysSeek (Int_t fd, Long64_t offset, Int_t whence)
 Interface to system lseek. More...
 
virtual Int_t SysStat (Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime)
 Return file stat information. More...
 
virtual Int_t SysSync (Int_t fd)
 Interface to system fsync. All arguments like in POSIX fsync(). More...
 
virtual Int_t SysWrite (Int_t fd, const void *buf, Int_t len)
 Interface to system write. All arguments like in POSIX write(). More...
 
Int_t WriteBufferViaCache (const char *buf, Int_t len)
 Write buffer via cache. More...
 
- Protected Member Functions inherited from TDirectoryFile
void BuildDirectoryFile (TFile *motherFile, TDirectory *motherDir)
 Initialise directory to defaults. More...
 
void CleanTargets ()
 Clean the pointers to this object (gDirectory, TContext, etc.) More...
 
void InitDirectoryFile (TClass *cl=nullptr)
 Initialize the key associated with this directory (and the related data members. More...
 
- Protected Member Functions inherited from TDirectory
 TDirectory (const TDirectory &directory)=delete
 
void BuildDirectory (TFile *motherFile, TDirectory *motherDir)
 Initialise directory to defaults. More...
 
Bool_t cd1 (const char *path)
 flag to add histograms, graphs,etc to the directory More...
 
void CleanTargets ()
 Clean the pointers to this object (gDirectory, TContext, etc.). More...
 
void FillFullPath (TString &buf) const
 Recursive method to fill full path for directory. More...
 
void operator= (const TDirectory &)=delete
 
void RegisterContext (TContext *ctxt)
 Register a TContext pointing to this TDirectory object. More...
 
void UnregisterContext (TContext *ctxt)
 UnRegister a TContext pointing to this TDirectory object. More...
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 Interface to ErrorHandler (protected). More...
 
void MakeZombie ()
 

Protected Attributes

Int_t fArrayLimit
 ! limit for array size. when array bigger, its content converted to raw format More...
 
const char ** fBasicTypes
 ! pointer on list of basic types specific for currently connected SQL server More...
 
Bool_t fCanChangeConfig
 ! variable indicates can be basic configuration changed or not More...
 
Bool_t fIdsTableExists
 ! indicate if IdsTable exists More...
 
std::ofstream * fLogFile
 ! log file with SQL statements More...
 
Int_t fModifyCounter
 ! indicates how many changes was done with database tables More...
 
const char ** fOtherTypes
 ! pointer on list of other SQL types like TEXT or blob More...
 
Int_t fQuerisCounter
 ! how many query was applied More...
 
TSQLServerfSQL
 ! interface to SQL database More...
 
TListfSQLClassInfos
 ! list of SQL class infos More...
 
Int_t fSQLIOversion
 ! version of SQL I/O which is stored in configurations More...
 
Int_t fStmtCounter
 ! count numbers of active statements More...
 
TString fTablesType
 ! type, used in CREATE TABLE statements More...
 
Int_t fUseIndexes
 ! use indexes for tables: 0 - off, 1 - only for basic tables, 2 + normal class tables, 3 - all tables More...
 
TString fUserName
 ! user name, used to access objects from database More...
 
Bool_t fUseSuffixes
 ! use suffixes in column names like fValue:Int_t or fObject:pointer More...
 
Int_t fUseTransactions
 ! use transaction statements for writing data into the tables More...
 
- Protected Attributes inherited from TFile
TArchiveFilefArchive {nullptr}
 !Archive file from which we read this file More...
 
Long64_t fArchiveOffset {0}
 !Offset at which file starts in archive More...
 
TFileOpenHandlefAsyncHandle {nullptr}
 !For proper automatic cleanup More...
 
EAsyncOpenStatus fAsyncOpenStatus {kAOSNotAsync}
 !Status of an asynchronous open request More...
 
Long64_t fBEGIN {0}
 First used byte in file. More...
 
Long64_t fBytesRead {0}
 Number of bytes read from this file. More...
 
Long64_t fBytesReadExtra {0}
 Number of extra bytes (overhead) read by the readahead buffer. More...
 
Long64_t fBytesWrite {0}
 Number of bytes written to this file. More...
 
TFileCacheReadfCacheRead {nullptr}
 !Pointer to the read cache (if any) More...
 
TMapfCacheReadMap {nullptr}
 !Pointer to the read cache (if any) More...
 
TFileCacheWritefCacheWrite {nullptr}
 !Pointer to the write cache (if any) More...
 
TArrayCfClassIndex {nullptr}
 !Index of TStreamerInfo classes written to this file More...
 
Int_t fCompress {0}
 Compression level and algorithm. More...
 
Int_t fD {-1}
 File descriptor. More...
 
Long64_t fEND {0}
 Last used byte in file. More...
 
TListfFree {nullptr}
 Free segments linked list table. More...
 
TListfInfoCache {nullptr}
 !Cached list of the streamer infos in this file More...
 
Bool_t fInitDone {kFALSE}
 !True if the file has been initialized More...
 
Bool_t fIsArchive {kFALSE}
 !True if this is a pure archive file More...
 
Bool_t fIsPcmFile {kFALSE}
 !True if the file is a ROOT pcm file. More...
 
Bool_t fIsRootFile {kTRUE}
 !True is this is a ROOT file, raw file otherwise More...
 
Bool_t fMustFlush {kTRUE}
 !True if the file buffers must be flushed More...
 
Int_t fNbytesFree {0}
 Number of bytes for free segments structure. More...
 
Int_t fNbytesInfo {0}
 Number of bytes for StreamerInfo record. More...
 
Bool_t fNoAnchorInName {kFALSE}
 !True if we don't want to force the anchor to be appended to the file name More...
 
Int_t fNProcessIDs {0}
 Number of TProcessID written to this file. More...
 
Long64_t fOffset {0}
 !Seek offset cache More...
 
TListfOpenPhases {nullptr}
 !Time info about open phases More...
 
TString fOption
 File options. More...
 
TObjArrayfProcessIDs {nullptr}
 !Array of pointers to TProcessIDs More...
 
Int_t fReadCalls {0}
 Number of read calls ( not counting the cache calls ) More...
 
TString fRealName
 Effective real file name (not original url) More...
 
Long64_t fSeekFree {0}
 Location on disk of free segments structure. More...
 
Long64_t fSeekInfo {0}
 Location on disk of StreamerInfo record. More...
 
Double_t fSum2Buffer {0}
 Sum of squares of buffer sizes of objects written so far. More...
 
Double_t fSumBuffer {0}
 Sum of buffer sizes of objects written so far. More...
 
Char_t fUnits {0}
 Number of bytes for file pointers. More...
 
TUrl fUrl
 !URL of file More...
 
Int_t fVersion {0}
 File format version. More...
 
std::mutex fWriteMutex
 !Lock for writing baskets / keys into the file. More...
 
Int_t fWritten {0}
 Number of objects written so far. More...
 
- Protected Attributes inherited from TDirectoryFile
Int_t fBufferSize {0}
 Default buffer size to create new TKeys. More...
 
TDatime fDatimeC
 Date and time when directory is created. More...
 
TDatime fDatimeM
 Date and time of last modification. More...
 
TFilefFile {nullptr}
 Pointer to current file in memory. More...
 
TListfKeys {nullptr}
 Pointer to keys list in memory. More...
 
Bool_t fModified {kFALSE}
 True if directory has been modified. More...
 
Int_t fNbytesKeys {0}
 Number of bytes for the keys. More...
 
Int_t fNbytesName {0}
 Number of bytes in TNamed at creation time. More...
 
Long64_t fSeekDir {0}
 Location of directory on file. More...
 
Long64_t fSeekKeys {0}
 Location of Keys record on file. More...
 
Long64_t fSeekParent {0}
 Location of parent directory on file. More...
 
Bool_t fWritable {kFALSE}
 True if directory is writable. More...
 
- Protected Attributes inherited from TDirectory
TContextfContext {nullptr}
 Buffer for GetPath() function. More...
 
std::atomic< size_t > fContextPeg
 Pointer to a list of TContext object pointing to this TDirectory. More...
 
TListfList {nullptr}
 
TObjectfMother {nullptr}
 
TString fPathBuffer
 
std::atomic_flag fSpinLock
 Counter delaying the TDirectory destructor from finishing. More...
 
TUUID fUUID
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 

Private Member Functions

 TSQLFile (const TSQLFile &)=delete
 
void operator= (const TSQLFile &)=delete
 

Friends

class TBufferSQL2
 
class TKeySQL
 
class TSqlCmdsBuffer
 
class TSqlRawBuffer
 
class TSqlRegistry
 
class TSQLStructure
 
class TSQLTableData
 

Additional Inherited Members

- Static Public Member Functions inherited from TFile
static TFileOpenHandleAsyncOpen (const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
 Submit an asynchronous open request. More...
 
static Bool_t Cp (const char *src, const char *dst, Bool_t progressbar=kTRUE, UInt_t buffersize=1000000)
 Allows to copy file from src to dst URL. More...
 
static TFile *& CurrentFile ()
 Return the current ROOT file if any. More...
 
static EAsyncOpenStatus GetAsyncOpenStatus (const char *name)
 Get status of the async open request related to 'name'. More...
 
static EAsyncOpenStatus GetAsyncOpenStatus (TFileOpenHandle *handle)
 Get status of the async open request related to 'handle'. More...
 
static const char * GetCacheFileDir ()
 Get the directory where to locally stage/cache remote files. More...
 
static const TUrlGetEndpointUrl (const char *name)
 Get final URL for file being opened asynchronously. More...
 
static Long64_t GetFileBytesRead ()
 Static function returning the total number of bytes read from all files. More...
 
static Long64_t GetFileBytesWritten ()
 Static function returning the total number of bytes written to all files. More...
 
static Long64_t GetFileCounter ()
 
static Int_t GetFileReadCalls ()
 Static function returning the total number of read calls from all files. More...
 
static Bool_t GetOnlyStaged ()
 Returns staged only flag. More...
 
static UInt_t GetOpenTimeout ()
 Returns open timeout (in ms). More...
 
static Int_t GetReadaheadSize ()
 Static function returning the readahead buffer size. More...
 
static Bool_t GetReadStreamerInfo ()
 If the streamerinfos are to be read at file opening. More...
 
static EFileType GetType (const char *name, Option_t *option="", TString *prefix=nullptr)
 Resolve the file type as a function of the protocol field in 'name'. More...
 
static void IncrementFileCounter ()
 
static TFileOpen (const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
 Create / open a file. More...
 
static TFileOpen (TFileOpenHandle *handle)
 Waits for the completion of an asynchronous open request. More...
 
static Bool_t SetCacheFileDir (ROOT::Internal::TStringView cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
 
static Bool_t SetCacheFileDir (std::string_view cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
 Sets the directory where to locally stage/cache remote files. More...
 
static void SetFileBytesRead (Long64_t bytes=0)
 
static void SetFileBytesWritten (Long64_t bytes=0)
 
static void SetFileReadCalls (Int_t readcalls=0)
 
static Bool_t SetOnlyStaged (Bool_t onlystaged)
 Sets only staged flag. More...
 
static UInt_t SetOpenTimeout (UInt_t timeout)
 Sets open timeout time (in ms). Returns previous timeout value. More...
 
static void SetReadaheadSize (Int_t bufsize=256000)
 
static void SetReadStreamerInfo (Bool_t readinfo=kTRUE)
 Specify if the streamerinfos must be read at file opening. More...
 
static Bool_t ShrinkCacheFileDir (Long64_t shrinkSize, Long_t cleanupInteval=0)
 Try to shrink the cache to the desired size. More...
 
- Static Public Member Functions inherited from TDirectory
static void AddDirectory (Bool_t add=kTRUE)
 Sets the flag controlling the automatic add objects like histograms, TGraph2D, etc in memory. More...
 
static Bool_t AddDirectoryStatus ()
 Static function: see TDirectory::AddDirectory for more comments. More...
 
static Bool_t Cd (const char *path)
 Change current directory to "path". More...
 
static TDirectory *& CurrentDirectory ()
 Return the current directory for the current thread. More...
 
static void DecodeNameCycle (const char *namecycle, char *name, Short_t &cycle, const size_t namesize=0)
 Decode a namecycle "aap;2" into name "aap" and cycle "2". More...
 
static void EncodeNameCycle (char *buffer, const char *name, Short_t cycle)
 Encode the name and cycle into buffer like: "aap;2". More...
 
- Static Public Member Functions inherited from TObject
static Long_t GetDtorOnly ()
 Return destructor only flag. More...
 
static Bool_t GetObjectStat ()
 Get status of object stat flag. More...
 
static void SetDtorOnly (void *obj)
 Set destructor only flag. More...
 
static void SetObjectStat (Bool_t stat)
 Turn on/off tracking of objects in the TObjectTable. More...
 
- Static Protected Member Functions inherited from TDirectory
static Bool_t Cd1 (const char *path)
 Change current directory to "path". More...
 
- Static Protected Attributes inherited from TFile
static TListfgAsyncOpenRequests = nullptr
 
static std::atomic< Long64_tfgBytesRead {0}
 Number of bytes read by all TFile objects. More...
 
static std::atomic< Long64_tfgBytesWrite {0}
 Number of bytes written by all TFile objects. More...
 
static TString fgCacheFileDir
 Directory where to locally stage files. More...
 
static Bool_t fgCacheFileDisconnected = kTRUE
 Indicates, we trust in the files in the cache dir without stat on the cached file. More...
 
static Bool_t fgCacheFileForce = kFALSE
 Indicates, to force all READ to CACHEREAD. More...
 
static std::atomic< Long64_tfgFileCounter {0}
 Counter for all opened files. More...
 
static Bool_t fgOnlyStaged = kFALSE
 Before the file is opened, it is checked, that the file is staged, if not, the open fails. More...
 
static UInt_t fgOpenTimeout = TFile::kEternalTimeout
 Timeout for open operations in ms - 0 corresponds to blocking i/o. More...
 
static Int_t fgReadaheadSize = 256000
 Readahead buffer size. More...
 
static std::atomic< Int_tfgReadCalls {0}
 Number of bytes read from all TFile objects. More...
 
static Bool_t fgReadInfo = kTRUE
 if true (default) ReadStreamerInfo is called when opening a file More...
 
static ROOT::TRWSpinLock fgRwLock
 !Read-write lock to protect global PID list More...
 
static ROOT::Internal::RConcurrentHashColl fgTsSIHashes
 !TS Set of hashes built from read streamer infos More...
 
- Static Protected Attributes inherited from TDirectory
static Bool_t fgAddDirectory = kTRUE
 MSVC doesn't support = ATOMIC_FLAG_INIT;. More...
 

#include <TSQLFile.h>

Inheritance diagram for TSQLFile:
[legend]

Member Enumeration Documentation

◆ EIndexesKinds

Enumerator
kIndexesNone 
kIndexesBasic 
kIndexesClass 
kIndexesAll 

Definition at line 177 of file TSQLFile.h.

◆ ELockingKinds

enum TSQLFile::ELockingKinds
protected
Enumerator
kLockFree 
kLockBusy 

Definition at line 41 of file TSQLFile.h.

◆ ETransactionKinds

Enumerator
kTransactionsOff 
kTransactionsAuto 
kTransactionsUser 

Definition at line 175 of file TSQLFile.h.

Constructor & Destructor Documentation

◆ TSQLFile() [1/3]

TSQLFile::TSQLFile ( const TSQLFile )
privatedelete

◆ TSQLFile() [2/3]

TSQLFile::TSQLFile ( )

default TSQLFile constructor

Definition at line 273 of file TSQLFile.cxx.

◆ TSQLFile() [3/3]

TSQLFile::TSQLFile ( const char *  dbname,
Option_t option = "read",
const char *  user = "user",
const char *  pass = "pass" 
)

Connects to SQL server with provided arguments.

If the constructor fails in any way IsZombie() will return true. Use IsOpen() to check if the file is (still) open.

Option Description
NEW or CREATE Create a ROOT tables in database if the tables already exists connection is not opened.
RECREATE Create completely new tables. Any existing table will be deleted.
UPDATE Open an existing database for writing. If data base open by other TSQLFile instance for writing,

write access will be rejected.| | BREAKLOCK | Special case when lock was not correctly released by TSQLFile instance. This may happen if program crashed when TSQLFile was open with write access mode.| | READ / OPEN | Open an existing data base for reading.|

For more details see comments for TFile::TFile() constructor. For a moment TSQLFile does not support TTree objects and subdirectories.

Definition at line 299 of file TSQLFile.cxx.

◆ ~TSQLFile()

TSQLFile::~TSQLFile ( )
virtual

destructor of TSQLFile object

Definition at line 692 of file TSQLFile.cxx.

Member Function Documentation

◆ AddIdEntry()

void TSQLFile::AddIdEntry ( Long64_t  tableid,
Int_t  subid,
Int_t  type,
const char *  name,
const char *  sqlname,
const char *  info 
)
protected

Add entry into IdsTable, where all tables names and columns names are listed.

Definition at line 2021 of file TSQLFile.cxx.

◆ Close()

void TSQLFile::Close ( Option_t option = "")
finalvirtual

Close a SQL file For more comments see TFile::Close() function.

Reimplemented from TFile.

Definition at line 644 of file TSQLFile.cxx.

◆ CodeLongString()

TString TSQLFile::CodeLongString ( Long64_t  objid,
Int_t  strid 
)
protected

Produces id which will be placed in column instead of string itself.

Definition at line 2217 of file TSQLFile.cxx.

◆ Commit()

Bool_t TSQLFile::Commit ( )

Commit transaction, started by StartTransaction() call.

Only after that call data will be written and visible on database side.

Definition at line 582 of file TSQLFile.cxx.

◆ CreateBasicTables()

void TSQLFile::CreateBasicTables ( )
protected

Creates initial tables in database This is table with configurations and table with keys Function called once when first object is stored to the file.

Definition at line 1119 of file TSQLFile.cxx.

◆ CreateClassTable()

Bool_t TSQLFile::CreateClassTable ( TSQLClassInfo sqlinfo,
TObjArray colinfos 
)
protected

Create normal class table if required.

Definition at line 2062 of file TSQLFile.cxx.

◆ CreateKey() [1/2]

TKey * TSQLFile::CreateKey ( TDirectory mother,
const TObject obj,
const char *  name,
Int_t  bufsize 
)
finalvirtual

create SQL key, which will store object in data base

Reimplemented from TFile.

Definition at line 769 of file TSQLFile.cxx.

◆ CreateKey() [2/2]

TKey * TSQLFile::CreateKey ( TDirectory mother,
const void obj,
const TClass cl,
const char *  name,
Int_t  bufsize 
)
finalvirtual

create SQL key, which will store object in data base

Reimplemented from TFile.

Definition at line 777 of file TSQLFile.cxx.

◆ CreateRawTable()

Bool_t TSQLFile::CreateRawTable ( TSQLClassInfo sqlinfo)
protected

Create the raw table.

Definition at line 2144 of file TSQLFile.cxx.

◆ DefineNextKeyId()

Long64_t TSQLFile::DefineNextKeyId ( )
protected

Returns next possible key identifier.

Definition at line 1760 of file TSQLFile.cxx.

◆ DefineTableName()

TString TSQLFile::DefineTableName ( const char *  clname,
Int_t  version,
Bool_t  rawtable 
)
protected

Proposes table name for class.

Definition at line 1837 of file TSQLFile.cxx.

◆ DeleteKeyFromDB()

void TSQLFile::DeleteKeyFromDB ( Long64_t  keyid)
protected

Remove key with specified id from keys table also removes all objects data, related to this table.

Definition at line 1615 of file TSQLFile.cxx.

◆ DirCreateEntry()

Long64_t TSQLFile::DirCreateEntry ( TDirectory dir)
finalprotectedvirtual

Create entry for directory in database.

Reimplemented from TFile.

Definition at line 2585 of file TSQLFile.cxx.

◆ DirReadKeys()

Int_t TSQLFile::DirReadKeys ( TDirectory dir)
finalprotectedvirtual

Read directory list of keys from database.

Reimplemented from TFile.

Definition at line 2600 of file TSQLFile.cxx.

◆ DirWriteHeader()

void TSQLFile::DirWriteHeader ( TDirectory dir)
finalprotectedvirtual

Update dir header in the file.

Reimplemented from TFile.

Definition at line 2622 of file TSQLFile.cxx.

◆ DirWriteKeys()

void TSQLFile::DirWriteKeys ( TDirectory dir)
finalprotectedvirtual

Write directory keys list to database.

Reimplemented from TFile.

Definition at line 2614 of file TSQLFile.cxx.

◆ DrawMap()

void TSQLFile::DrawMap ( const char *  keys = "*",
Option_t option = "" 
)
inlinefinalvirtual

Draw map of objects in this file.

Reimplemented from TFile.

Definition at line 210 of file TSQLFile.h.

◆ FillBuffer()

void TSQLFile::FillBuffer ( char *&  buffer)
inlinefinalvirtual

Encode file output buffer.

The file output buffer contains only the FREE data record.

Reimplemented from TFile.

Definition at line 211 of file TSQLFile.h.

◆ FindSQLClassInfo() [1/2]

TSQLClassInfo * TSQLFile::FindSQLClassInfo ( const char *  clname,
Int_t  version 
)
protected

Return (if exists) TSQLClassInfo for specified class name and version.

Definition at line 1776 of file TSQLFile.cxx.

◆ FindSQLClassInfo() [2/2]

TSQLClassInfo * TSQLFile::FindSQLClassInfo ( const TClass cl)
protected

return (if exists) TSQLClassInfo for specified class

Definition at line 1795 of file TSQLFile.cxx.

◆ FindSQLKey()

TKeySQL * TSQLFile::FindSQLKey ( TDirectory dir,
Long64_t  keyid 
)
protected

Search for TKeySQL object with specified keyid.

Definition at line 1674 of file TSQLFile.cxx.

◆ Flush()

void TSQLFile::Flush ( )
inlinefinalvirtual

Synchronize a file's in-memory and on-disk states.

Reimplemented from TFile.

Definition at line 212 of file TSQLFile.h.

◆ GetArrayLimit()

Int_t TSQLFile::GetArrayLimit ( ) const
inline

Definition at line 186 of file TSQLFile.h.

◆ GetBlobClassData()

TSQLResult * TSQLFile::GetBlobClassData ( Long64_t  objid,
TSQLClassInfo sqlinfo 
)
protected

Method return request results for specified objid from streamer classtable.

Definition at line 2467 of file TSQLFile.cxx.

◆ GetBlobClassDataStmt()

TSQLStatement * TSQLFile::GetBlobClassDataStmt ( Long64_t  objid,
TSQLClassInfo sqlinfo 
)
protected

Method return request results for specified objid from streamer classtable Data returned in form of statement, where direct access to values are possible.

Definition at line 2483 of file TSQLFile.cxx.

◆ GetDataBaseName()

const char * TSQLFile::GetDataBaseName ( ) const

Return name of data base on the host For Oracle always return 0.

Definition at line 630 of file TSQLFile.cxx.

◆ GetEND()

Long64_t TSQLFile::GetEND ( ) const
inlinefinalvirtual

Reimplemented from TFile.

Definition at line 214 of file TSQLFile.h.

◆ GetErrno()

Int_t TSQLFile::GetErrno ( ) const
inlinefinalvirtual

Method returning errno.

Reimplemented from TFile.

Definition at line 215 of file TSQLFile.h.

◆ GetIOVersion()

Int_t TSQLFile::GetIOVersion ( ) const
inline

Definition at line 196 of file TSQLFile.h.

◆ GetLocking()

Int_t TSQLFile::GetLocking ( )
protected

Return current locking mode for that file.

Definition at line 1351 of file TSQLFile.cxx.

◆ GetLongString()

Bool_t TSQLFile::GetLongString ( Long64_t  objid,
Int_t  strid,
TString value 
)
protected

Returns value of string, extracted from special table, where long strings are stored.

Definition at line 2277 of file TSQLFile.cxx.

◆ GetNbytesFree()

Int_t TSQLFile::GetNbytesFree ( ) const
inlinefinalvirtual

Reimplemented from TFile.

Definition at line 221 of file TSQLFile.h.

◆ GetNbytesInfo()

Int_t TSQLFile::GetNbytesInfo ( ) const
inlinefinalvirtual

Reimplemented from TFile.

Definition at line 220 of file TSQLFile.h.

◆ GetNfree()

Int_t TSQLFile::GetNfree ( ) const
inlinefinalvirtual

Reimplemented from TFile.

Definition at line 219 of file TSQLFile.h.

◆ GetNormalClassData()

TSQLResult * TSQLFile::GetNormalClassData ( Long64_t  objid,
TSQLClassInfo sqlinfo 
)
protected

Method return request result for specified objid from normal classtable.

Definition at line 2438 of file TSQLFile.cxx.

◆ GetNormalClassDataAll()

TSQLResult * TSQLFile::GetNormalClassDataAll ( Long64_t  minobjid,
Long64_t  maxobjid,
TSQLClassInfo sqlinfo 
)
protected

Return data for several objects from the range from normal class table.

Definition at line 2452 of file TSQLFile.cxx.

◆ GetQuerisCounter()

Int_t TSQLFile::GetQuerisCounter ( ) const
inline

Definition at line 195 of file TSQLFile.h.

◆ GetSeekFree()

Long64_t TSQLFile::GetSeekFree ( ) const
inlinefinalvirtual

Reimplemented from TFile.

Definition at line 222 of file TSQLFile.h.

◆ GetSeekInfo()

Long64_t TSQLFile::GetSeekInfo ( ) const
inlinefinalvirtual

Reimplemented from TFile.

Definition at line 223 of file TSQLFile.h.

◆ GetSize()

Long64_t TSQLFile::GetSize ( ) const
inlinefinalvirtual

Returns the current file size.

Returns -1 in case the file could not be stat'ed.

Reimplemented from TFile.

Definition at line 224 of file TSQLFile.h.

◆ GetStreamerInfoListImpl()

TFile::InfoListRet TSQLFile::GetStreamerInfoListImpl ( bool  )
finalprotectedvirtual

Read back streamer infos from database List of streamer infos is always stored with key:id 0, which is not shown in normal keys list.

Reimplemented from TFile.

Definition at line 885 of file TSQLFile.cxx.

◆ GetTablesType()

const char * TSQLFile::GetTablesType ( ) const
inline

Definition at line 190 of file TSQLFile.h.

◆ GetUseIndexes()

Int_t TSQLFile::GetUseIndexes ( ) const
inline

Definition at line 194 of file TSQLFile.h.

◆ GetUseSuffixes()

Bool_t TSQLFile::GetUseSuffixes ( ) const
inline

Definition at line 184 of file TSQLFile.h.

◆ GetUseTransactions()

Int_t TSQLFile::GetUseTransactions ( ) const
inline

Definition at line 192 of file TSQLFile.h.

◆ HasTable()

Bool_t TSQLFile::HasTable ( const char *  name)
protected

Test if table name exists.

Definition at line 1886 of file TSQLFile.cxx.

◆ IncrementModifyCounter()

void TSQLFile::IncrementModifyCounter ( )
protected

Update value of modify counter in config table Modify counter used to indicate that something was changed in database.

It will be used when multiple instances of TSQLFile for the same data base will be connected.

Definition at line 1191 of file TSQLFile.cxx.

◆ InitSqlDatabase()

void TSQLFile::InitSqlDatabase ( Bool_t  create)
protected

initialize sql database and correspondent structures identical to TFile::Init() function

Definition at line 1001 of file TSQLFile.cxx.

◆ IsLongStringCode()

Int_t TSQLFile::IsLongStringCode ( Long64_t  objid,
const char *  value 
)
protected

Checks if this is long string code returns 0, if not or string id.

Definition at line 2228 of file TSQLFile.cxx.

◆ IsMySQL()

Bool_t TSQLFile::IsMySQL ( ) const

checks, if MySQL database

Definition at line 470 of file TSQLFile.cxx.

◆ IsODBC()

Bool_t TSQLFile::IsODBC ( ) const

checks, if ODBC driver used for database connection

Definition at line 490 of file TSQLFile.cxx.

◆ IsOpen()

Bool_t TSQLFile::IsOpen ( ) const
finalvirtual

return kTRUE if file is opened and can be accessed

Reimplemented from TFile.

Definition at line 713 of file TSQLFile.cxx.

◆ IsOracle()

Bool_t TSQLFile::IsOracle ( ) const

checks, if Oracle database

Definition at line 480 of file TSQLFile.cxx.

◆ IsReadAccess()

Bool_t TSQLFile::IsReadAccess ( )
protected

dummy, in future should check about read access to database

Definition at line 1375 of file TSQLFile.cxx.

◆ IsTablesExists()

Bool_t TSQLFile::IsTablesExists ( )
protected

Checks if main keys table is existing.

Definition at line 1321 of file TSQLFile.cxx.

◆ IsWriteAccess()

Bool_t TSQLFile::IsWriteAccess ( )
protected

Checkis, if lock is free in configuration tables.

Definition at line 1329 of file TSQLFile.cxx.

◆ MakeFree()

void TSQLFile::MakeFree ( Long64_t  first,
Long64_t  last 
)
inlinefinalvirtual

Mark unused bytes on the file.

The list of free segments is in the fFree linked list. When an object is deleted from the file, the freed space is added into the FREE linked list (fFree). The FREE list consists of a chain of consecutive free segments on the file. At the same time, the first 4 bytes of the freed record on the file are overwritten by GAPSIZE where GAPSIZE = -(Number of bytes occupied by the record).

Reimplemented from TFile.

Definition at line 231 of file TSQLFile.h.

◆ MakeProject()

void TSQLFile::MakeProject ( const char *  dirname,
const char *  classes = "*",
Option_t option = "new" 
)
inlinefinalvirtual

Generate source code necessary to access the objects stored in the file.

Generate code in directory dirname for all classes specified in argument classes If classes = "*" (default and currently the only supported value), the function generates an include file for each class in the StreamerInfo list for which a TClass object does not exist.

The code generated includes:

  • dirnameProjectHeaders.h, which contains one #include statement per generated header file
  • dirnameProjectSource.cxx,which contains all the constructors and destructors implementation. and one header per class that is not nested inside another class. The header file name is the fully qualified name of the class after all the special characters "<>,:" are replaced by underscored. For example for std::pair<edm::Vertex,int> the file name is pair_edm__Vertex_int_.h

In the generated classes, map, multimap when the first template parameter is a class are replaced by a vector of pair. set and multiset when the tempalte parameter is a class are replaced by a vector. This is required since we do not have the code needed to order and/or compare the object of the classes. This is a quick explanation of the options available:

Option Details
new (default) A new directory dirname is created. If dirname already exist, an error message is printed and the function returns.
recreate If dirname does not exist, it is created (like in "new"). If dirname already exist, all existing files in dirname are deleted before creating the new files.
update New classes are added to the existing directory. Existing classes with the same name are replaced by the new definition. If the directory dirname doest not exist, same effect as "new".
genreflex Use genreflex rather than rootcint to generate the dictionary.
par Create a PAR file with the minimal set of code needed to read the content of the ROOT file. The name of the PAR file is basename(dirname), with extension '.par' enforced; the PAR file will be created at dirname(dirname).

If, in addition to one of the 3 above options, the option "+" is specified, the function will generate:

  • a script called MAKEP to build the shared lib
  • a dirnameLinkDef.h file
  • rootcint will be run to generate a dirnameProjectDict.cxx file
  • dirnameProjectDict.cxx will be compiled with the current options in compiledata.h
  • a shared lib dirname.so will be created. If the option "++" is specified, the generated shared lib is dynamically linked with the current executable module. If the option "+" and "nocompile" are specified, the utility files are generated as in the option "+" but they are not executed. Example: file.MakeProject("demo","*","recreate++");
  • creates a new directory demo unless it already exist
  • clear the previous directory content
  • generate the xxx.h files for all classes xxx found in this file and not yet known to the CINT dictionary.
  • creates the build script MAKEP
  • creates a LinkDef.h file
  • runs rootcint generating demoProjectDict.cxx
  • compiles demoProjectDict.cxx into demoProjectDict.o
  • generates a shared lib demo.so
  • dynamically links the shared lib demo.so to the executable If only the option "+" had been specified, one can still link the shared lib to the current executable module with:
    gSystem->load("demo/demo.so");
    
    The following feature is not yet enabled: One can restrict the list of classes to be generated by using expressions like:
    classes = "Ali*" generate code only for classes starting with Ali
    classes = "myClass" generate code for class MyClass only.
    

Reimplemented from TFile.

Definition at line 232 of file TSQLFile.h.

◆ MakeSelectQuery()

TString TSQLFile::MakeSelectQuery ( TClass cl)

Produce SELECT statement which can be used to get all data of class cl in one SELECT statement.

This statement also can be used to create VIEW by command like mysql> CREATE VIEW TH1I_view AS $CLASSSELECT$ Where $CLASSSELECT$ argument should be produced by call f->MakeSelectQuery(TH1I::Class()); VIEWs supported by latest MySQL 5 and Oracle

Definition at line 1218 of file TSQLFile.cxx.

◆ Map() [1/2]

void TSQLFile::Map ( )
inlinefinalvirtual

Reimplemented from TFile.

Definition at line 234 of file TSQLFile.h.

◆ Map() [2/2]

void TSQLFile::Map ( Option_t opt)
inlinefinalvirtual

List the contents of a file sequentially.

For each logical record found, it prints:

Date/Time  Record_Adress Logical_Record_Length  ClassName  CompressionFactor

Example of output

20010404/150437  At:64        N=150       TFile
20010404/150440  At:214       N=28326     TBasket        CX =  1.13
20010404/150440  At:28540     N=29616     TBasket        CX =  1.08
20010404/150440  At:58156     N=29640     TBasket        CX =  1.08
20010404/150440  At:87796     N=29076     TBasket        CX =  1.10
20010404/150440  At:116872    N=10151     TBasket        CX =  3.15
20010404/150441  At:127023    N=28341     TBasket        CX =  1.13
20010404/150441  At:155364    N=29594     TBasket        CX =  1.08
20010404/150441  At:184958    N=29616     TBasket        CX =  1.08
20010404/150441  At:214574    N=29075     TBasket        CX =  1.10
20010404/150441  At:243649    N=9583      TBasket        CX =  3.34
20010404/150442  At:253232    N=28324     TBasket        CX =  1.13
20010404/150442  At:281556    N=29641     TBasket        CX =  1.08
20010404/150442  At:311197    N=29633     TBasket        CX =  1.08
20010404/150442  At:340830    N=29091     TBasket        CX =  1.10
20010404/150442  At:369921    N=10341     TBasket        CX =  3.09
20010404/150442  At:380262    N=509       TH1F           CX =  1.93
20010404/150442  At:380771    N=1769      TH2F           CX =  4.32
20010404/150442  At:382540    N=1849      TProfile       CX =  1.65
20010404/150442  At:384389    N=18434     TNtuple        CX =  4.51
20010404/150442  At:402823    N=307       KeysList
20010404/150443  At:403130    N=4548      StreamerInfo   CX =  3.65
20010404/150443  At:407678    N=86        FreeSegments
20010404/150443  At:407764    N=1         END

If the parameter opt contains "forComp", the Date/Time is ommitted and the decompressed size is also printed.

Record_Adress Logical_Record_Length Key_Length Object_Record_Length ClassName CompressionFactor

Example of output

Reimplemented from TFile.

Definition at line 233 of file TSQLFile.h.

◆ operator=()

void TSQLFile::operator= ( const TSQLFile )
privatedelete

◆ Paint()

void TSQLFile::Paint ( Option_t option = "")
inlinefinalvirtual

Paint all objects in the file.

Reimplemented from TFile.

Definition at line 235 of file TSQLFile.h.

◆ Print()

void TSQLFile::Print ( Option_t option = "") const
inlinefinalvirtual

Print all objects in the file.

Reimplemented from TFile.

Definition at line 236 of file TSQLFile.h.

◆ ProduceClassSelectQuery()

Bool_t TSQLFile::ProduceClassSelectQuery ( TVirtualStreamerInfo info,
TSQLClassInfo sqlinfo,
TString columns,
TString tables,
Int_t tablecnt 
)
protected

used by MakeClassSelectQuery method to add columns from table of class, specified by TVirtualStreamerInfo structure

Definition at line 1240 of file TSQLFile.cxx.

◆ ReadBuffer() [1/2]

Bool_t TSQLFile::ReadBuffer ( char *  buf,
Int_t  len 
)
inlinefinalvirtual

Read a buffer from the file.

This is the basic low level read operation. Returns kTRUE in case of failure.

Reimplemented from TFile.

Definition at line 237 of file TSQLFile.h.

◆ ReadBuffer() [2/2]

Bool_t TSQLFile::ReadBuffer ( char *  buf,
Long64_t  pos,
Int_t  len 
)
inlinefinalvirtual

Read a buffer from the file at the offset 'pos' in the file.

Returns kTRUE in case of failure. Compared to ReadBuffer(char*, Int_t), this routine does not change the cursor on the physical file representation (fD) if the data is in this TFile's cache.

Reimplemented from TFile.

Definition at line 238 of file TSQLFile.h.

◆ ReadConfigurations()

Bool_t TSQLFile::ReadConfigurations ( )
protected

read table configurations as special table

Definition at line 1057 of file TSQLFile.cxx.

◆ ReadFree()

void TSQLFile::ReadFree ( )
inlinefinalvirtual

Read the FREE linked list.

Every file has a linked list (fFree) of free segments. This linked list has been written on the file via WriteFree as a single data record.

Reimplemented from TFile.

Definition at line 239 of file TSQLFile.h.

◆ ReadSpecialObject()

TObject * TSQLFile::ReadSpecialObject ( Long64_t  keyid,
TObject obj = 0 
)
protected

Read data of special kind of objects.

Definition at line 854 of file TSQLFile.cxx.

◆ ReadSQLClassInfos()

void TSQLFile::ReadSQLClassInfos ( )
protected

Read all class infos from IdsTable.

Definition at line 1914 of file TSQLFile.cxx.

◆ Recover()

Int_t TSQLFile::Recover ( )
inlinefinalvirtual

Attempt to recover file if not correctly closed.

The function returns the number of keys that have been recovered. If no keys can be recovered, the file will be declared Zombie by the calling function. This function is automatically called when opening a file. If the file is open in read only mode, the file is not modified. If open in update mode and the function finds something to recover, a new directory header is written to the file. When opening the file gain no message from Recover will be reported. If keys have been recovered, the file is usable and you can safely read the corresponding objects. If the file is not usable (a zombie), you can test for this case with code like:

TFile f("myfile.root");
if (f.IsZombie()) {<actions to take if file is unusable>}
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:48
Definition: file.py:1

If the file has been recovered, the bit kRecovered is set in the TFile object in memory. You can test if the file has been recovered with

if (f.TestBit(TFile::kRecovered)) {... the file has been recovered}

When writing TTrees to a file, it is important to save the Tree header at regular intervals (see TTree::AutoSave). If a file containing a Tree is recovered, the last Tree header written to the file will be used. In this case all the entries in all the branches written before writing the header are valid entries. One can disable the automatic recovery procedure by setting

TFile.Recover 0

in the system.rootrc file.

Reimplemented from TFile.

Definition at line 240 of file TSQLFile.h.

◆ ReOpen()

Int_t TSQLFile::ReOpen ( Option_t mode)
finalvirtual

Reopen a file with a different access mode, like from READ to See TFile::Open() for details.

Reimplemented from TFile.

Definition at line 722 of file TSQLFile.cxx.

◆ RequestSQLClassInfo() [1/2]

TSQLClassInfo * TSQLFile::RequestSQLClassInfo ( const char *  clname,
Int_t  version 
)
protected

Search in database tables for specified class and return TSQLClassInfo object.

Definition at line 1803 of file TSQLFile.cxx.

◆ RequestSQLClassInfo() [2/2]

TSQLClassInfo * TSQLFile::RequestSQLClassInfo ( const TClass cl)
protected

Search in database tables for specified class and return TSQLClassInfo object.

Definition at line 1906 of file TSQLFile.cxx.

◆ ResetErrno()

void TSQLFile::ResetErrno ( ) const
inlinefinalvirtual

Method resetting the errno.

Reimplemented from TFile.

Definition at line 216 of file TSQLFile.h.

◆ Rollback()

Bool_t TSQLFile::Rollback ( )

Rollback all operations, done after StartTransaction() call.

Database should return to initial state.

Definition at line 596 of file TSQLFile.cxx.

◆ SaveToDatabase()

void TSQLFile::SaveToDatabase ( )
protected

save data which is not yet in Database Typically this is streamerinfos structures or

Definition at line 909 of file TSQLFile.cxx.

◆ Seek()

void TSQLFile::Seek ( Long64_t  offset,
ERelativeTo  pos = kBeg 
)
inlinefinalvirtual

Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd.

Reimplemented from TFile.

Definition at line 242 of file TSQLFile.h.

◆ SetArrayLimit()

void TSQLFile::SetArrayLimit ( Int_t  limit = 20)

Defines maximum number of columns for array representation If array size bigger than limit, array data will be converted to raw format This is usefull to prevent tables with very big number of columns If limit==0, all arrays will be stored in raw format If limit<0, all array values will be stored in column form Default value is 21.

Definition at line 517 of file TSQLFile.cxx.

◆ SetEND()

void TSQLFile::SetEND ( Long64_t  )
inlinefinalvirtual

Reimplemented from TFile.

Definition at line 244 of file TSQLFile.h.

◆ SetLocking()

void TSQLFile::SetLocking ( Int_t  mode)
protected

Set locking mode for current database.

Definition at line 1337 of file TSQLFile.cxx.

◆ SetTablesType()

void TSQLFile::SetTablesType ( const char *  tables_type)

Defines tables type, which is used in CREATE TABLE statements Now is only used for MySQL database, where following types are supported: "BDB", "HEAP", "ISAM", "InnoDB", "MERGE", "MRG_MYISAM", "MYISAM" Default for TSQLFile is "InnoDB".

For more detailes see MySQL docs.

Definition at line 531 of file TSQLFile.cxx.

◆ SetUseIndexes()

void TSQLFile::SetUseIndexes ( Int_t  use_type = kIndexesBasic)

Specify usage of indexes for data tables.

Index Description
kIndexesNone = 0 no indexes are used
kIndexesBasic = 1 indexes used only for keys list and objects list tables (default)
kIndexesClass = 2 index also created for every normal class table
kIndexesAll = 3 index created for every table, including streamer tables

Indexes in general should increase speed of access to objects data, but they required more operations and more disk space on server side

Definition at line 618 of file TSQLFile.cxx.

◆ SetUseSuffixes()

void TSQLFile::SetUseSuffixes ( Bool_t  on = kTRUE)

enable/disable uasge of suffixes in columns names can be changed before first object is saved into file

Definition at line 501 of file TSQLFile.cxx.

◆ SetUseTransactions()

void TSQLFile::SetUseTransactions ( Int_t  mode = kTransactionsAuto)

Defines usage of transactions statements for writing objects data to database.

| Index | Description | |----—|----------—| | kTransactionsOff=0 - no transaction operation are allowed | | kTransactionsAuto=1 - automatic mode. Each write operation, produced by TSQLFile, will be supplied by START TRANSACTION and COMMIT calls. If any error happen, ROLLBACK will returns database to previous state | | kTransactionsUser=2 - transactions are delegated to user. Methods StartTransaction(), Commit() and Rollback() should be called by user. |

Default UseTransactions option is kTransactionsAuto

Definition at line 551 of file TSQLFile.cxx.

◆ Sizeof()

Int_t TSQLFile::Sizeof ( ) const
inlinefinalvirtual

Return the size in bytes of the file header.

Reimplemented from TFile.

Definition at line 245 of file TSQLFile.h.

◆ SkipArrayLimit()

void TSQLFile::SkipArrayLimit ( )
inline

Definition at line 188 of file TSQLFile.h.

◆ SQLApplyCommands()

Bool_t TSQLFile::SQLApplyCommands ( TObjArray cmds)
protected

supplies set of commands to server Commands is stored as array of TObjString

Definition at line 1476 of file TSQLFile.cxx.

◆ SQLBigTextType()

const char * TSQLFile::SQLBigTextType ( ) const
inlineprotected

Definition at line 134 of file TSQLFile.h.

◆ SQLCanStatement()

Bool_t TSQLFile::SQLCanStatement ( )
protected

Test if DB support statement and number of open statements is not exceeded.

Definition at line 1428 of file TSQLFile.cxx.

◆ SQLCommit()

Bool_t TSQLFile::SQLCommit ( )
protected

Commit SQL transaction.

Definition at line 1584 of file TSQLFile.cxx.

◆ SQLCompatibleType()

const char * TSQLFile::SQLCompatibleType ( Int_t  typ) const
protected

Returns sql type name which is most closer to ROOT basic type.

typ should be from TVirtualStreamerInfo:: constansts like TVirtualStreamerInfo::kInt

Definition at line 2569 of file TSQLFile.cxx.

◆ SQLDatetimeType()

const char * TSQLFile::SQLDatetimeType ( ) const
inlineprotected

Definition at line 135 of file TSQLFile.h.

◆ SQLDefaultTableType()

const char * TSQLFile::SQLDefaultTableType ( ) const
inlineprotected

Definition at line 144 of file TSQLFile.h.

◆ SQLDeleteAllTables()

void TSQLFile::SQLDeleteAllTables ( )
protected

Delete all tables in database.

Definition at line 1552 of file TSQLFile.cxx.

◆ SQLDeleteStatement()

void TSQLFile::SQLDeleteStatement ( TSQLStatement stmt)
protected

delete statement and decrease counter

Definition at line 1462 of file TSQLFile.cxx.

◆ SQLDirIdColumn()

const char * TSQLFile::SQLDirIdColumn ( ) const
inlineprotected

Definition at line 137 of file TSQLFile.h.

◆ SQLIdentifierQuote()

const char * TSQLFile::SQLIdentifierQuote ( ) const
inlineprotected

Definition at line 136 of file TSQLFile.h.

◆ SQLIntType()

const char * TSQLFile::SQLIntType ( ) const
protected

return SQL integer type

Definition at line 2577 of file TSQLFile.cxx.

◆ SQLKeyIdColumn()

const char * TSQLFile::SQLKeyIdColumn ( ) const
inlineprotected

Definition at line 138 of file TSQLFile.h.

◆ SQLMaxIdentifierLength()

Int_t TSQLFile::SQLMaxIdentifierLength ( )
protected

returns maximum allowed length of identifiers

Definition at line 1600 of file TSQLFile.cxx.

◆ SQLMaximumValue()

Long64_t TSQLFile::SQLMaximumValue ( const char *  tablename,
const char *  columnname 
)
protected

Returns maximum value, found in specified columnname of table tablename Column type should be numeric.

Definition at line 1516 of file TSQLFile.cxx.

◆ SQLNameSeparator()

const char * TSQLFile::SQLNameSeparator ( ) const
inlineprotected

Definition at line 142 of file TSQLFile.h.

◆ SQLObjectIdColumn()

const char * TSQLFile::SQLObjectIdColumn ( ) const
inlineprotected

Definition at line 139 of file TSQLFile.h.

◆ SQLObjectInfo()

Bool_t TSQLFile::SQLObjectInfo ( Long64_t  objid,
TString clname,
Version_t version 
)
protected

Read from objects table data for specified objectid.

Definition at line 2347 of file TSQLFile.cxx.

◆ SQLObjectsInfo()

TObjArray * TSQLFile::SQLObjectsInfo ( Long64_t  keyid)
protected

Produce array of TSQLObjectInfo objects for all objects, belong to that key Array should be deleted by calling function afterwards.

Definition at line 2374 of file TSQLFile.cxx.

◆ SQLQuery()

TSQLResult * TSQLFile::SQLQuery ( const char *  cmd,
Int_t  flag = 0,
Bool_t ok = 0 
)
protected

Submits query to SQL server.

Flag Value Effect
0 result is not interesting and will be deleted
1 return result of submitted query
2 results is may be necessary for long time Oracle plugin do not support working with several TSQLResult

objects, therefore explicit deep copy will be produced|

If ok!=0, it will contains kTRUE is Query was successful, otherwise kFALSE

Definition at line 1392 of file TSQLFile.cxx.

◆ SQLRawIdColumn()

const char * TSQLFile::SQLRawIdColumn ( ) const
inlineprotected

Definition at line 140 of file TSQLFile.h.

◆ SQLRollback()

Bool_t TSQLFile::SQLRollback ( )
protected

Rollback all SQL operations, done after start transaction.

Definition at line 1592 of file TSQLFile.cxx.

◆ SQLSmallTextType()

const char * TSQLFile::SQLSmallTextType ( ) const
inlineprotected

Definition at line 132 of file TSQLFile.h.

◆ SQLSmallTextTypeLimit()

Int_t TSQLFile::SQLSmallTextTypeLimit ( ) const
inlineprotected

Definition at line 133 of file TSQLFile.h.

◆ SQLStartTransaction()

Bool_t TSQLFile::SQLStartTransaction ( )
protected

Start SQL transaction.

Definition at line 1576 of file TSQLFile.cxx.

◆ SQLStatement()

TSQLStatement * TSQLFile::SQLStatement ( const char *  cmd,
Int_t  bufsize = 1000 
)
protected

Produces SQL statement for currently conected DB server.

Definition at line 1442 of file TSQLFile.cxx.

◆ SQLStrIdColumn()

const char * TSQLFile::SQLStrIdColumn ( ) const
inlineprotected

Definition at line 141 of file TSQLFile.h.

◆ SQLTestTable()

Bool_t TSQLFile::SQLTestTable ( const char *  tablename)
protected

Test, if table of specified name exists.

Definition at line 1496 of file TSQLFile.cxx.

◆ SQLValueQuote()

const char * TSQLFile::SQLValueQuote ( ) const
inlineprotected

Definition at line 143 of file TSQLFile.h.

◆ StartLogFile()

void TSQLFile::StartLogFile ( const char *  fname)

start logging of all SQL statements in specified file

Definition at line 450 of file TSQLFile.cxx.

◆ StartTransaction()

Bool_t TSQLFile::StartTransaction ( )

Start user transaction.

This can be usesful, when big number of objects should be stored in data base and commitment required only if all operations were successful. In that case in the end of all operations method Commit() should be called. If operation on user-level is looks like not successful, method Rollback() will return database data and TSQLFile instance to previous state. In MySQL not all tables types support transaction mode of operation. See SetTablesType() method for details .

Definition at line 568 of file TSQLFile.cxx.

◆ StopLogFile()

void TSQLFile::StopLogFile ( )

close logging file

Definition at line 459 of file TSQLFile.cxx.

◆ StoreObjectInTables()

Long64_t TSQLFile::StoreObjectInTables ( Long64_t  keyid,
const void obj,
const TClass cl 
)
protected

Store object in database. Return stored object id or -1 if error.

Definition at line 2514 of file TSQLFile.cxx.

◆ StreamKeysForDirectory()

Int_t TSQLFile::StreamKeysForDirectory ( TDirectory dir,
Bool_t  doupdate,
Long64_t  specialkeyid = -1,
TKeySQL **  specialkey = 0 
)
protected

read keys for specified directory (when update == kFALSE) or update value for modified keys when update == kTRUE Returns number of successfully read keys or -1 if error

Definition at line 923 of file TSQLFile.cxx.

◆ SysClose()

Int_t TSQLFile::SysClose ( Int_t  fd)
inlinefinalprotectedvirtual

Interface to system close. All arguments like in POSIX close().

Reimplemented from TFile.

Definition at line 45 of file TSQLFile.h.

◆ SysOpen()

Int_t TSQLFile::SysOpen ( const char *  pathname,
Int_t  flags,
UInt_t  mode 
)
inlinefinalprotectedvirtual

Interface to system open. All arguments like in POSIX open().

Reimplemented from TFile.

Definition at line 44 of file TSQLFile.h.

◆ SysRead()

Int_t TSQLFile::SysRead ( Int_t  fd,
void buf,
Int_t  len 
)
inlinefinalprotectedvirtual

Interface to system read. All arguments like in POSIX read().

Reimplemented from TFile.

Definition at line 46 of file TSQLFile.h.

◆ SysSeek()

Long64_t TSQLFile::SysSeek ( Int_t  fd,
Long64_t  offset,
Int_t  whence 
)
inlinefinalprotectedvirtual

Interface to system lseek.

All arguments like in POSIX lseek() except that the offset and return value are of a type which are able to handle 64 bit file systems.

Reimplemented from TFile.

Definition at line 48 of file TSQLFile.h.

◆ SysStat()

Int_t TSQLFile::SysStat ( Int_t  fd,
Long_t id,
Long64_t size,
Long_t flags,
Long_t modtime 
)
inlinefinalprotectedvirtual

Return file stat information.

The interface and return value is identical to TSystem::GetPathInfo(). The function returns 0 in case of success and 1 if the file could not be stat'ed.

Reimplemented from TFile.

Definition at line 49 of file TSQLFile.h.

◆ SysSync()

Int_t TSQLFile::SysSync ( Int_t  fd)
inlinefinalprotectedvirtual

Interface to system fsync. All arguments like in POSIX fsync().

Reimplemented from TFile.

Definition at line 50 of file TSQLFile.h.

◆ SysWrite()

Int_t TSQLFile::SysWrite ( Int_t  fd,
const void buf,
Int_t  len 
)
inlinefinalprotectedvirtual

Interface to system write. All arguments like in POSIX write().

Reimplemented from TFile.

Definition at line 47 of file TSQLFile.h.

◆ UpdateKeyData()

Bool_t TSQLFile::UpdateKeyData ( TKeySQL key)
protected

Updates (overwrites) key data in KeysTable.

Definition at line 1725 of file TSQLFile.cxx.

◆ VerifyLongStringTable()

Bool_t TSQLFile::VerifyLongStringTable ( )
protected

Checks that table for big strings is exists If not, will be created.

Definition at line 2190 of file TSQLFile.cxx.

◆ VerifyObjectTable()

Long64_t TSQLFile::VerifyObjectTable ( )
protected

Checks that objects table is exists If not, table will be created Returns maximum value for existing objects id.

Definition at line 2308 of file TSQLFile.cxx.

◆ Write() [1/2]

Int_t TSQLFile::Write ( const char *  name = nullptr,
Int_t  opt = 0,
Int_t  bufsiz = 0 
) const
inlinefinalvirtual

One can not save a const TDirectory object.

Reimplemented from TFile.

Definition at line 249 of file TSQLFile.h.

◆ Write() [2/2]

Int_t TSQLFile::Write ( const char *  name = nullptr,
Int_t  opt = 0,
Int_t  bufsiz = 0 
)
inlinefinalvirtual

Write memory objects to this file.

Loop on all objects in memory (including subdirectories). A new key is created in the KEYS linked list for each object. The list of keys is then saved on the file (via WriteKeys) as a single data record. For values of opt see TObject::Write(). The directory header info is rewritten on the directory header record. The linked list of FREE segments is written. The file header is written (bytes 1->fBEGIN).

Reimplemented from TFile.

Definition at line 248 of file TSQLFile.h.

◆ WriteBuffer()

Bool_t TSQLFile::WriteBuffer ( const char *  buf,
Int_t  len 
)
inlinefinalvirtual

Write a buffer to the file.

This is the basic low level write operation. Returns kTRUE in case of failure.

Reimplemented from TFile.

Definition at line 247 of file TSQLFile.h.

◆ WriteFree()

void TSQLFile::WriteFree ( )
inlinefinalvirtual

Write FREE linked list on the file.

The linked list of FREE segments (fFree) is written as a single data record.

Reimplemented from TFile.

Definition at line 250 of file TSQLFile.h.

◆ WriteHeader()

void TSQLFile::WriteHeader ( )
finalvirtual

Write file info like configurations, title, UUID and other.

Reimplemented from TFile.

Definition at line 785 of file TSQLFile.cxx.

◆ WriteKeyData()

Bool_t TSQLFile::WriteKeyData ( TKeySQL key)
protected

Add entry into keys table.

Definition at line 1694 of file TSQLFile.cxx.

◆ WriteSpecialObject()

Bool_t TSQLFile::WriteSpecialObject ( Long64_t  keyid,
TObject obj,
const char *  name,
const char *  title 
)
protected

write special kind of object like streamer infos or file itself keys for that objects should exist in tables but not indicated in list of keys, therefore users can not get them with TDirectoryFile::Get() method

Definition at line 832 of file TSQLFile.cxx.

◆ WriteStreamerInfo()

void TSQLFile::WriteStreamerInfo ( )
finalvirtual

Store all TVirtualStreamerInfo, used in file, in sql database.

Reimplemented from TFile.

Definition at line 793 of file TSQLFile.cxx.

Friends And Related Function Documentation

◆ TBufferSQL2

friend class TBufferSQL2
friend

Definition at line 32 of file TSQLFile.h.

◆ TKeySQL

friend class TKeySQL
friend

Definition at line 33 of file TSQLFile.h.

◆ TSqlCmdsBuffer

friend class TSqlCmdsBuffer
friend

Definition at line 38 of file TSQLFile.h.

◆ TSqlRawBuffer

friend class TSqlRawBuffer
friend

Definition at line 37 of file TSQLFile.h.

◆ TSqlRegistry

friend class TSqlRegistry
friend

Definition at line 36 of file TSQLFile.h.

◆ TSQLStructure

friend class TSQLStructure
friend

Definition at line 34 of file TSQLFile.h.

◆ TSQLTableData

friend class TSQLTableData
friend

Definition at line 35 of file TSQLFile.h.

Member Data Documentation

◆ fArrayLimit

Int_t TSQLFile::fArrayLimit
protected

! limit for array size. when array bigger, its content converted to raw format

Definition at line 152 of file TSQLFile.h.

◆ fBasicTypes

const char** TSQLFile::fBasicTypes
protected

! pointer on list of basic types specific for currently connected SQL server

Definition at line 160 of file TSQLFile.h.

◆ fCanChangeConfig

Bool_t TSQLFile::fCanChangeConfig
protected

! variable indicates can be basic configuration changed or not

Definition at line 153 of file TSQLFile.h.

◆ fIdsTableExists

Bool_t TSQLFile::fIdsTableExists
protected

! indicate if IdsTable exists

Definition at line 167 of file TSQLFile.h.

◆ fLogFile

std::ofstream* TSQLFile::fLogFile
protected

! log file with SQL statements

Definition at line 165 of file TSQLFile.h.

◆ fModifyCounter

Int_t TSQLFile::fModifyCounter
protected

! indicates how many changes was done with database tables

Definition at line 157 of file TSQLFile.h.

◆ fOtherTypes

const char** TSQLFile::fOtherTypes
protected

! pointer on list of other SQL types like TEXT or blob

Definition at line 161 of file TSQLFile.h.

◆ fQuerisCounter

Int_t TSQLFile::fQuerisCounter
protected

! how many query was applied

Definition at line 158 of file TSQLFile.h.

◆ fSQL

TSQLServer* TSQLFile::fSQL
protected

! interface to SQL database

Definition at line 146 of file TSQLFile.h.

◆ fSQLClassInfos

TList* TSQLFile::fSQLClassInfos
protected

! list of SQL class infos

Definition at line 148 of file TSQLFile.h.

◆ fSQLIOversion

Int_t TSQLFile::fSQLIOversion
protected

! version of SQL I/O which is stored in configurations

Definition at line 151 of file TSQLFile.h.

◆ fStmtCounter

Int_t TSQLFile::fStmtCounter
protected

! count numbers of active statements

Definition at line 168 of file TSQLFile.h.

◆ fTablesType

TString TSQLFile::fTablesType
protected

! type, used in CREATE TABLE statements

Definition at line 154 of file TSQLFile.h.

◆ fUseIndexes

Int_t TSQLFile::fUseIndexes
protected

! use indexes for tables: 0 - off, 1 - only for basic tables, 2 + normal class tables, 3 - all tables

Definition at line 156 of file TSQLFile.h.

◆ fUserName

TString TSQLFile::fUserName
protected

! user name, used to access objects from database

Definition at line 163 of file TSQLFile.h.

◆ fUseSuffixes

Bool_t TSQLFile::fUseSuffixes
protected

! use suffixes in column names like fValue:Int_t or fObject:pointer

Definition at line 150 of file TSQLFile.h.

◆ fUseTransactions

Int_t TSQLFile::fUseTransactions
protected

! use transaction statements for writing data into the tables

Definition at line 155 of file TSQLFile.h.

Libraries for TSQLFile:
[legend]

The documentation for this class was generated from the following files: