~linuxjedi/drizzle/drizzle-bug-651948

« back to all changes in this revision

Viewing changes to drizzled/drizzled.cc

  • Committer: lbieber
  • Date: 2010-09-26 03:23:39 UTC
  • mfrom: (1793.1.1 build)
  • Revision ID: lbieber@orisndriz08-20100926032339-59p5xxhkloa09759
Merge Monty - Beginning of catalog support, adds a default local catalog. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 */
19
19
 
20
20
#include "config.h"
21
 
#include <drizzled/configmake.h>
22
 
#include <drizzled/atomics.h>
 
21
#include "drizzled/configmake.h"
 
22
#include "drizzled/atomics.h"
 
23
#include "drizzled/data_home.h"
23
24
 
24
25
#include <netdb.h>
25
26
#include <sys/types.h>
290
291
char drizzle_home[FN_REFLEN], pidfile_name[FN_REFLEN], system_time_zone[30];
291
292
char *default_tz_name;
292
293
char glob_hostname[FN_REFLEN];
293
 
char data_home_real[FN_REFLEN],
294
 
     language[FN_REFLEN], 
 
294
 
 
295
char language[FN_REFLEN], 
295
296
     *opt_tc_log_file;
296
297
const key_map key_map_empty(0);
297
298
key_map key_map_full(0);                        // Will be initialized later
298
299
 
299
 
uint32_t data_home_len;
300
 
char data_home_buff[2], *data_home=data_home_real;
301
300
std::string drizzle_tmpdir;
302
301
char *opt_drizzle_tmpdir= NULL;
303
302
 
365
364
vector<string> unknown_options;
366
365
vector<string> defaults_file_list;
367
366
po::variables_map vm;
 
367
char * data_dir_ptr;
368
368
 
369
369
po::variables_map &getVariablesMap()
370
370
{
371
371
  return vm;
372
372
}
 
373
 
 
374
std::string& getDataHome()
 
375
{
 
376
  static string data_home(LOCALSTATEDIR);
 
377
  return data_home;
 
378
}
 
379
 
 
380
std::string& getDataHomeCatalog()
 
381
{
 
382
  static string data_home_catalog(getDataHome());
 
383
  return data_home_catalog;
 
384
}
 
385
 
 
386
char *getDatadir()
 
387
{
 
388
  return data_dir_ptr;
 
389
}
 
390
 
 
391
char **getDatadirPtr()
 
392
{
 
393
  return &data_dir_ptr;
 
394
}
373
395
 
374
396
/****************************************************************************
375
397
** Code to end drizzled
508
530
  COND_server_end.notify_all();
509
531
  LOCK_thread_count.unlock();
510
532
 
 
533
  char **data_home_ptr= getDatadirPtr();
 
534
  delete[](*data_home_ptr);
511
535
  /*
512
536
    The following lines may never be executed as the main thread may have
513
537
    killed us
1686
1710
   NO_ARG, 0, 0, 0, 0, 0, 0},
1687
1711
  {"datadir", 'h',
1688
1712
   N_("Path to the database root."),
1689
 
   (char**) &data_home,
1690
 
   (char**) &data_home, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
 
1713
   NULL, NULL, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1691
1714
  {"default-storage-engine", OPT_STORAGE_ENGINE,
1692
1715
   N_("Set the default storage engine (table type) for tables."),
1693
1716
   (char**)&default_storage_engine_str, (char**)&default_storage_engine_str,
2051
2074
  drizzle_home_ptr= drizzle_home;
2052
2075
  pidfile_name_ptr= pidfile_name;
2053
2076
  language_ptr= language;
2054
 
  data_home= data_home_real;
2055
2077
  session_startup_options= (OPTION_AUTO_IS_NULL | OPTION_SQL_NOTES);
2056
2078
  refresh_version= 1L;  /* Increments on each reload */
2057
2079
  global_thread_id= 1UL;
2059
2081
 
2060
2082
  /* Set directory paths */
2061
2083
  strncpy(language, LANGUAGE, sizeof(language)-1);
2062
 
  strncpy(data_home_real, get_relative_path(LOCALSTATEDIR),
2063
 
          sizeof(data_home_real)-1);
2064
 
  data_home_buff[0]=FN_CURLIB;  // all paths are relative from here
2065
 
  data_home_buff[1]=0;
2066
 
  data_home_len= 2;
2067
2084
 
2068
2085
  /* Variables in libraries */
2069
2086
  default_character_set_name= "utf8";
2137
2154
 
2138
2155
  if (vm.count("datadir"))
2139
2156
  {
2140
 
    strncpy(data_home_real,vm["datadir"].as<string>().c_str(), sizeof(data_home_real)-1);
2141
 
    /* Correct pointer set by my_getopt (for embedded library) */
2142
 
    data_home= data_home_real;
2143
 
    data_home_len= strlen(data_home);
 
2157
    getDataHome()= vm["datadir"].as<string>();
2144
2158
  }
 
2159
  string &data_home_catalog= getDataHomeCatalog();
 
2160
  data_home_catalog= getDataHome();
 
2161
  data_home_catalog.push_back('/');
 
2162
  data_home_catalog.append("local");
2145
2163
 
2146
2164
  if (vm.count("user"))
2147
2165
  {
2285
2303
    pos[0]= FN_LIBCHAR;
2286
2304
    pos[1]= 0;
2287
2305
  }
2288
 
  internal::convert_dirname(data_home_real,data_home_real,NULL);
2289
 
  (void) internal::fn_format(buff, data_home_real, "", "",
2290
 
                   (MY_RETURN_REAL_PATH|MY_RESOLVE_SYMLINKS));
2291
2306
  internal::convert_dirname(language,language,NULL);
2292
2307
  (void) internal::my_load_path(drizzle_home, drizzle_home,""); // Resolve current dir
2293
 
  (void) internal::my_load_path(data_home_real, data_home_real,drizzle_home);
2294
 
  (void) internal::my_load_path(pidfile_name, pidfile_name,data_home_real);
 
2308
  (void) internal::my_load_path(pidfile_name, pidfile_name,
 
2309
                                getDataHome().c_str());
2295
2310
 
2296
2311
  if (opt_plugin_dir_ptr == NULL)
2297
2312
  {
2369
2384
    }
2370
2385
    else if (tmp_string == NULL)
2371
2386
    {
2372
 
      drizzle_tmpdir.append(data_home);
 
2387
      drizzle_tmpdir.append(getDataHome());
2373
2388
      drizzle_tmpdir.push_back(FN_LIBCHAR);
2374
2389
      drizzle_tmpdir.append(GLOBAL_TEMPORARY_EXT);
2375
2390
    }