~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to client/drizzleadmin.cc

  • Committer: Brian Aker
  • Date: 2008-07-26 04:51:46 UTC
  • mfrom: (202.1.25 codestyle)
  • Revision ID: brian@tangent.org-20080726045146-ax7ofn8aqnkycjl3
Merge from Monty

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2000-2006 MySQL AB
 
1
/* Copyright (C) 2008 Drizzle Open Source Project 
2
2
 
3
3
   This program is free software; you can redistribute it and/or modify
4
4
   it under the terms of the GNU General Public License as published by
13
13
   along with this program; if not, write to the Free Software
14
14
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
15
 
16
 
/* maintaince of mysql databases */
 
16
/* maintaince of drizzle databases */
17
17
 
18
18
#include "client_priv.h"
19
19
#include <signal.h>
25
25
 
26
26
char *host= NULL, *user= NULL, *opt_password= NULL;
27
27
static bool interrupted= false, opt_verbose= false,tty_password= false; 
28
 
static uint8_t opt_protocol= MYSQL_PROTOCOL_TCP;  
 
28
static uint8_t opt_protocol= DRIZZLE_PROTOCOL_TCP;  
29
29
static uint32_t tcp_port= 0, option_wait= 0, option_silent= 0;
30
30
static uint32_t my_end_arg;
31
31
static uint32_t opt_connect_timeout, opt_shutdown_timeout;
39
39
extern "C" sig_handler endprog(int signal_number);
40
40
extern "C" bool get_one_option(int optid, const struct my_option *opt,
41
41
                               char *argument);
42
 
static int execute_commands(MYSQL *mysql,int argc, char **argv);
43
 
static bool sql_connect(MYSQL *mysql, uint wait);
 
42
static int execute_commands(DRIZZLE *drizzle,int argc, char **argv);
 
43
static bool sql_connect(DRIZZLE *drizzle, uint wait);
44
44
 
45
45
/*
46
46
  The order of commands must be the same as command_names,
100
100
};
101
101
 
102
102
 
103
 
static const char *load_default_groups[]= { "mysqladmin","client",0 };
 
103
static const char *load_default_groups[]= { "drizzleadmin","client",0 };
104
104
 
105
105
bool
106
106
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
156
156
int main(int argc,char *argv[])
157
157
{
158
158
  int error= 0, ho_error;
159
 
  MYSQL mysql;
 
159
  DRIZZLE drizzle;
160
160
  char **commands, **save_argv;
161
161
 
162
162
  MY_INIT(argv[0]);
163
 
  mysql_init(&mysql);
 
163
  drizzle_create(&drizzle);
164
164
  load_defaults("my",load_default_groups,&argc,&argv);
165
165
  save_argv = argv;                             /* Save for free_defaults */
166
166
  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
185
185
  if (opt_connect_timeout)
186
186
  {
187
187
    uint tmp=opt_connect_timeout;
188
 
    mysql_options(&mysql,MYSQL_OPT_CONNECT_TIMEOUT, (char*) &tmp);
 
188
    drizzle_options(&drizzle,DRIZZLE_OPT_CONNECT_TIMEOUT, (char*) &tmp);
189
189
  }
190
 
  /* force mysqladmin to use TCP */
191
 
  mysql_options(&mysql, MYSQL_OPT_PROTOCOL, (char*)&opt_protocol);
 
190
  /* force drizzleadmin to use TCP */
 
191
  drizzle_options(&drizzle, DRIZZLE_OPT_PROTOCOL, (char*)&opt_protocol);
192
192
 
193
193
  error_flags= (myf)0;
194
194
 
195
 
  if (sql_connect(&mysql, option_wait))
 
195
  if (sql_connect(&drizzle, option_wait))
196
196
  {
197
 
    unsigned int err= mysql_errno(&mysql);
 
197
    unsigned int err= drizzle_errno(&drizzle);
198
198
    if (err >= CR_MIN_ERROR && err <= CR_MAX_ERROR)
199
199
      error= 1;
200
200
    else
212
212
  }
213
213
  else
214
214
  {
215
 
    error=execute_commands(&mysql,argc,commands);
216
 
    mysql_close(&mysql);
 
215
    error=execute_commands(&drizzle,argc,commands);
 
216
    drizzle_close(&drizzle);
217
217
  }
218
218
  my_free(opt_password,MYF(MY_ALLOW_ZERO_PTR));
219
219
  my_free(user,MYF(MY_ALLOW_ZERO_PTR));
227
227
  interrupted=1;
228
228
}
229
229
 
230
 
static bool sql_connect(MYSQL *mysql, uint wait)
 
