1326
1280
# if defined(HAVE_LOCALE_H)
1327
1281
setlocale(LC_ALL, "");
1329
bindtextdomain("drizzle7", LOCALEDIR);
1330
textdomain("drizzle7");
1283
bindtextdomain("drizzle", LOCALEDIR);
1284
textdomain("drizzle");
1333
po::options_description commandline_options(_("Options used only in command line"));
1287
po::options_description commandline_options(N_("Options used only in command line"));
1334
1288
commandline_options.add_options()
1335
("help,?",_("Displays this help and exit."))
1336
("batch,B",_("Don't use history file. Disable interactive behavior. (Enables --silent)"))
1289
("help,?",N_("Displays this help and exit."))
1290
("batch,B",N_("Don't use history file. Disable interactive behavior. (Enables --silent)"))
1337
1291
("column-type-info", po::value<bool>(&column_types_flag)->default_value(false)->zero_tokens(),
1338
_("Display column type information."))
1292
N_("Display column type information."))
1339
1293
("comments,c", po::value<bool>(&preserve_comments)->default_value(false)->zero_tokens(),
1340
_("Preserve comments. Send comments to the server. The default is --skip-comments (discard comments), enable with --comments"))
1294
N_("Preserve comments. Send comments to the server. The default is --skip-comments (discard comments), enable with --comments"))
1341
1295
("vertical,E", po::value<bool>(&vertical)->default_value(false)->zero_tokens(),
1342
_("Print the output of a query (rows) vertically."))
1296
N_("Print the output of a query (rows) vertically."))
1343
1297
("force,f", po::value<bool>(&ignore_errors)->default_value(false)->zero_tokens(),
1344
_("Continue even if we get an sql error."))
1298
N_("Continue even if we get an sql error."))
1345
1299
("named-commands,G", po::value<bool>(&named_cmds)->default_value(false)->zero_tokens(),
1346
_("Enable named commands. Named commands mean this program's internal commands; see drizzle> help . When enabled, the named commands can be used from any line of the query, otherwise only from the first line, before an enter."))
1300
N_("Enable named commands. Named commands mean this program's internal commands; see drizzle> help . When enabled, the named commands can be used from any line of the query, otherwise only from the first line, before an enter."))
1347
1301
("no-beep,b", po::value<bool>(&opt_nobeep)->default_value(false)->zero_tokens(),
1348
_("Turn off beep on error."))
1349
("disable-line-numbers", _("Do not write line numbers for errors."))
1350
("disable-column-names", _("Do not write column names in results."))
1302
N_("Turn off beep on error."))
1303
("disable-line-numbers", N_("Do not write line numbers for errors."))
1304
("disable-column-names", N_("Do not write column names in results."))
1351
1305
("skip-column-names,N",
1352
_("Don't write column names in results. WARNING: -N is deprecated, use long version of this options instead."))
1306
N_("Don't write column names in results. WARNING: -N is deprecated, use long version of this options instead."))
1353
1307
("set-variable,O", po::value<string>(),
1354
_("Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value."))
1308
N_("Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value."))
1355
1309
("table,t", po::value<bool>(&output_tables)->default_value(false)->zero_tokens(),
1356
_("Output in table format."))
1310
N_("Output in table format."))
1357
1311
("safe-updates,U", po::value<bool>(&safe_updates)->default_value(false)->zero_tokens(),
1358
_("Only allow UPDATE and DELETE that uses keys."))
1312
N_("Only allow UPDATE and DELETE that uses keys."))
1359
1313
("i-am-a-dummy,U", po::value<bool>(&safe_updates)->default_value(false)->zero_tokens(),
1360
_("Synonym for option --safe-updates, -U."))
1314
N_("Synonym for option --safe-updates, -U."))
1361
1315
("verbose,v", po::value<string>(&opt_verbose)->default_value(""),
1362
_("-v vvv implies that verbose= 3, Used to specify verbose"))
1363
("version,V", _("Output version information and exit."))
1316
N_("-v vvv implies that verbose= 3, Used to specify verbose"))
1317
("version,V", N_("Output version information and exit."))
1364
1318
("secure-auth", po::value<bool>(&opt_secure_auth)->default_value(false)->zero_tokens(),
1365
_("Refuse client connecting to server if it uses old (pre-4.1.1) protocol"))
1319
N_("Refuse client connecting to server if it uses old (pre-4.1.1) protocol"))
1366
1320
("show-warnings", po::value<bool>(&show_warnings)->default_value(false)->zero_tokens(),
1367
_("Show warnings after every statement."))
1321
N_("Show warnings after every statement."))
1368
1322
("show-progress-size", po::value<uint32_t>(&show_progress_size)->default_value(0),
1369
_("Number of lines before each import progress report."))
1323
N_("Number of lines before each import progress report."))
1370
1324
("ping", po::value<bool>(&opt_ping)->default_value(false)->zero_tokens(),
1371
_("Ping the server to check if it's alive."))
1325
N_("Ping the server to check if it's alive."))
1372
1326
("no-defaults", po::value<bool>()->default_value(false)->zero_tokens(),
1373
_("Configuration file defaults are not used if no-defaults is set"))
1327
N_("Configuration file defaults are not used if no-defaults is set"))
1376
po::options_description drizzle_options(_("Options specific to the drizzle client"));
1330
po::options_description drizzle_options(N_("Options specific to the drizzle client"));
1377
1331
drizzle_options.add_options()
1378
1332
("disable-auto-rehash,A",
1379
_("Disable automatic rehashing. One doesn't need to use 'rehash' to get table and field completion, but startup and reconnecting may take a longer time."))
1333
N_("Disable automatic rehashing. One doesn't need to use 'rehash' to get table and field completion, but startup and reconnecting may take a longer time."))
1380
1334
("auto-vertical-output", po::value<bool>(&auto_vertical_output)->default_value(false)->zero_tokens(),
1381
_("Automatically switch to vertical output mode if the result is wider than the terminal width."))
1335
N_("Automatically switch to vertical output mode if the result is wider than the terminal width."))
1382
1336
("database,D", po::value<string>(¤t_db)->default_value(""),
1383
_("Database to use."))
1337
N_("Database to use."))
1384
1338
("default-character-set",po::value<string>(),
1386
1340
("delimiter", po::value<string>(&delimiter_str)->default_value(";"),
1387
_("Delimiter to be used."))
1341
N_("Delimiter to be used."))
1388
1342
("execute,e", po::value<string>(),
1389
_("Execute command and quit. (Disables --force and history file)"))
1343
N_("Execute command and quit. (Disables --force and history file)"))
1390
1344
("local-infile", po::value<bool>(&opt_local_infile)->default_value(false)->zero_tokens(),
1391
_("Enable LOAD DATA LOCAL INFILE."))
1345
N_("Enable LOAD DATA LOCAL INFILE."))
1392
1346
("unbuffered,n", po::value<bool>(&unbuffered)->default_value(false)->zero_tokens(),
1393
_("Flush buffer after each query."))
1347
N_("Flush buffer after each query."))
1394
1348
("sigint-ignore", po::value<bool>(&opt_sigint_ignore)->default_value(false)->zero_tokens(),
1395
_("Ignore SIGINT (CTRL-C)"))
1349
N_("Ignore SIGINT (CTRL-C)"))
1396
1350
("one-database,o", po::value<bool>(&one_database)->default_value(false)->zero_tokens(),
1397
_("Only update the default database. This is useful for skipping updates to other database in the update log."))
1351
N_("Only update the default database. This is useful for skipping updates to other database in the update log."))
1398
1352
("pager", po::value<string>(),
1399
_("Pager to use to display results. If you don't supply an option the default pager is taken from your ENV variable PAGER. Valid pagers are less, more, cat [> filename], etc. See interactive help (\\h) also. This option does not work in batch mode. Disable with --disable-pager. This option is disabled by default."))
1353
N_("Pager to use to display results. If you don't supply an option the default pager is taken from your ENV variable PAGER. Valid pagers are less, more, cat [> filename], etc. See interactive help (\\h) also. This option does not work in batch mode. Disable with --disable-pager. This option is disabled by default."))
1400
1354
("disable-pager", po::value<bool>(&opt_nopager)->default_value(false)->zero_tokens(),
1401
_("Disable pager and print to stdout. See interactive help (\\h) also."))
1355
N_("Disable pager and print to stdout. See interactive help (\\h) also."))
1402
1356
("prompt", po::value<string>(¤t_prompt)->default_value(""),
1403
_("Set the drizzle prompt to this value."))
1357
N_("Set the drizzle prompt to this value."))
1404
1358
("quick,q", po::value<bool>(&quick)->default_value(false)->zero_tokens(),
1405
_("Don't cache result, print it row by row. This may slow down the server if the output is suspended. Doesn't use history file."))
1359
N_("Don't cache result, print it row by row. This may slow down the server if the output is suspended. Doesn't use history file."))
1406
1360
("raw,r", po::value<bool>(&opt_raw_data)->default_value(false)->zero_tokens(),
1407
_("Write fields without conversion. Used with --batch."))
1408
("disable-reconnect", _("Do not reconnect if the connection is lost."))
1361
N_("Write fields without conversion. Used with --batch."))
1362
("disable-reconnect", N_("Do not reconnect if the connection is lost."))
1409
1363
("shutdown", po::value<bool>()->zero_tokens(),
1410
_("Shutdown the server"))
1411
("silent,s", _("Be more silent. Print results with a tab as separator, each row on new line."))
1364
N_("Shutdown the server"))
1365
("silent,s", N_("Be more silent. Print results with a tab as separator, each row on new line."))
1412
1366
("tee", po::value<string>(),
1413
_("Append everything into outfile. See interactive help (\\h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default."))
1367
N_("Append everything into outfile. See interactive help (\\h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default."))
1414
1368
("disable-tee", po::value<bool>()->default_value(false)->zero_tokens(),
1415
_("Disable outfile. See interactive help (\\h) also."))
1369
N_("Disable outfile. See interactive help (\\h) also."))
1416
1370
("connect-timeout", po::value<uint32_t>(&opt_connect_timeout)->default_value(0)->notifier(&check_timeout_value),
1417
_("Number of seconds before connection timeout."))
1371
N_("Number of seconds before connection timeout."))
1418
1372
("max-input-line", po::value<uint32_t>(&opt_max_input_line)->default_value(16*1024L*1024L)->notifier(&check_max_input_line),
1419
_("Max length of input line"))
1373
N_("Max length of input line"))
1420
1374
("select-limit", po::value<uint32_t>(&select_limit)->default_value(1000L),
1421
_("Automatic limit for SELECT when using --safe-updates"))
1375
N_("Automatic limit for SELECT when using --safe-updates"))
1422
1376
("max-join-size", po::value<uint32_t>(&max_join_size)->default_value(1000000L),
1423
_("Automatic limit for rows in a join when using --safe-updates"))
1377
N_("Automatic limit for rows in a join when using --safe-updates"))
1426
po::options_description client_options(_("Options specific to the client"));
1380
po::options_description client_options(N_("Options specific to the client"));
1427
1381
client_options.add_options()
1428
1382
("host,h", po::value<string>(¤t_host)->default_value("localhost"),
1429
_("Connect to host"))
1383
N_("Connect to host"))
1430
1384
("password,P", po::value<string>(¤t_password)->default_value(PASSWORD_SENTINEL),
1431
_("Password to use when connecting to server. If password is not given it's asked from the tty."))
1385
N_("Password to use when connecting to server. If password is not given it's asked from the tty."))
1432
1386
("port,p", po::value<uint32_t>()->default_value(0),
1433
_("Port number to use for connection or 0 for default to, in order of preference, drizzle.cnf, $DRIZZLE_TCP_PORT, built-in default"))
1387
N_("Port number to use for connection or 0 for default to, in order of preference, drizzle.cnf, $DRIZZLE_TCP_PORT, built-in default"))
1434
1388
#ifdef DRIZZLE_ADMIN_TOOL
1435
1389
("user,u", po::value<string>(¤t_user)->default_value("root"),
1437
1391
("user,u", po::value<string>(¤t_user)->default_value(""),
1439
_("User for login if not current user."))
1393
N_("User for login if not current user."))
1440
1394
("protocol",po::value<string>(&opt_protocol)->default_value("mysql"),
1441
_("The protocol of connection (mysql or drizzle)."))
1395
N_("The protocol of connection (mysql or drizzle)."))
1444
po::options_description long_options(_("Allowed Options"));
1398
po::options_description long_options(N_("Allowed Options"));
1445
1399
long_options.add(commandline_options).add(drizzle_options).add(client_options);
1447
1401
std::string system_config_dir_drizzle(SYSCONFDIR);
4508
4344
#include <sys/times.h>
4345
#ifdef _SC_CLK_TCK // For mit-pthreads
4346
#undef CLOCKS_PER_SEC
4347
#define CLOCKS_PER_SEC (sysconf(_SC_CLK_TCK))
4510
static boost::posix_time::ptime start_timer(void)
4350
static uint32_t start_timer(void)
4512
return boost::posix_time::microsec_clock::universal_time();
4353
return times(&tms_tmp);
4515
static void nice_time(boost::posix_time::time_duration duration, string &buff)
4358
Write as many as 52+1 bytes to buff, in the form of a legible
4361
len("4294967296 days, 23 hours, 59 minutes, 60.00 seconds") -> 52
4363
static void nice_time(double sec,char *buff,bool part_second)
4517
4366
ostringstream tmp_buff_str;
4519
if (duration.hours() > 0)
4521
tmp_buff_str << duration.hours();
4522
if (duration.hours() > 1)
4368
if (sec >= 3600.0*24)
4370
tmp=(uint32_t) floor(sec/(3600.0*24));
4371
sec-= 3600.0*24*tmp;
4372
tmp_buff_str << tmp;
4375
tmp_buff_str << " days ";
4377
tmp_buff_str << " day ";
4382
tmp=(uint32_t) floor(sec/3600.0);
4384
tmp_buff_str << tmp;
4523
4387
tmp_buff_str << _(" hours ");
4525
4389
tmp_buff_str << _(" hour ");
4527
if (duration.hours() > 0 || duration.minutes() > 0)
4529
tmp_buff_str << duration.minutes() << _(" min ");
4393
tmp=(uint32_t) floor(sec/60.0);
4395
tmp_buff_str << tmp << _(" min ");
4532
tmp_buff_str.precision(duration.num_fractional_digits());
4534
double seconds= duration.fractional_seconds();
4536
seconds/= pow(10.0,duration.num_fractional_digits());
4538
seconds+= duration.seconds();
4539
tmp_buff_str << seconds << _(" sec");
4541
buff.append(tmp_buff_str.str());
4544
static void end_timer(boost::posix_time::ptime start_time, string &buff)
4546
boost::posix_time::ptime end_time= start_timer();
4547
boost::posix_time::time_period duration(start_time, end_time);
4549
nice_time(duration.length(), buff);
4553
static void drizzle_end_timer(boost::posix_time::ptime start_time, string &buff)
4556
end_timer(start_time,buff);
4398
tmp_buff_str.precision(2);
4400
tmp_buff_str.precision(0);
4401
tmp_buff_str << sec << _(" sec");
4402
strcpy(buff, tmp_buff_str.str().c_str());
4406
static void end_timer(uint32_t start_time,char *buff)
4408
nice_time((double) (start_timer() - start_time) /
4409
CLOCKS_PER_SEC,buff,1);
4413
static void drizzle_end_timer(uint32_t start_time,char *buff)
4417
end_timer(start_time,buff+2);
4418
strcpy(strchr(buff, '\0'),")");
4560
4421
static const char * construct_prompt()