Diff for /sql/mysql/parser3mysql.C between versions 1.8 and 1.9

version 1.8, 2002/12/09 11:07:46 version 1.9, 2002/12/09 12:29:03
Line 205  public: Line 205  public:
                         services._throw("result contains no columns");                          services._throw("result contains no columns");
                 }                  }
                                   
                 try {                  bool failed=false;
                   SQL_Error sql_error;
                         for(int i=0; i<column_count; i++){  #define CHECK(afailed) \
                                 MYSQL_FIELD *field=mysql_fetch_field(res);                  if(afailed) { \
                                 size_t size=strlen(field->name);                          failed=true; \
                                 void *ptr=services.malloc(size);                          goto cleanup; \
                                 memcpy(ptr, field->name, size);                  }
                                 handlers.add_column(ptr, size);  
                         }  
   
                         handlers.before_rows();  
                           
                         while(MYSQL_ROW mysql_row=mysql_fetch_row(res)) {  
                                 handlers.add_row();  
                                 unsigned long *lengths=mysql_fetch_lengths(res);  
                                 for(int i=0; i<column_count; i++){  
                                         size_t size=(size_t)lengths[i];  
                                         void *ptr;  
                                         if(size) {  
                                                 ptr=services.malloc(size);  
                                                 memcpy(ptr, mysql_row[i], size);  
                                         } else  
                                                 ptr=0;  
                                         handlers.add_row_cell(ptr, size);  
                                 }  
                         }  
   
                 } catch(const SQL_Exception& e) { // some SQL_Exception in handlers.*                  for(int i=0; i<column_count; i++){
                         mysql_free_result(res);                          MYSQL_FIELD *field=mysql_fetch_field(res);
                         services._throw(e);                          size_t size=strlen(field->name);
                 } catch(...) { // some parser Exception in handlers.*                          void *ptr=services.malloc(size);
                         mysql_free_result(res);                          memcpy(ptr, field->name, size);
                         services._throw("exception occured in SQL_Driver_query_event_handlers"); // out of memory...                          CHECK(handlers.add_column(sql_error, ptr, size));
                 }                  }
   
                   CHECK(handlers.before_rows(sql_error));
                   
                   while(MYSQL_ROW mysql_row=mysql_fetch_row(res)) {
                           CHECK(handlers.add_row(sql_error));
                           unsigned long *lengths=mysql_fetch_lengths(res);
                           for(int i=0; i<column_count; i++){
                                   size_t size=(size_t)lengths[i];
                                   void *ptr;
                                   if(size) {
                                           ptr=services.malloc(size);
                                           memcpy(ptr, mysql_row[i], size);
                                   } else
                                           ptr=0;
                                   CHECK(handlers.add_row_cell(sql_error, ptr, size));
                           }
                   }
   cleanup:
                 mysql_free_result(res);                  mysql_free_result(res);
                   if(failed)
                           services._throw(sql_error);
         }          }
   
 private: // mysql client library funcs  private: // mysql client library funcs

Removed from v.1.8  
changed lines
  Added in v.1.9


E-mail: