~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_table.cc

  • Committer: Lee Bieber
  • Date: 2011-01-12 04:30:24 UTC
  • mfrom: (2075.1.3 build)
  • Revision ID: kalebral@gmail.com-20110112043024-zgws6jzd54oym9um
Merge Brian - fix bug 527084 - DROP TABLE: getTableDefiniton returns EEXIST but doDropTable returns ENOENT leads to SIGSEGV
Merge Shrews - fix bug 686781 - Transaction message segmenting does not work in all cases 
Merge Stewart - fix bug 376299: sum_distinct-big test fails after resetting max_heap_table_size

Show diffs side-by-side

added added

removed removed

Lines of Context:
214
214
      }
215
215
      else
216
216
      {
217
 
        error= plugin::StorageEngine::dropTable(*session, identifier);
 
217
        drizzled::error_t local_error;
218
218
 
219
219
        /* Generate transaction event ONLY when we successfully drop */ 
220
 
        if (error == 0)
 
220
        if (plugin::StorageEngine::dropTable(*session, identifier, local_error))
221
221
        {
222
222
          TransactionServices &transaction_services= TransactionServices::singleton();
223
223
          transaction_services.dropTable(session, identifier, if_exists);
224
224
        }
225
 
 
226
 
        if ((error == ENOENT || error == HA_ERR_NO_SUCH_TABLE) && if_exists)
227
 
        {
228
 
          error= 0;
229
 
          session->clear_error();
230
 
        }
231
 
 
232
 
        if (error == HA_ERR_ROW_IS_REFERENCED)
233
 
        {
234
 
          /* the table is referenced by a foreign key constraint */
235
 
          foreign_key_error= true;
 
225
        else
 
226
        {
 
227
          if (local_error == HA_ERR_NO_SUCH_TABLE and if_exists)
 
228
          {
 
229
            error= 0;
 
230
            session->clear_error();
 
231
          }
 
232
 
 
233
          if (local_error == HA_ERR_ROW_IS_REFERENCED)
 
234
          {
 
235
            /* the table is referenced by a foreign key constraint */
 
236
            foreign_key_error= true;
 
237
          }
 
238
          error= local_error;
236
239
        }
237
240
      }
238
241