Hi there, since I have been ordered to maintain "NDOUtils Oracle for Nagios" I have had a closer look at the libdbi because new projects based on Nagios/NDOUtils are in development. Meanwhile there has been a fork of Nagios named Icinga and the NDO has been renamed to IDO. Explained shortly, IDO gets Nagios Status Data from an Event Broker Module and inserts those into a DB.
Current release 0.8.1 of Icinga [1] heavily uses the libdbi instead of by-RDBM-Code (some queries are of course DB-specific). Nagios as is will relay soon on Merlin [2] which also uses the libdbi. I've been testing Icinga IDO against libdbi and the Oracle driver. Connection is fine, but a single insert-query against Oracle 11g fails throwing an address mapping error. Jun 16 13:41:41 nagios-test ido2db: Error: database query failed for 'INSERT INTO instances (instance_name) VALUES ('default')' - '3113: ORA-03113: end-of-file on communication channel Process ID: 27414 Session ID: 253 Serial number: 8195 ' Catching up the trace ORA-07445: exception encountered: core dump [kpoal8()+4728] [SIGSEGV] [ADDR:0x1100] [PC:0x1CFF9C4] [Addre ss not mapped to object] [] I will need to step further into the driver but I wanted to ask * is the driver still in development or left alone? * possibility of libdbi interface using parameter bindings * better to debug/rewrite the code by myself or take ocilib as a layer beneath? * this relays mainly to Vincent: How stable is the ocilib concerning not changing main interface functions anymore? If I have to, I will apply some of my ressources onto this project, as part of Icinga IDO for Oracle. Kind regards, Michael [1] http://www.icinga.org [2] http://www.op5.org/community/projects/merlin Markus Hoenicka wrote the following on 04.05.2009 22:42: > vincent rogier writes: > > For example, instead of using cached values (that need extra memory from > > dbbdi core module while the driver sometimes already hold cached values), > > the public dbdbi functions like dbi_result_get_int() could use callback to > > specific drivers functions that delivers the value. > > This would solve as well the problem of strong typed columns. It would be > > the driver to return the value as requested, whatever the real type of the > > column, making its own conversions. That's what OCILIB does. The > application > > requests a column value with a desired type and OCILIB makes conversion if > > needed and possible. > > The current cvs revision of libdbi has a lightweight variant of this > approach: > > long long dbi_result_get_as_longlong(); > long long dbi_result_get_as_longlong_idx(); > char *dbi_result_get_as_string_copy(); > char *dbi_result_get_as_string_copy_idx(); > > These functions return any value as either a long long integer or a > string after converting the value returned by the database > engine. Client programs can cast the integers to whatever they > need. I figured this would cover the most urgent needs. > > > Introducing this possibility through callbacks would not break the actuals > > drivers. The libdbi core could check if the driver supports this feature > and > > then call its functions. If not, it could work as it does now... > > > > This is an interesting idea how to introduce this feature without > breaking backwards compatibility. Thanks for sharing this. > > regards, > Markus > > -- DI (FH) Michael Friedrich michael.friedr...@univie.ac.at Tel: +43 1 4277 14359 Vienna University Computer Center Universitaetsstrasse 7 A-1010 Vienna, Austria ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ Libdbi-drivers-devel mailing list Libdbi-drivers-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libdbi-drivers-devel