~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-kill

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

Show diffs side-by-side

added added

removed removed

Lines of Context:
4652
4652
 
4653
4653
my $olc_re = qr/(?:--|#)[^'"\r\n]*(?=[\r\n]|\Z)/;  # One-line comments
4654
4654
my $mlc_re = qr#/\*[^!].*?\*/#sm;                  # But not /*!version */
4655
 
my $vlc_re = qr#/\*.*?[0-9+].*?\*/#sm;             # For SHOW + /*!version */
4656
 
my $vlc_rf = qr#^(SHOW).*?/\*![0-9+].*?\*/#sm;     # Variation for SHOW
 
4655
my $vlc_re = qr#/\*.*?[0-9]+.*?\*/#sm;             # For SHOW + /*!version */
 
4656
my $vlc_rf = qr#^(?:SHOW).*?/\*![0-9]+(.*?)\*/#sm;     # Variation for SHOW
4657
4657
 
4658
4658
 
4659
4659
sub new {
4668
4668
   $query =~ s/$mlc_re//go;
4669
4669
   $query =~ s/$olc_re//go;
4670
4670
   if ( $query =~ m/$vlc_rf/i ) { # contains show + version
4671
 
      $query =~ s/$vlc_re//go;
 
4671
      my $qualifier = $1 || '';
 
4672
      $query =~ s/$vlc_re/$qualifier/go;
4672
4673
   }
4673
4674
   return $query;
4674
4675
}
4743
4744
   $query =~ s/".*?"/?/sg;               # quoted strings
4744
4745
   $query =~ s/'.*?'/?/sg;               # quoted strings
4745
4746
 
 
4747
   $query =~ s/\bfalse\b|\btrue\b/?/isg; # boolean values 
 
4748
 
4746
4749
   if ( $self->{match_md5_checksums} ) { 
4747
4750
      $query =~ s/([._-])[a-f0-9]{32}/$1?/g;
4748
4751
   }
4791
4794
   $query =~ m/\A\s*UNLOCK TABLES/i  && return "UNLOCK";
4792
4795
   $query =~ m/\A\s*xa\s+(\S+)/i     && return "XA_$1";
4793
4796
 
 
4797
   if ( $query =~ m/\A\s*LOAD/i ) {
 
4798
      my ($tbl) = $query =~ m/INTO TABLE\s+(\S+)/i;
 
4799
      $tbl ||= '';
 
4800
      $tbl =~ s/`//g;
 
4801
      return "LOAD DATA $tbl";
 
4802
   }
 
4803
 
4794
4804
   if ( $query =~ m/\Aadministrator command:/ ) {
4795
4805
      $query =~ s/administrator command:/ADMIN/;
4796
4806
      $query = uc $query;
4803
4813
      PTDEBUG && _d($query);
4804
4814
 
4805
4815
      $query = uc $query;
4806
 
      $query =~ s/\s+(?:GLOBAL|SESSION|FULL|STORAGE|ENGINE)\b/ /g;
 
4816
      $query =~ s/\s+(?:SESSION|FULL|STORAGE|ENGINE)\b/ /g;
4807
4817
      $query =~ s/\s+COUNT[^)]+\)//g;
4808
4818
 
4809
4819
      $query =~ s/\s+(?:FOR|FROM|LIKE|WHERE|LIMIT|IN)\b.+//ms;
4818
4828
   eval $QueryParser::tbl_ident;
4819
4829
   my ( $dds ) = $query =~ /^\s*($QueryParser::data_def_stmts)\b/i;
4820
4830
   if ( $dds) {
 
4831
      $query =~ s/\s+IF(?:\s+NOT)?\s+EXISTS/ /i;
4821
4832
      my ( $obj ) = $query =~ m/$dds.+(DATABASE|TABLE)\b/i;
4822
4833
      $obj = uc $obj if $obj;
4823
4834
      PTDEBUG && _d('Data def statment:', $dds, 'obj:', $obj);
4884
4895
         map { $verbs =~ s/$_/$alias_for{$_}/ } keys %alias_for;
4885
4896
         $query = $verbs;
4886
4897
      }
 
4898
      elsif ( $verbs && $verbs =~ m/^LOAD DATA/ ) {
 
4899
         return $verbs;
 
4900
      }
4887
4901
      else {
4888
4902
         my @tables = $self->__distill_tables($query, $table, %args);
4889
4903
         $query     = join(q{ }, $verbs, @tables);