Creating Offline Tables
HOW TO ADD NEW TABLE TO DATABASE:
create a working directory.
$> cvs co StDb/idl (overkill - but so what) $> cp StDb/idl/svtHybridDriftVelocity.idl . $> mkdir include && mkdir xml $> cp svtHybridDriftVelocity.idl include/ $> mv include/svtHybridDriftVelocity.idl include/svtHybridDriftVelocity.h $> cp -r ~deph/updates/pmd/070702/scripts/ . # this directory is in cvs $> vim include/svtHybridDriftVelocity.h
### MAKE SURE your .idl file comments are less than 80 characters due to STIC limitation. "/* " and " */" also counted, so real comment line should be less than 74 chars.
### Check and change datatypes - octets become unsigned char and long becomes int, see table for mapping details:
IDL | C++ | MySQL |
short, 16 bit signed integer | short, 2 bytes | SMALLINT (-32768...32768) |
unsigned short, 16 bit unsigned integer | unsigned short, 2bytes | SMALLINT UNSIGNED (0...65535) |
long, 32 bit signed integer | int, 4 bytes | INT (-2147483648...2147483647) |
unsigned long, 32 bit unsigned integer | unsigned int, 4 bytes | INT UNSIGNED (0...4294967295) |
float, 32 bit IEEE float | float, 4 bytes | FLOAT |
double, 64 bit IEEE double | double, 8 bytes | DOUBLE |
char, 8 bit ISO latin-1 | char, 1 byte | CHAR |
octet, 8 bit byte (0x00 to 0xFF) | unsigned char, 1 byte | TINYINT UNSIGNED (0...255) |
NOW execute a bunch of scripts (italics are output) ( all scripts provide HELP when nothing is passed) .....
1) ./scripts/dbTableXml.pl -f include/svtHybridDriftVelocity.h -d Calibrations_svt
inputfile= include/svtHybridDriftVelocity.h
input database =Calibrations_svt
******************************
*
* Running dbTableXML.pl
*
outputfile = xml/svtHybridDriftVelocity.xml
******************************
2) ./scripts/dbDefTable.pl -f xml/svtHybridDriftVelocity.xml -s robinson.star.bnl.gov -c
#####output will end with create statement####
3) ./scripts/dbGetNode.pl -s robinson.star.bnl.gov -d Calibrations_svt
###retuns a file called svtNodes.xml
4) vim svtNodes.xml
###add this line <dbNode> svtHybridDriftVelocity <StDbTable> svtHybridDriftVelocity </StDbTable> </dbNode>
### this defines the node in the Nodes table
5) ./scripts/dbDefNode.pl -s robinson.star.bnl.gov -f svtNodes.xml
###garbage output here....
###now do the same for NodeRelations table
6) ./scripts/dbGetConfig.pl -s robinson.star.bnl.gov -d Calibrations_svt
###might retrun a couple of different configurations (svt definatetely does)
###we're interested in
7) vim Calibrations_svt_reconV0_Config.xml
###add this line <dbNode> svtHybridDriftVelocity <StDbTable> svtHybridDriftVelocity </StDbTable> </dbNode>
8) /scripts/dbDefConfig.pl -s robinson.star.bnl.gov -f Calibrations_svt_reconV0_Config.xml
IF YOU NEED TO UPDATE TABLE, WHICH NAME IS DIFFERENT FROM C++ STRUCTURE NAME:
$> ./scripts/dbDefTable.pl -f xml/
<table_xml>
.xml -s <dbserver>.star.bnl.gov -n
<table_name>
;
</table_name>
</dbserver>
</table_xml>
How to check if table name does not equal to c++ struct name :
mysql prompt> select * from Nodes where structName = 'c++ struct name'
This will output the "name", which is real db table name, and "structName", which is the c++ struct name.
IF YOU NEED TO CREATE A NEW PROTO-STRUCTURE (no storage):
./scripts/dbDefTable.pl -f xml/<structure>.xml -s robinson.star.bnl.gov -e
IF YOU NEED TO CREATE A NEW TABLE BASED ON THE EXISTING STRUCTURE:
checkout proto-structure IDL file, convert to .h, then to .xml, then do:
$> ./scripts/dbDefTable.pl -f xml/<structure>.xml -s .star.bnl.gov -s <table-name><br />
then add mapping entry to the tableCatalog (manually)
IMPORTANT: WHEN NEW TPC TABLE IS CREATED, THERE SHOULD BE A NEW LOG TRIGGER DEFINED!
please check tmp.dmitry/triggers directory at robinson for details..
-Dmitry
- Printer-friendly version
- Login or register to post comments