--- sql/oracle/parser3oracle.C 2012/06/06 14:49:01 1.76 +++ sql/oracle/parser3oracle.C 2013/05/27 20:10:14 1.78 @@ -14,7 +14,7 @@ #include -volatile const char * IDENT_PARSER3ORACLE_C="$Id: parser3oracle.C,v 1.76 2012/06/06 14:49:01 moko Exp $" IDENT_PA_SQL_DRIVER_H; +volatile const char * IDENT_PARSER3ORACLE_C="$Id: parser3oracle.C,v 1.78 2013/05/27 20:10:14 moko Exp $" IDENT_PA_SQL_DRIVER_H; #define MAX_COLS 500 #define MAX_IN_LOBS 5 @@ -268,10 +268,10 @@ public: const char *initialize(char *dlopen_file_spec) { char *options=lsplit(dlopen_file_spec, '?'); - const char *error=dlopen_file_spec? - dlink(dlopen_file_spec):"client library column is empty"; + const char *error=options2env(options, 0); + if(!error) { - error=options2env(options, 0); + error=dlopen_file_spec ? dlink(dlopen_file_spec) : "client library column is empty"; if(!error) OCIInitialize((ub4)OCI_THREADED/*| OCI_OBJECT*/, (dvoid *)0, @@ -1247,11 +1247,19 @@ private: // conn client library funcs private: // conn client library funcs linking const char *dlink(const char *dlopen_file_spec) { - if(lt_dlinit()) - return lt_dlerror(); - lt_dlhandle handle=lt_dlopen(dlopen_file_spec); - if(!handle) - return lt_dlerror(); //"can not open the dynamic link module"; + if(lt_dlinit()){ + if(const char* result=lt_dlerror()) + return result; + return "can not prepare to dynamic loading"; + } + + lt_dlhandle handle=lt_dlopen(dlopen_file_spec); + + if(!handle){ + if(const char* result=lt_dlerror()) + return result; + return "can not open the dynamic link module"; + } #define DSLINK(name, action) \ name=(t_##name)lt_dlsym(handle, #name); \