--- sql/oracle/parser3oracle.C 2011/07/28 07:15:08 1.74 +++ sql/oracle/parser3oracle.C 2013/05/27 20:10:14 1.78 @@ -1,21 +1,21 @@ /** @file Parser Oracle driver. - Copyright(c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) 2001.07.30 using Oracle 8.1.6 [@test tested with Oracle 7.x.x] */ -static const char *RCSId="$Id: parser3oracle.C,v 1.74 2011/07/28 07:15:08 moko Exp $"; - #include "config_includes.h" #include "pa_sql_driver.h" #include +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 #define MAX_LOB_NAME_LENGTH 100 @@ -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, @@ -1099,8 +1099,8 @@ cleanup: // no check call after this poi strcat(statement_limited, astatement); statement_limited+=46+statement_size; - statement_limited+=snprintf(statement_limited, 18+MAX_NUMBER, ") z__) WHERE r__<=%u", limit+offset); - statement_limited+=snprintf(statement_limited, 9+MAX_NUMBER, " AND r__>%u", offset); + statement_limited+=snprintf(statement_limited, 18+MAX_NUMBER, ") z__) WHERE r__<=%lu", limit+offset); + statement_limited+=snprintf(statement_limited, 9+MAX_NUMBER, " AND r__>%lu", offset); } else { @@ -1120,7 +1120,7 @@ cleanup: // no check call after this poi strcat(statement_limited, astatement); statement_limited+=15+statement_size; - statement_limited+=snprintf(statement_limited, 16+MAX_NUMBER, ") WHERE ROWNUM<=%u", limit); + statement_limited+=snprintf(statement_limited, 16+MAX_NUMBER, ") WHERE ROWNUM<=%lu", limit); } *statement_limited=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); \