~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-table-usage

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

Show diffs side-by-side

added added

removed removed

Lines of Context:
2112
2112
 
2113
2113
my $olc_re = qr/(?:--|#)[^'"\r\n]*(?=[\r\n]|\Z)/;  # One-line comments
2114
2114
my $mlc_re = qr#/\*[^!].*?\*/#sm;                  # But not /*!version */
2115
 
my $vlc_re = qr#/\*.*?[0-9+].*?\*/#sm;             # For SHOW + /*!version */
2116
 
my $vlc_rf = qr#^(SHOW).*?/\*![0-9+].*?\*/#sm;     # Variation for SHOW
 
2115
my $vlc_re = qr#/\*.*?[0-9]+.*?\*/#sm;             # For SHOW + /*!version */
 
2116
my $vlc_rf = qr#^(?:SHOW).*?/\*![0-9]+(.*?)\*/#sm;     # Variation for SHOW
2117
2117
 
2118
2118
 
2119
2119
sub new {
2128
2128
   $query =~ s/$mlc_re//go;
2129
2129
   $query =~ s/$olc_re//go;
2130
2130
   if ( $query =~ m/$vlc_rf/i ) { # contains show + version
2131
 
      $query =~ s/$vlc_re//go;
 
2131
      my $qualifier = $1 || '';
 
2132
      $query =~ s/$vlc_re/$qualifier/go;
2132
2133
   }
2133
2134
   return $query;
2134
2135
}
2203
2204
   $query =~ s/".*?"/?/sg;               # quoted strings
2204
2205
   $query =~ s/'.*?'/?/sg;               # quoted strings
2205
2206
 
 
2207
   $query =~ s/\bfalse\b|\btrue\b/?/isg; # boolean values 
 
2208
 
2206
2209
   if ( $self->{match_md5_checksums} ) { 
2207
2210
      $query =~ s/([._-])[a-f0-9]{32}/$1?/g;
2208
2211
   }
2251
2254
   $query =~ m/\A\s*UNLOCK TABLES/i  && return "UNLOCK";
2252
2255
   $query =~ m/\A\s*xa\s+(\S+)/i     && return "XA_$1";
2253
2256
 
 
2257
   if ( $query =~ m/\A\s*LOAD/i ) {
 
2258
      my ($tbl) = $query =~ m/INTO TABLE\s+(\S+)/i;
 
2259
      $tbl ||= '';
 
2260
      $tbl =~ s/`//g;
 
2261
      return "LOAD DATA $tbl";
 
2262
   }
 
2263
 
2254
2264
   if ( $query =~ m/\Aadministrator command:/ ) {
2255
2265
      $query =~ s/administrator command:/ADMIN/;
2256
2266
      $query = uc $query;
2263
2273
      PTDEBUG && _d($query);
2264
2274
 
2265
2275
      $query = uc $query;
2266
 
      $query =~ s/\s+(?:GLOBAL|SESSION|FULL|STORAGE|ENGINE)\b/ /g;
 
2276
      $query =~ s/\s+(?:SESSION|FULL|STORAGE|ENGINE)\b/ /g;
2267
2277
      $query =~ s/\s+COUNT[^)]+\)//g;
2268
2278
 
2269
2279
      $query =~ s/\s+(?:FOR|FROM|LIKE|WHERE|LIMIT|IN)\b.+//ms;
2278
2288
   eval $QueryParser::tbl_ident;
2279
2289
   my ( $dds ) = $query =~ /^\s*($QueryParser::data_def_stmts)\b/i;
2280
2290
   if ( $dds) {
 
2291
      $query =~ s/\s+IF(?:\s+NOT)?\s+EXISTS/ /i;
2281
2292
      my ( $obj ) = $query =~ m/$dds.+(DATABASE|TABLE)\b/i;
2282
2293
      $obj = uc $obj if $obj;
2283
2294
      PTDEBUG && _d('Data def statment:', $dds, 'obj:', $obj);
2344
2355
         map { $verbs =~ s/$_/$alias_for{$_}/ } keys %alias_for;
2345
2356
         $query = $verbs;
2346
2357
      }
 
2358
      elsif ( $verbs && $verbs =~ m/^LOAD DATA/ ) {
 
2359
         return $verbs;
 
2360
      }
2347
2361
      else {
2348
2362
         my @tables = $self->__distill_tables($query, $table, %args);
2349
2363
         $query     = join(q{ }, $verbs, @tables);