Log of /trunk/io/sql/src/TSQLFile.cxx
Parent Directory
Revision
48992 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Mar 28 15:26:26 2013 UTC (21 months, 3 weeks ago) by
rdm
File length: 85514 byte(s)
Diff to
previous 44507
From Lifeng Sun:
The attached patchset fixes a bunch of typo in the source:
0001-succes-success.patch
0002-preceed-preced.patch
0003-informations-information.patch
0004-childs-children.patch
0005-avaliable-available.patch
0006-writeable-writable.patch
0007-comand-command.patch
0008-unkown-unknown.patch
0009-wierd-weird.patch
0010-wheter-whether.patch
0011-unecessary-unnecessary.patch
0012-splitted-split.patch
0013-registerd-registered.patch
0014-recieve-receive.patch
0015-processsing-processing.patch
0016-ouput-output.patch
0017-mutiple-multiple.patch
0018-lenght-length.patch
0019-interupted-interrupted.patch
0020-independant-independent.patch
0021-inconsistant-inconsistent.patch
0022-expresion-expression.patch
0023-explicitely-explicitly.patch
0024-enviroment-environment.patch
0025-deafult-default.patch
0026-continous-continuous.patch
0027-completly-completely.patch
0028-commited-committed.patch
0029-choosen-chosen.patch
0030-backgroud-background.patch
0031-auxilliary-auxiliary.patch
0032-authentification-authentication.patch
0033-appropiate-appropriate.patch
0034-an-other-another.patch
0035-environement-environment.patch
0036-targetting-targeting.patch
0037-suppported-supported.patch
0038-paramater-parameter.patch
Revision
44507 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jun 4 12:30:41 2012 UTC (2 years, 7 months ago) by
axel
File length: 85513 byte(s)
Diff to
previous 43676
Remove
using namespace std;
from Riostream.h, which has huge consequences for all of ROOT.
Riostream.h is now a simple wrapper for fstream, iostream, iomanip for backward compatibility; Riosfwd.h simply wraps iosfwd.
Because of templates and their inline functions, Riostream.h needed to be included in headers, too (e.g. TParameter.h), which violated the assumption that Riostream.h is not exposing its using namespace std to headers.
ROOT now requires R__ANSISTREAM, R__SSTREAM, which does not change the set of supported compilers.
Without "using namespace std", several identifiers are now prefixed by std::; e.g. roofit/* source files now have a using namespace std to keep their coding style.
TFile::MakeProject() now generates "using namespace std" to convert the CINT-style class names into C++ ones.
Revision
43676 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Apr 10 15:47:19 2012 UTC (2 years, 9 months ago) by
pcanal
File length: 85488 byte(s)
Diff to
previous 41089
Handle known backward-compatibility break of C++11, it is listed
in annex C.2.1, 2.5:
<quote>
Change: User-defined literal string support
Rationale: Required for new features.
Effect on original feature: Valid C++ 2003 code may fail to compile or
produce different results in this International Standard, as the
following example illustrates.
#define _x "there"
"hello"_x // #1
Previously, #1 would have consisted of two separate preprocessing tokens
and the macro _x would have been expanded. In this International
Standard, #1 consists of a single preprocessing tokens, so the macro
is not expanded.
</quote>
The solution consist in adding spaces between the # and the macro (argument)
Revision
41089 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sat Oct 1 19:46:25 2011 UTC (3 years, 3 months ago) by
pcanal
File length: 85486 byte(s)
Diff to
previous 41016
In sqlio and xmlio, use TDirectory::TContext to save/restore gDirectory rather than their own mechanism (in preparation to gFile becoming read only
Revision
27991 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Mar 30 14:38:13 2009 UTC (5 years, 9 months ago) by
brun
File length: 85644 byte(s)
Diff to
previous 23456
From Sergei:
TSQLFile was not working for MySQL, running on MacOS.
Problem was with tables names, which are automatically converted on MacOS into lower case (same is happening on Windows).
TSQLFile was not able to realize this. I fix it just by testing if table name exists in original, lower or upper case.
Revision
17419 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jan 22 05:58:29 2007 UTC (8 years ago) by
brun
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 86706 byte(s)
Diff to
previous 15572
WARNING!!! This is an important change.
This is the continuation of the effort to structure libCore into
independent sub-packages.
A new class TDirectoryFile is introduced. It derives from TDirectory
and takes from TDirectory all the I/O functions.
All the classes (except TROOT) deriving from TDirectory are now derived
from TDirectoryFile. TDirectory keeps the previous API for back compatibility
with several functions made virtual.
This change should be back compatible, except if the user codes creates
a file sub-directory by direct invokation of the TDirectory constructor
instead of calling TDirectory::mkdir.
Note that TMapFile is not yet fully adapted to the new scheme.
Revision
15572 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Jun 27 14:36:28 2006 UTC (8 years, 6 months ago) by
brun
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 86722 byte(s)
Diff to
previous 15538
-Rename class TFilePrefetch -> TFileCacheRead
-Rename class TTreeFilePrefetch -> TTreeCache
-Add new class TFileCacheWrite that implements automatic caching
when writing network files. This class replaces the previous class TCache.
-old TCache class deleted.
-TFileCacheRead can read buffers from the wite cache in TFileCacheWrite.
-As a result TFile::UseCache is obsolete. The function is kept for
backward compatibility.
-Remove references to TCache from TXMLFile, TSQLFile, TwebFile, TNetFile
-remove pointer TFile::fCache
-Add pointers TFile::fCacheRead and TFile::fCacheWrite
-Remove members fMaxCacheSize and fPageSize from TChain
NOTE that it is recommended to
rm -f base/src/*.d base/src/*.o
rm -f net/src/*.d net/src/*.o
rm -f tree/src/*.d tree/src/*.o
Revision
15538 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Jun 25 18:43:24 2006 UTC (8 years, 7 months ago) by
brun
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 86742 byte(s)
Diff to
previous 15522
From Sergey Linev:
1. Support for MySQL version 3.2.x and 4.0 enabled again. For that old MySQL versions TSQLStatement is not supported.
2. Small fix in TSQLFile. With old MySQL versions it does not try to use TSQLStatement class.
3. Enabling/disabling error output for TSQLStatement class.
4. Fix in error handling in TMySQLServer::Statement() method. Previousely error code was not correctly stored.
Revision
15512 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Jun 22 08:21:23 2006 UTC (8 years, 7 months ago) by
brun
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 86640 byte(s)
Diff to
previous 15135
From Sergey Linev:
1. Implementation of TDirectory I/O for TSQLFile and TXMLFile
2. In TSQLFile identifier length is now controled.
Important for Oracle, where table or column name cannot be more than 32 symbols.
3. Adding usage of TSQLStatement class where possible.
4. Small performance improvment.
Revision
14336 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Mar 20 21:43:44 2006 UTC (8 years, 10 months ago) by
pcanal
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 77415 byte(s)
Diff to
previous 13977
Reduce direct dependencies on TClass.h, TROOT.h and TStreamerInfo.h.
Warning: This means that some file that relied on the indirect
inclusion of these header file might now fail to compile with
an error message mention that gROOT is no known or that TClass,
TROOT or TStreamerInfo is incompletely defined. Simply add the
proper include directive.
Revision
13977 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Feb 1 18:57:41 2006 UTC (8 years, 11 months ago) by
pcanal
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 77395 byte(s)
Diff to
previous 13927
From Sergei Linev:
Move CreateKey from TDirectory to TFile
Here is also optimisation of SQL statements and adjustement for Oracle.
Implementation of ClassBegin()/ClassMember()/ClassEnd() methdos for TBufferSQL2 and TBufferXML.
I also implementation for ClassMemeber() method for case of "raw:data" for SQL and XML cases.
Revision
13383 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Nov 28 23:22:31 2005 UTC (9 years, 1 month ago) by
pcanal
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 68787 byte(s)
Diff to
previous 13349
From Sergei Linev:
I made following modification:
1. Usage of table indexes. By default, they created only for basic tables: KeysTable and ObjectsTable.
It is possible to configure TSQLFile to create indexes also for other type of tables or disable indexes at all.
2. Use of transaction. Now by default this option on and protect storage of object data to datatables.
For some types of MySQL tables transaction are not supported, therefore I include in configurations
possibility to setup type of table which should be used.
3. Configurations. For all kind of configuration I create small table.
Configurations can be changed only when TSQLFile is created with option "CREATE" or "RECREATE".
In that case configurations can be changed until first write operation.
4. Locking. I did not use "native" database locking mechnism while they are very different in MySQL and Oracle and
may differ also in other SQL database. I put in Configuration table one flag, which says if database is already
opened for writing by other TSQLFile instance and prevent other TSQLFile to have write access.
For emergency cases one can use "BREAKLOCK" option in TSQLFile constructor to ignore that locking.
This is not real locking and any other user with normal sql queries can disturb tables data, but I do not see
now other solution, which may work for different databases. May be you know better solutions?
Revision
13349 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Nov 24 16:57:23 2005 UTC (9 years, 2 months ago) by
pcanal
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 57142 byte(s)
Diff to
previous 13317
From Sergei Linev:
I introduce new function TSQLFile::MakeSelectQuery.
It produces SQL query, which can be used outside ROOT to get all objects data (including data from parent classes)
with single SELECT statement. As result, one table with all data is produced.
Revision
13317 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Nov 22 20:42:37 2005 UTC (9 years, 2 months ago) by
pcanal
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 52643 byte(s)
Diff to
previous 13312
From Sergei:
Fix white spaces, add more comment to functions, add CVS tag lines and copyright.
It should now work for array of objects and most stl classes.
I put limitation for array size. If array with fixed size exceed limit (default 20),
array will be converted to raw data, otherwise each element of array will be presented as
single column.
Revision
13312 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Added
Mon Nov 21 17:38:24 2005 UTC (9 years, 2 months ago) by
pcanal
Original Path:
trunk/sql/src/TSQLFile.cxx
File length: 52639 byte(s)
From Sergey:
Introduce a "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 $(CLASSNAME)_ver$(VERSION) and $(CLASSNAME)_streamer_ver$(VERSION)
For example: TAxis_ver8 or TList_streamer_ver5
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_streamer_ver4
Most of memebers are stored in TH1_ver4 table columnwise, and only memeber:
Double_t* fBuffer; //[fBufferSize]
can not be represented as column while size of array is not known apriory.
Therefore, fBuffer will be written as list of values in TH1_streamer_ver4 table.
All objects, stored in the DB, will be registered in table "ObjectsTable".
In this there are following columns:
"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 uniqly identify, in which table
and which column object is stored.
In normal situation all class data should be sorted columnwise.
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 corrspondent 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
See the TSQLFile documentation for more details.
example of a session saving data to a SQL data base
=====================================================
const char* dbname = "mysql://host.domain:3306/dbname";
const char* username = "username";
const char* userpass = "userpass";
// Clean data base and create primary tables
TSQLFile* 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;
example of a session read data from SQL data base
=====================================================
// Open database again in read-only mode
TSQLFile* f = new TSQLFile(dbname, "open", username, userpass);
// Show list of keys
f->ls();
// Read stored object, again standard ROOT I/O
TH1* h1 = (TH1*) f->Get("histo");
if (h1!=0) { h1->SetDirectory(0); h1->Draw(); }
TObject* obj = f->Get("arr");
if (obj!=0) obj->Print("*");
// close connection to DB
delete f;
Known problems and open questions.
1) TTree is not supported by TSQLFile. There is independent development
of TTreeSQL, which allows to store trees directly in SQL database
2) TClonesArray is not tested, will be adjusted soon.
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
This form allows you to request diffs between any two revisions of this file.
For each of the two "sides" of the diff,
enter a numeric revision.