diff options
author | hf@deer.mysql.r18.ru <> | 2003-01-20 18:47:25 +0400 |
---|---|---|
committer | hf@deer.mysql.r18.ru <> | 2003-01-20 18:47:25 +0400 |
commit | 1f6b6156773ae42f45cb2552cecbf52ef6964e23 (patch) | |
tree | 63d38e511b0b14f39e8fefc5eab11abc8e583d5d /sql/mysqld.cc | |
parent | 96089e2b3a013c83e812672284bf10a34ba9d11c (diff) | |
download | mariadb-git-1f6b6156773ae42f45cb2552cecbf52ef6964e23.tar.gz |
SCRUM
embedded-related changes
Diffstat (limited to 'sql/mysqld.cc')
-rw-r--r-- | sql/mysqld.cc | 478 |
1 files changed, 3 insertions, 475 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc index e63ee43e3e3..059b690fe34 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -956,8 +956,8 @@ static void set_ports() { // Get port if not from commandline struct servent *serv_ptr; mysql_port = MYSQL_PORT; - if ((serv_ptr = getservbyname("mysql", "tcp"))) - mysql_port = ntohs((u_short) serv_ptr->s_port); /* purecov: inspected */ +// if ((serv_ptr = getservbyname("mysql", "tcp"))) +// mysql_port = ntohs((u_short) serv_ptr->s_port); /* purecov: inspected */ if ((env = getenv("MYSQL_TCP_PORT"))) mysql_port = (uint) atoi(env); /* purecov: inspected */ } @@ -1865,6 +1865,7 @@ static int init_common_variables(const char *conf_file_name, int argc, char **ar umask(((~my_umask) & 0666)); tzset(); // Set tzname + max_system_variables.pseudo_thread_id= (ulong)~0; start_time=time((time_t*) 0); #ifdef OS2 { @@ -2287,7 +2288,6 @@ The server will not act as a slave."); if (opt_bootstrap) { - printf("###stdin as bootstrap\n"); int error=bootstrap(stdin); end_thr_alarm(); // Don't allow alarms unireg_abort(error ? 1 : 0); @@ -2358,478 +2358,6 @@ The server will not act as a slave."); #endif /* EMBEDDED_LIBRARY */ -#ifdef REMOTE - -#ifdef __WIN__ -int win_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif -{ - DEBUGGER_OFF; - - my_umask=0660; // Default umask for new files - my_umask_dir=0700; // Default umask for new directories - MAIN_THD; - /* - Initialize signal_th and shutdown_th to main_th for default value - as we need to initialize them to something safe. They are used - when compiled with safemalloc. - */ - SIGNAL_THD; - SHUTDOWN_THD; - MY_INIT(argv[0]); // init my_sys library & pthreads - tzset(); // Set tzname - - start_time=time((time_t*) 0); -#ifdef OS2 - { - // fix timezone for daylight saving - struct tm *ts = localtime(&start_time); - if (ts->tm_isdst > 0) - _timezone -= 3600; - } -#endif -#ifdef HAVE_TZNAME -#if defined(HAVE_LOCALTIME_R) && defined(_REENTRANT) - { - struct tm tm_tmp; - localtime_r(&start_time,&tm_tmp); - strmov(time_zone,tzname[tm_tmp.tm_isdst != 0 ? 1 : 0]); - } -#else - { - struct tm *start_tm; - start_tm=localtime(&start_time); - strmov(time_zone,tzname[start_tm->tm_isdst != 0 ? 1 : 0]); - } -#endif -#endif - - if (gethostname(glob_hostname,sizeof(glob_hostname)-4) < 0) - strmov(glob_hostname,"mysql"); - strmake(pidfile_name, glob_hostname, sizeof(pidfile_name)-5); - strmov(fn_ext(pidfile_name),".pid"); // Add proper extension -#ifndef DBUG_OFF - strxmov(strend(server_version),MYSQL_SERVER_SUFFIX,"-debug",NullS); -#else - strmov(strend(server_version),MYSQL_SERVER_SUFFIX); -#endif -#ifdef _CUSTOMSTARTUPCONFIG_ - if (_cust_check_startup()) - { - /* _cust_check_startup will report startup failure error */ - exit( 1 ); - } -#endif - load_defaults(MYSQL_CONFIG_NAME,load_default_groups,&argc,&argv); - defaults_argv=argv; - - set_options(); - get_options(argc,argv); - max_system_variables.pseudo_thread_id= (ulong)~0; - if (opt_log || opt_update_log || opt_slow_log || opt_bin_log) - strcat(server_version,"-log"); - DBUG_PRINT("info",("%s Ver %s for %s on %s\n",my_progname, - server_version, SYSTEM_TYPE,MACHINE_TYPE)); - - /* These must be set early */ - - (void) pthread_mutex_init(&LOCK_mysql_create_db,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_Acl,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_open,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_thread_count,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_mapped_file,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_status,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_error_log,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_delayed_insert,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_delayed_status,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_delayed_create,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_manager,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_crypt,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_bytes_sent,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_bytes_received,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_timezone,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_user_conn, MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_rpl_status, MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_active_mi, MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_global_system_variables, MY_MUTEX_INIT_FAST); - (void) my_rwlock_init(&LOCK_grant, NULL); - (void) pthread_cond_init(&COND_thread_count,NULL); - (void) pthread_cond_init(&COND_refresh,NULL); - (void) pthread_cond_init(&COND_thread_cache,NULL); - (void) pthread_cond_init(&COND_flush_thread_cache,NULL); - (void) pthread_cond_init(&COND_manager,NULL); - (void) pthread_cond_init(&COND_rpl_status, NULL); - init_signals(); - - if (set_default_charset_by_name(sys_charset.value, MYF(MY_WME))) - exit(1); - charsets_list= list_charsets(MYF(MY_CS_COMPILED | MY_CS_CONFIG)); - -#ifdef HAVE_OPENSSL - if (opt_use_ssl) - { - /* having ssl_acceptor_fd != 0 signals the use of SSL */ - ssl_acceptor_fd= new_VioSSLAcceptorFd(opt_ssl_key, opt_ssl_cert, - opt_ssl_ca, opt_ssl_capath, - opt_ssl_cipher); - DBUG_PRINT("info",("ssl_acceptor_fd: %lx", (long) ssl_acceptor_fd)); - if (!ssl_acceptor_fd) - opt_use_ssl = 0; - } -#endif /* HAVE_OPENSSL */ - -#ifdef HAVE_LIBWRAP - libwrapName= my_progname+dirname_length(my_progname); - openlog(libwrapName, LOG_PID, LOG_AUTH); -#endif - - if (!(opt_specialflag & SPECIAL_NO_PRIOR)) - my_pthread_setprio(pthread_self(),CONNECT_PRIOR); - /* Parameter for threads created for connections */ - (void) pthread_attr_init(&connection_attrib); - (void) pthread_attr_setdetachstate(&connection_attrib, - PTHREAD_CREATE_DETACHED); - pthread_attr_setstacksize(&connection_attrib,thread_stack); - - if (!(opt_specialflag & SPECIAL_NO_PRIOR)) - my_pthread_attr_setprio(&connection_attrib,WAIT_PRIOR); - pthread_attr_setscope(&connection_attrib, PTHREAD_SCOPE_SYSTEM); - -#if defined( SET_RLIMIT_NOFILE) || defined( OS2) - /* connections and databases needs lots of files */ - { - uint wanted_files=10+(uint) max(max_connections*5, - max_connections+table_cache_size*2); - set_if_bigger(wanted_files, open_files_limit); - // Note that some system returns 0 if we succeed here: - uint files=set_maximum_open_files(wanted_files); - if (files && files < wanted_files && ! open_files_limit) - { - max_connections= (ulong) min((files-10),max_connections); - table_cache_size= (ulong) max((files-10-max_connections)/2,64); - DBUG_PRINT("warning", - ("Changed limits: max_connections: %ld table_cache: %ld", - max_connections,table_cache_size)); - sql_print_error("Warning: Changed limits: max_connections: %ld table_cache: %ld",max_connections,table_cache_size); - } - } -#endif - unireg_init(opt_specialflag); /* Set up extern variabels */ - init_errmessage(); /* Read error messages from file */ - lex_init(); - item_init(); - set_var_init(); - mysys_uses_curses=0; -#ifdef USE_REGEX - regex_init(); -#endif - select_thread=pthread_self(); - select_thread_in_use=1; - if (use_temp_pool && bitmap_init(&temp_pool,1024,1)) - unireg_abort(1); - - /* - We have enough space for fiddling with the argv, continue - */ - umask(((~my_umask) & 0666)); - if (my_setwd(mysql_real_data_home,MYF(MY_WME))) - { - unireg_abort(1); /* purecov: inspected */ - } - mysql_data_home= mysql_data_home_buff; - mysql_data_home[0]=FN_CURLIB; // all paths are relative from here - mysql_data_home[1]=0; - server_init(); - table_cache_init(); - hostname_cache_init(); - query_cache_result_size_limit(query_cache_limit); - query_cache_resize(query_cache_size); - randominit(&sql_rand,(ulong) start_time,(ulong) start_time/2); - reset_floating_point_exceptions(); - init_thr_lock(); - init_slave_list(); -#ifdef HAVE_OPENSSL - if (des_key_file) - load_des_key_file(des_key_file); -#endif /* HAVE_OPENSSL */ - - /* Setup log files */ - if (opt_log) - open_log(&mysql_log, glob_hostname, opt_logname, ".log", NullS, - LOG_NORMAL); - if (opt_update_log) - { - open_log(&mysql_update_log, glob_hostname, opt_update_logname, "", - NullS, LOG_NEW); - using_update_log=1; - } - - if (opt_slow_log) - open_log(&mysql_slow_log, glob_hostname, opt_slow_logname, "-slow.log", - NullS, LOG_NORMAL); -#ifdef __WIN__ -#define MYSQL_ERR_FILE "mysql.err" - if (!opt_console) - { - freopen(MYSQL_ERR_FILE,"a+",stdout); - freopen(MYSQL_ERR_FILE,"a+",stderr); - } -#endif - if (ha_init()) - { - sql_print_error("Can't init databases"); - if (unix_sock != INVALID_SOCKET) - unlink(mysql_unix_port); - exit(1); - } - ha_key_cache(); -#if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT) - if (locked_in_memory && !geteuid()) - { - if (mlockall(MCL_CURRENT)) - { - sql_print_error("Warning: Failed to lock memory. Errno: %d\n",errno); - } - else - locked_in_memory=1; - } -#else - locked_in_memory=0; -#endif - - if (opt_myisam_log) - (void) mi_log( 1 ); - ft_init_stopwords(ft_precompiled_stopwords); - -#ifdef __WIN__ - if (!opt_console) - FreeConsole(); // Remove window -#endif - - /* - init signals & alarm - After this we can't quit by a simple unireg_abort - */ - error_handler_hook = my_message_sql; - if (pthread_key_create(&THR_THD,NULL) || - pthread_key_create(&THR_MALLOC,NULL)) - { - sql_print_error("Can't create thread-keys"); - if (unix_sock != INVALID_SOCKET) - unlink(mysql_unix_port); - exit(1); - } - start_signal_handler(); // Creates pidfile - if (acl_init((THD*) 0, opt_noacl)) - { - abort_loop=1; - select_thread_in_use=0; - (void) pthread_kill(signal_thread,MYSQL_KILL_SIGNAL); -#ifndef __WIN__ - if (!opt_bootstrap) - (void) my_delete(pidfile_name,MYF(MY_WME)); // Not needed anymore -#endif - if (unix_sock != INVALID_SOCKET) - unlink(mysql_unix_port); - exit(1); - } - if (!opt_noacl) - (void) grant_init((THD*) 0); - init_max_user_conn(); - init_update_queries(); - DBUG_ASSERT(current_thd == 0); - -#ifdef HAVE_DLOPEN - if (!opt_noacl) - udf_init(); -#endif - /* init_slave() must be called after the thread keys are created */ - init_slave(); - - DBUG_ASSERT(current_thd == 0); - if (opt_bin_log && !server_id) - { - server_id= !master_host ? 1 : 2; - switch (server_id) { -#ifdef EXTRA_DEBUG - case 1: - sql_print_error("\ -Warning: You have enabled the binary log, but you haven't set server-id:\n\ -Updates will be logged to the binary log, but connections to slaves will\n\ -not be accepted."); - break; -#endif - case 2: - sql_print_error("\ -Warning: You should set server-id to a non-0 value if master_host is set.\n\ -The server will not act as a slave."); - break; - } - } - if (opt_bin_log) - { - open_log(&mysql_bin_log, glob_hostname, opt_bin_logname, "-bin", - opt_binlog_index_name,LOG_BIN); - using_update_log=1; - } - - - if (opt_bootstrap) - { - int error=bootstrap(stdin); - end_thr_alarm(); // Don't allow alarms - unireg_abort(error ? 1 : 0); - } - if (opt_init_file) - { - if (read_init_file(opt_init_file)) - { - end_thr_alarm(); // Don't allow alarms - unireg_abort(1); - } - } - (void) thr_setconcurrency(concurrency); // 10 by default -#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY) //IRENA - { - hEventShutdown=CreateEvent(0, FALSE, FALSE, shutdown_event_name); - pthread_t hThread; - if (pthread_create(&hThread,&connection_attrib,handle_shutdown,0)) - sql_print_error("Warning: Can't create thread to handle shutdown requests"); - - // On "Stop Service" we have to do regular shutdown - Service.SetShutdownEvent(hEventShutdown); - } -#endif -#ifdef OS2 - { - pthread_cond_init( &eventShutdown, NULL); - pthread_t hThread; - if (pthread_create(&hThread,&connection_attrib,handle_shutdown,0)) - sql_print_error("Warning: Can't create thread to handle shutdown requests"); - } -#endif - - if ( -#ifdef HAVE_BERKELEY_DB - !berkeley_skip || -#endif - (flush_time && flush_time != ~(ulong) 0L)) - { - pthread_t hThread; - if (pthread_create(&hThread,&connection_attrib,handle_manager,0)) - sql_print_error("Warning: Can't create thread to manage maintenance"); - } - - printf(ER(ER_READY),my_progname,server_version,""); - fflush(stdout); -#if defined(__NT__) || defined(HAVE_SMEM) -#ifdef __NT__ - if (hPipe == INVALID_HANDLE_VALUE && - (!have_tcpip || opt_disable_networking) && - !opt_enable_shared_memory) - { - sql_print_error("TCP/IP,--shared-memory or --named-pipe should be configured on NT OS"); - unireg_abort(1); - } - else -#endif - { - pthread_mutex_lock(&LOCK_thread_count); - (void) pthread_cond_init(&COND_handler_count,NULL); - { - pthread_t hThread; - handler_count=0; -#ifdef __NT__ - if (hPipe != INVALID_HANDLE_VALUE && opt_enable_named_pipe) - { - handler_count++; - if (pthread_create(&hThread,&connection_attrib, - handle_connections_namedpipes, 0)) - { - sql_print_error("Warning: Can't create thread to handle named pipes"); - handler_count--; - } - } -#endif -#ifdef HAVE_SMEM - if (opt_enable_shared_memory) - { - handler_count++; - if (pthread_create(&hThread,&connection_attrib, - handle_connections_shared_memory, 0)) - { - sql_print_error("Warning: Can't create thread to handle shared memory"); - handler_count--; - } - } -#endif - if (have_tcpip && !opt_disable_networking) - { - handler_count++; - if (pthread_create(&hThread,&connection_attrib, - handle_connections_sockets, 0)) - { - sql_print_error("Warning: Can't create thread to handle tcp/ip"); - handler_count--; - } - } - while (handler_count > 0) - { - pthread_cond_wait(&COND_handler_count,&LOCK_thread_count); - } - } - pthread_mutex_unlock(&LOCK_thread_count); - } -#else - handle_connections_sockets(0); -#ifdef EXTRA_DEBUG2 - sql_print_error("Exiting main thread"); -#endif -#endif /* __NT__ */ - - /* (void) pthread_attr_destroy(&connection_attrib); */ - - DBUG_PRINT("quit",("Exiting main thread")); - -#ifndef __WIN__ -#ifdef EXTRA_DEBUG2 - sql_print_error("Before Lock_thread_count"); -#endif - (void) pthread_mutex_lock(&LOCK_thread_count); - DBUG_PRINT("quit", ("Got thread_count mutex")); - select_thread_in_use=0; // For close_connections - (void) pthread_mutex_unlock(&LOCK_thread_count); - (void) pthread_cond_broadcast(&COND_thread_count); -#ifdef EXTRA_DEBUG2 - sql_print_error("After lock_thread_count"); -#endif -#endif /* __WIN__ */ - - /* Wait until cleanup is done */ - (void) pthread_mutex_lock(&LOCK_thread_count); - while (!ready_to_exit) - pthread_cond_wait(&COND_thread_count,&LOCK_thread_count); - (void) pthread_mutex_unlock(&LOCK_thread_count); - -#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY) - if (Service.IsNT() && start_mode) - Service.Stop(); - else - { - Service.SetShutdownEvent(0); - if (hEventShutdown) - CloseHandle(hEventShutdown); - } -#endif - my_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0); - exit(0); - return(0); /* purecov: deadcode */ -} -#endif /* REMOTE */ - - /**************************************************************************** Main and thread entry function for Win32 (all this is needed only to run mysqld as a service on WinNT) |