Minos-Oracle Status Reports/Daybook

October 2006

August-September 2006

I evaluate the new ROOT SQL interfaces.

Dec 8 2005

Recently fixed and tested

  1. Oracle odbc driver altered so that integers with > 10 decimal digits report back to RDBC as BIGINT and read correctly into 8 byte (long long)
  2. Oracle odbc driver altered so that BINARY_FLOAT and BINARY_DOUBLE (ieee 754) read back correctly
  3. Perl_dbd_oracle v5_8_10 -f Linux+2.4 in KITS, handles BINARY_FLOAT and BINARY_DOUBLE correctly. Earlier perl_dbd_oracle clients do not
  4. inserted a lot of rows that were reported as missing in http://www-numi.fnal.gov/minwork/computing/oracle_checksum.txt on Dec 7. For some reason they don't show up as fixed on Dec 8 report, spot checked with sql prompt and they seem to be there.

Near term plans

  1. build oracle_odbc_driver using oracle 10 and proper glibc so it runs everywhere. There is a backwards compatibility problem with glibc so that oracle software built on the wrong machine (too late of a glibc) wont run on earlier glibc machines. Unfortunately the network with the two machines I can reproduce this on is down so I cant tell you which glibc versions this is, but I have tripped you up on it before by distributing libraries built on the wrong machine only to have you complain that they wont run.
  2. Distribute oracle odbc driver libraries built as per 1) , oracle 10 libraries, and perl_dbd_oracle v5_8_10 onto minos machines. This seems to be a mixture of KITS installs (that I do) and minos-specific library copies that I usually have Liz do.
  3. Drop Oracle tables on minosdev which use old style floats, rebuild using BINARY_FLOAT and BINARY_DOUBLE, refresh, and test. Get help from collaboration to test more extensively.
  4. I still need to modify the minos tutorial examples to report back everything they read from the database. This would have saved me much embarrasment in reporting that everything worked with fine with oracle 10 when in fact it did not.

To Be Decided

  1. Do I check in the code for handling database errors using std::exception, which works (at least to my understanding) or do I keep messing around with signal/slots to see if I can get that working?

Dec 2 2005

Status Report

  1. Oracle odbc driver modified to faithfully support kBIGINT (-5), sidestepping the unsigned problem. Oracle NUMBER(x,0) where x>=10 now reported as SQL_BIGINT which makes RDBC happy in the following way:
    
    
    SQL> desc int_test
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     I                                                  NUMBER(38)
    
    SQL> select * from int_test
      2  ;
    
             I
    ----------
    2147483643
    2147483644
    2147483645
    2147483646
    2147483647
    2147483648
    2147483649
    2147483650
    
    8 rows selected.
    
    (phoenix.fnal.gov:dbox)% loon
    loon [0] .x TestTSQL2.C("test.dat");
    Processing commands in test.dat
    Opening connection to url:oracle:odbc:oraodbc://phoeninx.fnal.gov:1521/test10.2 user: minos_writer passwd:XXXXX
    Executing statement select * from int_test 
    Reading back results
    Result set has 1 columns
    I: type:-5: precision:38
    I: 2147483643 
    I: 2147483644 
    I: 2147483645 
    I: 2147483646 
    I: 2147483647 
    I: 2147483648 
    I: 2147483649 
    I: 2147483650 
    loon [1] q
    
    
  2. Oracle odbc driver (NOW) somewhat reliably reads Oracle 10g BINARY_FLOAT and BINARY_INT types, which it did not despite my earlier repeated claims. Note there is still a problem where precision is returned as '0' when it is actually 32 bits and 64 bits:
    
    
    SQL> desc bin_float_test
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     F1                                                 BINARY_FLOAT
     D1                                                 BINARY_DOUBLE
     OF1                                                FLOAT(63)
     OD1                                                FLOAT(126)
    (phoenix.fnal.gov:dbox)% loon
    loon [0] .x TestTSQL2.C("test.dat");
    Processing commands in test.dat
    Opening connection to url:oracle:odbc:oraodbc://phoeninx.fnal.gov:1521/test10.2 user: minos_writer passwd: minos_writer
    Executing statement select * from bin_float_test 
    Reading back results
    Result set has 4 columns
    F1: type:7: precision:0
    D1: type:8: precision:0
    OF1: type:6: precision:63
    OD1: type:8: precision:126
    F1: 1.234000 D1: 1.234000 OF1: 1.234000 OD1: 1.234000 
    loon [1]  .quit
    
  3. Perl::DBD::Oracle also had to be modified to reliably read/write BINARY_FLOAT and BINARY_DOUBLE types. The modified product is in KITS as perl_dbd_oracle v5_8_10 (perl 5.8, oracle 10). I have submitted my changes to Tim Bunce, the author of this application, and hope he includes it in the next release 1.17
October 27 2005

Status Report

September 29 2005

Status Report