~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to client/drizzledump.cc

  • Committer: Brian Aker
  • Date: 2009-06-05 23:10:06 UTC
  • mto: This revision was merged to the branch mainline in revision 1055.
  • Revision ID: brian@gaz-20090605231006-01nyw7pfpj2z2v8p
Remove guts in parser for LOCK TABLE.

Show diffs side-by-side

added added

removed removed

Lines of Context:
76
76
static void field_escape(string &in, const char *from);
77
77
static bool  verbose= false, opt_no_create_info= false, opt_no_data= false,
78
78
                quick= true, extended_insert= true,
79
 
                lock_tables= true, ignore_errors= false, flush_logs= false,
 
79
                ignore_errors= false, flush_logs= false,
80
80
                opt_drop= true, opt_keywords= false,
81
 
                opt_lock= true, opt_compress= false,
 
81
                opt_compress= false,
82
82
                opt_delayed= false, create_options= true, opt_quoted= false,
83
83
                opt_databases= false, opt_alldbs= false, opt_create_db= false,
84
84
                opt_lock_all_tables= false,
173
173
  {"add-drop-table", OPT_DROP, "Add a 'drop table' before each create.",
174
174
   (char**) &opt_drop, (char**) &opt_drop, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0,
175
175
   0},
176
 
  {"add-locks", OPT_LOCKS, "Add locks around insert statements.",
177
 
   (char**) &opt_lock, (char**) &opt_lock, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0,
178
 
   0},
179
176
  {"allow-keywords", OPT_KEYWORDS,
180
177
   "Allow creation of column names that are keywords.", (char**) &opt_keywords,
181
178
   (char**) &opt_keywords, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
301
298
   "dump. Automatically turns --single-transaction and --lock-tables off.",
302
299
   (char**) &opt_lock_all_tables, (char**) &opt_lock_all_tables, 0, GET_BOOL, NO_ARG,
303
300
   0, 0, 0, 0, 0, 0},
