@@ -363,6 +363,33 @@ pthread_mutex_t federated_mutex; // This is the mutex we use to
363363static int federated_init= FALSE ; // Variable for checking the
364364 // init state of hash
365365
366+ /* Federated storage engine handlerton */
367+
368+ handlerton federated_hton= {
369+ " FEDERATED" ,
370+ SHOW_OPTION_YES,
371+ " Federated MySQL storage engine" ,
372+ DB_TYPE_FEDERATED_DB,
373+ federated_db_init,
374+ 0 , /* slot */
375+ 0 , /* savepoint size. */
376+ NULL , /* close_connection */
377+ NULL , /* savepoint */
378+ NULL , /* rollback to savepoint */
379+ NULL , /* release savepoint */
380+ NULL , /* commit */
381+ NULL , /* rollback */
382+ NULL , /* prepare */
383+ NULL , /* recover */
384+ NULL , /* commit_by_xid */
385+ NULL , /* rollback_by_xid */
386+ NULL , /* create_cursor_read_view */
387+ NULL , /* set_cursor_read_view */
388+ NULL , /* close_cursor_read_view */
389+ HTON_ALTER_NOT_SUPPORTED
390+ };
391+
392+
366393/* Function we use in the creation of our hash to get key. */
367394
368395static byte *federated_get_key (FEDERATED_SHARE *share, uint *length,
@@ -386,10 +413,23 @@ static byte *federated_get_key(FEDERATED_SHARE *share, uint *length,
386413
387414bool federated_db_init ()
388415{
389- federated_init= 1 ;
390- VOID (pthread_mutex_init (&federated_mutex, MY_MUTEX_INIT_FAST));
391- return (hash_init (&federated_open_tables, system_charset_info, 32 , 0 , 0 ,
392- (hash_get_key) federated_get_key, 0 , 0 ));
416+ DBUG_ENTER (" federated_db_init" );
417+ if (pthread_mutex_init (&federated_mutex, MY_MUTEX_INIT_FAST))
418+ goto error;
419+ if (hash_init (&federated_open_tables, system_charset_info, 32 , 0 , 0 ,
420+ (hash_get_key) federated_get_key, 0 , 0 ))
421+ {
422+ VOID (pthread_mutex_destroy (&federated_mutex));
423+ }
424+ else
425+ {
426+ federated_init= TRUE ;
427+ DBUG_RETURN (FALSE );
428+ }
429+ error:
430+ have_federated_db= SHOW_OPTION_DISABLED; // If we couldn't use handler
431+ federated_hton.state = SHOW_OPTION_DISABLED;
432+ DBUG_RETURN (TRUE );
393433}
394434
395435
@@ -694,29 +734,6 @@ static int parse_url(FEDERATED_SHARE *share, TABLE *table,
694734}
695735
696736
697- /* Federated storage engine handlerton */
698-
699- handlerton federated_hton= {
700- " FEDERATED" ,
701- 0 , /* slot */
702- 0 , /* savepoint size. */
703- NULL , /* close_connection */
704- NULL , /* savepoint */
705- NULL , /* rollback to savepoint */
706- NULL , /* release savepoint */
707- NULL , /* commit */
708- NULL , /* rollback */
709- NULL , /* prepare */
710- NULL , /* recover */
711- NULL , /* commit_by_xid */
712- NULL , /* rollback_by_xid */
713- NULL , /* create_cursor_read_view */
714- NULL , /* set_cursor_read_view */
715- NULL , /* close_cursor_read_view */
716- HTON_ALTER_NOT_SUPPORTED
717- };
718-
719-
720737/* ****************************************************************************
721738** FEDERATED tables
722739*****************************************************************************/
0 commit comments