69const char *Bool = 
"Bool_t";
 
   70const char *
Char = 
"Char_t";
 
   72const char *
Int = 
"Int_t";
 
   73const char *
Long = 
"Long_t";
 
   79const char *
UInt = 
"UInt_t";
 
  183   if (
info && !
info->IsClassTableExist())
 
 
  248      scnt.Form(
"%d", cnt);
 
  264   } 
while (cnt < 10000);
 
  266   Error(
"DefineSQLName", 
"Cannot find reasonable column name for field %s", fullname);
 
 
  558      cl = 
info->GetClass();
 
 
  584      child->SetParent(
this);
 
 
  680   case 0: std::cout << 
"Undefined type"; 
break;
 
  690      std::cout << 
"Class: " << 
info->GetName();
 
  696      std::cout << 
"Member: " << 
elem->GetName();
 
  700      std::cout << 
"Value: " << 
fValue;
 
  704         std::cout << 
"  type = " << (
const char *)
fPointer;
 
  708      std::cout << 
"Array ";
 
  710         std::cout << 
"  sz = " << 
fValue;
 
  715      std::cout << 
"CustomClass: " << cl->
GetName() << 
"  ver = " << 
fValue;
 
  718   default: std::cout << 
"Unknown type";
 
  720   std::cout << std::endl;
 
 
  888      Int_t maxsize = 50000;
 
  895      while ((cmd = iter()) != 
nullptr) {
 
 
  944         Error(
"AddRegCmd", 
"Something wrong with objid = %lld", objid);
 
  953            const char *pars = 
fFile->
IsOracle() ? 
":1, :2, :3, :4" : 
"?, ?, ?, ?";
 
 
 1009         for (
int n = 0; 
n < 
columns->GetNumColumns(); 
n++) {
 
 1026      stmt->NextIteration();
 
 
 
 1122            const char *params = 
fFile->
IsOracle() ? 
":1, :2, :3, :4" : 
"?, ?, ?, ?";
 
 1130      const char *fullname = 
name;
 
 1135         fullname = buf.
Data();
 
 1141         stmt->NextIteration();
 
 
 
 1206   reg.ConvertPoolValues();
 
 
 1219   const char *ns = 
reg->fFile->SQLNameSeparator();
 
 1241         Error(
"PerformConversion", 
"version without class");
 
 1260         sobjid.Form(
"%lld", objid);
 
 1300         if (
size > 
reg->fFile->SQLSmallTextTypeLimit()) {
 
 1302            buf = 
reg->fFile->CodeLongString(
reg->fCurrentObjId, 
strid);
 
 
 1331   if (!cl || (objid < 0))
 
 1335      std::cout << 
"Store object " << objid << 
" cl = " << cl->
GetName() << std::endl;
 
 1345   reg->fCurrentObjId = objid;
 
 1346   reg->fCurrentObjClass = cl;
 
 1365      std::cout << 
"Store object " << objid << 
" of class " << cl->
GetName() << 
"  normal = " << 
normstore 
 1366                << 
" sqltype = " << 
GetType() << std::endl;
 
 1377         child->PerformConversion(
reg, &rawdata, 
nullptr );
 
 1384      reg->AddRegCmd(objid, cl);
 
 
 1408   return s_info->StoreClassInNormalForm(
reg);
 
 
 1434   columns.AddColumn(
reg->fFile->SQLObjectIdColumn(), 
reg->fCurrentObjId);
 
 1441         Error(
"StoreClassInNormalForm", 
"CAN NOT BE");
 
 1450         Error(
"StoreClassInNormalForm", 
"Element %s typ=%d has problem with normal store ", 
elem->GetName(),
 
 1460         if (
child->TryConvertObjectArray(
reg, &rawdata))
 
 1477      if (
reg->fFile->GetUseSuffixes())
 
 
 1496   if (!
elem || (
elem->GetArrayLength() == 0))
 
 1499   for (
Int_t ndim = 
elem->GetArrayDim() - 1; ndim >= 0; ndim--) {
 
 1503      buf.
Form(
"%s%d%s", 
"[", 
ix, 
"]");
 
 
 1523      std::cout << 
"Element " << 
elem->GetName() << 
"   type = " << 
typ << 
"  column = " << 
columntyp << std::endl;
 
 1536      const char *stype = 
reg->fFile->SQLSmallTextType();
 
 1568            if (!
child->StoreObject(
reg, objid, 
child->GetObjectClass()))
 
 1580         objid = 
reg->GetNextObjId();
 
 1606         normal = 
child->StoreObject(
reg, objid, 
child->GetObjectClass());
 
 1612         Error(
"kColNormObject", 
"child->StoreObject fails");
 
 1634            normal = 
child->StoreObject(
reg, objid, 
child->GetObjectClass());
 
 1658         normal = 
child->StoreObject(
reg, objid, 
child->GetObjectClass());
 
 1672         Error(
"StoreElementInNormalForm", 
"Unexpected number %d for simple element %s", 
NumChilds(), 
elem->GetName());
 
 1695         Error(
"StoreElementInNormalForm", 
"In fixed array %s only array node should be", 
elem->GetName());
 
 1700      const char *
sqltype = 
reg->fFile->SQLCompatibleType(
typ % 20);
 
 1714         while (
index < last) {
 
 
 1751   const char *ns = 
reg->fFile->SQLNameSeparator();
 
 1761      if (!
s_info->StoreObject(
reg, objid, cl))
 
 1765      sobjid.Form(
"%lld", objid);
 
 
 1829   columns.AddColumn(
reg->fFile->SQLObjectIdColumn(), 
reg->fCurrentObjId);
 
 
 1848   const char *
value = 
nullptr;
 
 1858   columns.AddColumn(
reg->fFile->SQLObjectIdColumn(), 
reg->fCurrentObjId);
 
 
 1937      if ((
f->GetArrayLimit() < 0) || (
elem->GetArrayLength() <= 
f->GetArrayLimit()))
 
 1967      if (
elem->GetArrayLength() == 0)
 
 1969      else if (!
elem->GetStreamer())
 
 1975      if ((
elem->GetArrayLength() == 0) || 
elem->GetStreamer())
 
 1987      if (
elem->GetStreamer())
 
 1995      if (
elem->GetArrayLength() == 0)
 
 1997      else if (!
elem->GetStreamer())
 
 
 2030      if (
f->GetUseSuffixes()) {
 
 2045      if (
f->GetUseSuffixes())
 
 2052      if (
f->GetUseSuffixes())
 
 2060      if (
f->GetUseSuffixes())
 
 2067      if (
f->GetUseSuffixes())
 
 2074      if (
f->GetUseSuffixes())
 
 2081      if (
f->GetUseSuffixes())
 
 2088      if (
f->GetUseSuffixes())
 
 2095      if (
f->GetUseSuffixes())
 
 
 2116      std::cout << 
"TSQLStructure::LocateElementColumn " << 
elem->GetName() << 
" coltyp = " << 
coltype << 
" : " 
 2117                << 
elem->GetType() << 
" len = " << 
elem->GetArrayLength() << std::endl;
 
 2128      std::cout << 
"         colname = " << 
colname << 
" in " << 
data->GetInfo()->GetClassTableName() << std::endl;
 
 2165      if (
sqlinfo->IsClassTableExist()) {
 
 2215      if (
sqlinfo->IsClassTableExist()) {
 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t child
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void reg
 
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
 
Converts data to SQL statements or read data from SQL tables.
 
Bool_t SqlObjectInfo(Long64_t objid, TString &clname, Version_t &version)
Returns object info like classname and version Should be taken from buffer, which is produced in the ...
 
TSQLObjectData * SqlObjectData(Long64_t objid, TSQLClassInfo *sqlinfo)
Creates TSQLObjectData for specified object id and specified class.
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
Version_t GetClassVersion() const
 
const char * GetName() const override
Return name of this collection.
 
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
 
void Add(TObject *obj) override
This function may not be used (but we need to provide it since it is a pure virtual in TCollection).
 
void DeleteValues()
Remove all (key,value) pairs from the map AND delete the values when they are allocated on the heap.
 
TObject * GetValue(const char *keyname) const
Returns a pointer to the value associated with keyname as name of the key.
 
const char * GetName() const override
Returns name of object.
 
TObject * Last() const override
Return the object in the last filled slot. Returns 0 if no entries.
 
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
 
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
 
TObject * At(Int_t idx) const override
 
Int_t GetLast() const override
Return index of last object in array.
 
void Add(TObject *obj) override
 
Collectable string class.
 
Mother of all ROOT objects.
 
virtual const char * GetName() const
Returns name of object.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
const char * GetSQLName() const
 
Contains information about tables specific to one class and version.
 
const char * GetRawTableName() const
 
TString fValue
! value of the table column
 
TSQLColumnData(const char *name, const char *sqltype, const char *value, Bool_t numeric)
normal constructor of TSQLColumnData class specifies name, type and value for one column
 
Access an SQL db via the TFile interface.
 
const char * SQLIdentifierQuote() const
 
Bool_t SQLCanStatement()
Test if DB support statement and number of open statements is not exceeded.
 
Bool_t CreateRawTable(TSQLClassInfo *sqlinfo)
Create the raw table.
 
const char * SQLValueQuote() const
 
Bool_t IsMySQL() const
checks, if MySQL database
 
Bool_t IsOracle() const
checks, if Oracle database
 
Int_t SQLSmallTextTypeLimit() const
 
TSQLStatement * SQLStatement(const char *cmd, Int_t bufsize=1000)
Produces SQL statement for currently conected DB server.
 
void SQLDeleteStatement(TSQLStatement *stmt)
delete statement and decrease counter
 
Int_t SQLMaxIdentifierLength()
returns maximum allowed length of identifiers
 
Bool_t IsODBC() const
checks, if ODBC driver used for database connection
 
Bool_t VerifyLongStringTable()
Checks that table for big strings is exists If not, will be created.
 
TSQLObjectData is used in TBufferSQL2 class in reading procedure.
 
virtual Bool_t NextIteration()=0
 
virtual Bool_t SetString(Int_t, const char *, Int_t=256)
 
virtual Bool_t Process()=0
 
virtual Bool_t SetInt(Int_t, Int_t)
 
virtual Bool_t SetLong64(Int_t, Long64_t)
 
This is hierarchical structure, which is created when data is written by TBufferSQL2.
 
Bool_t RecognizeTString(const char *&value)
prove that structure contains TString data
 
TSQLStructure * GetParent() const
 
Int_t LocateElementColumn(TSQLFile *f, TBufferSQL2 *buf, TSQLObjectData *data)
find column in TSQLObjectData object, which correspond to current element
 
TClass * GetObjectClass() const
return object class if type kSqlObject
 
void SetValue(const char *value, const char *tname=nullptr)
set structure type as kSqlValue
 
Bool_t TryConvertObjectArray(TSqlRegistry *reg, TSqlRawBuffer *blobs)
tries to write array of objects as list of object references in streamer table, while objects itself ...
 
static void AddStrBrackets(TString &s, const char *quote)
adds quotes around string value and replaces some special symbols
 
void Add(TSQLStructure *child)
Add child structure.
 
void AddVersion(const TClass *cl, Int_t version=-100)
add child as version
 
void SetVersion(const TClass *cl, Int_t version=-100)
set structure type as kSqlVersion
 
void SetObjectPointer(Long64_t ptrid)
set structure type as kSqlPointer
 
void SetArray(Int_t sz=-1)
Set structure as array element.
 
static Bool_t IsNumericType(Int_t typ)
defines if value is numeric and not requires quotes when writing
 
Int_t GetElementNumber() const
returns number of TStremerElement in TStreamerInfo
 
TSQLObjectData * GetObjectData(Bool_t search=false)
searches for objects data
 
TStreamerInfo * GetStreamerInfo() const
return TStreamerInfo* if type is kSqlStreamerInfo
 
void PerformConversion(TSqlRegistry *reg, TSqlRawBuffer *blobs, const char *topname, Bool_t useblob=kFALSE)
perform conversion of structure to sql statements first tries convert it to normal form if fails,...
 
Bool_t StoreTObject(TSqlRegistry *reg)
store data of TObject in special table workaround custom TObject streamer
 
TSQLStructure * GetChild(Int_t n) const
return child structure of index n
 
Bool_t GetClassInfo(TClass *&cl, Version_t &version)
provides class info if structure kSqlStreamerInfo or kSqlCustomClass
 
void SetCustomClass(const TClass *cl, Version_t version)
set structure type as kSqlCustomClass
 
const char * GetValue() const
returns value for different structure kinds has different sense For kSqlVersion it version,...
 
static Bool_t UnpackTString(TSQLFile *f, TBufferSQL2 *buf, TSQLObjectData *data, Long64_t objid, Int_t clversion)
Unpack TString data in form, accepted by custom TString streamer.
 
static Int_t DefineElementColumnType(TStreamerElement *elem, TSQLFile *f)
defines which kind of column can be assigned for this element Possible cases kColSimple - basic data ...
 
Long64_t FindMaxObjectId()
define maximum reference id, used for objects
 
void AddValue(const char *value, const char *tname=nullptr)
Add child structure as value.
 
Bool_t StoreObjectInNormalForm(TSqlRegistry *reg)
this function verify object child elements and calls transformation to class table
 
void SetStreamerInfo(const TStreamerInfo *info)
set structure type as kSqlStreamerInfo
 
void AddObjectData(TSQLObjectData *objdata)
add element with pointer to object data
 
void SetArrayIndex(Int_t indx, Int_t cnt=1)
set array index for this structure
 
Bool_t StoreClassInNormalForm(TSqlRegistry *reg)
produces data for complete class table where not possible, raw data for some elements are created
 
static TString MakeArrayIndex(TStreamerElement *elem, Int_t n)
produce string with complete index like [1][2][0]
 
Version_t GetCustomClassVersion() const
return custom class version if structures is kSqlCustomClass
 
static Bool_t UnpackTObject(TSQLFile *f, TBufferSQL2 *buf, TSQLObjectData *data, Long64_t objid, Int_t clversion)
Unpack TObject data in form, accepted by custom TObject streamer.
 
Bool_t StoreObject(TSqlRegistry *reg, Long64_t objid, TClass *cl, Bool_t registerobj=kTRUE)
convert object data to sql statements if normal (column-wise) representation is not possible,...
 
void ChangeValueOnly(const char *value)
change value of this structure used as "workaround" to keep object id in kSqlElement node
 
Bool_t ConvertToTables(TSQLFile *f, Long64_t keyid, TObjArray *cmds)
Convert structure to sql statements This function is called immediately after TBufferSQL2 produces th...
 
void Print(Option_t *option="") const override
print content of complete structure
 
void SetCustomElement(TStreamerElement *elem)
set structure type as kSqlCustomElement
 
const char * GetValueType() const
return value type if structure is kSqlValue
 
static TString DefineElementColumnName(TStreamerElement *elem, TSQLFile *f, Int_t indx=0)
returns name of the column in class table for that element
 
void SetObjectData(TSQLObjectData *objdata)
set element to be used for object data
 
void SetObjectRef(Long64_t refid, const TClass *cl)
set structure type as kSqlObject
 
Long64_t DefineObjectId(Bool_t recursive=kTRUE)
defines current object id, to which this structure belong make life complicated, because some objects...
 
TStreamerElement * GetElement() const
return TStremerElement* if type is kSqlElement
 
TClass * GetVersionClass() const
return class for version tag if type is kSqlVersion
 
void PrintLevel(Int_t level) const
print content of current structure
 
static const char * GetSimpleTypeName(Int_t typ)
provides name for basic types used as suffix for column name or field suffix in raw table
 
Bool_t StoreElementInNormalForm(TSqlRegistry *reg, TSQLTableData *columns)
tries to store element data in column
 
Bool_t CheckNormalClassPair(TSQLStructure *vers, TSQLStructure *info)
check if pair of two element corresponds to start of object, stored in normal form
 
Int_t NumChilds() const
number of child structures
 
TClass * GetCustomClass() const
return element custom class if structures is kSqlCustomClass
 
~TSQLStructure() override
destructor
 
Bool_t StoreTString(TSqlRegistry *reg)
store data of TString in special table it is required when TString stored as pointer and reference to...
 
void SetClassStreamer(const TClass *cl)
set structure type as kSqlClassStreamer
 
void SetStreamerElement(const TStreamerElement *elem, Int_t number)
set structure type as kSqlElement
 
void ChildArrayIndex(Int_t index, Int_t cnt=1)
set array index for last child element if (cnt<=1) return;
 
void AddColumn(const char *name, Long64_t value)
Add INT column to list of columns.
 
TString DefineSQLName(const char *fullname)
produce suitable name for column, taking into account length limitation
 
~TSQLTableData() override
destructor
 
Bool_t HasSQLName(const char *sqlname)
checks if columns list already has that sql name
 
const char * GetColumn(Int_t n)
return column value
 
Bool_t IsNumeric(Int_t n)
identifies if column has numeric value
 
TObjArray fColumns
! collection of columns
 
Int_t GetNumColumns()
returns number of columns in provided set
 
TObjArray * fColInfos
! array with TSQLClassColumnInfo, used later for TSQLClassInfo
 
TSQLTableData(TSQLFile *f=nullptr, TSQLClassInfo *info=nullptr)
normal constructor
 
TObjArray * TakeColInfos()
take ownership over colinfos
 
TSQLStatement * fBlobStmt
 
TSQLStatement * fNormStmt
 
~TSqlCmdsBuffer() override
 
TSqlCmdsBuffer(TSQLFile *f, TSQLClassInfo *info)
 
void AddValues(Bool_t isnorm, const char *values)
 
~TSqlRawBuffer() override
 
TSqlRawBuffer(TSqlRegistry *reg, TSQLClassInfo *sqlinfo)
 
void AddLine(const char *name, const char *value, const char *topname=nullptr, const char *ns=nullptr)
 
Bool_t InsertToNormalTableOracle(TSQLTableData *columns, TSQLClassInfo *sqlinfo)
 
TSqlCmdsBuffer * GetCmdsBuffer(TSQLClassInfo *sqlinfo)
 
TClass * fCurrentObjClass
 
void InsertToNormalTable(TSQLTableData *columns, TSQLClassInfo *sqlinfo)
 
void AddRegCmd(Long64_t objid, TClass *cl)
 
void AddSqlCmd(const char *query)
 
void ConvertSqlValues(TObjArray &values, const char *tablename)
 
Int_t AddLongString(const char *strvalue)
 
Describes a persistent version of a class.
 
@ kUChar
Equal to TDataType's kchar.
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
void Resize(Ssiz_t n)
Resize the string. Truncate or add blanks as necessary.
 
TString & Prepend(const char *cs)
 
TString & Append(const char *cs)
 
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
 
Long64_t Atoll() const
Return long long value of string.
 
const char * cfg_UseIndexes
 
const char * StringsTable
 
const char * ObjectsTableIndex
 
const char * ObjectSuffix
 
const char * KeysTableIndex
 
Long64_t atol64(const char *value)
 
const char * TStringValue
 
const char * cfg_TablesType
 
const Int_t Ids_FirstObject
 
const char * ObjectRef_Arr
 
const Int_t Ids_StreamerInfos
 
const char * ParentSuffix
 
const char * cfg_ArrayLimit
 
const char * TObjectProcessId
 
const char * PointerSuffix
 
const char * IdsTableIndex
 
const char * cfg_UseTransactions
 
const char * cfg_LockingMode
 
const char * cfg_UseSufixes
 
const char * ObjectsTable
 
const char * cfg_ModifyCounter
 
const char * TObjectUniqueId
 
const char * LongStrPrefix