304
 
  {"lock-tables", 'l', "Lock all tables for read.", (char**) &lock_tables,
305
 
   (char**) &lock_tables, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
306
301
  {"master-data", OPT_MASTER_DATA,
307
302
   "This causes the binary log position and filename to be appended to the "
308
303
   "output. If equal to 1, will print it as a CHANGE MASTER command; if equal"
673
668
  case 'V': print_version(); exit(0);
674
669
  case 'X':
675
670
    opt_xml= 1;
676
 
    extended_insert= opt_drop= opt_lock=
 
671
    extended_insert= opt_drop=
677
672
      opt_disable_keys= opt_autocommit= opt_create_db= 0;
678
673
    break;
679
674
  case 'I':
689
684
      opt_slave_data= DRIZZLE_OPT_SLAVE_DATA_EFFECTIVE_SQL;
690
685
    break;
691
686
  case (int) OPT_OPTIMIZE:
692
 
    extended_insert= opt_drop= opt_lock= quick= create_options=
693
 
      opt_disable_keys= lock_tables= opt_set_charset= 1;
 
687
    extended_insert= opt_drop= quick= create_options=
 
688
      opt_disable_keys= opt_set_charset= 1;
694
689
    break;
695
690
  case (int) OPT_SKIP_OPTIMIZATION:
696
 
    extended_insert= opt_drop= opt_lock= quick= create_options=
697
 
      opt_disable_keys= lock_tables= opt_set_charset= 0;
 
691
    extended_insert= opt_drop= quick= create_options=
 
692
      opt_disable_keys= opt_set_charset= 0;
698
693
    break;
699
694
  case (int) OPT_COMPACT:
700
695
  if (opt_compact)
701
696
  {
702
 
    opt_comments= opt_drop= opt_disable_keys= opt_lock= 0;
 
697
    opt_comments= opt_drop= opt_disable_keys= 0;
703
698
    opt_set_charset= 0;
704
699
  }
705
700
  case (int) OPT_TABLES:
782
777
  if (debug_check_flag)
783
778
    my_end_arg= MY_CHECK_ERROR;
784
779
 
785
 
  if (opt_delayed)
786
 
    opt_lock=0;                         /* Can't have lock with delayed */
787
780
  if (!path && (enclosed || opt_enclosed || escaped || lines_terminated ||
788
781
                fields_terminated))
789
782
  {
814
807
    opt_lock_all_tables= !opt_single_transaction;
815
808
    opt_slave_data= 0;
816
809
  }
817
 
  if (opt_single_transaction || opt_lock_all_tables)
818
 
    lock_tables= 0;
819
810
  if (enclosed && opt_enclosed)
820
811
  {
821
812
    fprintf(stderr, _("%s: You can't use ..enclosed.. and ..optionally-enclosed.. at the same time.\n"), my_progname);
2019
2010
      goto err;
2020
2011
    }
2021
2012
 
2022
 
    if (opt_lock)
2023
 
    {
2024
 
      fprintf(md_result_file,"LOCK TABLES %s WRITE;\n", opt_quoted_table);
2025
 
      check_io(md_result_file);
2026
 
    }
2027
2013
    /* Moved disable keys to after lock per bug 15977 */
2028
2014
    if (opt_disable_keys)
2029
2015
    {
2290
2276
              opt_quoted_table);
2291
2277
      check_io(md_result_file);
2292
2278
    }
2293
 
    if (opt_lock)
2294
 
    {
2295
 
      fputs("UNLOCK TABLES;\n", md_result_file);
2296
 
      check_io(md_result_file);
2297
 
    }
2298
2279
    if (opt_autocommit)
2299
2280
    {
2300
2281
      fprintf(md_result_file, "commit;\n");
2487
2468
static int dump_all_tables_in_db(char *database)
2488
2469
{
2489
2470
  char *table;
2490
 
  uint32_t numrows;
2491
 
  char table_buff[DRIZZLE_MAX_TABLE_SIZE*2+3];
2492
2471
  char hash_key[DRIZZLE_MAX_DB_SIZE+DRIZZLE_MAX_TABLE_SIZE+2];  /* "db.tablename" */
2493
2472
  char *afterdot;
2494
2473
  drizzle_result_st result;
2501
2480
    return(1);
2502
2481
  if (opt_xml)
2503
2482
    print_xml_tag(md_result_file, "", "\n", "database", "name=", database, NULL);
2504
 
  if (lock_tables)
2505
 
  {
2506
 
    string query("LOCK TABLES ");
2507
 
    for (numrows= 0 ; (table= getTableName(1)) ; )
2508
 
    {
2509
 
      char *end= strcpy(afterdot, table) + strlen(table);
2510
 
      if (include_table((unsigned char*) hash_key,end - hash_key))
2511
 
      {
2512
 
        numrows++;
2513
 
        query.append( quote_name(table, table_buff, 1));
2514
 
        query.append( " READ LOCAL,");
2515
 
      }
2516
 
    }
2517
 
    if (numrows)
2518
 
    {
2519
 
      if (drizzle_query(&dcon, &result, query.c_str(),
2520
 
                        query.length()-1, &ret) == NULL ||
2521
 
          ret != DRIZZLE_RETURN_OK)
2522
 
      {
2523
 
        DB_error(&result, ret, _("when using LOCK TABLES"));
2524
 
        /* We shall continue here, if --force was given */
2525
 
      }
2526
 
      else
2527
 
        drizzle_result_free(&result);
2528
 
    }
2529
 
    query.clear();
2530
 
  }
2531
2483
  if (flush_logs)
2532
2484
  {
2533
2485
    if (drizzle_query_str(&dcon, &result, "FLUSH LOGS", &ret) == NULL ||
2554
2506
    fputs("</database>\n", md_result_file);
2555
2507
    check_io(md_result_file);
2556
2508
  }
2557
 
  if (lock_tables)
2558
 
  {
2559
 
    if (!drizzleclient_query_with_error_report(&dcon, &result, "UNLOCK TABLES", false))
2560
 
      drizzle_result_free(&result);
2561
 
  }
2562
2509
 
2563
 
  return(0);
 
2510
  return 0;
2564
2511
} /* dump_all_tables_in_db */
2565
2512
 
2566
2513
 
2613
2560
 
2614
2561
static int dump_selected_tables(char *db, char **table_names, int tables)
2615
2562
{
2616
 
  char table_buff[DRIZZLE_MAX_TABLE_SIZE*2+3];
2617
 
  string lock_tables_query("LOCK TABLES ");
2618
2563
  MEM_ROOT root;
2619
2564
  char **dump_tables, **pos, **end;
2620
2565
  drizzle_result_st result;
2633
2578
    /* the table name passed on commandline may be wrong case */
2634
2579
    if ((*pos= get_actual_table_name(*table_names, &root)))
2635
2580
    {
2636
 
      /* Add found table name to lock_tables_query */
2637
 
      if (lock_tables)
2638
 
      {
2639
 
        lock_tables_query.append( quote_name(*pos, table_buff, 1));
2640
 
        lock_tables_query.append( " READ LOCAL,");
2641
 
      }
2642
2581
      pos++;
2643
2582
    }
2644
2583
    else
2653
2592
  }
2654
2593
  end= pos;
2655
2594
 
2656
 
  if (lock_tables)
2657
 
  {
2658
 
    if (drizzle_query(&dcon, &result, lock_tables_query.c_str(),
2659
 
                      lock_tables_query.length()-1, &ret) == NULL ||
2660
 
        ret != DRIZZLE_RETURN_OK)
2661
 
    {
2662
 
      if (!ignore_errors)
2663
 
      {
2664
 
        free_root(&root, MYF(0));
2665
 
      }
2666
 
      DB_error(&result, ret, _("when doing LOCK TABLES"));
2667
 
      /* We shall countinue here, if --force was given */
2668
 
    }
2669
 
    else
2670
 
      drizzle_result_free(&result);
2671
 
  }
2672
2595
  if (flush_logs)
2673
2596
  {
2674
2597
    if (drizzle_query_str(&dcon, &result, "FLUSH LOGS", &ret) == NULL ||
2697
2620
    fputs("</database>\n", md_result_file);
2698
2621
    check_io(md_result_file);
2699
2622
  }
2700
 
  if (lock_tables)
2701
 
  {
2702
 
    if (!(drizzleclient_query_with_error_report(&dcon, &result, "UNLOCK TABLES", false)))
2703
 
      drizzle_result_free(&result);
2704
 
  }
2705
 
  return(0);
 
2623
  return 0;
2706
2624
} /* dump_selected_tables */
2707
2625
 
2708
2626