mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merge with 5.3
sql/sql_insert.cc: CREATE ... IF NOT EXISTS may do nothing, but it is still not a failure. don't forget to my_ok it. ****** CREATE ... IF NOT EXISTS may do nothing, but it is still not a failure. don't forget to my_ok it. sql/sql_table.cc: small cleanup ****** small cleanup
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2000-2009 MySQL AB
|
||||
Copyright 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright 2000, 2010, Oracle and/or its affiliates.
|
||||
Copyright 2000-2010 Monty Program Ab
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -45,7 +45,7 @@
|
||||
#include <locale.h>
|
||||
#endif
|
||||
|
||||
const char *VER= "14.16";
|
||||
const char *VER= "15.0";
|
||||
|
||||
/* Don't try to make a nice table if the data is too big */
|
||||
#define MAX_COLUMN_LENGTH 1024
|
||||
@ -142,7 +142,7 @@ static my_bool ignore_errors=0,wait_flag=0,quick=0,
|
||||
default_pager_set= 0, opt_sigint_ignore= 0,
|
||||
auto_vertical_output= 0,
|
||||
show_warnings= 0, executing_query= 0,
|
||||
ignore_spaces= 0;
|
||||
ignore_spaces= 0, opt_progress_reports;
|
||||
static my_bool debug_info_flag, debug_check_flag, batch_abort_on_error;
|
||||
static my_bool column_types_flag;
|
||||
static my_bool preserve_comments= 0;
|
||||
@ -242,6 +242,13 @@ static void init_username();
|
||||
static void add_int_to_prompt(int toadd);
|
||||
static int get_result_width(MYSQL_RES *res);
|
||||
static int get_field_disp_length(MYSQL_FIELD * field);
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
static uint last_progress_report_length= 0;
|
||||
static void report_progress(const MYSQL *mysql, uint stage, uint max_stage,
|
||||
double progress, const char *proc_info,
|
||||
uint proc_info_length);
|
||||
#endif
|
||||
static void report_progress_end();
|
||||
|
||||
/* A structure which contains information on the commands this program
|
||||
can understand. */
|
||||
@ -1018,7 +1025,8 @@ static COMMANDS commands[] = {
|
||||
{ (char *)NULL, 0, 0, 0, ""}
|
||||
};
|
||||
|
||||
static const char *load_default_groups[]= { "mysql","client",0 };
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysql", "client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
static int embedded_server_arg_count= 0;
|
||||
static char *embedded_server_args[MAX_SERVER_ARGS];
|
||||
@ -1500,6 +1508,10 @@ static struct my_option my_long_options[] =
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
&opt_mysql_port,
|
||||
&opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"progress-reports", OPT_REPORT_PROGRESS,
|
||||
"Get progress reports for long running commands (like ALTER TABLE)",
|
||||
&opt_progress_reports, &opt_progress_reports, 0, GET_BOOL, NO_ARG, 1, 0,
|
||||
0, 0, 0, 0},
|
||||
{"prompt", OPT_PROMPT, "Set the mysql prompt to this value.",
|
||||
¤t_prompt, ¤t_prompt, 0, GET_STR_ALLOC,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
@ -1821,6 +1833,7 @@ static int get_options(int argc, char **argv)
|
||||
opt_outfile= 0;
|
||||
opt_reconnect= 0;
|
||||
connect_flag= 0; /* Not in interactive mode */
|
||||
opt_progress_reports= 0;
|
||||
}
|
||||
|
||||
if (argc > 1)
|
||||
@ -1844,6 +1857,9 @@ static int get_options(int argc, char **argv)
|
||||
if (ignore_spaces)
|
||||
connect_flag|= CLIENT_IGNORE_SPACE;
|
||||
|
||||
if (opt_progress_reports)
|
||||
connect_flag|= CLIENT_PROGRESS;
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
@ -3005,6 +3021,7 @@ com_go(String *buffer,char *line __attribute__((unused)))
|
||||
timer=start_timer();
|
||||
executing_query= 1;
|
||||
error= mysql_real_query_for_lazy(buffer->ptr(),buffer->length());
|
||||
report_progress_end();
|
||||
|
||||
#ifdef HAVE_READLINE
|
||||
if (status.add_to_history)
|
||||
@ -4425,6 +4442,13 @@ sql_real_connect(char *host,char *database,char *user,char *password,
|
||||
connected=1;
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
mysql.reconnect= debug_info_flag; // We want to know if this happens
|
||||
|
||||
/*
|
||||
CLIENT_PROGRESS is set only if we requsted it in mysql_real_connect()
|
||||
and the server also supports it
|
||||
*/
|
||||
if (mysql.client_flag & CLIENT_PROGRESS)
|
||||
mysql_options(&mysql, MYSQL_PROGRESS_CALLBACK, (void*) report_progress);
|
||||
#else
|
||||
mysql.reconnect= 1;
|
||||
#endif
|
||||
@ -5056,3 +5080,32 @@ static int com_prompt(String *buffer __attribute__((unused)),
|
||||
tee_fprintf(stdout, "PROMPT set to '%s'\n", current_prompt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
static void report_progress(const MYSQL *mysql, uint stage, uint max_stage,
|
||||
double progress, const char *proc_info,
|
||||
uint proc_info_length)
|
||||
{
|
||||
uint length= printf("Stage: %d of %d '%.*s' %6.3g%% of stage done",
|
||||
stage, max_stage, proc_info_length, proc_info,
|
||||
progress);
|
||||
if (length < last_progress_report_length)
|
||||
printf("%*s", last_progress_report_length - length, "");
|
||||
putc('\r', stdout);
|
||||
fflush(stdout);
|
||||
last_progress_report_length= length;
|
||||
}
|
||||
|
||||
static void report_progress_end()
|
||||
{
|
||||
if (last_progress_report_length)
|
||||
{
|
||||
printf("%*s\r", last_progress_report_length, "");
|
||||
last_progress_report_length= 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
static void report_progress_end()
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user