230
static bool sql_connect(DRIZZLE *drizzle, uint wait)
231
231
{
232
232
  bool info=0;
233
233
 
234
234
  for (;;)
235
235
  {
236
 
    if (mysql_real_connect(mysql,host,user,opt_password,NullS,tcp_port,NULL,0))
 
236
    if (drizzle_connect(drizzle,host,user,opt_password,NullS,tcp_port,NULL,0))
237
237
    {
238
 
      mysql->reconnect= 1;
 
238
      drizzle->reconnect= 1;
239
239
      if (info)
240
240
      {
241
241
        fputs("\n",stderr);
252
252
          host= (char*) LOCAL_HOST;
253
253
 
254
254
        my_printf_error(0,"connect to server at '%s' failed\nerror: '%s'",
255
 
        error_flags, host, mysql_error(mysql));
 
255
        error_flags, host, drizzle_error(drizzle));
256
256
 
257
 
        if (mysql_errno(mysql) == CR_CONN_HOST_ERROR ||
258
 
          mysql_errno(mysql) == CR_UNKNOWN_HOST)
 
257
        if (drizzle_errno(drizzle) == CR_CONN_HOST_ERROR ||
 
258
          drizzle_errno(drizzle) == CR_UNKNOWN_HOST)
259
259
        {
260
260
          fprintf(stderr,"Check that drizzled is running on %s",host);
261
261
          fprintf(stderr," and that the port is %d.\n",
262
 
          tcp_port ? tcp_port: mysql_port);
 
262
          tcp_port ? tcp_port: drizzle_port);
263
263
          fprintf(stderr,"You can check this by doing 'telnet %s %d'\n",
264
 
                  host, tcp_port ? tcp_port: mysql_port);
 
264
                  host, tcp_port ? tcp_port: drizzle_port);
265
265
        }
266
266
      }
267
267
      return 1;
268
268
    }
269
269
    if (wait != (uint) ~0)
270
270
      wait--;                           /* One less retry */
271
 
    if ((mysql_errno(mysql) != CR_CONN_HOST_ERROR) &&
272
 
        (mysql_errno(mysql) != CR_CONNECTION_ERROR))
 
271
    if ((drizzle_errno(drizzle) != CR_CONN_HOST_ERROR) &&
 
272
        (drizzle_errno(drizzle) != CR_CONNECTION_ERROR))
273
273
    {
274
 
      fprintf(stderr,"Got error: %s\n", mysql_error(mysql));
 
274
      fprintf(stderr,"Got error: %s\n", drizzle_error(drizzle));
275
275
    }
276
276
    else if (!option_silent)
277
277
    {
297
297
         -1 on retryable error
298
298
         1 on fatal error
299
299
*/
300
 
static int execute_commands(MYSQL *mysql,int argc, char **argv)
 
300
static int execute_commands(DRIZZLE *drizzle,int argc, char **argv)
301
301
{
302
302
 
303
303
  /*
304
 
    MySQL documentation relies on the fact that mysqladmin will
 
304
    DRIZZLE documentation relies on the fact that drizzleadmin will
305
305
    execute commands in the order specified.
306
306
    If this behaviour is ever changed, Docs should be notified.
307
307
  */
313
313
      if (opt_verbose)
314
314
        printf("shutting down drizzled...\n");
315
315
 
316
 
      if (mysql_shutdown(mysql, SHUTDOWN_DEFAULT))
 
316
      if (drizzle_shutdown(drizzle, SHUTDOWN_DEFAULT))
317
317
      {
318
318
        my_printf_error(0, "shutdown failed; error: '%s'", error_flags,
319
 
                        mysql_error(mysql));
 
319
                        drizzle_error(drizzle));
320
320
        return -1;
321
321
      }
322
 
      mysql_close(mysql);       /* Close connection to avoid error messages */
 
322
      drizzle_close(drizzle);   /* Close connection to avoid error messages */
323
323
 
324
324
      if (opt_verbose)
325
325
        printf("done\n");
328
328
      break;
329
329
    }
330
330
    case ADMIN_PING:
331
 
      mysql->reconnect=0;       /* We want to know of reconnects */
332
 
      if (!mysql_ping(mysql))
 
331
      drizzle->reconnect=0;     /* We want to know of reconnects */
 
332
      if (!drizzle_ping(drizzle))
333
333
      {
334
334
        if (option_silent < 2)
335
335
          puts("drizzled is alive");
336
336
      }
337
337
      else
338
338
      {
339
 
        if (mysql_errno(mysql) == CR_SERVER_GONE_ERROR)
 
339
        if (drizzle_errno(drizzle) == CR_SERVER_GONE_ERROR)
340
340
        {
341
 
          mysql->reconnect=1;
342
 
          if (!mysql_ping(mysql))
 
341
          drizzle->reconnect=1;
 
342
          if (!drizzle_ping(drizzle))
343
343
            puts("connection was down, but drizzled is now alive");
344
344
        }
345
345
        else
346
346
              {
347
347
          my_printf_error(0,"drizzled doesn't answer to ping, error: '%s'",
348
 
          error_flags, mysql_error(mysql));
 
348
          error_flags, drizzle_error(drizzle));
349
349
          return -1;
350
350
        }
351
351
      }
352
 
      mysql->reconnect=1;       /* Automatic reconnect is default */
 
352
      drizzle->reconnect=1;     /* Automatic reconnect is default */
353
353
      break;
354
354
 
355
355
    default:
369
369
static void usage(void)
370
370
{
371
371
  print_version();
372
 
  puts("Copyright (C) 2000-2006 MySQL AB");
 
372
  puts("Copyright (C) 2000-2006 DRIZZLE AB");
373
373
  puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n");
374
374
  puts("Administration program for the drizzled daemon.");
375
375
  printf("Usage: %s [OPTIONS] command command....\n", my_progname);