1419
1423
static struct my_option my_long_options[] =
1421
1425
{"help", '?', N_("Display this help and exit."), 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
1423
1427
{"help", 'I', N_("Synonym for -?"), 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
1425
1429
{"auto-rehash", OPT_AUTO_REHASH,
1426
N_("Enable automatic rehashing. One doesn't need to use 'rehash' to get table and field completion, but startup and reconnecting may take a longer time. Disable with --disable-auto-rehash."),
1427
(char**) &opt_rehash, (char**) &opt_rehash, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0,
1430
N_("Enable automatic rehashing. One doesn't need to use 'rehash' to get table and field completion, but startup and reconnecting may take a longer time. Disable with --disable-auto-rehash."),
1431
(char**) &opt_rehash, (char**) &opt_rehash, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0,
1429
1433
{"no-auto-rehash", 'A',
1430
N_("No automatic rehashing. One has to use 'rehash' to get table and field completion. This gives a quicker start of drizzle_st and disables rehashing on reconnect. WARNING: options deprecated; use --disable-auto-rehash instead."),
1431
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1434
N_("No automatic rehashing. One has to use 'rehash' to get table and field completion. This gives a quicker start of drizzle_st and disables rehashing on reconnect. WARNING: options deprecated; use --disable-auto-rehash instead."),
1435
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1432
1436
{"auto-vertical-output", OPT_AUTO_VERTICAL_OUTPUT,
1433
N_("Automatically switch to vertical output mode if the result is wider than the terminal width."),
1434
(char**) &auto_vertical_output, (char**) &auto_vertical_output, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1437
N_("Automatically switch to vertical output mode if the result is wider than the terminal width."),
1438
(char**) &auto_vertical_output, (char**) &auto_vertical_output, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1436
N_("Don't use history file. Disable interactive behavior. (Enables --silent)"), 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1440
N_("Don't use history file. Disable interactive behavior. (Enables --silent)"), 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1437
1441
{"column-type-info", OPT_COLUMN_TYPES, N_("Display column type information."),
1438
(char**) &column_types_flag, (char**) &column_types_flag,
1439
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1442
(char**) &column_types_flag, (char**) &column_types_flag,
1443
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1440
1444
{"comments", 'c', N_("Preserve comments. Send comments to the server. The default is --skip-comments (discard comments), enable with --comments"),
1441
(char**) &preserve_comments, (char**) &preserve_comments,
1442
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1445
(char**) &preserve_comments, (char**) &preserve_comments,
1446
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1443
1447
{"compress", 'C', N_("Use compression in server/client protocol."),
1444
(char**) &opt_compress, (char**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
1448
(char**) &opt_compress, (char**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
1446
1450
{"database", 'D', N_("Database to use."), (char**) ¤t_db,
1447
(char**) ¤t_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1451
(char**) ¤t_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1448
1452
{"default-character-set", OPT_DEFAULT_CHARSET,
1449
N_("(not used)"), 0,
1450
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1453
N_("(not used)"), 0,
1454
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1451
1455
{"delimiter", OPT_DELIMITER, N_("Delimiter to be used."), (char**) &delimiter_str,
1452
(char**) &delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1456
(char**) &delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1453
1457
{"execute", 'e', N_("Execute command and quit. (Disables --force and history file)"), 0,
1454
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1458
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1455
1459
{"vertical", 'E', N_("Print the output of a query (rows) vertically."),
1456
(char**) &vertical, (char**) &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
1460
(char**) &vertical, (char**) &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
1458
1462
{"force", 'f', N_("Continue even if we get an sql error."),
1459
(char**) &ignore_errors, (char**) &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0,
1463
(char**) &ignore_errors, (char**) &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0,
1461
1465
{"named-commands", 'G',
1462
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. Disable with --disable-named-commands. This option is disabled by default."),
1463
(char**) &named_cmds, (char**) &named_cmds, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
1466
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. Disable with --disable-named-commands. This option is disabled by default."),
1467
(char**) &named_cmds, (char**) &named_cmds, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
1465
1469
{"no-named-commands", 'g',
1466
N_("Named commands are disabled. Use \\* form only, or use named commands only in the beginning of a line ending with a semicolon (;) Since version 10.9 the client now starts with this option ENABLED by default! Disable with '-G'. Long format commands still work from the first line. WARNING: option deprecated; use --disable-named-commands instead."),
1467
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1470
N_("Named commands are disabled. Use \\* form only, or use named commands only in the beginning of a line ending with a semicolon (;) Since version 10.9 the client now starts with this option ENABLED by default! Disable with '-G'. Long format commands still work from the first line. WARNING: option deprecated; use --disable-named-commands instead."),
1471
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1468
1472
{"ignore-spaces", 'i', N_("Ignore space after function names."), 0, 0, 0,
1469
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1473
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1470
1474
{"local-infile", OPT_LOCAL_INFILE, N_("Enable/disable LOAD DATA LOCAL INFILE."),
1471
(char**) &opt_local_infile,
1472
(char**) &opt_local_infile, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
1475
(char**) &opt_local_infile,
1476
(char**) &opt_local_infile, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
1473
1477
{"no-beep", 'b', N_("Turn off beep on error."), (char**) &opt_nobeep,
1474
(char**) &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1478
(char**) &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1475
1479
{"host", 'h', N_("Connect to host."), (char**) ¤t_host,
1476
(char**) ¤t_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1480
(char**) ¤t_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1477
1481
{"line-numbers", OPT_LINE_NUMBERS, N_("Write line numbers for errors."),
1478
(char**) &line_numbers, (char**) &line_numbers, 0, GET_BOOL,
1479
NO_ARG, 1, 0, 0, 0, 0, 0},
1482
(char**) &line_numbers, (char**) &line_numbers, 0, GET_BOOL,
1483
NO_ARG, 1, 0, 0, 0, 0, 0},
1480
1484
{"skip-line-numbers", 'L', N_("Don't write line number for errors. WARNING: -L is deprecated, use long version of this option instead."), 0, 0, 0, GET_NO_ARG,
1481
NO_ARG, 0, 0, 0, 0, 0, 0},
1485
NO_ARG, 0, 0, 0, 0, 0, 0},
1482
1486
{"unbuffered", 'n', N_("Flush buffer after each query."), (char**) &unbuffered,
1483
(char**) &unbuffered, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1487
(char**) &unbuffered, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1484
1488
{"column-names", OPT_COLUMN_NAMES, N_("Write column names in results."),
1485
(char**) &column_names, (char**) &column_names, 0, GET_BOOL,
1486
NO_ARG, 1, 0, 0, 0, 0, 0},
1489
(char**) &column_names, (char**) &column_names, 0, GET_BOOL,
1490
NO_ARG, 1, 0, 0, 0, 0, 0},
1487
1491
{"skip-column-names", 'N',
1488
N_("Don't write column names in results. WARNING: -N is deprecated, use long version of this options instead."),
1489
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1492
N_("Don't write column names in results. WARNING: -N is deprecated, use long version of this options instead."),
1493
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1490
1494
{"set-variable", 'O',
1491
N_("Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value."),
1492
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1495
N_("Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value."),
1496
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1493
1497
{"sigint-ignore", OPT_SIGINT_IGNORE, N_("Ignore SIGINT (CTRL-C)"),
1494
(char**) &opt_sigint_ignore, (char**) &opt_sigint_ignore, 0, GET_BOOL,
1495
NO_ARG, 0, 0, 0, 0, 0, 0},
1498
(char**) &opt_sigint_ignore, (char**) &opt_sigint_ignore, 0, GET_BOOL,
1499
NO_ARG, 0, 0, 0, 0, 0, 0},
1496
1500
{"one-database", 'o',
1497
N_("Only update the default database. This is useful for skipping updates to other database in the update log."),
1498
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1501
N_("Only update the default database. This is useful for skipping updates to other database in the update log."),
1502
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1499
1503
{"pager", OPT_PAGER,
1500
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."),
1501
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
1504
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."),
1505
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
1502
1506
{"no-pager", OPT_NOPAGER,
1503
N_("Disable pager and print to stdout. See interactive help (\\h) also. WARNING: option deprecated; use --disable-pager instead."),
1504
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1507
N_("Disable pager and print to stdout. See interactive help (\\h) also. WARNING: option deprecated; use --disable-pager instead."),
1508
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1505
1509
{"password", 'P',
1506
N_("Password to use when connecting to server. If password is not given it's asked from the tty."),
1507
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
1510
N_("Password to use when connecting to server. If password is not given it's asked from the tty."),
1511
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
1508
1512
{"port", 'p', N_("Port number to use for connection or 0 for default to, in order of preference, drizzle.cnf, $DRIZZLE_TCP_PORT, ")
1509
N_("built-in default") " (" STRINGIFY_ARG(DRIZZLE_PORT) ").",
1510
0, 0, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1513
N_("built-in default") " (" STRINGIFY_ARG(DRIZZLE_PORT) ").",
1514
0, 0, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1511
1515
{"prompt", OPT_PROMPT, N_("Set the drizzle prompt to this value."),
1512
(char**) ¤t_prompt, (char**) ¤t_prompt, 0, GET_STR_ALLOC,
1513
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1516
(char**) ¤t_prompt, (char**) ¤t_prompt, 0, GET_STR_ALLOC,
1517
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1515
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."),
1516
(char**) &quick, (char**) &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1519
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."),
1520
(char**) &quick, (char**) &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1517
1521
{"raw", 'r', N_("Write fields without conversion. Used with --batch."),
1518
(char**) &opt_raw_data, (char**) &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0,
1522
(char**) &opt_raw_data, (char**) &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0,
1520
1524
{"reconnect", OPT_RECONNECT, N_("Reconnect if the connection is lost. Disable with --disable-reconnect. This option is enabled by default."),
1521
(char**) &opt_reconnect, (char**) &opt_reconnect, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
1525
(char**) &opt_reconnect, (char**) &opt_reconnect, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
1522
1526
{"shutdown", OPT_SHUTDOWN, N_("Shutdown the server."),
1523
(char**) &opt_shutdown, (char**) &opt_shutdown, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1527
(char**) &opt_shutdown, (char**) &opt_shutdown, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1524
1528
{"silent", 's', N_("Be more silent. Print results with a tab as separator, each row on new line."), 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0,
1526
1530
{"table", 't', N_("Output in table format."), (char**) &output_tables,
1527
(char**) &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1531
(char**) &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1528
1532
{"tee", OPT_TEE,
1529
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."),
1530
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1533
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."),
1534
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1531
1535
{"no-tee", OPT_NOTEE, N_("Disable outfile. See interactive help (\\h) also. WARNING: option deprecated; use --disable-tee instead"), 0, 0, 0, GET_NO_ARG,
1532
NO_ARG, 0, 0, 0, 0, 0, 0},
1536
NO_ARG, 0, 0, 0, 0, 0, 0},
1533
1537
{"user", 'u', N_("User for login if not current user."), (char**) ¤t_user,
1534
(char**) ¤t_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1538
(char**) ¤t_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1535
1539
{"safe-updates", 'U', N_("Only allow UPDATE and DELETE that uses keys."),
1536
(char**) &safe_updates, (char**) &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
1540
(char**) &safe_updates, (char**) &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
1538
1542
{"i-am-a-dummy", 'U', N_("Synonym for option --safe-updates, -U."),
1539
(char**) &safe_updates, (char**) &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
1543
(char**) &safe_updates, (char**) &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
1541
1545
{"verbose", 'v', N_("Write more. (-v -v -v gives the table output format)."), 0,
1542
0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1546
0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1543
1547
{"version", 'V', N_("Output version information and exit."), 0, 0, 0,
1544
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1548
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1545
1549
{"wait", 'w', N_("Wait and retry if connection is down."), 0, 0, 0, GET_NO_ARG,
1546
NO_ARG, 0, 0, 0, 0, 0, 0},
1550
NO_ARG, 0, 0, 0, 0, 0, 0},
1547
1551
{"connect_timeout", OPT_CONNECT_TIMEOUT,
1548
N_("Number of seconds before connection timeout."),
1549
(char**) &opt_connect_timeout,
1550
(char**) &opt_connect_timeout, 0, GET_UINT32, REQUIRED_ARG, 0, 0, 3600*12, 0,
1552
N_("Number of seconds before connection timeout."),
1553
(char**) &opt_connect_timeout,
1554
(char**) &opt_connect_timeout, 0, GET_UINT32, REQUIRED_ARG, 0, 0, 3600*12, 0,
1552
1556
{"max_input_line", OPT_MAX_INPUT_LINE,
1553
N_("Max length of input line"),
1554
(char**) &opt_max_input_line, (char**) &opt_max_input_line, 0,
1555
GET_UINT32, REQUIRED_ARG, 16 *1024L*1024L, 4096,
1556
(int64_t) 2*1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0},
1557
N_("Max length of input line"),
1558
(char**) &opt_max_input_line, (char**) &opt_max_input_line, 0,
1559
GET_UINT32, REQUIRED_ARG, 16 *1024L*1024L, 4096,
1560
(int64_t) 2*1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0},
1557
1561
{"select_limit", OPT_SELECT_LIMIT,
1558
N_("Automatic limit for SELECT when using --safe-updates"),
1559
(char**) &select_limit,
1560
(char**) &select_limit, 0, GET_UINT32, REQUIRED_ARG, 1000L, 1, ULONG_MAX,
1562
N_("Automatic limit for SELECT when using --safe-updates"),
1563
(char**) &select_limit,
1564
(char**) &select_limit, 0, GET_UINT32, REQUIRED_ARG, 1000L, 1, ULONG_MAX,
1562
1566
{"max_join_size", OPT_MAX_JOIN_SIZE,
1563
N_("Automatic limit for rows in a join when using --safe-updates"),
1564
(char**) &max_join_size,
1565
(char**) &max_join_size, 0, GET_UINT32, REQUIRED_ARG, 1000000L, 1, ULONG_MAX,
1567
N_("Automatic limit for rows in a join when using --safe-updates"),
1568
(char**) &max_join_size,
1569
(char**) &max_join_size, 0, GET_UINT32, REQUIRED_ARG, 1000000L, 1, ULONG_MAX,
1567
1571
{"secure-auth", OPT_SECURE_AUTH, N_("Refuse client connecting to server if it uses old (pre-4.1.1) protocol"), (char**) &opt_secure_auth,
1568
(char**) &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1572
(char**) &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1569
1573
{"show-warnings", OPT_SHOW_WARNINGS, N_("Show warnings after every statement."),
1570
(char**) &show_warnings, (char**) &show_warnings, 0, GET_BOOL, NO_ARG,
1574
(char**) &show_warnings, (char**) &show_warnings, 0, GET_BOOL, NO_ARG,
1572
1576
{"show-progress-size", OPT_SHOW_PROGRESS_SIZE, N_("Number of lines before each import progress report."),
1573
(char**) &show_progress_size, (char**) &show_progress_size, 0, GET_UINT32, REQUIRED_ARG,
1577
(char**) &show_progress_size, (char**) &show_progress_size, 0, GET_UINT32, REQUIRED_ARG,
1575
1579
{"ping", OPT_PING, N_("Ping the server to check if it's alive."),
1576
(char**) &opt_ping, (char**) &opt_ping, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1580
(char**) &opt_ping, (char**) &opt_ping, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1577
1581
{"mysql", 'm', N_("Use MySQL Protocol."),
1578
(char**) &opt_mysql, (char**) &opt_mysql, 0, GET_BOOL, NO_ARG, 1, 0, 0,
1582
(char**) &opt_mysql, (char**) &opt_mysql, 0, GET_BOOL, NO_ARG, 1, 0, 0,
1580
1584
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}