~percona-toolkit-dev/percona-toolkit/pt-stalk-handles-mysql-user-password-in-awkward-way-1348679

« back to all changes in this revision

Viewing changes to bin/pt-upgrade

Merge pt-query-digest-does-not-fingerprint-true-false-literals-correctly-965553.

Show diffs side-by-side

added added

removed removed

Lines of Context:
4559
4559
 
4560
4560
my $olc_re = qr/(?:--|#)[^'"\r\n]*(?=[\r\n]|\Z)/;  # One-line comments
4561
4561
my $mlc_re = qr#/\*[^!].*?\*/#sm;                  # But not /*!version */
4562
 
my $vlc_re = qr#/\*.*?[0-9+].*?\*/#sm;             # For SHOW + /*!version */
4563
 
my $vlc_rf = qr#^(SHOW).*?/\*![0-9+].*?\*/#sm;     # Variation for SHOW
 
4562
my $vlc_re = qr#/\*.*?[0-9]+.*?\*/#sm;             # For SHOW + /*!version */
 
4563
my $vlc_rf = qr#^(?:SHOW).*?/\*![0-9]+(.*?)\*/#sm;     # Variation for SHOW
4564
4564
 
4565
4565
 
4566
4566
sub new {
4575
4575
   $query =~ s/$mlc_re//go;
4576
4576
   $query =~ s/$olc_re//go;
4577
4577
   if ( $query =~ m/$vlc_rf/i ) { # contains show + version
4578
 
      $query =~ s/$vlc_re//go;
 
4578
      my $qualifier = $1 || '';
 
4579
      $query =~ s/$vlc_re/$qualifier/go;
4579
4580
   }
4580
4581
   return $query;
4581
4582
}
4650
4651
   $query =~ s/".*?"/?/sg;               # quoted strings
4651
4652
   $query =~ s/'.*?'/?/sg;               # quoted strings
4652
4653
 
 
4654
   $query =~ s/\bfalse\b|\btrue\b/?/isg; # boolean values 
 
4655
 
4653
4656
   if ( $self->{match_md5_checksums} ) { 
4654
4657
      $query =~ s/([._-])[a-f0-9]{32}/$1?/g;
4655
4658
   }
4698
4701
   $query =~ m/\A\s*UNLOCK TABLES/i  && return "UNLOCK";
4699
4702
   $query =~ m/\A\s*xa\s+(\S+)/i     && return "XA_$1";
4700
4703
 
 
4704
   if ( $query =~ m/\A\s*LOAD/i ) {
 
4705
      my ($tbl) = $query =~ m/INTO TABLE\s+(\S+)/i;
 
4706
      $tbl ||= '';
 
4707
      $tbl =~ s/`//g;
 
4708
      return "LOAD DATA $tbl";
 
4709
   }
 
4710
 
4701
4711
   if ( $query =~ m/\Aadministrator command:/ ) {
4702
4712
      $query =~ s/administrator command:/ADMIN/;
4703
4713
      $query = uc $query;
4710
4720
      PTDEBUG && _d($query);
4711
4721
 
4712
4722
      $query = uc $query;
4713
 
      $query =~ s/\s+(?:GLOBAL|SESSION|FULL|STORAGE|ENGINE)\b/ /g;
 
4723
      $query =~ s/\s+(?:SESSION|FULL|STORAGE|ENGINE)\b/ /g;
4714
4724
      $query =~ s/\s+COUNT[^)]+\)//g;
4715
4725
 
4716
4726
      $query =~ s/\s+(?:FOR|FROM|LIKE|WHERE|LIMIT|IN)\b.+//ms;
4725
4735
   eval $QueryParser::tbl_ident;
4726
4736
   my ( $dds ) = $query =~ /^\s*($QueryParser::data_def_stmts)\b/i;
4727
4737
   if ( $dds) {
 
4738
      $query =~ s/\s+IF(?:\s+NOT)?\s+EXISTS/ /i;
4728
4739
      my ( $obj ) = $query =~ m/$dds.+(DATABASE|TABLE)\b/i;
4729
4740
      $obj = uc $obj if $obj;
4730
4741
      PTDEBUG && _d('Data def statment:', $dds, 'obj:', $obj);
4791
4802
         map { $verbs =~ s/$_/$alias_for{$_}/ } keys %alias_for;
4792
4803
         $query = $verbs;
4793
4804
      }
 
4805
      elsif ( $verbs && $verbs =~ m/^LOAD DATA/ ) {
 
4806
         return $verbs;
 
4807
      }
4794
4808
      else {
4795
4809
         my @tables = $self->__distill_tables($query, $table, %args);
4796
4810
         $query     = join(q{ }, $verbs, @tables);