Commit 5048aa82 authored by serg@serg.mylan's avatar serg@serg.mylan

Merge serg@bk-internal.mysql.com:/home/bk/mysql-4.1/

into serg.mylan:/usr/home/serg/Abk/mysql-4.1
parents 5fe52ffb ab939dce
...@@ -47,6 +47,8 @@ static const char *ha_ndb_ext=".ndb"; ...@@ -47,6 +47,8 @@ static const char *ha_ndb_ext=".ndb";
#define NDB_HIDDEN_PRIMARY_KEY_LENGTH 8 #define NDB_HIDDEN_PRIMARY_KEY_LENGTH 8
#define NDB_FAILED_AUTO_INCREMENT ~(Uint64)0
#define NDB_AUTO_INCREMENT_RETRIES 10
#define ERR_PRINT(err) \ #define ERR_PRINT(err) \
DBUG_PRINT("error", ("%d message: %s", err.code, err.message)) DBUG_PRINT("error", ("%d message: %s", err.code, err.message))
...@@ -1838,7 +1840,15 @@ int ha_ndbcluster::write_row(byte *record) ...@@ -1838,7 +1840,15 @@ int ha_ndbcluster::write_row(byte *record)
{ {
// Table has hidden primary key // Table has hidden primary key
Ndb *ndb= get_ndb(); Ndb *ndb= get_ndb();
Uint64 auto_value= ndb->getAutoIncrementValue((const NDBTAB *) m_table); Uint64 auto_value= NDB_FAILED_AUTO_INCREMENT;
uint retries= NDB_AUTO_INCREMENT_RETRIES;
do {
auto_value= ndb->getAutoIncrementValue((const NDBTAB *) m_table);
} while (auto_value == NDB_FAILED_AUTO_INCREMENT &&
--retries &&
ndb->getNdbError().status == NdbError::TemporaryError);
if (auto_value == NDB_FAILED_AUTO_INCREMENT)
ERR_RETURN(ndb->getNdbError());
if (set_hidden_key(op, table->fields, (const byte*)&auto_value)) if (set_hidden_key(op, table->fields, (const byte*)&auto_value))
ERR_RETURN(op->getNdbError()); ERR_RETURN(op->getNdbError());
} }
...@@ -3971,10 +3981,18 @@ longlong ha_ndbcluster::get_auto_increment() ...@@ -3971,10 +3981,18 @@ longlong ha_ndbcluster::get_auto_increment()
: (m_rows_to_insert > m_autoincrement_prefetch) ? : (m_rows_to_insert > m_autoincrement_prefetch) ?
m_rows_to_insert m_rows_to_insert
: m_autoincrement_prefetch; : m_autoincrement_prefetch;
Uint64 auto_value= Uint64 auto_value= NDB_FAILED_AUTO_INCREMENT;
(m_skip_auto_increment) ? uint retries= NDB_AUTO_INCREMENT_RETRIES;
ndb->readAutoIncrementValue((const NDBTAB *) m_table) do {
: ndb->getAutoIncrementValue((const NDBTAB *) m_table, cache_size); auto_value=
(m_skip_auto_increment) ?
ndb->readAutoIncrementValue((const NDBTAB *) m_table)
: ndb->getAutoIncrementValue((const NDBTAB *) m_table, cache_size);
} while (auto_value == NDB_FAILED_AUTO_INCREMENT &&
--retries &&
ndb->getNdbError().status == NdbError::TemporaryError);
if (auto_value == NDB_FAILED_AUTO_INCREMENT)
ERR_RETURN(ndb->getNdbError());
DBUG_RETURN((longlong)auto_value); DBUG_RETURN((longlong)auto_value);
} }
......
...@@ -145,6 +145,20 @@ const char *ha_get_storage_engine(enum db_type db_type) ...@@ -145,6 +145,20 @@ const char *ha_get_storage_engine(enum db_type db_type)
return "none"; return "none";
} }
my_bool ha_storage_engine_is_enabled(enum db_type database_type)
{
show_table_type_st *types;
for (types= sys_table_types; types->type; types++)
{
if ((database_type == types->db_type) &&
(*types->value == SHOW_OPTION_YES))
return TRUE;
}
return FALSE;
}
/* Use other database handler if databasehandler is not incompiled */ /* Use other database handler if databasehandler is not incompiled */
enum db_type ha_checktype(enum db_type database_type) enum db_type ha_checktype(enum db_type database_type)
......
...@@ -542,6 +542,7 @@ int ha_init(void); ...@@ -542,6 +542,7 @@ int ha_init(void);
int ha_panic(enum ha_panic_function flag); int ha_panic(enum ha_panic_function flag);
void ha_close_connection(THD* thd); void ha_close_connection(THD* thd);
enum db_type ha_checktype(enum db_type database_type); enum db_type ha_checktype(enum db_type database_type);
my_bool ha_storage_engine_is_enabled(enum db_type database_type);
int ha_create_table(const char *name, HA_CREATE_INFO *create_info, int ha_create_table(const char *name, HA_CREATE_INFO *create_info,
bool update_create_info); bool update_create_info);
int ha_create_table_from_engine(THD* thd, const char *db, const char *name, int ha_create_table_from_engine(THD* thd, const char *db, const char *name,
......
...@@ -1165,6 +1165,7 @@ static struct passwd *check_user(const char *user) ...@@ -1165,6 +1165,7 @@ static struct passwd *check_user(const char *user)
err: err:
sql_print_error("Fatal error: Can't change to run as user '%s' ; Please check that the user exists!\n",user); sql_print_error("Fatal error: Can't change to run as user '%s' ; Please check that the user exists!\n",user);
unireg_abort(1);
#endif #endif
return NULL; return NULL;
} }
...@@ -6435,6 +6436,18 @@ static void get_options(int argc,char **argv) ...@@ -6435,6 +6436,18 @@ static void get_options(int argc,char **argv)
sql_print_warning("this binary does not contain BDB storage engine"); sql_print_warning("this binary does not contain BDB storage engine");
#endif #endif
/*
Check that the default storage engine is actually available.
*/
if (!ha_storage_engine_is_enabled((enum db_type)
global_system_variables.table_type))
{
sql_print_error("Default storage engine (%s) is not available",
ha_get_storage_engine((enum db_type)
global_system_variables.table_type));
exit(1);
}
if (argc > 0) if (argc > 0)
{ {
fprintf(stderr, "%s: Too many arguments (first extra is '%s').\nUse --help to get a list of available options\n", my_progname, *argv); fprintf(stderr, "%s: Too many arguments (first extra is '%s').\nUse --help to get a list of available options\n", my_progname, *argv);
......
...@@ -61,8 +61,14 @@ lsb_functions="/lib/lsb/init-functions" ...@@ -61,8 +61,14 @@ lsb_functions="/lib/lsb/init-functions"
if test -f $lsb_functions ; then if test -f $lsb_functions ; then
source $lsb_functions source $lsb_functions
else else
alias log_success_msg="echo \ SUCCESS! " log_success_msg()
alias log_failure_msg="echo \ ERROR! " {
echo " SUCCESS! $@"
}
log_failure_msg()
{
echo " ERROR! $@"
}
fi fi
PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin
......
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