Commit 4e82e0af authored by unknown's avatar unknown

Fix crash when trying to open table using a disabled storage engine. (Bug #15185)


sql/handler.cc:
  Don't create handler object for engines that are disabled.
parent 9a3cc282
...@@ -300,39 +300,56 @@ handler *get_new_handler(TABLE *table, MEM_ROOT *alloc, enum db_type db_type) ...@@ -300,39 +300,56 @@ handler *get_new_handler(TABLE *table, MEM_ROOT *alloc, enum db_type db_type)
case DB_TYPE_HASH: case DB_TYPE_HASH:
return new (alloc) ha_hash(table); return new (alloc) ha_hash(table);
#endif #endif
case DB_TYPE_MRG_MYISAM:
case DB_TYPE_MRG_ISAM: case DB_TYPE_MRG_ISAM:
return new (alloc) ha_myisammrg(table); return new (alloc) ha_myisammrg(table);
#ifdef HAVE_BERKELEY_DB #ifdef HAVE_BERKELEY_DB
case DB_TYPE_BERKELEY_DB: case DB_TYPE_BERKELEY_DB:
return new (alloc) ha_berkeley(table); if (have_berkeley_db == SHOW_OPTION_YES)
return new (alloc) ha_berkeley(table);
return NULL;
#endif #endif
#ifdef HAVE_INNOBASE_DB #ifdef HAVE_INNOBASE_DB
case DB_TYPE_INNODB: case DB_TYPE_INNODB:
return new (alloc) ha_innobase(table); if (have_innodb == SHOW_OPTION_YES)
return new (alloc) ha_innobase(table);
return NULL;
#endif #endif
#ifdef HAVE_EXAMPLE_DB #ifdef HAVE_EXAMPLE_DB
case DB_TYPE_EXAMPLE_DB: case DB_TYPE_EXAMPLE_DB:
return new (alloc) ha_example(table); if (have_example_db == SHOW_OPTION_YES)
return new (alloc) ha_example(table);
return NULL;
#endif #endif
#if defined(HAVE_ARCHIVE_DB) && !defined(__NETWARE__) #if defined(HAVE_ARCHIVE_DB) && !defined(__NETWARE__)
case DB_TYPE_ARCHIVE_DB: case DB_TYPE_ARCHIVE_DB:
return new (alloc) ha_archive(table); if (have_archive_db == SHOW_OPTION_YES)
return new (alloc) ha_archive(table);
return NULL;
#endif #endif
#ifdef HAVE_BLACKHOLE_DB #ifdef HAVE_BLACKHOLE_DB
case DB_TYPE_BLACKHOLE_DB: case DB_TYPE_BLACKHOLE_DB:
return new (alloc) ha_blackhole(table); if (have_blackhole_db == SHOW_OPTION_YES)
return new (alloc) ha_blackhole(table);
return NULL;
#endif #endif
#ifdef HAVE_FEDERATED_DB #ifdef HAVE_FEDERATED_DB
case DB_TYPE_FEDERATED_DB: case DB_TYPE_FEDERATED_DB:
return new (alloc) ha_federated(table); if (have_federated_db == SHOW_OPTION_YES)
return new (alloc) ha_federated(table);
return NULL;
#endif #endif
#ifdef HAVE_CSV_DB #ifdef HAVE_CSV_DB
case DB_TYPE_CSV_DB: case DB_TYPE_CSV_DB:
return new (alloc) ha_tina(table); if (have_csv_db == SHOW_OPTION_YES)
return new (alloc) ha_tina(table);
return NULL;
#endif #endif
#ifdef HAVE_NDBCLUSTER_DB #ifdef HAVE_NDBCLUSTER_DB
case DB_TYPE_NDBCLUSTER: case DB_TYPE_NDBCLUSTER:
return new (alloc) ha_ndbcluster(table); if (have_ndbcluster == SHOW_OPTION_YES)
return new (alloc) ha_ndbcluster(table);
return NULL;
#endif #endif
case DB_TYPE_HEAP: case DB_TYPE_HEAP:
return new (alloc) ha_heap(table); return new (alloc) ha_heap(table);
...@@ -346,8 +363,6 @@ handler *get_new_handler(TABLE *table, MEM_ROOT *alloc, enum db_type db_type) ...@@ -346,8 +363,6 @@ handler *get_new_handler(TABLE *table, MEM_ROOT *alloc, enum db_type db_type)
/* Fall back to MyISAM */ /* Fall back to MyISAM */
case DB_TYPE_MYISAM: case DB_TYPE_MYISAM:
return new (alloc) ha_myisam(table); return new (alloc) ha_myisam(table);
case DB_TYPE_MRG_MYISAM:
return new (alloc) ha_myisammrg(table);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment