Diff for /parser3/src/main/pa_sql_driver_manager.C between versions 1.6 and 1.6.2.1

version 1.6, 2001/04/05 13:19:43 version 1.6.2.1, 2001/04/17 15:02:04
Line 53  private: Line 53  private:
 //   protocol://user:pass@host:port/database  //   protocol://user:pass@host:port/database
 //              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is driver-dependent  //              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is driver-dependent
 SQL_Connection& SQL_Driver_manager::get_connection(const String& url,   SQL_Connection& SQL_Driver_manager::get_connection(const String& url, 
                                                                                                    Table *protocol2library) {                                                                                                     Table *protocol2driver_and_client) {
         SYNCHRONIZED(true);          SYNCHRONIZED(true);
   
         Pool& pool=url.pool(); // request pool                                                                                               Pool& pool=url.pool(); // request pool                                                                                     
   
         // we have table for locating protocol's library          // we have table for locating protocol's library
         if(!protocol2library)          if(!protocol2driver_and_client)
                 PTHROW(0, 0,                  PTHROW(0, 0,
                         &url,                          &url,
                         "$SQL:drivers table must be defined");                          "$SQL:drivers table must be defined");
Line 90  SQL_Connection& SQL_Driver_manager::get_ Line 90  SQL_Connection& SQL_Driver_manager::get_
                 url_cstr++;                  url_cstr++;
   
         SQL_Driver *driver;          SQL_Driver *driver;
           const String *dlopen_file_spec=0;
         // first trying to get cached driver          // first trying to get cached driver
         if(!(driver=get_driver_from_cache(protocol))) {          if(!(driver=get_driver_from_cache(protocol))) {
                 // no cached                  // no cached
                 const String *library=0;                  const String *library=0;
                 if(protocol2library->locate(0, protocol)) {                  if(protocol2driver_and_client->locate(0, protocol)) {
                         if(!(library=protocol2library->item(1)) || library->size()==0)                          if(!(library=protocol2driver_and_client->item(1)) || library->size()==0)
                                 PTHROW(0, 0,                                  PTHROW(0, 0,
                                         protocol2library->origin_string(),                                          protocol2driver_and_client->origin_string(),
                                         "library column for protocol '%s' is empty", protocol_cstr);                                          "driver library column for protocol '%s' is empty", protocol_cstr);
                           if(!(dlopen_file_spec=protocol2driver_and_client->item(2)) || dlopen_file_spec->size()==0)
                                   PTHROW(0, 0,
                                           protocol2driver_and_client->origin_string(),
                                           "client library column for protocol '%s' is empty", protocol_cstr);
                 } else                  } else
                         PTHROW(0, 0,                          PTHROW(0, 0,
                                 &url,                                  &url,
Line 123  SQL_Connection& SQL_Driver_manager::get_ Line 128  SQL_Connection& SQL_Driver_manager::get_
   
                 // validate driver api version                  // validate driver api version
                 int driver_api_version=driver->api_version();                  int driver_api_version=driver->api_version();
                 if(driver_api_version<SQL_DRIVER_API_VERSION)                  if(driver_api_version!=SQL_DRIVER_API_VERSION)
                         PTHROW(0, 0,                          PTHROW(0, 0,
                                 library,                                  library,
                                 "driver API version is 0x%04X while current minimum is 0x%04X",                                  "driver implements API version 0x%04X not equal to 0x%04X",
                                         driver_api_version, SQL_DRIVER_API_VERSION);                                          driver_api_version, SQL_DRIVER_API_VERSION);
   
                   // initialise by connecting to sql client dynamic link library
                   const char *dlopen_file_spec_cstr=dlopen_file_spec->cstr(String::UL_FILE_NAME);
                   if(const char *error=driver->initialize(
                           dlopen_file_spec_cstr))
                           PTHROW(0, 0,
                                   library,
                                   "driver failed to initialize client library '%s', %s",
                                           dlopen_file_spec_cstr, error);
   
                 // cache it                  // cache it
                 put_driver_to_cache(protocol, *driver);                  put_driver_to_cache(protocol, *driver);
         }          }
Line 140  SQL_Connection& SQL_Driver_manager::get_ Line 154  SQL_Connection& SQL_Driver_manager::get_
         // allocate in global pool           // allocate in global pool 
         // associate with services[request], deassociates at close          // associate with services[request], deassociates at close
         SQL_Connection& result=          SQL_Connection& result=
                 *new(this->pool()) SQL_Connection(this->pool(), url, *driver, services, url_cstr);                  *new(this->pool()) SQL_Connection(this->pool(), 
                   url, *driver, services, url_cstr);
                   
         return result;          return result;
 }  }

Removed from v.1.6  
changed lines
  Added in v.1.6.2.1


E-mail: