1462
1461
char temp_file_path[FN_REFLEN];
1464
if ((fd= internal::create_temp_file(temp_file_path, TMPDIR,
1463
if ((fd= internal::create_temp_file(temp_file_path, NULL,
1465
1464
"tmp", MYF(MY_WME))) < 0)
1466
1465
die("Failed to create temporary file for ds");
3386
3385
abort_not_supported_test("Test requires charset '%s'", charset_name);
3389
static void fill_global_error_names()
3391
drizzle_result_st res;
3392
drizzle_return_t ret;
3394
drizzle_con_st *con= &cur_con->con;
3396
global_error_names.clear();
3398
const std::string ds_query("select error_name, error_code "
3399
"from data_dictionary.errors");
3400
if (drizzle_query_str(con, &res, ds_query.c_str(), &ret) == NULL ||
3401
ret != DRIZZLE_RETURN_OK)
3403
if (ret == DRIZZLE_RETURN_ERROR_CODE)
3405
die("Error running query '%s': %d %s", ds_query.c_str(),
3406
drizzle_result_error_code(&res), drizzle_result_error(&res));
3407
drizzle_result_free(&res);
3411
die("Error running query '%s': %d %s", ds_query.c_str(), ret,
3412
drizzle_con_error(con));
3415
if (drizzle_result_column_count(&res) == 0 ||
3416
drizzle_result_buffer(&res) != DRIZZLE_RETURN_OK)
3418
drizzle_result_free(&res);
3419
die("Query '%s' didn't return a result set", ds_query.c_str());
3422
while ((row= drizzle_row_next(&res)) && row[0])
3425
Concatenate all fields in the first row with tab in between
3426
and assign that string to the $variable
3428
size_t *lengths= drizzle_row_field_sizes(&res);
3429
const std::string error_name(row[0], lengths[0]);
3430
const std::string error_code(row[1], lengths[1]);
3434
global_error_names.insert(ErrorCodes::value_type(error_name,
3435
boost::lexical_cast<uint32_t>(error_code)));
3437
catch (boost::bad_lexical_cast &ex)
3439
drizzle_result_free(&res);
3440
die("Invalid error_code from Drizzle: %s", ex.what());
3445
drizzle_result_free(&res);
3448
3388
static uint32_t get_errcode_from_name(char *error_name, char *error_end)
3450
3390
size_t err_name_len= error_end - error_name;
3451
3391
string error_name_s(error_name, err_name_len);
3453
ErrorCodes::iterator it= global_error_names.find(error_name_s);
3454
if (it != global_error_names.end())
3456
return (*it).second;
3459
die("Unknown SQL error name '%s'", error_name_s.c_str());
3393
uint32_t code= global_error_names.getErrorCode(error_name_s);
3396
die("Unknown SQL error name '%s'", error_name_s.c_str());
3463
3401
static void do_get_errcodes(struct st_command *command)
3975
3913
if (!strncmp(con_options, "SSL", 3))
3915
else if (!strncmp(con_options, "COMPRESS", 8))
3978
3918
die("Illegal option to connect: %.*s",
3979
3919
(int) (end - con_options), con_options);
5538
5478
std::string user_config_dir((getenv("XDG_CONFIG_HOME")? getenv("XDG_CONFIG_HOME"):"~/.config"));
5540
if (user_config_dir.compare(0, 2, "~/") == 0)
5543
homedir= getenv("HOME");
5544
if (homedir != NULL)
5545
user_config_dir.replace(0, 1, homedir);
5548
5480
po::variables_map vm;
5550
// Disable allow_guessing
5551
int style = po::command_line_style::default_style & ~po::command_line_style::allow_guessing;
5553
5482
po::store(po::command_line_parser(argc, argv).options(long_options).
5554
style(style).positional(p).extra_parser(parse_password_arg).run(),
5483
positional(p).extra_parser(parse_password_arg).run(), vm);
5557
5485
if (! vm["no-defaults"].as<bool>())
5754
5682
safe_connect(&cur_con->con, cur_con->name, opt_host, opt_user, opt_pass,
5755
5683
opt_db, opt_port);
5757
fill_global_error_names();
5759
5685
/* Use all time until exit if no explicit 'start_timer' */
5760
5686
timer_start= timer_now();