1324
1281
# if defined(HAVE_LOCALE_H)
1325
1282
setlocale(LC_ALL, "");
1327
bindtextdomain("drizzle7", LOCALEDIR);
1328
textdomain("drizzle7");
1284
bindtextdomain("drizzle", LOCALEDIR);
1285
textdomain("drizzle");
1331
po::options_description commandline_options(_("Options used only in command line"));
1288
po::options_description commandline_options(N_("Options used only in command line"));
1332
1289
commandline_options.add_options()
1333
("help,?",_("Displays this help and exit."))
1334
("batch,B",_("Don't use history file. Disable interactive behavior. (Enables --silent)"))
1290
("help,?",N_("Displays this help and exit."))
1291
("batch,B",N_("Don't use history file. Disable interactive behavior. (Enables --silent)"))
1335
1292
("column-type-info", po::value<bool>(&column_types_flag)->default_value(false)->zero_tokens(),
1336
_("Display column type information."))
1293
N_("Display column type information."))
1337
1294
("comments,c", po::value<bool>(&preserve_comments)->default_value(false)->zero_tokens(),
1338
_("Preserve comments. Send comments to the server. The default is --skip-comments (discard comments), enable with --comments"))
1295
N_("Preserve comments. Send comments to the server. The default is --skip-comments (discard comments), enable with --comments"))
1339
1296
("vertical,E", po::value<bool>(&vertical)->default_value(false)->zero_tokens(),
1340
_("Print the output of a query (rows) vertically."))
1297
N_("Print the output of a query (rows) vertically."))
1341
1298
("force,f", po::value<bool>(&ignore_errors)->default_value(false)->zero_tokens(),
1342
_("Continue even if we get an sql error."))
1299
N_("Continue even if we get an sql error."))
1343
1300
("named-commands,G", po::value<bool>(&named_cmds)->default_value(false)->zero_tokens(),
1344
_("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."))
1301
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."))
1345
1302
("no-beep,b", po::value<bool>(&opt_nobeep)->default_value(false)->zero_tokens(),
1346
_("Turn off beep on error."))
1347
("disable-line-numbers", _("Do not write line numbers for errors."))
1348
("disable-column-names", _("Do not write column names in results."))
1303
N_("Turn off beep on error."))
1304
("disable-line-numbers", N_("Do not write line numbers for errors."))
1305
("disable-column-names", N_("Do not write column names in results."))
1349
1306
("skip-column-names,N",
1350
_("Don't write column names in results. WARNING: -N is deprecated, use long version of this options instead."))
1307
N_("Don't write column names in results. WARNING: -N is deprecated, use long version of this options instead."))
1351
1308
("set-variable,O", po::value<string>(),
1352
_("Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value."))
1309
N_("Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value."))
1353
1310
("table,t", po::value<bool>(&output_tables)->default_value(false)->zero_tokens(),
1354
_("Output in table format."))
1311
N_("Output in table format."))
1355
1312
("safe-updates,U", po::value<bool>(&safe_updates)->default_value(false)->zero_tokens(),
1356
_("Only allow UPDATE and DELETE that uses keys."))
1313
N_("Only allow UPDATE and DELETE that uses keys."))
1357
1314
("i-am-a-dummy,U", po::value<bool>(&safe_updates)->default_value(false)->zero_tokens(),
1358
_("Synonym for option --safe-updates, -U."))
1315
N_("Synonym for option --safe-updates, -U."))
1359
1316
("verbose,v", po::value<string>(&opt_verbose)->default_value(""),
1360
_("-v vvv implies that verbose= 3, Used to specify verbose"))
1361
("version,V", _("Output version information and exit."))
1317
N_("-v vvv implies that verbose= 3, Used to specify verbose"))
1318
("version,V", N_("Output version information and exit."))
1362
1319
("secure-auth", po::value<bool>(&opt_secure_auth)->default_value(false)->zero_tokens(),
1363
_("Refuse client connecting to server if it uses old (pre-4.1.1) protocol"))
1320
N_("Refuse client connecting to server if it uses old (pre-4.1.1) protocol"))
1364
1321
("show-warnings", po::value<bool>(&show_warnings)->default_value(false)->zero_tokens(),
1365
_("Show warnings after every statement."))
1322
N_("Show warnings after every statement."))
1366
1323
("show-progress-size", po::value<uint32_t>(&show_progress_size)->default_value(0),
1367
_("Number of lines before each import progress report."))
1324
N_("Number of lines before each import progress report."))
1368
1325
("ping", po::value<bool>(&opt_ping)->default_value(false)->zero_tokens(),
1369
_("Ping the server to check if it's alive."))
1326
N_("Ping the server to check if it's alive."))
1370
1327
("no-defaults", po::value<bool>()->default_value(false)->zero_tokens(),
1371
_("Configuration file defaults are not used if no-defaults is set"))
1328
N_("Configuration file defaults are not used if no-defaults is set"))
1374
po::options_description drizzle_options(_("Options specific to the drizzle client"));
1331
po::options_description drizzle_options(N_("Options specific to the drizzle client"));
1375
1332
drizzle_options.add_options()
1376
1333
("disable-auto-rehash,A",
1377
_("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."))
1334
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."))
1378
1335
("auto-vertical-output", po::value<bool>(&auto_vertical_output)->default_value(false)->zero_tokens(),
1379
_("Automatically switch to vertical output mode if the result is wider than the terminal width."))
1336
N_("Automatically switch to vertical output mode if the result is wider than the terminal width."))
1380
1337
("database,D", po::value<string>(¤t_db)->default_value(""),
1381
_("Database to use."))
1338
N_("Database to use."))
1382
1339
("default-character-set",po::value<string>(),
1384
1341
("delimiter", po::value<string>(&delimiter_str)->default_value(";"),
1385
_("Delimiter to be used."))
1342
N_("Delimiter to be used."))
1386
1343
("execute,e", po::value<string>(),
1387
_("Execute command and quit. (Disables --force and history file)"))
1344
N_("Execute command and quit. (Disables --force and history file)"))
1388
1345
("local-infile", po::value<bool>(&opt_local_infile)->default_value(false)->zero_tokens(),
1389
_("Enable LOAD DATA LOCAL INFILE."))
1346
N_("Enable LOAD DATA LOCAL INFILE."))
1390
1347
("unbuffered,n", po::value<bool>(&unbuffered)->default_value(false)->zero_tokens(),
1391
_("Flush buffer after each query."))
1348
N_("Flush buffer after each query."))
1392
1349
("sigint-ignore", po::value<bool>(&opt_sigint_ignore)->default_value(false)->zero_tokens(),
1393
_("Ignore SIGINT (CTRL-C)"))
1350
N_("Ignore SIGINT (CTRL-C)"))
1394
1351
("one-database,o", po::value<bool>(&one_database)->default_value(false)->zero_tokens(),
1395
_("Only update the default database. This is useful for skipping updates to other database in the update log."))
1352
N_("Only update the default database. This is useful for skipping updates to other database in the update log."))
1396
1353
("pager", po::value<string>(),
1397
_("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."))
1354
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."))
1398
1355
("disable-pager", po::value<bool>(&opt_nopager)->default_value(false)->zero_tokens(),
1399
_("Disable pager and print to stdout. See interactive help (\\h) also."))
1356
N_("Disable pager and print to stdout. See interactive help (\\h) also."))
1400
1357
("prompt", po::value<string>(¤t_prompt)->default_value(""),
1401
_("Set the drizzle prompt to this value."))
1358
N_("Set the drizzle prompt to this value."))
1402
1359
("quick,q", po::value<bool>(&quick)->default_value(false)->zero_tokens(),
1403
_("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."))
1360
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."))
1404
1361
("raw,r", po::value<bool>(&opt_raw_data)->default_value(false)->zero_tokens(),
1405
_("Write fields without conversion. Used with --batch."))
1406
("disable-reconnect", _("Do not reconnect if the connection is lost."))
1362
N_("Write fields without conversion. Used with --batch."))
1363
("disable-reconnect", N_("Do not reconnect if the connection is lost."))
1407
1364
("shutdown", po::value<bool>()->zero_tokens(),
1408
_("Shutdown the server"))
1409
("silent,s", _("Be more silent. Print results with a tab as separator, each row on new line."))
1365
N_("Shutdown the server"))
1366
("silent,s", N_("Be more silent. Print results with a tab as separator, each row on new line."))
1410
1367
("tee", po::value<string>(),
1411
_("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."))
1368
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."))
1412
1369
("disable-tee", po::value<bool>()->default_value(false)->zero_tokens(),
1413
_("Disable outfile. See interactive help (\\h) also."))
1370
N_("Disable outfile. See interactive help (\\h) also."))
1414
1371
("connect-timeout", po::value<uint32_t>(&opt_connect_timeout)->default_value(0)->notifier(&check_timeout_value),
1415
_("Number of seconds before connection timeout."))
1372
N_("Number of seconds before connection timeout."))
1416
1373
("max-input-line", po::value<uint32_t>(&opt_max_input_line)->default_value(16*1024L*1024L)->notifier(&check_max_input_line),
1417
_("Max length of input line"))
1374
N_("Max length of input line"))
1418
1375
("select-limit", po::value<uint32_t>(&select_limit)->default_value(1000L),
1419
_("Automatic limit for SELECT when using --safe-updates"))
1376
N_("Automatic limit for SELECT when using --safe-updates"))
1420
1377
("max-join-size", po::value<uint32_t>(&max_join_size)->default_value(1000000L),
1421
_("Automatic limit for rows in a join when using --safe-updates"))
1378
N_("Automatic limit for rows in a join when using --safe-updates"))
1424
po::options_description client_options(_("Options specific to the client"));
1381
po::options_description client_options(N_("Options specific to the client"));
1425
1382
client_options.add_options()
1426
1383
("host,h", po::value<string>(¤t_host)->default_value("localhost"),
1427
_("Connect to host"))
1384
N_("Connect to host"))
1428
1385
("password,P", po::value<string>(¤t_password)->default_value(PASSWORD_SENTINEL),
1429
_("Password to use when connecting to server. If password is not given it's asked from the tty."))
1386
N_("Password to use when connecting to server. If password is not given it's asked from the tty."))
1430
1387
("port,p", po::value<uint32_t>()->default_value(0),
1431
_("Port number to use for connection or 0 for default to, in order of preference, drizzle.cnf, $DRIZZLE_TCP_PORT, built-in default"))
1388
N_("Port number to use for connection or 0 for default to, in order of preference, drizzle.cnf, $DRIZZLE_TCP_PORT, built-in default"))
1432
1389
#ifdef DRIZZLE_ADMIN_TOOL
1433
1390
("user,u", po::value<string>(¤t_user)->default_value("root"),
1435
1392
("user,u", po::value<string>(¤t_user)->default_value(""),
1437
_("User for login if not current user."))
1394
N_("User for login if not current user."))
1438
1395
("protocol",po::value<string>(&opt_protocol)->default_value("mysql"),
1439
_("The protocol of connection (mysql or drizzle)."))
1396
N_("The protocol of connection (mysql or drizzle)."))
1442
po::options_description long_options(_("Allowed Options"));
1399
po::options_description long_options(N_("Allowed Options"));
1443
1400
long_options.add(commandline_options).add(drizzle_options).add(client_options);
1445
1402
std::string system_config_dir_drizzle(SYSCONFDIR);
4390
4347
#include <sys/times.h>
4348
#ifdef _SC_CLK_TCK // For mit-pthreads
4349
#undef CLOCKS_PER_SEC
4350
#define CLOCKS_PER_SEC (sysconf(_SC_CLK_TCK))
4392
static boost::posix_time::ptime start_timer(void)
4353
static uint32_t start_timer(void)
4394
return boost::posix_time::microsec_clock::universal_time();
4356
return times(&tms_tmp);
4397
static void nice_time(boost::posix_time::time_duration duration, string &buff)
4361
Write as many as 52+1 bytes to buff, in the form of a legible
4364
len("4294967296 days, 23 hours, 59 minutes, 60.00 seconds") -> 52
4366
static void nice_time(double sec,char *buff,bool part_second)
4399
4369
ostringstream tmp_buff_str;
4401
if (duration.hours() > 0)
4403
tmp_buff_str << duration.hours();
4404
if (duration.hours() > 1)
4371
if (sec >= 3600.0*24)
4373
tmp=(uint32_t) floor(sec/(3600.0*24));
4374
sec-= 3600.0*24*tmp;
4375
tmp_buff_str << tmp;
4378
tmp_buff_str << " days ";
4380
tmp_buff_str << " day ";
4385
tmp=(uint32_t) floor(sec/3600.0);
4387
tmp_buff_str << tmp;
4405
4390
tmp_buff_str << _(" hours ");
4407
4392
tmp_buff_str << _(" hour ");
4409
if (duration.hours() > 0 || duration.minutes() > 0)
4411
tmp_buff_str << duration.minutes() << _(" min ");
4396
tmp=(uint32_t) floor(sec/60.0);
4398
tmp_buff_str << tmp << _(" min ");
4414
tmp_buff_str.precision(duration.num_fractional_digits());
4416
double seconds= duration.fractional_seconds();
4418
seconds/= pow(10.0,duration.num_fractional_digits());
4420
seconds+= duration.seconds();
4421
tmp_buff_str << seconds << _(" sec");
4423
buff.append(tmp_buff_str.str());
4426
static void end_timer(boost::posix_time::ptime start_time, string &buff)
4428
boost::posix_time::ptime end_time= start_timer();
4429
boost::posix_time::time_period duration(start_time, end_time);
4431
nice_time(duration.length(), buff);
4435
static void drizzle_end_timer(boost::posix_time::ptime start_time, string &buff)
4438
end_timer(start_time,buff);
4401
tmp_buff_str.precision(2);
4403
tmp_buff_str.precision(0);
4404
tmp_buff_str << sec << _(" sec");
4405
strcpy(buff, tmp_buff_str.str().c_str());
4409
static void end_timer(uint32_t start_time,char *buff)
4411
nice_time((double) (start_timer() - start_time) /
4412
CLOCKS_PER_SEC,buff,1);
4416
static void drizzle_end_timer(uint32_t start_time,char *buff)
4420
end_timer(start_time,buff+2);
4421
strcpy(strchr(buff, '\0'),")");
4442
4424
static const char * construct_prompt()