mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-12 22:19:44 +00:00
Removed pt-query-advisor
This commit is contained in:
9483
bin/pt-query-advisor
9483
bin/pt-query-advisor
File diff suppressed because it is too large
Load Diff
@@ -1,687 +0,0 @@
|
|||||||
# This program is copyright 2010-2011 Percona Ireland Ltd.
|
|
||||||
# Feedback and improvements are welcome.
|
|
||||||
#
|
|
||||||
# THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
|
|
||||||
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
|
||||||
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify it under
|
|
||||||
# the terms of the GNU General Public License as published by the Free Software
|
|
||||||
# Foundation, version 2; OR the Perl Artistic License. On UNIX and similar
|
|
||||||
# systems, you can issue `man perlgpl' or `man perlartistic' to read these
|
|
||||||
# licenses.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License along with
|
|
||||||
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|
||||||
# Place, Suite 330, Boston, MA 02111-1307 USA.
|
|
||||||
# ###########################################################################
|
|
||||||
# QueryAdvisorRules package
|
|
||||||
# ###########################################################################
|
|
||||||
{
|
|
||||||
# Package: QueryAdvisorRules
|
|
||||||
# QueryAdvisorRules encapsulates rules for checking queries.
|
|
||||||
package QueryAdvisorRules;
|
|
||||||
use base 'AdvisorRules';
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings FATAL => 'all';
|
|
||||||
use English qw(-no_match_vars);
|
|
||||||
use constant PTDEBUG => $ENV{PTDEBUG} || 0;
|
|
||||||
|
|
||||||
sub new {
|
|
||||||
my ( $class, %args ) = @_;
|
|
||||||
my $self = $class->SUPER::new(%args);
|
|
||||||
@{$self->{rules}} = $self->get_rules();
|
|
||||||
PTDEBUG && _d(scalar @{$self->{rules}}, "rules");
|
|
||||||
return $self;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Each rules is a hashref with two keys:
|
|
||||||
# * id Unique PREFIX.NUMBER for the rule. The prefix is three chars
|
|
||||||
# which hints to the nature of the rule. See example below.
|
|
||||||
# * code Coderef to check rule, returns undef if rule does not match,
|
|
||||||
# else returns the string pos near where the rule matches or 0
|
|
||||||
# to indicate it doesn't know the pos. The code is passed a\
|
|
||||||
# single arg: a hashref event.
|
|
||||||
sub get_rules {
|
|
||||||
return
|
|
||||||
{
|
|
||||||
id => 'ALI.001', # Implicit alias
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $struct = $event->{query_struct};
|
|
||||||
my $tbls = $struct->{from} || $struct->{into} || $struct->{tables};
|
|
||||||
return unless $tbls;
|
|
||||||
foreach my $tbl ( @$tbls ) {
|
|
||||||
return 0 if $tbl->{alias} && !$tbl->{explicit_alias};
|
|
||||||
}
|
|
||||||
my $cols = $struct->{columns};
|
|
||||||
return unless $cols;
|
|
||||||
foreach my $col ( @$cols ) {
|
|
||||||
return 0 if $col->{alias} && !$col->{explicit_alias};
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'ALI.002', # tbl.* alias
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $cols = $event->{query_struct}->{columns};
|
|
||||||
return unless $cols;
|
|
||||||
foreach my $col ( @$cols ) {
|
|
||||||
return 0 if $col->{tbl} && $col->{col} eq '*' && $col->{alias};
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'ALI.003', # tbl AS tbl
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $struct = $event->{query_struct};
|
|
||||||
my $tbls = $struct->{from} || $struct->{into} || $struct->{tables};
|
|
||||||
return unless $tbls;
|
|
||||||
foreach my $tbl ( @$tbls ) {
|
|
||||||
return 0 if $tbl->{alias} && $tbl->{alias} eq $tbl->{tbl};
|
|
||||||
}
|
|
||||||
my $cols = $struct->{columns};
|
|
||||||
return unless $cols;
|
|
||||||
foreach my $col ( @$cols ) {
|
|
||||||
return 0 if $col->{alias} && $col->{alias} eq $col->{col};
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'ARG.001', # col = '%foo'
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $where = $event->{query_struct}->{where};
|
|
||||||
return unless $where && @$where;
|
|
||||||
foreach my $arg ( @$where ) {
|
|
||||||
return 0
|
|
||||||
if ($arg->{operator} || '') eq 'like'
|
|
||||||
&& $arg->{right_arg} =~ m/[\'\"][\%\_]./;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'ARG.002', # LIKE w/o wildcard
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $where = $event->{query_struct}->{where};
|
|
||||||
return unless $where && @$where;
|
|
||||||
foreach my $arg ( @$where ) {
|
|
||||||
return 0
|
|
||||||
if ($arg->{operator} || '') eq 'like'
|
|
||||||
&& $arg->{right_arg} !~ m/[%_]/;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'CLA.001', # SELECT w/o WHERE
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
return unless ($event->{query_struct}->{type} || '') eq 'select';
|
|
||||||
return unless $event->{query_struct}->{from};
|
|
||||||
return 0 unless $event->{query_struct}->{where};
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'CLA.002', # ORDER BY RAND()
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $orderby = $event->{query_struct}->{order_by};
|
|
||||||
return unless $orderby;
|
|
||||||
foreach my $ident ( @$orderby ) {
|
|
||||||
# SQLParser will have uppercased the function name.
|
|
||||||
return 0 if $ident->{function} && $ident->{function} eq 'RAND';
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'CLA.003', # LIMIT w/ OFFSET
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
return unless $event->{query_struct}->{limit};
|
|
||||||
return unless defined $event->{query_struct}->{limit}->{offset};
|
|
||||||
return 0;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'CLA.004', # GROUP BY <number>
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $groupby = $event->{query_struct}->{group_by};
|
|
||||||
return unless $groupby;
|
|
||||||
foreach my $ident ( @$groupby ) {
|
|
||||||
return 0 if exists $ident->{position};
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'CLA.005', # ORDER BY col where col=<constant>
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $orderby = $event->{query_struct}->{order_by};
|
|
||||||
return unless $orderby;
|
|
||||||
my $where = $event->{query_struct}->{where};
|
|
||||||
return unless $where;
|
|
||||||
my %orderby_col = map { lc $_->{column} => 1 }
|
|
||||||
grep { $_->{column} }
|
|
||||||
@$orderby;
|
|
||||||
foreach my $pred ( @$where ) {
|
|
||||||
my $val = $pred->{right_arg};
|
|
||||||
next unless $val;
|
|
||||||
return 0 if $val =~ m/^\d+$/ && $orderby_col{lc($pred->{left_arg} || '')};
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'CLA.006', # GROUP BY or ORDER BY different tables
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $groupby = $event->{query_struct}->{group_by};
|
|
||||||
my $orderby = $event->{query_struct}->{order_by};
|
|
||||||
return unless $groupby || $orderby;
|
|
||||||
|
|
||||||
my %groupby_tbls = map { $_->{table} => 1 }
|
|
||||||
grep { $_->{table} }
|
|
||||||
@$groupby;
|
|
||||||
return 0 if scalar keys %groupby_tbls > 1;
|
|
||||||
|
|
||||||
my %orderby_tbls = map { $_->{table} => 1 }
|
|
||||||
grep { $_->{table} }
|
|
||||||
@$orderby;
|
|
||||||
return 0 if scalar keys %orderby_tbls > 1;
|
|
||||||
|
|
||||||
# Remove ORDER BY tables from GROUP BY tables. Any tables
|
|
||||||
# remain in GROUP BY are unique to GROUP BY, i.e. not in
|
|
||||||
# ORDER BY, so we have a case like: group by tbl1.id order by tbl2.id
|
|
||||||
map { delete $groupby_tbls{$_} } keys %orderby_tbls;
|
|
||||||
return 0 if scalar keys %groupby_tbls;
|
|
||||||
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'CLA.007', # ORDER BY ASC/DESC mix can't use index
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $order_by = $event->{query_struct}->{order_by};
|
|
||||||
return unless $order_by;
|
|
||||||
my ($asc, $desc) = (0, 0);
|
|
||||||
foreach my $col ( @$order_by ) {
|
|
||||||
if ( ($col->{sort} || 'ASC') eq 'ASC' ) {
|
|
||||||
$asc++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$desc++;
|
|
||||||
}
|
|
||||||
return 0 if $asc && $desc;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'COL.001', # SELECT *
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
return unless ($event->{query_struct}->{type} || '') eq 'select';
|
|
||||||
my $cols = $event->{query_struct}->{columns};
|
|
||||||
return unless $cols;
|
|
||||||
foreach my $col ( @$cols ) {
|
|
||||||
return 0 if $col->{col} eq '*' && !$col->{func};
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'COL.002', # INSERT w/o (cols) def
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $type = $event->{query_struct}->{type} || '';
|
|
||||||
return unless $type eq 'insert' || $type eq 'replace';
|
|
||||||
return 0 unless $event->{query_struct}->{columns};
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'LIT.001', # IP as string
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
if ( $event->{arg} =~ m/['"]\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/gc ) {
|
|
||||||
return (pos $event->{arg}) || 0;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'LIT.002', # Date not quoted
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
# YYYY-MM-DD
|
|
||||||
if ( $event->{arg} =~ m/(?<!['"\w-])\d{4}-\d{1,2}-\d{1,2}\b/gc ) {
|
|
||||||
return (pos $event->{arg}) || 0;
|
|
||||||
}
|
|
||||||
# YY-MM-DD
|
|
||||||
if ( $event->{arg} =~ m/(?<!['"\w\d-])\d{2}-\d{1,2}-\d{1,2}\b/gc ) {
|
|
||||||
return (pos $event->{arg}) || 0;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'KWR.001', # SQL_CALC_FOUND_ROWS
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
return 0 if $event->{query_struct}->{keywords}->{sql_calc_found_rows};
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'JOI.001', # comma and ansi joins
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $struct = $event->{query_struct};
|
|
||||||
my $tbls = $struct->{from} || $struct->{into} || $struct->{tables};
|
|
||||||
return unless $tbls;
|
|
||||||
my $comma_join = 0;
|
|
||||||
my $ansi_join = 0;
|
|
||||||
foreach my $tbl ( @$tbls ) {
|
|
||||||
if ( $tbl->{join} ) {
|
|
||||||
if ( $tbl->{join}->{ansi} ) {
|
|
||||||
$ansi_join = 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$comma_join = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0 if $comma_join && $ansi_join;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'RES.001', # non-deterministic GROUP BY
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
return unless ($event->{query_struct}->{type} || '') eq 'select';
|
|
||||||
my $groupby = $event->{query_struct}->{group_by};
|
|
||||||
return unless $groupby;
|
|
||||||
# Only check GROUP BY column names, not numbers. GROUP BY number
|
|
||||||
# is handled in CLA.004.
|
|
||||||
my %groupby_col = map { $_->{column} => 1 }
|
|
||||||
grep { $_->{column} }
|
|
||||||
@$groupby;
|
|
||||||
return unless scalar %groupby_col;
|
|
||||||
# Skip non-columns -- NULL, digits, functions, variables
|
|
||||||
my $cols = [
|
|
||||||
grep { _looks_like_column($_->{col}) }
|
|
||||||
grep { ! exists $_->{func} }
|
|
||||||
@{$event->{query_struct}->{columns}}
|
|
||||||
];
|
|
||||||
# All SELECT cols must be in GROUP BY cols clause.
|
|
||||||
# E.g. select a, b, c from tbl group by a; -- non-deterministic
|
|
||||||
foreach my $col ( @$cols ) {
|
|
||||||
return 0 unless $groupby_col{ $col->{col} }
|
|
||||||
|| ($col->{alias} && $groupby_col{ $col->{alias} });
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'RES.002', # non-deterministic LIMIT w/o ORDER BY
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
return unless $event->{query_struct}->{limit};
|
|
||||||
# If query doesn't use tables then this check isn't applicable.
|
|
||||||
return unless $event->{query_struct}->{from}
|
|
||||||
|| $event->{query_struct}->{into}
|
|
||||||
|| $event->{query_struct}->{tables};
|
|
||||||
return 0 unless $event->{query_struct}->{order_by};
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'STA.001', # != instead of <>
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
return 0 if $event->{arg} =~ m/!=/;
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'SUB.001', # IN(<subquery>)
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
if ( $event->{arg} =~ m/\bIN\s*\(\s*SELECT\b/gi ) {
|
|
||||||
return pos $event->{arg};
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'JOI.002', # table joined more than once, but not self-join
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $struct = $event->{query_struct};
|
|
||||||
return unless $struct;
|
|
||||||
my $tbls = $struct->{from} || $struct->{into} || $struct->{tables};
|
|
||||||
return unless $tbls;
|
|
||||||
my %tbl_cnt;
|
|
||||||
my $n_tbls = scalar @$tbls;
|
|
||||||
|
|
||||||
# To detect this rule we look for tables joined more than once
|
|
||||||
# (if cnt > 1) and via both an ansi and comma join. This captures
|
|
||||||
# "t AS a JOIN t AS b a.foo=b.bar, t" but not the simple self-join
|
|
||||||
# "t AS a JOIN t AS b a.foo=b.bar" or cases where a table is joined
|
|
||||||
# to many other tables all via ansi joins or the implicit self-join
|
|
||||||
# (which we really can't detect) "t AS a, t AS b WHERE a.foo=b.bar".
|
|
||||||
# When a table shows up multiple times in ansi joins and then again
|
|
||||||
# in a comma join, the comma join is usually culprit of this rule.
|
|
||||||
for my $i ( 0..($n_tbls-1) ) {
|
|
||||||
my $tbl = $tbls->[$i];
|
|
||||||
my $tbl_name = lc $tbl->{tbl};
|
|
||||||
|
|
||||||
$tbl_cnt{$tbl_name}->{cnt}++;
|
|
||||||
$tbl_cnt{$tbl_name}->{ansi_join}++
|
|
||||||
if $tbl->{join} && $tbl->{join}->{ansi};
|
|
||||||
$tbl_cnt{$tbl_name}->{comma_join}++
|
|
||||||
if $tbl->{join} && !$tbl->{join}->{ansi};
|
|
||||||
|
|
||||||
if ( $tbl_cnt{$tbl_name}->{cnt} > 1 ) {
|
|
||||||
return 0
|
|
||||||
if $tbl_cnt{$tbl_name}->{ansi_join}
|
|
||||||
&& $tbl_cnt{$tbl_name}->{comma_join};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'JOI.003', # OUTER JOIN converted to INNER JOIN
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $struct = $event->{query_struct};
|
|
||||||
return unless $struct;
|
|
||||||
my $tbls = $struct->{from} || $struct->{into} || $struct->{tables};
|
|
||||||
return unless $tbls;
|
|
||||||
my $where = $struct->{where};
|
|
||||||
return unless $where;
|
|
||||||
|
|
||||||
# Good LEFT OUTER JOIN:
|
|
||||||
# select * from L left join R using(c) where L.a=5;
|
|
||||||
# Converts to INNER JOIN when:
|
|
||||||
# select * from L left join R using(c) where L.a=5 and R.b=10;
|
|
||||||
# To detect this condition we need to see if there's an OUTER
|
|
||||||
# join then see if there's a column from the outer table in the
|
|
||||||
# WHERE clause that is anything but "IS NULL". So in the example
|
|
||||||
# above, R.b=10 is this culprit.
|
|
||||||
# http://code.google.com/p/maatkit/issues/detail?id=950
|
|
||||||
my %outer_tbls = map { $_->{tbl} => 1 } get_outer_tables($tbls);
|
|
||||||
PTDEBUG && _d("Outer tables:", keys %outer_tbls);
|
|
||||||
return unless %outer_tbls;
|
|
||||||
|
|
||||||
foreach my $pred ( @$where ) {
|
|
||||||
next unless $pred->{left_arg}; # skip constants like 1 in "WHERE 1"
|
|
||||||
my ($tbl, $col) = split /\./, $pred->{left_arg};
|
|
||||||
if ( $tbl && $col && $outer_tbls{$tbl} ) {
|
|
||||||
# Only outer_tbl.col IS NULL is permissible.
|
|
||||||
if ($pred->{operator} ne 'is' || $pred->{right_arg} !~ m/null/i)
|
|
||||||
{
|
|
||||||
PTDEBUG && _d("Predicate prevents OUTER JOIN:",
|
|
||||||
map { $pred->{$_} } qw(left_arg operator right_arg));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id => 'JOI.004', # broken exclusion join
|
|
||||||
code => sub {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my $event = $args{event};
|
|
||||||
my $struct = $event->{query_struct};
|
|
||||||
return unless $struct;
|
|
||||||
my $tbls = $struct->{from} || $struct->{into} || $struct->{tables};
|
|
||||||
return unless $tbls;
|
|
||||||
my $where = $struct->{where};
|
|
||||||
return unless $where;
|
|
||||||
|
|
||||||
my %outer_tbls;
|
|
||||||
my %outer_tbl_join_cols;
|
|
||||||
my @unknown_join_cols;
|
|
||||||
foreach my $outer_tbl ( get_outer_tables($tbls) ) {
|
|
||||||
$outer_tbls{$outer_tbl->{tbl}} = 1;
|
|
||||||
|
|
||||||
# For "L LEFT JOIN R" R is the outer table and since it follows
|
|
||||||
# L its table struct will have the join struct with the join
|
|
||||||
# condition. But for "L RIGHT JOIN R" L is the outer table and
|
|
||||||
# will not have the join struct because it precedes R. This
|
|
||||||
# is due to how parse_from() works. So if the outer table doesn't
|
|
||||||
# have the join struct, we need to get it from the inner table.
|
|
||||||
my $join = $outer_tbl->{join};
|
|
||||||
if ( !$join ) {
|
|
||||||
my ($inner_tbl) = grep {
|
|
||||||
exists $_->{join}
|
|
||||||
&& $_->{join}->{to} eq $outer_tbl->{tbl}
|
|
||||||
} @$tbls;
|
|
||||||
$join = $inner_tbl->{join};
|
|
||||||
die "Cannot find join structure for $outer_tbl->{tbl}"
|
|
||||||
unless $join;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get the outer table columns used in the jon condition.
|
|
||||||
if ( $join->{condition} eq 'using' ) {
|
|
||||||
%outer_tbl_join_cols = map { $_ => 1 } @{$join->{columns}};
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
my $where = $join->{where};
|
|
||||||
die "Join structure for ON condition has no where structure"
|
|
||||||
unless $where;
|
|
||||||
my @join_cols;
|
|
||||||
foreach my $pred ( @$where ) {
|
|
||||||
next unless $pred->{operator} eq '=';
|
|
||||||
# Assume all equality comparisons are like tbl1.col=tbl2.col.
|
|
||||||
# Thus join conditions like tbl1.col<tbl2.col aren't handled.
|
|
||||||
push @join_cols, $pred->{left_arg}, $pred->{right_arg};
|
|
||||||
}
|
|
||||||
PTDEBUG && _d("Join columns:", @join_cols);
|
|
||||||
foreach my $join_col ( @join_cols ) {
|
|
||||||
my ($tbl, $col) = split /\./, $join_col;
|
|
||||||
if ( !$col ) {
|
|
||||||
$col = $tbl;
|
|
||||||
$tbl = determine_table_for_column(
|
|
||||||
column => $col,
|
|
||||||
tbl_structs => $event->{tbl_structs},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if ( !$tbl ) {
|
|
||||||
PTDEBUG && _d("Cannot determine the table for join column",
|
|
||||||
$col);
|
|
||||||
push @unknown_join_cols, $col;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$outer_tbl_join_cols{$col} = 1
|
|
||||||
if $tbl eq $outer_tbl->{tbl};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
PTDEBUG && _d("Outer table join columns:", keys %outer_tbl_join_cols);
|
|
||||||
PTDEBUG && _d("Unknown join columns:", @unknown_join_cols);
|
|
||||||
|
|
||||||
# Here's a problem query:
|
|
||||||
# select c from L left join R on L.a=R.b where L.a=5 and R.c is null
|
|
||||||
# The problem is "R.c is null" will not allow one to determine if
|
|
||||||
# a null row from the outer table is null due to not matching the
|
|
||||||
# inner table or due to R.c actually having a null value. So we
|
|
||||||
# need to check every outer table column in the WHERE clause for
|
|
||||||
# ones that are 1) not in the JOIN expression and 2) "IS NULL'.
|
|
||||||
# http://code.google.com/p/maatkit/issues/detail?id=950
|
|
||||||
foreach my $pred ( @$where ) {
|
|
||||||
next unless $pred->{left_arg}; # skip constants like 1 in "WHERE 1"
|
|
||||||
next unless $pred->{operator} eq 'is'
|
|
||||||
&& $pred->{right_arg} =~ m/NULL/i;
|
|
||||||
|
|
||||||
my ($tbl, $col) = split /\./, $pred->{left_arg};
|
|
||||||
if ( !$col ) {
|
|
||||||
# A col in the WHERE clause isn't table-qualified. Try to
|
|
||||||
# determine its table. If we can, great, if not "return 0 if"
|
|
||||||
# below will immediately fail because $tbl will be undef still.
|
|
||||||
# That's ok; it just means this test tries as best it can and
|
|
||||||
# gets skipped silently when we can't tbl-qualify cols.
|
|
||||||
$col = $tbl;
|
|
||||||
$tbl = determine_table_for_column(
|
|
||||||
column => $col,
|
|
||||||
tbl_structs => $event->{tbl_structs},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
next unless $tbl; # can't check tbl if tbl is unknown
|
|
||||||
next unless $outer_tbls{$tbl}; # only want outer tbl cols
|
|
||||||
|
|
||||||
# At this point we know col is from outer table and "IS NULL".
|
|
||||||
# "outer_tbl.join_col IS NULL" is ok, but...
|
|
||||||
next if $outer_tbl_join_cols{$col};
|
|
||||||
|
|
||||||
# ...this rule could match here for two reasons. First, if
|
|
||||||
# we know the outer tbl join cols and this col isn't one of them
|
|
||||||
# (hence the statement above passed and we got here), then
|
|
||||||
# @unknown_join_cols will be empty and we'll match. This is like
|
|
||||||
# "outer_tbl.NON_join_col IS NULL". Or second, we don't know
|
|
||||||
# the outer tbl join cols and @unknown_join_cols will have cols
|
|
||||||
# and we'll match if this col isn't one of the unknown join cols.
|
|
||||||
# This is for cases like:
|
|
||||||
# select c from L left join R on a=b where L.a=5 and R.c is null
|
|
||||||
# We don't know if a or b belong to L or R but we know c is from
|
|
||||||
# the outer table and is neither a nor b.
|
|
||||||
return 0 unless grep { $col eq $_ } @unknown_join_cols;
|
|
||||||
}
|
|
||||||
|
|
||||||
return; # rule does not match, as best as we can determine
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# Sub: get_outer_tables
|
|
||||||
# Get the outer tables in joins.
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
# $tbls - Arrayref of hashrefs with table info
|
|
||||||
#
|
|
||||||
# Returns:
|
|
||||||
# Array of hashref to the outer tables
|
|
||||||
sub get_outer_tables {
|
|
||||||
my ( $tbls ) = @_;
|
|
||||||
return unless $tbls;
|
|
||||||
my @outer_tbls;
|
|
||||||
my $n_tbls = scalar @$tbls;
|
|
||||||
for my $i( 0..($n_tbls-1) ) {
|
|
||||||
my $tbl = $tbls->[$i];
|
|
||||||
next unless $tbl->{join} && $tbl->{join}->{type} =~ m/left|right/i;
|
|
||||||
push @outer_tbls,
|
|
||||||
$tbl->{join}->{type} =~ m/left/i ? $tbl
|
|
||||||
: $tbls->[$i - 1];
|
|
||||||
}
|
|
||||||
return @outer_tbls;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Sub: determine_table_for_column
|
|
||||||
# Determine which table a column belongs to. No extensive, online effort
|
|
||||||
# is made to determine the column's table. The caller is responsible for
|
|
||||||
# using the parsed SQL structure to get its db/tables and their tbl structs
|
|
||||||
# and providing a list of them.
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
# %args - Arguments
|
|
||||||
#
|
|
||||||
# Required Arguments:
|
|
||||||
# column - column name, not quoted
|
|
||||||
#
|
|
||||||
# Optional Arguments:
|
|
||||||
# tbl_structs - arrayref hashrefs returned by <TableParser::parse()>
|
|
||||||
#
|
|
||||||
# Returns:
|
|
||||||
# Table name, not quoted
|
|
||||||
sub determine_table_for_column {
|
|
||||||
my ( %args ) = @_;
|
|
||||||
my @required_args = qw(column);
|
|
||||||
foreach my $arg ( @required_args ) {
|
|
||||||
die "I need a $arg argument" unless $args{$arg};
|
|
||||||
}
|
|
||||||
my ($col) = @args{@required_args};
|
|
||||||
|
|
||||||
my $tbl_structs = $args{tbl_structs};
|
|
||||||
return unless $tbl_structs;
|
|
||||||
|
|
||||||
foreach my $db ( keys %$tbl_structs ) {
|
|
||||||
foreach my $tbl ( keys %{$tbl_structs->{$db}} ) {
|
|
||||||
if ( $tbl_structs->{$db}->{$tbl}->{is_col}->{$col} ) {
|
|
||||||
PTDEBUG && _d($col, "column belongs to", $db, $tbl);
|
|
||||||
return $tbl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PTDEBUG && _d("Cannot determine table for column", $col);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub _looks_like_column {
|
|
||||||
my $col = shift;
|
|
||||||
# NULL, numbers, variables and functions are definitely not columns
|
|
||||||
return if $col eq '*' || uc($col) eq 'NULL';
|
|
||||||
return if $col =~ /\A(?:\b[0-9]+\b|\@{1,2}.+)/;
|
|
||||||
return $col;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub _d {
|
|
||||||
my ($package, undef, $line) = caller 0;
|
|
||||||
@_ = map { (my $temp = $_) =~ s/\n/\n# /g; $temp; }
|
|
||||||
map { defined $_ ? $_ : 'undef' }
|
|
||||||
@_;
|
|
||||||
print STDERR "# $package:$line $PID ", join(' ', @_), "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
|
||||||
}
|
|
||||||
# ###########################################################################
|
|
||||||
# End QueryAdvisorRules package
|
|
||||||
# ###########################################################################
|
|
@@ -1,88 +0,0 @@
|
|||||||
# User@Host: myuser[mydb] @ [40.0.0.5]
|
|
||||||
# Thread_id: 404054555 Schema: mydb
|
|
||||||
# Query_time: 40.545555 Lock_time: 0.000550 Rows_sent: 0 Rows_examined: 0 Rows_affected: 4 Rows_read: 4
|
|
||||||
# QC_Hit: No Full_scan: No Full_join: No Tmp_table: No Tmp_table_on_disk: No
|
|
||||||
# Filesort: No Filesort_on_disk: No Merge_passes: 0
|
|
||||||
# InnoDB_IO_r_ops: 4 InnoDB_IO_r_bytes: 45455 InnoDB_IO_r_wait: 0.000045
|
|
||||||
# InnoDB_rec_lock_wait: 0.000000 InnoDB_queue_wait: 0.000000
|
|
||||||
# InnoDB_pages_distinct: 45
|
|
||||||
use mydb;
|
|
||||||
SET insert_id=45054;
|
|
||||||
INSERT INTO
|
|
||||||
friends
|
|
||||||
(jid, amisnonjoueurs, amisjoueurs, jour)
|
|
||||||
VALUES
|
|
||||||
(4444555450,'545544|rznnzrzr Crzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54554_545544_4554_q.jpg,540544445|Nzcky Pzrry|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55504_540544445_5555545_q.jpg,540545055|Lzndz Wzlkzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_540545055_5555_q.jpg,540555054|znnzssz zZszl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54544_540555054_5545505_q.jpg,545054545|Zzrzzl zssznrzzZ|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54540_545054545_5544_q.jpg,545405444|Dzprnz rlzZssrznd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_545405444_4544555_q.jpg,545450545|rznzgzn zkzszs rlznkz rzrzwzzc-Szczzpznskz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50405_545450545_5504_q.jpg,544445545|Dzvz CrzpZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55454_544445545_5054_q.jpg,544455445|Zzgzn Przpps|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54540_544455445_4550_q.jpg,54445
|
|
||||||
5455|Czrl R Grzrrzsrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55445_544455455_5455_q.jpg,545545555|znnSzrzz Wzrnrzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55040_545545555_4455445_q.jpg,545555555|Lznn Sk<53>nrzrg|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55550_545555555_5555_q.jpg,555055550|Lzz Pzsszrszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4454.snc5/455450_555055550_5555004_q.jpg,555405445|Srzzn Wzlls|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_555405445_5550545_q.jpg,554455555|Zzkz Lz rzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54554_554455555_5554405_q.jpg,555545054|Lznn rznsszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/50555_555545054_5054555_q.jpg,550555055|rznz rzrZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55544_550555055_4444454_q.jpg,554555555|rrzndzn Czllzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs405.zsr4/44405_554555555_5555_q.jpg,554544505|Przlzppz Vzllz|http://przrzlz.zk
|
|
||||||
.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54554_554544505_5555_q.jpg,555540054|Lzzrz rrzwn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/50454_555540054_5554555_q.jpg,555555455|Srzznz z\'Nzzll Clzrk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_555555455_5554_q.jpg,555545455|Dzwn Zzrsznzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50405_555545455_4504555_q.jpg,555555454|rzzrdzsk zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/455455_555555454_5554555_q.jpg,555454545|rzrnzndz rzrgzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54540_555454545_5554_q.jpg,555455050|rz Wrzsrzzld|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55404_555455050_5545550_q.jpg,555554440|KzZrzrlzy Pznnzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_555554440_4545_q.jpg,500555455|Lzzrzns Kzsszl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/50555_500555455_4545455_q.jpg,504555555|Kzrzn Rzwlzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs45
|
|
||||||
5.snc4/44454_504555555_5445_q.jpg,544455455|rzrrzd Wrzsrzzld|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54554_544455455_5554_q.jpg,545450555|Zzrszn zpplzszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55455_545450555_445_q.jpg,545545054|Gzzl rzZzlszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55554_545545054_5555454_q.jpg,545504445|Rzrzrs Wzrnrzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_545504445_5000_q.jpg,554554555|Nzczlz Dzrrzzld|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55005_554554555_5445555_q.jpg,554555555|Kzrzlzznz Z<>kznzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_554555555_5500_q.jpg,555005455|szzlz rzkzzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_555005455_4455_q.jpg,554455555|Nzczl<7A>s Gzrc<72>z zrzndz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54540_554455555_4555_q.jpg,555555504|Czczlzz CzrZzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs404.zsr4/44055_555555504_554_q.
|
|
||||||
rpg,555545445|zllzn Zzrsr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54554_555545445_4455405_q.jpg,555544505|Zzrzz-C<>czlz Lzrzyz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54554_555544505_4544_q.jpg,555450555|Crrzssznz ScrZzds|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50545_555450555_550455_q.jpg,555454405|Czrzl rzvzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55550_555454405_4554455_q.jpg,505454545|zlzvzzr P<>sr<73>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50405_505454545_5555400_q.jpg,540550444|Lzrrzznz zSzllzvzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54545_540550444_45455_q.jpg,545554555|zZ<7A>lzz zzrzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_545554555_5554_q.jpg,545555455|Kyzdzz zkzszs Kyzdzz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45505_545555455_5545_q.jpg,545554554|Rzcrzzl Czrr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_545554554_5440555_q.jpg,545455455|DzZ
|
|
||||||
znzqzz RzZz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_545455455_4555_q.jpg,545455504|Zzsszz Gzzzzssz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54504_545455504_455_q.jpg,545544445|Dznz zzrzrg zpplzng|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs550.snc5/55555_545544445_5454_q.jpg,550455540|Crrzs ZcLzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55550_550455540_5555_q.jpg,554055445|szrz Ssrzdzr -rzdz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55440_554055445_5545555_q.jpg,555554055|Dznny Zzzlz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45450_555554055_5555_q.jpg,555554455|Nzsz Dzzssrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_555554455_5545_q.jpg,554555555|rzlzn Dzxzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_554555555_4555555_q.jpg,555555454|Crrzsszl Clzzsszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc4/45450_555555454_4555_q.jpg,554504555|rznzsrzn Zzkz Nzpzzrzr|http://przrzlz.z
|
|
||||||
k.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_554504555_5554544_q.jpg,505040555|Szndzzp Kzlzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55545_505040555_4455444_q.jpg,545054455|zlzvzzr Zzzckzlrzrgrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_545054455_455_q.jpg,544555554|Zzrsznz vzn Dzrkzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_544555554_5554555_q.jpg,554055444|sznyz Ssrzzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_554055444_5545_q.jpg,4005554555|zlzxzndzr Vzrsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4005554555_4445_q.jpg,4005554555|Cznssznsznz Zzzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4005554555_5405450_q.jpg,4044504505|Srzlly rzckwzsr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54554_4044504505_4445_q.jpg,4045444555|Kzylznz zsrzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_4045444555_5045_q.jpg,4040454555|rzvzzr rzrrz|http://przrzlz.zk.hidden.com/rprzrzl
|
|
||||||
z-zk-snc5/rs455.snc5/54505_4040454555_4445554_q.jpg,4045455544|Zzrzznz rzrrzrz Kyzdzz rzddz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50545_4045455544_4554445_q.jpg,4054444540|zZZz ZcCzrsnzy Szgzrlznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55450_4054444540_5554504_q.jpg,4055555555|Szsznz Dzrrzzzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4055555555_4444544_q.jpg,4055055555|Kzsry Z Sszrlzccz-ScrZzzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54504_4055055555_5554_q.jpg,4054504555|Crznzr zkzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55504_4054504555_5540_q.jpg,4054444555|Crrzssy Dzlgzdz-Skylznz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55554_4054444555_5554555_q.jpg,4055450554|rzzn-clzzdz RzZy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54545_4055450554_4555_q.jpg,4055404555|Vzrznzqzz Czzszrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54544_4055404555_5555544_q.jpg,4054545055|Dzvzd Klz
|
|
||||||
ngrzrg|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc4/45455_4054545055_550_q.jpg,4055545455|rlzzvznz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_4055545455_5555545_q.jpg,4054545554|Gzzvznnz Dzsszrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4054545554_4545_q.jpg,4055555555|Kznnzsr Grzrrzsrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4055555555_5554_q.jpg,4405455545|Dzrrzn srzrlzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55445_4405455545_5050_q.jpg,4405044555|Dznzzl Dzgnzzzx|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55054_4405044555_4455_q.jpg,4405555445|Zzrzz srzrzsz Gzzdzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55404_4405555445_4540555_q.jpg,4405454454|rzrv<72> r<>nzz<7A>rz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54545_4405454454_5055555_q.jpg,4440055455|Czrlzs Rzdrzgzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55555_4440055455_5455554_q.jpg,4444044554|Kzylzzn r
|
|
||||||
zndzrszn\' zsrzrdzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54500_4444044554_5505540_q.jpg,4444545545|rzlznz <20>zrzsszv<7A>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54554_4444545545_5544_q.jpg,4444504554|Szndrz Wzssyn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4444504554_4555_q.jpg,4444550555|Zzz rzrnzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55544_4444550555_5554440_q.jpg,4445544555|rrzn<7A>zzsz Zzrqzzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45454_4445544555_545_q.jpg,4445454445|Czrzl rrzzdZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4454.snc5/455455_4445454445_4554455_q.jpg,4445544555|Kzrzzdz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4445544555_445555_q.jpg,4445555555|zrznz rz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_4445555555_4455_q.jpg,4445555554|Crzzg S LzZzx|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54544_4445555554_4555_q.jpg,4455555544|Zzzd Kzppzns|http://
|
|
||||||
przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_4455555544_5555_q.jpg,4455445555|rzz z\'Nzzll|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_4455445555_4454_q.jpg,4454440554|Crrzszn SZzsr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4454440554_5440545_q.jpg,4454540555|rznnzrzr Szzgn<67>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54554_4454540555_5555_q.jpg,4454455445|zndzrs rzrznszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55455_4454455445_5544555_q.jpg,4454545540|Crrzssy rzndy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55404_4454545540_4540555_q.jpg,4450555555|Zzlzsz rz<72>nrzk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55540_4450555555_4554_q.jpg,4455055545|Sszvz Pzrrzsr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/50455_4455055545_5005544_q.jpg,4455545455|Dzvzd Vzn dz Vzldz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_4455545455_4555_q.jpg,4400554545|Yvzs zrnzzld|http://przrzlz.zk.hidden.com
|
|
||||||
/rprzrzlz-zk-snc5/rs445.zsr4/55554_4400554545_4405_q.jpg,4445044544|Lzr<7A>dznz zlrzzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54454_4445044544_5544_q.jpg,4445445445|SzZzn Gzsszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4445445445_5055_q.jpg,4444405054|Gzzvznnz zlzxzs VzzlZz Zzrsznzllz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45545_4444405054_4454_q.jpg,4444455445|zkzszs zZzrzcznzs Dz Crzlz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55455_4444455445_455555_q.jpg,4445550445|Lzrry Kzplzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4445550445_555_q.jpg,4445045504|Pzzlz zrzlznd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4445045504_505545_q.jpg,4445555555|zxzl Pzrczk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54554_4445555555_4404_q.jpg,4454455545|rz Grzzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_4454455545_504_q.jpg,4455555554|Szlvzszrz Rzgzszsz|http://przrzlz.zk.hidden.com/rprzr
|
|
||||||
zlz-zk-snc5/rs455.snc4/44455_4455555554_4555_q.jpg,4450555544|Vzl<7A>rzz Rzgzwskz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50545_4450555544_4555054_q.jpg,4454555555|Zzcrz<72>l Wzzrss|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_4454555555_5455054_q.jpg,4455454555|Crrzsszprz Dzllz Vzccrzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4455454555_5540_q.jpg,4455550454|szssz zrzrr<72>zszr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_4455550454_5055_q.jpg,4454455445|zszrzllz Pzszsrzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55405_4454455445_44_q.jpg,4454445555|Nzcky Vznrzlszzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55405_4454445555_4545055_q.jpg,4455555545|Crlz<6C> rrzdzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_4455555545_5455555_q.jpg,4455045545|szZzsrz r. Dzvznpzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55055_4455045545_5455545_q.jpg,4450550404|zpzcsszd zkzszs|http://przrzlz.zk.rrcdn.
|
|
||||||
nzs/rprzrzlz-zk-snc5/rs555.snc5/55454_4450550404_5545550_q.jpg,4454454554|Spzszczllz Kznnzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_4454454554_5550540_q.jpg,4455554504|zllzn Pzdzrszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_4455554504_5455_q.jpg,4455550554|rzzn-Pzzrrz Dzlszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54540_4455550554_4004555_q.jpg,4455455545|Zzrzz Vzcqzzrzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_4455455545_5555_q.jpg,4455540455|rzsz Zzrzd rzdzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55504_4455540455_4555_q.jpg,4404554505|rzzl rlzckrzyszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_4404554505_455_q.jpg,4404545055|Srzrzz rrzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54554_4404545055_4455544_q.jpg,4440555544|Rzrzn rzrszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_4440555544_5550455_q.jpg,4444444544|Sszczy rzrrZznn|http://przrzlz.zk.hidden.com/rprzrz
|
|
||||||
lz-zk-snc5/rs544.snc4/45445_4444444544_5405_q.jpg,4444545454|Kzssy Lzly|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55554_4444545454_5545_q.jpg,4445540504|Zzkz rznnzss|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55554_4445540504_4404_q.jpg,4445545404|Kzsry zZrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50055_4445545404_5540_q.jpg,4445540545|Pzsrznz vzn dzn rzrg|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4445540545_5550_q.jpg,4445555554|Lzndz zngzZz-zxczl Srz-Kz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_4445555554_4545444_q.jpg,4445555054|rznzssz Pzgz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4445555054_5550454_q.jpg,4445000504|Lzrz Rzckzrd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55445_4445000504_445_q.jpg,4444550500|Kzszz zslzng|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_4444550500_5045_q.jpg,4444545055|Zzdwzsszkzsz RzsczzSzczzsy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-
|
|
||||||
snc5/rs555.snc5/55555_4444545055_4455405_q.jpg,4445544545|Sszrznz Cznzvz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55455_4445544545_4544455_q.jpg,4445545555|Kzng-zkz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55505_4445545555_5544_q.jpg,4445505445|rzlznz Pylv<6C>n<EFBFBD>znzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55545_4445505445_4555555_q.jpg,4455504545|Nzszz Nzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50055_4455504545_5440555_q.jpg,4450404554|Dzdzzr Czrpznszzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_4450404554_5445_q.jpg,4450545055|Crrzsszllz rzngzrd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc4/44055_4450545055_5505_q.jpg,4450555550|zdrzzn Pzrkz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50544_4450555550_5455544_q.jpg,4454440550|zlzsz Zzszssz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55045_4454440550_4545545_q.jpg,4454544555|zlzvzzr szrwzgnz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs
|
|
||||||
445.zsr4/55555_4454544555_5455555_q.jpg,4454505544|VzlzZzr zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54450_4454505544_5545_q.jpg,4455454555|rzzn-Zzrc dz szrwzngnz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54544_4455454555_5444_q.jpg,4455454544|Sszprznz Pzsrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55505_4455454544_5445_q.jpg,4455454555|Lzndz srzrlzw|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4455454555_555_q.jpg,4455550555|Pzsczl Lzzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_4455550555_4554_q.jpg,4455555505|Lzzrz Zzllzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4445.snc5/455404_4455555505_4555545_q.jpg,4454554545|Sszllz zngzlzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4454.snc5/455450_4454554545_5555554_q.jpg,4455545454|Zznzcz znszznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/455545_4455545454_5455454_q.jpg,4455545554|Sszprzn rzkzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_
|
|
||||||
4455545554_5454_q.jpg,4455555455|Crrzs Kznssznsznzdzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55454_4455555455_4445_q.jpg,4454505555|Sszvz Zzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55455_4454505555_5045445_q.jpg,4455540455|rzddz Swzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55455_4455540455_4545540_q.jpg,4454445504|Crzsszzn zrszz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4454445504_5555_q.jpg,4455555445|rzlzz Nzcrzlls|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55545_4455555445_5555_q.jpg,4455045555|Dznzszllz Vzsznsznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_4455045555_4555045_q.jpg,4455455405|Czrznz Lzcrzzx|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54550_4455455405_5405_q.jpg,4505550454|Vzckzz zrrzrzZ|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4505550454_4554445_q.jpg,4505455455|Zzrzz NzZzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4505455455_545405_q.r
|
|
||||||
pg,4505445500|rzlzz Yzzng rzcklzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55455_4505445500_5044_q.jpg,4505545554|Nrzng srzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs440.snc5/54555_4505545554_5550_q.jpg,4544545455|Crrzssznz rznckrzzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54450_4544545455_5455_q.jpg,4544544455|Zzrk zzklzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_4544544455_5544455_q.jpg,4545055455|Pzscrzznzssz Sznzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_4545055455_4554405_q.jpg,4545555545|Pzsczlz Spzrs rzrznkzzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs450.zsr4/54554_4545555545_5055_q.jpg,4545455454|Nzncy Vzrdzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50554_4545455454_5555454_q.jpg,4545554445|Zzcrzl <20>zZpzcr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4545554445_5555_q.jpg,4540554544|Kznny Dzrzrdzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45555_4540554544_5555_q.jpg,454
|
|
||||||
4544554|znsznzllz Cznnzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54545_4544544554_554_q.jpg,4545454555|rzrn rzszszZzns|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_4545454555_5545_q.jpg,4545545555|Zzcrzl Szczzpznskz rznzgzn zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs550.snc5/55555_4545545555_5455_q.jpg,4554500454|rzrrzrz rzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55544_4554500454_4445555_q.jpg,4555055545|rzrdzn rzrn<72>ndzz rzrn<72>ndzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55545_4555055545_4454_q.jpg,4555555454|Dzrzrzr Zzddz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_4555555454_5545444_q.jpg,4554454454|rzrnzdzssz Dzrzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/455505_4554454454_4545055_q.jpg,4555550455|Zznzl SznZzrs<72>n znr<6E>qzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55555_4555550455_5454544_q.jpg,4555045555|zlznz Zzdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4455.snc5/45555
|
|
||||||
5_4555045555_5554455_q.jpg,4554545400|Dzzn zsrzrdzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/455454_4554545400_5445445_q.jpg,4554555545|zlzzzrzsr rzllzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_4554555545_5555_q.jpg,4555555040|Nzdznz Vrznckzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4555555040_404_q.jpg,4505554404|zvzsz Krzrdlzv<7A>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.snc4/45454_4505554404_4555_q.jpg,4505405454|Zzrsznz ZzsszZz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_4505405454_4540_q.jpg,4540555455|Dzvzd Rznwzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54454_4540555455_5554454_q.jpg,4545444554|Gzzszn Lzczz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54454_4545444554_4450_q.jpg,4545555555|Crznszl zlzxzndrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_4545555555_5505_q.jpg,4545555550|Czrznz Zzzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55500_4545555550_5540_q.
|
|
||||||
rpg,4545455455|Czrznnz Pzrzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45555_4545455455_4550_q.jpg,4545550555|zszsz KzZz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55505_4545550555_455_q.jpg,4544454555|Lzzs Zzszllz rzszdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54504_4544454555_4550_q.jpg,4544445555|Szndrz dz Kzyszr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc4/44455_4544445555_5554_q.jpg,4544444455|Ss<53>prznzz Vzndzr zzrscrzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45455_4544444455_5544_q.jpg,4545405055|Czrzlznz Crzzvzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54555_4545405055_5504455_q.jpg,4554454545|srzzrry Czrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4554454545_5455_q.jpg,4555045550|Dznnz Grzzzzlz Dzzngzlzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc5/55555_4555045550_5555_q.jpg,4554540555|zlzsszndrz Pzzzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4554540555_5544545_q
|
|
||||||
.jpg,4555450555|rzrzzn Pzsszcznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55440_4555450555_4055_q.jpg,4555054004|znnz Pzzssz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55545_4555054004_5545544_q.jpg,4555554545|sz<73>y CzZzcrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54540_4555554545_5555_q.jpg,4550400554|r<>zsrzcz rlzZZz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45450_4550400554_5445_q.jpg,4500454554|znszzn Rzks|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55055_4500454554_5555_q.jpg,4504550455|Kznnzsr G<>szscrz Grzvzrszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50554_4504550455_4550454_q.jpg,4545554555|Zzrzz Rzy zs ZzZzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45544_4545554555_5455_q.jpg,4544555545|Cl<43>Zznsznz Zzrzngzs Spzlkzvzscr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_4544555545_5044450_q.jpg,4544545054|rzznZzrc Zzrcy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_45445450
|
|
||||||
54_4455_q.jpg,4545550505|Pznz Pzrrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45555_4545550505_5454_q.jpg,4545555444|Zzrczllz zngzlznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_4545555444_554_q.jpg,4545444404|Zzcrzllz Zzllzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_4545444404_4405_q.jpg,4545555555|szZzrz ? rzvznzvzc|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55050_4545555555_4554054_q.jpg,4544550454|rrzdzrzc Pzsrz|http://sszszc.zk.hidden.com/rsrc.prp/zz/r/zlzqZrrn-SK.gzr,4545454555|Vznzssz Zzddzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50405_4545454555_544_q.jpg,4555555554|rznrzZzn Dzllz Vzccrzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_4555555554_5554_q.jpg,4555540504|zkzsz zcz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54454_4555540504_4550_q.jpg,4554440455|rzlzz rznzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54554_4554440455_4445445_q.jpg,4555455555|Szlvznz znsznzz Zzngzn
|
|
||||||
z|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4555455555_5555_q.jpg,4555555544|rzll rzpkzns|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55045_4555555544_4544555_q.jpg,4554555054|Crznszl srzrzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55455_4554555054_4550_q.jpg,4554555545|Pzsczl Czrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55555_4554555545_5544500_q.jpg,4554555545|zzr<7A>lzz Lzczz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54545_4554555545_450455_q.jpg,4554554555|rryzn zrzrnz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_4554554555_4445_q.jpg,4555555455|Nznz Rzpzszrdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55405_4555555455_5405_q.jpg,4555555545|Pzsrz rzlk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45554_4555555545_5554_q.jpg,4545540455|Zzkkz Dzwzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/50555_4545540455_4554445_q.jpg,4544450455|Kzrzn rzll|http://przrzlz.zk.hidden.com/rprzrzlz
|
|
||||||
-zk-snc5/rs455.zsr4/54555_4544450455_454_q.jpg,4545450555|Zzrcz Krzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_4545450555_4504_q.jpg,4550554550|Crrzsszllz rznszznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4550554550_4445_q.jpg,4554045045|rzrrzrz Spyrz-rzcksrzs zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4554045045_5555555_q.jpg,4555444505|V<>rznzqzz Dzrrzznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc4/44444_4555444505_5545_q.jpg,4555545555|rzrgz Czssznrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_4555545555_5455_q.jpg,4555545544|Zznzzl zrzlzdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4555545544_5055_q.jpg,4554445544|Nzszlzz Kzvrzgznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54545_4554445544_5550545_q.jpg,4554555554|sznz rrzngrzssz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc4/45450_4554555554_5500_q.jpg,4504555555|Zznzcz Vzzgrzn-Dzszrsrzznz zkzszs|http://przrzlz.zk.r
|
|
||||||
rcdn.nzs/rprzrzlz-zk-snc5/rs555.snc5/55555_4504555555_4545_q.jpg,4505555404|Dznz ZzZpzcrzvz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45454_4505555404_5545_q.jpg,4544555445|rzznsz rzndlzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45504_4544555445_5554_q.jpg,4545055445|Dznsz zkzsz zZzrzcznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55550_4545055445_4545055_q.jpg,4544500554|rzssynz Dznzlzk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54555_4544500554_4544455_q.jpg,400000045445045|PzZ rzrpzr Zclzzd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/50454_400000045445045_4545545_q.jpg,400000045055555|sznz Szzvzgzzz Kzng|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_400000045055555_5545_q.jpg,400000045555555|Zzrqwzy zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs405.zsr4/44444_400000045555555_5554_q.jpg,400000055504554|rzrn Cznnzlly|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45555_400000055504554_5005_q.jpg,4000000545504
|
|
||||||
55|rznzrzkzszs LzvZyzkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55555_400000054550455_4554_q.jpg,400000054555550|Pzsrzck rzrsrznd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_400000054555550_4545545_q.jpg,400000055554455|sznrz Klzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54554_400000055554455_5445454_q.jpg,400000055405554|Pzpzdzpzzlzs Nzkzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_400000055405554_5055554_q.jpg,400000405545405|rznny znsrzvzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_400000405545405_5044055_q.jpg,400000440545454|SzZZz Zznzcz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_400000440545454_5550_q.jpg,400000444454544|Rzzl Vzrzlz rzrczlz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_400000444454544_5544504_q.jpg,400000444455554|Krzyszszr Dznzlzk-Dzn Dznzlz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54540_400000444455554_4045_q.jpg,400000444044445|Zzzznz rzvl<76>kzv
|
|
||||||
<EFBFBD>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55450_400000444044445_5505_q.jpg,400000445545505|Zzrzk Spyrz-rzcksrzs zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc4/44050_400000445545505_5555_q.jpg,400000445505455|rzkz rzzkZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50055_400000445505455_5505555_q.jpg,400000455545554|rznzs zzrzrg|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4454.snc5/455454_400000455545554_4505405_q.jpg,400000450555455|Kzrzn rzszrzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54450_400000450555455_4550544_q.jpg,400000454555545|rrzssz ZzZZzrZznn zzsszrrzlr zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54545_400000454555545_5554_q.jpg,400000454555455|Lzrrzznz Kzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54544_400000454555455_5055454_q.jpg,400000445455554|Zzcrzzl Scrzzszrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs450.snc4/44455_400000445455554_5554_q.jpg,400000454444045|Gzrdznz Drzrzc|http://przrzlz.z
|
|
||||||
k.hidden.com/rprzrzlz-zk-snc5/rs404.zsr4/44054_400000454444045_5555_q.jpg,400000454554055|zngzlzqzz LzZrzrsznrzyzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45455_400000454554055_5544_q.jpg,400000455454555|GzzllzzZz ZzzrZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_400000455454555_4455_q.jpg,400000455455454|Nzncy Wzlszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_400000455455454_5404_q.jpg,400000454555550|Szlvznz Sczpzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc4/44050_400000454555550_445_q.jpg,400000454444054|zngzlz Dzwzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55545_400000454444054_4555455_q.jpg,400000405545055|Lzrz Lzkzc|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54545_400000405545055_5455055_q.jpg,400000444050454|zkzsz Zzdzllzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_400000444050454_5555_q.jpg,400000445555454|Grzcz ZcCzrsnzy Szgzrlznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54
|
|
||||||
454_400000445555454_4540_q.jpg,400000454445544|rznzsz zsrzrwzzd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55055_400000454445544_5554_q.jpg,400000454500554|zsz KlznkrzZZzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs405.zsr4/44405_400000454500554_5554_q.jpg,400000545455554|zkzsz Gz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55500_400000545455554_4555_q.jpg,400000545045454|zkzsz Vzll<6C>z Przznzx D\'zr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54450_400000545045454_4554_q.jpg,400000555454055|SzZz Zzdvzscrz zkzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_400000555454055_555_q.jpg,400000544545440|Zzrsy Nzcrzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/455440_400000544545440_5555505_q.jpg,400000545445405|rrznczscz rzvzzr Rzdrzgzzz zZrrzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54545_400000545445405_5454555_q.jpg,400000545545455|znsrzny LzZrzrs rzrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4455.snc5/455555_40000054554
|
|
||||||
5455_5555555_q.jpg,400000545554554|rzydzn rzzsrzZ|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55550_400000545554554_550555_q.jpg,400000554504555|zndrzzs Scrr<72>dzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55005_400000554504555_555555_q.jpg,400000555545055|rzsszcz Dzrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.snc4/45454_400000555545055_5054_q.jpg,400000555005554|rzzl Czlpzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55005_400000555005554_555004_q.jpg,400000505555554|rzczlynz Zzrlzs|http://sszszc.zk.hidden.com/rsrc.prp/z5/r/zr5NzrZPw4z.gzr,400000545445554|Zzrczl rzls|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55554_400000545445554_4454_q.jpg,400000545545545|rzllzzn Wzlssrzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc4/44405_400000545545545_4450_q.jpg,400000555555554|rzzkz Dznszr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.snc4/45455_400000555555554_5554_q.jpg,400000554555555|Gzzvznnz Zzrcrzcz|http://przrzlz.zk.hidden.com/rprzrzlz-z
|
|
||||||
k-snc5/rs545.zsr4/45555_400000554555555_4554_q.jpg,400000555454554|Clzzdzz Zzrdzgz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs440.zsr4/44455_400000555454554_5444_q.jpg,400000555550554|Lzszssz rzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc4/45554_400000555550554_5554_q.jpg,400000545055555|Zzrsznz zcrszrrzrr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55555_400000545055555_4044554_q.jpg,400000555545545|YzZzrzsrz Kznnzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc4/45545_400000555545545_4540_q.jpg,400000555545455|zszllz Zzrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45454_400000555545455_5055_q.jpg,400000555555554|rz-rz Kzsz Lzslzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55505_400000555555554_5445504_q.jpg,400000545550444|Z<>nzkz Kzsznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45540_400000545550444_5455_q.jpg,400000545555445|zsrZzn zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc4/45555_400000545555445_5554_q.jpg
|
|
||||||
,400000554555450|Zzzzz zdzzrdz rzrrzzs zrrzlzdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54554_400000554555450_5005445_q.jpg,400000555545004|Dzzsy Zzsrzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4455.snc5/455440_400000555545004_5554554_q.jpg,400000554555044|rrzncz Gzrrzsszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_400000554555044_5454444_q.jpg,400000555550405|Zzrzznnz Zzrcrzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc4/45554_400000555550405_4555_q.jpg,400000555555555|Szkz Yzrzkz rzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc4/45455_400000555555555_4555_q.jpg,400004004554500|Czrzl Dzvzzs s|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc4/45455_400004004554500_545_q.jpg,400004045555454|zkzsz-znz zszlzznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc4/45555_400004045555454_4454_q.jpg,400004055545445|rzssy rlzzZ|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc4/45555_400004055545445_4440_q.jpg,400004405554454|rzcqzzlznz Rzzz
|
|
||||||
z|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_400004405554454_5555_q.jpg,400004444455455|znzz szrrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_400004444455455_5544444_q.jpg,400004444555055|Gzrrzrd zpzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54554_400004444555055_5545_q.jpg,400004455555445|rzly Zzlz zkzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45505_400004455555445_455_q.jpg,400004445455544|zxzl Kzsprzzk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54554_400004445455544_5054_q.jpg,400004445455404|Yzznn P<>sr<73>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_400004445455404_4440555_q.jpg,400004455450554|zd dz rzgzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54554_400004455450554_5445405_q.jpg,400004455440555|Lzzrz Pzsszcznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55045_400004455440555_5454454_q.jpg,400004555554454|zdzzrdz zsszvzz Czzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554
|
|
||||||
.snc5/55544_400004555554454_5445_q.jpg,400004540044550|Pzzrl Rzvzr zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50054_400004540044550_5555_q.jpg,400004554555550|rzznz Czrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54505_400004554555550_5455444_q.jpg','4445545455|Pzsczl Vzsznszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54500_4445545455_5455_q.jpg,4445555555|zlzznz zsz Vzsznszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4445555555_5455505_q.jpg,4445554544|Szvgz Kzszcz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54555_4445554544_5554_q.jpg,4450445555|Szrz Wzrsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4445.snc5/455405_4450445555_455550_q.jpg,4544450555|Szprzz Vzrvzlckz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_4544450555_5445_q.jpg,4540554404|Gznzvzzvz zrnzlzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/455540_4540554404_4405544_q.jpg',4455555044)
|
|
||||||
ON DUPLICATE KEY UPDATE
|
|
||||||
amisnonjoueurs = '545544|rznnzrzr Crzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54554_545544_4554_q.jpg,540544445|Nzcky Pzrry|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55504_540544445_5555545_q.jpg,540545055|Lzndz Wzlkzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_540545055_5555_q.jpg,540555054|znnzssz zZszl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54544_540555054_5545505_q.jpg,545054545|Zzrzzl zssznrzzZ|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54540_545054545_5544_q.jpg,545405444|Dzprnz rlzZssrznd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_545405444_4544555_q.jpg,545450545|rznzgzn zkzszs rlznkz rzrzwzzc-Szczzpznskz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50405_545450545_5504_q.jpg,544445545|Dzvz CrzpZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55454_544445545_5054_q.jpg,544455445|Zzgzn Przpps|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54540_544455445_4550_q.jpg,54445
|
|
||||||
5455|Czrl R Grzrrzsrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55445_544455455_5455_q.jpg,545545555|znnSzrzz Wzrnrzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55040_545545555_4455445_q.jpg,545555555|Lznn Sk<53>nrzrg|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55550_545555555_5555_q.jpg,555055550|Lzz Pzsszrszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4454.snc5/455450_555055550_5555004_q.jpg,555405445|Srzzn Wzlls|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_555405445_5550545_q.jpg,554455555|Zzkz Lz rzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54554_554455555_5554405_q.jpg,555545054|Lznn rznsszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/50555_555545054_5054555_q.jpg,550555055|rznz rzrZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55544_550555055_4444454_q.jpg,554555555|rrzndzn Czllzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs405.zsr4/44405_554555555_5555_q.jpg,554544505|Przlzppz Vzllz|http://przrzlz.zk
|
|
||||||
.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54554_554544505_5555_q.jpg,555540054|Lzzrz rrzwn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/50454_555540054_5554555_q.jpg,555555455|Srzznz z\'Nzzll Clzrk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_555555455_5554_q.jpg,555545455|Dzwn Zzrsznzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50405_555545455_4504555_q.jpg,555555454|rzzrdzsk zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/455455_555555454_5554555_q.jpg,555454545|rzrnzndz rzrgzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54540_555454545_5554_q.jpg,555455050|rz Wrzsrzzld|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55404_555455050_5545550_q.jpg,555554440|KzZrzrlzy Pznnzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_555554440_4545_q.jpg,500555455|Lzzrzns Kzsszl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/50555_500555455_4545455_q.jpg,504555555|Kzrzn Rzwlzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs45
|
|
||||||
5.snc4/44454_504555555_5445_q.jpg,544455455|rzrrzd Wrzsrzzld|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54554_544455455_5554_q.jpg,545450555|Zzrszn zpplzszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55455_545450555_445_q.jpg,545545054|Gzzl rzZzlszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55554_545545054_5555454_q.jpg,545504445|Rzrzrs Wzrnrzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_545504445_5000_q.jpg,554554555|Nzczlz Dzrrzzld|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55005_554554555_5445555_q.jpg,554555555|Kzrzlzznz Z<>kznzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_554555555_5500_q.jpg,555005455|szzlz rzkzzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_555005455_4455_q.jpg,554455555|Nzczl<7A>s Gzrc<72>z zrzndz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54540_554455555_4555_q.jpg,555555504|Czczlzz CzrZzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs404.zsr4/44055_555555504_554_q.
|
|
||||||
rpg,555545445|zllzn Zzrsr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54554_555545445_4455405_q.jpg,555544505|Zzrzz-C<>czlz Lzrzyz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54554_555544505_4544_q.jpg,555450555|Crrzssznz ScrZzds|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50545_555450555_550455_q.jpg,555454405|Czrzl rzvzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55550_555454405_4554455_q.jpg,505454545|zlzvzzr P<>sr<73>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50405_505454545_5555400_q.jpg,540550444|Lzrrzznz zSzllzvzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54545_540550444_45455_q.jpg,545554555|zZ<7A>lzz zzrzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_545554555_5554_q.jpg,545555455|Kyzdzz zkzszs Kyzdzz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45505_545555455_5545_q.jpg,545554554|Rzcrzzl Czrr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_545554554_5440555_q.jpg,545455455|DzZ
|
|
||||||
znzqzz RzZz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_545455455_4555_q.jpg,545455504|Zzsszz Gzzzzssz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54504_545455504_455_q.jpg,545544445|Dznz zzrzrg zpplzng|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs550.snc5/55555_545544445_5454_q.jpg,550455540|Crrzs ZcLzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55550_550455540_5555_q.jpg,554055445|szrz Ssrzdzr -rzdz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55440_554055445_5545555_q.jpg,555554055|Dznny Zzzlz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45450_555554055_5555_q.jpg,555554455|Nzsz Dzzssrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_555554455_5545_q.jpg,554555555|rzlzn Dzxzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_554555555_4555555_q.jpg,555555454|Crrzsszl Clzzsszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc4/45450_555555454_4555_q.jpg,554504555|rznzsrzn Zzkz Nzpzzrzr|http://przrzlz.z
|
|
||||||
k.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_554504555_5554544_q.jpg,505040555|Szndzzp Kzlzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55545_505040555_4455444_q.jpg,545054455|zlzvzzr Zzzckzlrzrgrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_545054455_455_q.jpg,544555554|Zzrsznz vzn Dzrkzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_544555554_5554555_q.jpg,554055444|sznyz Ssrzzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_554055444_5545_q.jpg,4005554555|zlzxzndzr Vzrsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4005554555_4445_q.jpg,4005554555|Cznssznsznz Zzzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4005554555_5405450_q.jpg,4044504505|Srzlly rzckwzsr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54554_4044504505_4445_q.jpg,4045444555|Kzylznz zsrzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_4045444555_5045_q.jpg,4040454555|rzvzzr rzrrz|http://przrzlz.zk.hidden.com/rprzrzl
|
|
||||||
z-zk-snc5/rs455.snc5/54505_4040454555_4445554_q.jpg,4045455544|Zzrzznz rzrrzrz Kyzdzz rzddz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50545_4045455544_4554445_q.jpg,4054444540|zZZz ZcCzrsnzy Szgzrlznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55450_4054444540_5554504_q.jpg,4055555555|Szsznz Dzrrzzzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4055555555_4444544_q.jpg,4055055555|Kzsry Z Sszrlzccz-ScrZzzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54504_4055055555_5554_q.jpg,4054504555|Crznzr zkzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55504_4054504555_5540_q.jpg,4054444555|Crrzssy Dzlgzdz-Skylznz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55554_4054444555_5554555_q.jpg,4055450554|rzzn-clzzdz RzZy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54545_4055450554_4555_q.jpg,4055404555|Vzrznzqzz Czzszrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54544_4055404555_5555544_q.jpg,4054545055|Dzvzd Klz
|
|
||||||
ngrzrg|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc4/45455_4054545055_550_q.jpg,4055545455|rlzzvznz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_4055545455_5555545_q.jpg,4054545554|Gzzvznnz Dzsszrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4054545554_4545_q.jpg,4055555555|Kznnzsr Grzrrzsrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4055555555_5554_q.jpg,4405455545|Dzrrzn srzrlzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55445_4405455545_5050_q.jpg,4405044555|Dznzzl Dzgnzzzx|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55054_4405044555_4455_q.jpg,4405555445|Zzrzz srzrzsz Gzzdzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55404_4405555445_4540555_q.jpg,4405454454|rzrv<72> r<>nzz<7A>rz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54545_4405454454_5055555_q.jpg,4440055455|Czrlzs Rzdrzgzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55555_4440055455_5455554_q.jpg,4444044554|Kzylzzn r
|
|
||||||
zndzrszn\' zsrzrdzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54500_4444044554_5505540_q.jpg,4444545545|rzlznz <20>zrzsszv<7A>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54554_4444545545_5544_q.jpg,4444504554|Szndrz Wzssyn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4444504554_4555_q.jpg,4444550555|Zzz rzrnzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55544_4444550555_5554440_q.jpg,4445544555|rrzn<7A>zzsz Zzrqzzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45454_4445544555_545_q.jpg,4445454445|Czrzl rrzzdZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4454.snc5/455455_4445454445_4554455_q.jpg,4445544555|Kzrzzdz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4445544555_445555_q.jpg,4445555555|zrznz rz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_4445555555_4455_q.jpg,4445555554|Crzzg S LzZzx|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54544_4445555554_4555_q.jpg,4455555544|Zzzd Kzppzns|http://
|
|
||||||
przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_4455555544_5555_q.jpg,4455445555|rzz z\'Nzzll|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_4455445555_4454_q.jpg,4454440554|Crrzszn SZzsr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4454440554_5440545_q.jpg,4454540555|rznnzrzr Szzgn<67>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54554_4454540555_5555_q.jpg,4454455445|zndzrs rzrznszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55455_4454455445_5544555_q.jpg,4454545540|Crrzssy rzndy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55404_4454545540_4540555_q.jpg,4450555555|Zzlzsz rz<72>nrzk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55540_4450555555_4554_q.jpg,4455055545|Sszvz Pzrrzsr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/50455_4455055545_5005544_q.jpg,4455545455|Dzvzd Vzn dz Vzldz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_4455545455_4555_q.jpg,4400554545|Yvzs zrnzzld|http://przrzlz.zk.hidden.com
|
|
||||||
/rprzrzlz-zk-snc5/rs445.zsr4/55554_4400554545_4405_q.jpg,4445044544|Lzr<7A>dznz zlrzzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54454_4445044544_5544_q.jpg,4445445445|SzZzn Gzsszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4445445445_5055_q.jpg,4444405054|Gzzvznnz zlzxzs VzzlZz Zzrsznzllz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45545_4444405054_4454_q.jpg,4444455445|zkzszs zZzrzcznzs Dz Crzlz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55455_4444455445_455555_q.jpg,4445550445|Lzrry Kzplzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4445550445_555_q.jpg,4445045504|Pzzlz zrzlznd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4445045504_505545_q.jpg,4445555555|zxzl Pzrczk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54554_4445555555_4404_q.jpg,4454455545|rz Grzzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_4454455545_504_q.jpg,4455555554|Szlvzszrz Rzgzszsz|http://przrzlz.zk.hidden.com/rprzr
|
|
||||||
zlz-zk-snc5/rs455.snc4/44455_4455555554_4555_q.jpg,4450555544|Vzl<7A>rzz Rzgzwskz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50545_4450555544_4555054_q.jpg,4454555555|Zzcrz<72>l Wzzrss|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_4454555555_5455054_q.jpg,4455454555|Crrzsszprz Dzllz Vzccrzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4455454555_5540_q.jpg,4455550454|szssz zrzrr<72>zszr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_4455550454_5055_q.jpg,4454455445|zszrzllz Pzszsrzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55405_4454455445_44_q.jpg,4454445555|Nzcky Vznrzlszzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55405_4454445555_4545055_q.jpg,4455555545|Crlz<6C> rrzdzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_4455555545_5455555_q.jpg,4455045545|szZzsrz r. Dzvznpzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55055_4455045545_5455545_q.jpg,4450550404|zpzcsszd zkzszs|http://przrzlz.zk.rrcdn.
|
|
||||||
nzs/rprzrzlz-zk-snc5/rs555.snc5/55454_4450550404_5545550_q.jpg,4454454554|Spzszczllz Kznnzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_4454454554_5550540_q.jpg,4455554504|zllzn Pzdzrszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_4455554504_5455_q.jpg,4455550554|rzzn-Pzzrrz Dzlszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54540_4455550554_4004555_q.jpg,4455455545|Zzrzz Vzcqzzrzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_4455455545_5555_q.jpg,4455540455|rzsz Zzrzd rzdzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55504_4455540455_4555_q.jpg,4404554505|rzzl rlzckrzyszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_4404554505_455_q.jpg,4404545055|Srzrzz rrzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54554_4404545055_4455544_q.jpg,4440555544|Rzrzn rzrszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_4440555544_5550455_q.jpg,4444444544|Sszczy rzrrZznn|http://przrzlz.zk.hidden.com/rprzrz
|
|
||||||
lz-zk-snc5/rs544.snc4/45445_4444444544_5405_q.jpg,4444545454|Kzssy Lzly|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55554_4444545454_5545_q.jpg,4445540504|Zzkz rznnzss|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55554_4445540504_4404_q.jpg,4445545404|Kzsry zZrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50055_4445545404_5540_q.jpg,4445540545|Pzsrznz vzn dzn rzrg|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4445540545_5550_q.jpg,4445555554|Lzndz zngzZz-zxczl Srz-Kz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50555_4445555554_4545444_q.jpg,4445555054|rznzssz Pzgz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4445555054_5550454_q.jpg,4445000504|Lzrz Rzckzrd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55445_4445000504_445_q.jpg,4444550500|Kzszz zslzng|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_4444550500_5045_q.jpg,4444545055|Zzdwzsszkzsz RzsczzSzczzsy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-
|
|
||||||
snc5/rs555.snc5/55555_4444545055_4455405_q.jpg,4445544545|Sszrznz Cznzvz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55455_4445544545_4544455_q.jpg,4445545555|Kzng-zkz zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55505_4445545555_5544_q.jpg,4445505445|rzlznz Pylv<6C>n<EFBFBD>znzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55545_4445505445_4555555_q.jpg,4455504545|Nzszz Nzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50055_4455504545_5440555_q.jpg,4450404554|Dzdzzr Czrpznszzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_4450404554_5445_q.jpg,4450545055|Crrzsszllz rzngzrd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc4/44055_4450545055_5505_q.jpg,4450555550|zdrzzn Pzrkz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50544_4450555550_5455544_q.jpg,4454440550|zlzsz Zzszssz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55045_4454440550_4545545_q.jpg,4454544555|zlzvzzr szrwzgnz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs
|
|
||||||
445.zsr4/55555_4454544555_5455555_q.jpg,4454505544|VzlzZzr zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54450_4454505544_5545_q.jpg,4455454555|rzzn-Zzrc dz szrwzngnz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54544_4455454555_5444_q.jpg,4455454544|Sszprznz Pzsrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55505_4455454544_5445_q.jpg,4455454555|Lzndz srzrlzw|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4455454555_555_q.jpg,4455550555|Pzsczl Lzzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_4455550555_4554_q.jpg,4455555505|Lzzrz Zzllzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4445.snc5/455404_4455555505_4555545_q.jpg,4454554545|Sszllz zngzlzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4454.snc5/455450_4454554545_5555554_q.jpg,4455545454|Zznzcz znszznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/455545_4455545454_5455454_q.jpg,4455545554|Sszprzn rzkzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_
|
|
||||||
4455545554_5454_q.jpg,4455555455|Crrzs Kznssznsznzdzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55454_4455555455_4445_q.jpg,4454505555|Sszvz Zzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55455_4454505555_5045445_q.jpg,4455540455|rzddz Swzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55455_4455540455_4545540_q.jpg,4454445504|Crzsszzn zrszz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55055_4454445504_5555_q.jpg,4455555445|rzlzz Nzcrzlls|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55545_4455555445_5555_q.jpg,4455045555|Dznzszllz Vzsznsznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_4455045555_4555045_q.jpg,4455455405|Czrznz Lzcrzzx|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54550_4455455405_5405_q.jpg,4505550454|Vzckzz zrrzrzZ|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4505550454_4554445_q.jpg,4505455455|Zzrzz NzZzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4505455455_545405_q.r
|
|
||||||
pg,4505445500|rzlzz Yzzng rzcklzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55455_4505445500_5044_q.jpg,4505545554|Nrzng srzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs440.snc5/54555_4505545554_5550_q.jpg,4544545455|Crrzssznz rznckrzzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54450_4544545455_5455_q.jpg,4544544455|Zzrk zzklzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_4544544455_5544455_q.jpg,4545055455|Pzscrzznzssz Sznzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_4545055455_4554405_q.jpg,4545555545|Pzsczlz Spzrs rzrznkzzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs450.zsr4/54554_4545555545_5055_q.jpg,4545455454|Nzncy Vzrdzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50554_4545455454_5555454_q.jpg,4545554445|Zzcrzl <20>zZpzcr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4545554445_5555_q.jpg,4540554544|Kznny Dzrzrdzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45555_4540554544_5555_q.jpg,454
|
|
||||||
4544554|znsznzllz Cznnzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54545_4544544554_554_q.jpg,4545454555|rzrn rzszszZzns|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_4545454555_5545_q.jpg,4545545555|Zzcrzl Szczzpznskz rznzgzn zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs550.snc5/55555_4545545555_5455_q.jpg,4554500454|rzrrzrz rzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55544_4554500454_4445555_q.jpg,4555055545|rzrdzn rzrn<72>ndzz rzrn<72>ndzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55545_4555055545_4454_q.jpg,4555555454|Dzrzrzr Zzddz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_4555555454_5545444_q.jpg,4554454454|rzrnzdzssz Dzrzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/455505_4554454454_4545055_q.jpg,4555550455|Zznzl SznZzrs<72>n znr<6E>qzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.zsr4/55555_4555550455_5454544_q.jpg,4555045555|zlznz Zzdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4455.snc5/45555
|
|
||||||
5_4555045555_5554455_q.jpg,4554545400|Dzzn zsrzrdzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/455454_4554545400_5445445_q.jpg,4554555545|zlzzzrzsr rzllzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54455_4554555545_5555_q.jpg,4555555040|Nzdznz Vrznckzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4555555040_404_q.jpg,4505554404|zvzsz Krzrdlzv<7A>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.snc4/45454_4505554404_4555_q.jpg,4505405454|Zzrsznz ZzsszZz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_4505405454_4540_q.jpg,4540555455|Dzvzd Rznwzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54454_4540555455_5554454_q.jpg,4545444554|Gzzszn Lzczz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54454_4545444554_4450_q.jpg,4545555555|Crznszl zlzxzndrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_4545555555_5505_q.jpg,4545555550|Czrznz Zzzrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55500_4545555550_5540_q.
|
|
||||||
rpg,4545455455|Czrznnz Pzrzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45555_4545455455_4550_q.jpg,4545550555|zszsz KzZz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55505_4545550555_455_q.jpg,4544454555|Lzzs Zzszllz rzszdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54504_4544454555_4550_q.jpg,4544445555|Szndrz dz Kzyszr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc4/44455_4544445555_5554_q.jpg,4544444455|Ss<53>prznzz Vzndzr zzrscrzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45455_4544444455_5544_q.jpg,4545405055|Czrzlznz Crzzvzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54555_4545405055_5504455_q.jpg,4554454545|srzzrry Czrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4554454545_5455_q.jpg,4555045550|Dznnz Grzzzzlz Dzzngzlzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc5/55555_4555045550_5555_q.jpg,4554540555|zlzsszndrz Pzzzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4554540555_5544545_q
|
|
||||||
.jpg,4555450555|rzrzzn Pzsszcznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55440_4555450555_4055_q.jpg,4555054004|znnz Pzzssz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55545_4555054004_5545544_q.jpg,4555554545|sz<73>y CzZzcrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54540_4555554545_5555_q.jpg,4550400554|r<>zsrzcz rlzZZz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45450_4550400554_5445_q.jpg,4500454554|znszzn Rzks|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55055_4500454554_5555_q.jpg,4504550455|Kznnzsr G<>szscrz Grzvzrszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50554_4504550455_4550454_q.jpg,4545554555|Zzrzz Rzy zs ZzZzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45544_4545554555_5455_q.jpg,4544555545|Cl<43>Zznsznz Zzrzngzs Spzlkzvzscr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_4544555545_5044450_q.jpg,4544545054|rzznZzrc Zzrcy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_45445450
|
|
||||||
54_4455_q.jpg,4545550505|Pznz Pzrrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45555_4545550505_5454_q.jpg,4545555444|Zzrczllz zngzlznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_4545555444_554_q.jpg,4545444404|Zzcrzllz Zzllzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_4545444404_4405_q.jpg,4545555555|szZzrz ? rzvznzvzc|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55050_4545555555_4554054_q.jpg,4544550454|rrzdzrzc Pzsrz|http://sszszc.zk.hidden.com/rsrc.prp/zz/r/zlzqZrrn-SK.gzr,4545454555|Vznzssz Zzddzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50405_4545454555_544_q.jpg,4555555554|rznrzZzn Dzllz Vzccrzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_4555555554_5554_q.jpg,4555540504|zkzsz zcz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54454_4555540504_4550_q.jpg,4554440455|rzlzz rznzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54554_4554440455_4445445_q.jpg,4555455555|Szlvznz znsznzz Zzngzn
|
|
||||||
z|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_4555455555_5555_q.jpg,4555555544|rzll rzpkzns|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55045_4555555544_4544555_q.jpg,4554555054|Crznszl srzrzzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55455_4554555054_4550_q.jpg,4554555545|Pzsczl Czrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55555_4554555545_5544500_q.jpg,4554555545|zzr<7A>lzz Lzczz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54545_4554555545_450455_q.jpg,4554554555|rryzn zrzrnz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_4554554555_4445_q.jpg,4555555455|Nznz Rzpzszrdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55405_4555555455_5405_q.jpg,4555555545|Pzsrz rzlk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45554_4555555545_5554_q.jpg,4545540455|Zzkkz Dzwzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/50555_4545540455_4554445_q.jpg,4544450455|Kzrzn rzll|http://przrzlz.zk.hidden.com/rprzrzlz
|
|
||||||
-zk-snc5/rs455.zsr4/54555_4544450455_454_q.jpg,4545450555|Zzrcz Krzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_4545450555_4504_q.jpg,4550554550|Crrzsszllz rznszznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4550554550_4445_q.jpg,4554045045|rzrrzrz Spyrz-rzcksrzs zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4554045045_5555555_q.jpg,4555444505|V<>rznzqzz Dzrrzznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc4/44444_4555444505_5545_q.jpg,4555545555|rzrgz Czssznrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54555_4555545555_5455_q.jpg,4555545544|Zznzzl zrzlzdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54555_4555545544_5055_q.jpg,4554445544|Nzszlzz Kzvrzgznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54545_4554445544_5550545_q.jpg,4554555554|sznz rrzngrzssz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc4/45450_4554555554_5500_q.jpg,4504555555|Zznzcz Vzzgrzn-Dzszrsrzznz zkzszs|http://przrzlz.zk.r
|
|
||||||
rcdn.nzs/rprzrzlz-zk-snc5/rs555.snc5/55555_4504555555_4545_q.jpg,4505555404|Dznz ZzZpzcrzvz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45454_4505555404_5545_q.jpg,4544555445|rzznsz rzndlzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45504_4544555445_5554_q.jpg,4545055445|Dznsz zkzsz zZzrzcznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55550_4545055445_4545055_q.jpg,4544500554|rzssynz Dznzlzk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54555_4544500554_4544455_q.jpg,400000045445045|PzZ rzrpzr Zclzzd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/50454_400000045445045_4545545_q.jpg,400000045055555|sznz Szzvzgzzz Kzng|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_400000045055555_5545_q.jpg,400000045555555|Zzrqwzy zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs405.zsr4/44444_400000045555555_5554_q.jpg,400000055504554|rzrn Cznnzlly|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45555_400000055504554_5005_q.jpg,4000000545504
|
|
||||||
55|rznzrzkzszs LzvZyzkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55555_400000054550455_4554_q.jpg,400000054555550|Pzsrzck rzrsrznd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_400000054555550_4545545_q.jpg,400000055554455|sznrz Klzzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54554_400000055554455_5445454_q.jpg,400000055405554|Pzpzdzpzzlzs Nzkzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55545_400000055405554_5055554_q.jpg,400000405545405|rznny znsrzvzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_400000405545405_5044055_q.jpg,400000440545454|SzZZz Zznzcz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_400000440545454_5550_q.jpg,400000444454544|Rzzl Vzrzlz rzrczlz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55555_400000444454544_5544504_q.jpg,400000444455554|Krzyszszr Dznzlzk-Dzn Dznzlz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54540_400000444455554_4045_q.jpg,400000444044445|Zzzznz rzvl<76>kzv
|
|
||||||
<EFBFBD>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55450_400000444044445_5505_q.jpg,400000445545505|Zzrzk Spyrz-rzcksrzs zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc4/44050_400000445545505_5555_q.jpg,400000445505455|rzkz rzzkZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50055_400000445505455_5505555_q.jpg,400000455545554|rznzs zzrzrg|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4454.snc5/455454_400000455545554_4505405_q.jpg,400000450555455|Kzrzn rzszrzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54450_400000450555455_4550544_q.jpg,400000454555545|rrzssz ZzZZzrZznn zzsszrrzlr zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54545_400000454555545_5554_q.jpg,400000454555455|Lzrrzznz Kzy|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54544_400000454555455_5055454_q.jpg,400000445455554|Zzcrzzl Scrzzszrs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs450.snc4/44455_400000445455554_5554_q.jpg,400000454444045|Gzrdznz Drzrzc|http://przrzlz.z
|
|
||||||
k.hidden.com/rprzrzlz-zk-snc5/rs404.zsr4/44054_400000454444045_5555_q.jpg,400000454554055|zngzlzqzz LzZrzrsznrzyzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45455_400000454554055_5544_q.jpg,400000455454555|GzzllzzZz ZzzrZzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_400000455454555_4455_q.jpg,400000455455454|Nzncy Wzlszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_400000455455454_5404_q.jpg,400000454555550|Szlvznz Sczpzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc4/44050_400000454555550_445_q.jpg,400000454444054|zngzlz Dzwzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55545_400000454444054_4555455_q.jpg,400000405545055|Lzrz Lzkzc|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54545_400000405545055_5455055_q.jpg,400000444050454|zkzsz Zzdzllzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54545_400000444050454_5555_q.jpg,400000445555454|Grzcz ZcCzrsnzy Szgzrlznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54
|
|
||||||
454_400000445555454_4540_q.jpg,400000454445544|rznzsz zsrzrwzzd|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55055_400000454445544_5554_q.jpg,400000454500554|zsz KlznkrzZZzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs405.zsr4/44405_400000454500554_5554_q.jpg,400000545455554|zkzsz Gz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55500_400000545455554_4555_q.jpg,400000545045454|zkzsz Vzll<6C>z Przznzx D\'zr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54450_400000545045454_4554_q.jpg,400000555454055|SzZz Zzdvzscrz zkzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54555_400000555454055_555_q.jpg,400000544545440|Zzrsy Nzcrzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/455440_400000544545440_5555505_q.jpg,400000545445405|rrznczscz rzvzzr Rzdrzgzzz zZrrzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54545_400000545445405_5454555_q.jpg,400000545545455|znsrzny LzZrzrs rzrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4455.snc5/455555_40000054554
|
|
||||||
5455_5555555_q.jpg,400000545554554|rzydzn rzzsrzZ|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55550_400000545554554_550555_q.jpg,400000554504555|zndrzzs Scrr<72>dzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55005_400000554504555_555555_q.jpg,400000555545055|rzsszcz Dzrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.snc4/45454_400000555545055_5054_q.jpg,400000555005554|rzzl Czlpzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.zsr4/55005_400000555005554_555004_q.jpg,400000505555554|rzczlynz Zzrlzs|http://sszszc.zk.hidden.com/rsrc.prp/z5/r/zr5NzrZPw4z.gzr,400000545445554|Zzrczl rzls|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55554_400000545445554_4454_q.jpg,400000545545545|rzllzzn Wzlssrzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc4/44405_400000545545545_4450_q.jpg,400000555555554|rzzkz Dznszr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.snc4/45455_400000555555554_5554_q.jpg,400000554555555|Gzzvznnz Zzrcrzcz|http://przrzlz.zk.hidden.com/rprzrzlz-z
|
|
||||||
k-snc5/rs545.zsr4/45555_400000554555555_4554_q.jpg,400000555454554|Clzzdzz Zzrdzgz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs440.zsr4/44455_400000555454554_5444_q.jpg,400000555550554|Lzszssz rzrn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc4/45554_400000555550554_5554_q.jpg,400000545055555|Zzrsznz zcrszrrzrr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc5/55555_400000545055555_4044554_q.jpg,400000555545545|YzZzrzsrz Kznnzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc4/45545_400000555545545_4540_q.jpg,400000555545455|zszllz Zzrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/45454_400000555545455_5055_q.jpg,400000555555554|rz-rz Kzsz Lzslzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55505_400000555555554_5445504_q.jpg,400000545550444|Z<>nzkz Kzsznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45540_400000545550444_5455_q.jpg,400000545555445|zsrZzn zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc4/45555_400000545555445_5554_q.jpg
|
|
||||||
,400000554555450|Zzzzz zdzzrdz rzrrzzs zrrzlzdz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54554_400000554555450_5005445_q.jpg,400000555545004|Dzzsy Zzsrzz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4455.snc5/455440_400000555545004_5554554_q.jpg,400000554555044|rrzncz Gzrrzsszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_400000554555044_5454444_q.jpg,400000555550405|Zzrzznnz Zzrcrzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc4/45554_400000555550405_4555_q.jpg,400000555555555|Szkz Yzrzkz rzrz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554.snc4/45455_400000555555555_4555_q.jpg,400004004554500|Czrzl Dzvzzs s|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc4/45455_400004004554500_545_q.jpg,400004045555454|zkzsz-znz zszlzznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc4/45555_400004045555454_4454_q.jpg,400004055545445|rzssy rlzzZ|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.snc4/45555_400004055545445_4440_q.jpg,400004405554454|rzcqzzlznz Rzzz
|
|
||||||
z|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.snc5/54455_400004405554454_5555_q.jpg,400004444455455|znzz szrrznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54555_400004444455455_5544444_q.jpg,400004444555055|Gzrrzrd zpzl|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54554_400004444555055_5545_q.jpg,400004455555445|rzly Zzlz zkzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs545.zsr4/45505_400004455555445_455_q.jpg,400004445455544|zxzl Kzsprzzk|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.zsr4/54554_400004445455544_5054_q.jpg,400004445455404|Yzznn P<>sr<73>|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55555_400004445455404_4440555_q.jpg,400004455450554|zd dz rzgzr|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs444.snc5/54554_400004455450554_5445405_q.jpg,400004455440555|Lzzrz Pzsszcznz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55045_400004455440555_5454454_q.jpg,400004555554454|zdzzrdz zsszvzz Czzsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs554
|
|
||||||
.snc5/55544_400004555554454_5445_q.jpg,400004540044550|Pzzrl Rzvzr zkzszs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/50054_400004540044550_5555_q.jpg,400004554555550|rzznz Czrzn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54505_400004554555550_5455444_q.jpg', amisjoueurs='4445545455|Pzsczl Vzsznszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs445.snc5/54500_4445545455_5455_q.jpg,4445555555|zlzznz zsz Vzsznszn|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs555.snc5/55554_4445555555_5455505_q.jpg,4445554544|Szvgz Kzszcz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs455.snc5/54555_4445554544_5554_q.jpg,4450445555|Szrz Wzrsz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs4445.snc5/455405_4450445555_455550_q.jpg,4544450555|Szprzz Vzrvzlckz|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs454.zsr4/54555_4544450555_5445_q.jpg,4540554404|Gznzvzzvz zrnzlzs|http://przrzlz.zk.hidden.com/rprzrzlz-zk-snc5/rs544.zsr4/455540_4540554404_4405544_q.jpg',
|
|
||||||
jour = 4455555044;
|
|
@@ -1,166 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
|
||||||
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
|
||||||
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
|
||||||
};
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings FATAL => 'all';
|
|
||||||
use English qw(-no_match_vars);
|
|
||||||
use Test::More tests => 13;
|
|
||||||
|
|
||||||
use PerconaTest;
|
|
||||||
require "$trunk/bin/pt-query-advisor";
|
|
||||||
|
|
||||||
my @args = qw(--print-all --report-format full --group-by none --query);
|
|
||||||
my $query;
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Literals.
|
|
||||||
# #############################################################################
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'SELECT ip FROM tbl WHERE ip="127.0.0.1"') },
|
|
||||||
't/pt-query-advisor/samples/lit-001.txt',
|
|
||||||
),
|
|
||||||
'LIT.001 "IP"'
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'SELECT c FROM tbl WHERE c < 2010-02-15') },
|
|
||||||
't/pt-query-advisor/samples/lit-002-01.txt',
|
|
||||||
),
|
|
||||||
'LIT.002 YYYY-MM-DD'
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'SELECT c FROM tbl WHERE c=20100215') },
|
|
||||||
't/pt-query-advisor/samples/lit-002-02.txt',
|
|
||||||
),
|
|
||||||
'LIT.002 YYYYMMDD'
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Table list.
|
|
||||||
# #############################################################################
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'SELECT * FROM tbl WHERE id=1') },
|
|
||||||
't/pt-query-advisor/samples/tbl-001-01.txt',
|
|
||||||
),
|
|
||||||
'TBL.001 *'
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'SELECT tbl.* FROM tbl WHERE id=2') },
|
|
||||||
't/pt-query-advisor/samples/tbl-001-02.txt',
|
|
||||||
),
|
|
||||||
'TBL.001 tbl.*'
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'SELECT tbl.* foo, bar FROM tbl WHERE id=1') },
|
|
||||||
't/pt-query-advisor/samples/tbl-002-01.txt',
|
|
||||||
),
|
|
||||||
'TBL.002 tbl.* foo'
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'SELECT tbl.* AS foo, bar FROM tbl WHERE id=2') },
|
|
||||||
't/pt-query-advisor/samples/tbl-002-02.txt',
|
|
||||||
),
|
|
||||||
'TBL.002 tbl.* AS foo'
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Query.
|
|
||||||
# #############################################################################
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'insert into foo values ("bar")') },
|
|
||||||
't/pt-query-advisor/samples/qry-001-01.txt',
|
|
||||||
),
|
|
||||||
'QRY.001 INSERT'
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'replace into foo values ("bar")') },
|
|
||||||
't/pt-query-advisor/samples/qry-001-02.txt',
|
|
||||||
),
|
|
||||||
'QRY.001 REPLACE'
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Subqueries.
|
|
||||||
# #############################################################################
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'select t from w where i=1 or i in (select * from j)') },
|
|
||||||
't/pt-query-advisor/samples/sub-001-01.txt',
|
|
||||||
),
|
|
||||||
'SUB.001'
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# JOIN stuff.
|
|
||||||
# #############################################################################
|
|
||||||
|
|
||||||
$query = "SELECT * FROM `wibble_chapter`
|
|
||||||
INNER JOIN `wibble_series` AS `wibble_chapter__series`
|
|
||||||
ON `wibble_chapter`.`series_id` = `wibble_chapter__series`.`id`,
|
|
||||||
`wibble_series`,
|
|
||||||
`auth_user`
|
|
||||||
WHERE ( `wibble_chapter`.`chapnum` = 63.0
|
|
||||||
AND `wibble_chapter`.`status` = 1
|
|
||||||
AND `wibble_chapter__series`.`title` = 'bibble' )
|
|
||||||
AND `wibble_chapter`.`series_id` = `wibble_series`.`id`
|
|
||||||
AND `wibble_series`.`poster_id` = `auth_user`.`id`
|
|
||||||
ORDER BY `wibble_chapter`.`create_time` DESC
|
|
||||||
LIMIT 1";
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args, $query) },
|
|
||||||
't/pt-query-advisor/samples/joi-001-002-01.txt',
|
|
||||||
),
|
|
||||||
'JOI.001 and JOI.002'
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# CLA.* rules
|
|
||||||
# #############################################################################
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'select id from tbl1 join tbl2 using (a) group by tbl1.id, tbl2.id') },
|
|
||||||
't/pt-query-advisor/samples/cla-006-01.txt',
|
|
||||||
),
|
|
||||||
'CLA.001 and CLA.006'
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
'select c1, c2 from t where i=1 order by c1 desc, c2 asc') },
|
|
||||||
't/pt-query-advisor/samples/cla-007-01.txt',
|
|
||||||
),
|
|
||||||
'CLA.007'
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Done.
|
|
||||||
# #############################################################################
|
|
||||||
exit;
|
|
@@ -1,76 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
|
||||||
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
|
||||||
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
|
||||||
};
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings FATAL => 'all';
|
|
||||||
use English qw(-no_match_vars);
|
|
||||||
use Test::More;
|
|
||||||
|
|
||||||
use PerconaTest;
|
|
||||||
use Sandbox;
|
|
||||||
require "$trunk/bin/pt-query-advisor";
|
|
||||||
|
|
||||||
my $dp = new DSNParser(opts=>$dsn_opts);
|
|
||||||
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
|
|
||||||
my $dbh = $sb->get_dbh_for('master');
|
|
||||||
|
|
||||||
if ( !$dbh ) {
|
|
||||||
plan skip_all => 'Cannot connect to sandbox master';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
plan tests => 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $output = "";
|
|
||||||
my $cnf = "/tmp/12345/my.sandbox.cnf";
|
|
||||||
my @args = ('-F', $cnf, '-D', 'test');
|
|
||||||
|
|
||||||
$sb->create_dbs($dbh, ['test']);
|
|
||||||
$sb->load_file('master', "t/pt-query-advisor/samples/issue-950.sql", "test");
|
|
||||||
|
|
||||||
my $query = "select c from L left join R on l_id = r_id where r_other is null";
|
|
||||||
$output = output(
|
|
||||||
sub { pt_query_advisor::main(@args, '--query', $query) },
|
|
||||||
);
|
|
||||||
like(
|
|
||||||
$output,
|
|
||||||
qr/JOI.004/,
|
|
||||||
"JOI.004"
|
|
||||||
);
|
|
||||||
|
|
||||||
$output = output(
|
|
||||||
sub { pt_query_advisor::main(@args, '--query', $query,
|
|
||||||
'--no-show-create-table') },
|
|
||||||
);
|
|
||||||
is(
|
|
||||||
$output,
|
|
||||||
"",
|
|
||||||
"JOI.004 doesn't work with --no-show-create-table"
|
|
||||||
);
|
|
||||||
|
|
||||||
$output = output(
|
|
||||||
sub { pt_query_advisor::main(@args, '--query', $query,
|
|
||||||
'--no-show-create-table', '--print-all') },
|
|
||||||
);
|
|
||||||
is(
|
|
||||||
$output,
|
|
||||||
"
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0xE697459A77FBF34F 0 0 0 select c from l left join r on l_id = r_id where r_other is ?
|
|
||||||
",
|
|
||||||
"--print-all shows 0/0/0 item"
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Done.
|
|
||||||
# #############################################################################
|
|
||||||
$sb->wipe_clean($dbh);
|
|
||||||
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
|
|
||||||
exit;
|
|
@@ -1,49 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
|
||||||
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
|
||||||
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
|
||||||
};
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings FATAL => 'all';
|
|
||||||
use English qw(-no_match_vars);
|
|
||||||
use Test::More tests => 3;
|
|
||||||
|
|
||||||
use PerconaTest;
|
|
||||||
require "$trunk/bin/pt-query-advisor";
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(
|
|
||||||
sub { pt_query_advisor::main(
|
|
||||||
qw(--group-by none),
|
|
||||||
"$trunk/t/pt-query-advisor/samples/slow001.txt",) },
|
|
||||||
"t/pt-query-advisor/samples/group-by-none-001.txt",
|
|
||||||
),
|
|
||||||
"group by none"
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(
|
|
||||||
sub { pt_query_advisor::main(
|
|
||||||
"$trunk/t/pt-query-advisor/samples/slow001.txt",) },
|
|
||||||
"t/pt-query-advisor/samples/group-by-rule-id-001.txt",
|
|
||||||
),
|
|
||||||
"group by rule id (default)"
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(
|
|
||||||
sub { pt_query_advisor::main(
|
|
||||||
qw(--group-by query_id),
|
|
||||||
"$trunk/t/pt-query-advisor/samples/slow001.txt",) },
|
|
||||||
"t/pt-query-advisor/samples/group-by-query-id-001.txt",
|
|
||||||
),
|
|
||||||
"group by query_id"
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Done.
|
|
||||||
# #############################################################################
|
|
||||||
exit;
|
|
@@ -1,31 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
|
||||||
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
|
||||||
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
|
||||||
};
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings FATAL => 'all';
|
|
||||||
use English qw(-no_match_vars);
|
|
||||||
use Test::More tests => 1;
|
|
||||||
|
|
||||||
use PerconaTest;
|
|
||||||
require "$trunk/bin/pt-query-advisor";
|
|
||||||
|
|
||||||
my @args = qw(--print-all --report-format full --group-by none);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(sub { pt_query_advisor::main(@args,
|
|
||||||
qw(--ignore-rules COL.001),
|
|
||||||
'--query', 'SELECT * FROM tbl WHERE id=1') },
|
|
||||||
't/pt-query-advisor/samples/tbl-001-01-ignored.txt',
|
|
||||||
),
|
|
||||||
'Ignore a rule'
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Done.
|
|
||||||
# #############################################################################
|
|
||||||
exit;
|
|
@@ -1,67 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
|
||||||
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
|
||||||
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
|
||||||
};
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings FATAL => 'all';
|
|
||||||
use English qw(-no_match_vars);
|
|
||||||
use Test::More;
|
|
||||||
|
|
||||||
use PerconaTest;
|
|
||||||
require "$trunk/bin/pt-query-advisor";
|
|
||||||
|
|
||||||
my $output;
|
|
||||||
my @args = ();
|
|
||||||
my $sample = "$trunk/t/lib/samples/";
|
|
||||||
|
|
||||||
$output = output(
|
|
||||||
sub { pt_query_advisor::main(@args, "$sample/slowlogs/slow018.txt") },
|
|
||||||
);
|
|
||||||
like(
|
|
||||||
$output,
|
|
||||||
qr/COL.002/,
|
|
||||||
"Parse slowlog"
|
|
||||||
);
|
|
||||||
|
|
||||||
$output = output(
|
|
||||||
sub { pt_query_advisor::main(@args, qw(--type genlog),
|
|
||||||
"$sample/genlogs/genlog001.txt") },
|
|
||||||
);
|
|
||||||
like(
|
|
||||||
$output,
|
|
||||||
qr/CLA.005/,
|
|
||||||
"Parse genlog"
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# pt-query-advisor hangs on big queries
|
|
||||||
# https://bugs.launchpad.net/percona-toolkit/+bug/823431
|
|
||||||
# #############################################################################
|
|
||||||
|
|
||||||
my $exit_status;
|
|
||||||
$output = output(
|
|
||||||
sub { $exit_status = pt_query_advisor::main(@args,
|
|
||||||
"$sample/bug_823431.log")
|
|
||||||
},
|
|
||||||
stderr => 1
|
|
||||||
);
|
|
||||||
|
|
||||||
ok(
|
|
||||||
!$exit_status,
|
|
||||||
"Bug 823431: ptqa doesn't hang on a big query"
|
|
||||||
);
|
|
||||||
|
|
||||||
is(
|
|
||||||
$output,
|
|
||||||
'',
|
|
||||||
"Bug 823431: ptqa doesn't hang on a big query and doesn't find an incorrect rule"
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Done.
|
|
||||||
# #############################################################################
|
|
||||||
done_testing;
|
|
@@ -1,99 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
|
||||||
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
|
||||||
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
|
||||||
};
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings FATAL => 'all';
|
|
||||||
use English qw(-no_match_vars);
|
|
||||||
use Test::More;
|
|
||||||
|
|
||||||
use PerconaTest;
|
|
||||||
use Sandbox;
|
|
||||||
require "$trunk/bin/pt-query-advisor";
|
|
||||||
|
|
||||||
my $dp = new DSNParser(opts=>$dsn_opts);
|
|
||||||
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
|
|
||||||
my $dbh = $sb->get_dbh_for('master');
|
|
||||||
|
|
||||||
if ( !$dbh ) {
|
|
||||||
plan skip_all => 'Cannot connect to sandbox master';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
plan tests => 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $output = "";
|
|
||||||
my $cnf = "/tmp/12345/my.sandbox.cnf";
|
|
||||||
my @args = (qw(--print-all --report-format full --group-by none --review), "F=$cnf,D=test,t=query_review");
|
|
||||||
|
|
||||||
my $review_tbl = "CREATE TABLE query_review (
|
|
||||||
checksum BIGINT UNSIGNED NOT NULL PRIMARY KEY,
|
|
||||||
fingerprint TEXT NOT NULL,
|
|
||||||
sample TEXT NOT NULL,
|
|
||||||
first_seen DATETIME,
|
|
||||||
last_seen DATETIME,
|
|
||||||
reviewed_by VARCHAR(20),
|
|
||||||
reviewed_on DATETIME,
|
|
||||||
comments TEXT
|
|
||||||
)";
|
|
||||||
|
|
||||||
$dbh->do('drop database if exists `test`');
|
|
||||||
$dbh->do('create database `test`');
|
|
||||||
$dbh->do('use `test`');
|
|
||||||
$dbh->do($review_tbl);
|
|
||||||
|
|
||||||
# Make sure it handles an empty review table.
|
|
||||||
$output = output(
|
|
||||||
sub { pt_query_advisor::main(@args) },
|
|
||||||
);
|
|
||||||
is(
|
|
||||||
$output,
|
|
||||||
"",
|
|
||||||
"Empty --review table"
|
|
||||||
);
|
|
||||||
|
|
||||||
$dbh->do("insert into test.query_review values
|
|
||||||
(1, 'select * from tbl where id=? order by col',
|
|
||||||
'select * from tbl where id=42 order by col',
|
|
||||||
NOW(), NOW(), NULL, NULL, NULL)");
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(
|
|
||||||
sub { pt_query_advisor::main(@args) },
|
|
||||||
"t/pt-query-advisor/samples/review001.txt",
|
|
||||||
),
|
|
||||||
"--review with one bad query"
|
|
||||||
);
|
|
||||||
|
|
||||||
$dbh->do("insert into test.query_review values
|
|
||||||
(2, 'select col from tbl2 where id=? order by col limit ?',
|
|
||||||
'select col from tbl2 where id=52 order by col limit 10',
|
|
||||||
NOW(), NOW(), NULL, NULL, NULL)");
|
|
||||||
|
|
||||||
ok(
|
|
||||||
no_diff(
|
|
||||||
sub { pt_query_advisor::main(@args) },
|
|
||||||
"t/pt-query-advisor/samples/review002.txt",
|
|
||||||
),
|
|
||||||
"--review with 1 bad, 1 good query"
|
|
||||||
);
|
|
||||||
|
|
||||||
# That that --where works.
|
|
||||||
ok(
|
|
||||||
no_diff(
|
|
||||||
sub { pt_query_advisor::main(@args, qw(--where checksum=1)) },
|
|
||||||
"t/pt-query-advisor/samples/review001.txt",
|
|
||||||
),
|
|
||||||
"--review with --where"
|
|
||||||
);
|
|
||||||
|
|
||||||
# #############################################################################
|
|
||||||
# Done.
|
|
||||||
# #############################################################################
|
|
||||||
$sb->wipe_clean($dbh);
|
|
||||||
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
|
|
||||||
exit;
|
|
@@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0xAED2E885BDADA166 at byte 0
|
|
||||||
# WARN CLA.001 SELECT without WHERE.
|
|
||||||
# WARN CLA.006 GROUP BY or ORDER BY on different tables.
|
|
||||||
select id from tbl1 join tbl2 using (a) group by tbl1.id, tbl2.id
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0xAED2E885BDADA166 0 2 0 select id from tbl? join tbl? using (a) group by tbl?id, tbl?id
|
|
@@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0xBA2547D924C5140D at byte 0
|
|
||||||
# WARN CLA.007 ORDER BY clauses that sort the results in different directions prevents indexes from being used.
|
|
||||||
select c1, c2 from t where i=1 order by c1 desc, c2 asc
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0xBA2547D924C5140D 0 1 0 select c?, c? from t where i=? order by c? desc, c?
|
|
@@ -1,35 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0xADCE32553F5D5859 at byte 0
|
|
||||||
# WARN CLA.001 SELECT without WHERE.
|
|
||||||
# NOTE COL.001 SELECT *.
|
|
||||||
select * from tbl
|
|
||||||
|
|
||||||
# Query ID 0x63C84ABE631F3CD0 at byte 191
|
|
||||||
# Also: CLA.001 COL.001
|
|
||||||
select * from tbl order by a
|
|
||||||
|
|
||||||
# Query ID 0xB79802214165F670 at byte 297
|
|
||||||
# NOTE COL.002 Blind INSERT.
|
|
||||||
insert into tbl values (null, 1, 'foo')
|
|
||||||
|
|
||||||
# Query ID 0xEEA4D551871CCDC4 at byte 414
|
|
||||||
# Also: COL.002
|
|
||||||
replace into tbl2 values (1, '2', 'bar')
|
|
||||||
|
|
||||||
# Query ID 0x52BAD5F0BF97EA19 at byte 532
|
|
||||||
# WARN RES.001 Non-deterministic GROUP BY.
|
|
||||||
select a, b, c from x where id<1000 group by a, b
|
|
||||||
|
|
||||||
# Query ID 0x01BF72F436E936F1 at byte 659
|
|
||||||
# Also: RES.001
|
|
||||||
select x, y, z from foo where id>1000 group by x, y
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0x01BF72F436E936F1 0 1 0 select x, y, z from foo where id>? group by x, y
|
|
||||||
# 0x52BAD5F0BF97EA19 0 1 0 select a, b, c from x where id<? group by a, b
|
|
||||||
# 0x63C84ABE631F3CD0 1 1 0 select * from tbl order by a
|
|
||||||
# 0xADCE32553F5D5859 1 1 0 select * from tbl
|
|
||||||
# 0xB79802214165F670 1 0 0 insert into tbl values(?+)
|
|
||||||
# 0xEEA4D551871CCDC4 1 0 0 replace into tbl? values(?+)
|
|
@@ -1,22 +0,0 @@
|
|||||||
|
|
||||||
0x01BF72F436E936F1 RES.001
|
|
||||||
|
|
||||||
0x52BAD5F0BF97EA19 RES.001
|
|
||||||
|
|
||||||
0x63C84ABE631F3CD0 CLA.001 COL.001
|
|
||||||
|
|
||||||
0xADCE32553F5D5859 CLA.001 COL.001
|
|
||||||
|
|
||||||
0xB79802214165F670 COL.002
|
|
||||||
|
|
||||||
0xEEA4D551871CCDC4 COL.002
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0x01BF72F436E936F1 0 1 0 select x, y, z from foo where id>? group by x, y
|
|
||||||
# 0x52BAD5F0BF97EA19 0 1 0 select a, b, c from x where id<? group by a, b
|
|
||||||
# 0x63C84ABE631F3CD0 1 1 0 select * from tbl order by a
|
|
||||||
# 0xADCE32553F5D5859 1 1 0 select * from tbl
|
|
||||||
# 0xB79802214165F670 1 0 0 insert into tbl values(?+)
|
|
||||||
# 0xEEA4D551871CCDC4 1 0 0 replace into tbl? values(?+)
|
|
@@ -1,18 +0,0 @@
|
|||||||
|
|
||||||
CLA.001 0x63C84ABE631F3CD0 0xADCE32553F5D5859
|
|
||||||
|
|
||||||
COL.001 0x63C84ABE631F3CD0 0xADCE32553F5D5859
|
|
||||||
|
|
||||||
COL.002 0xB79802214165F670 0xEEA4D551871CCDC4
|
|
||||||
|
|
||||||
RES.001 0x01BF72F436E936F1 0x52BAD5F0BF97EA19
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0x01BF72F436E936F1 0 1 0 select x, y, z from foo where id>? group by x, y
|
|
||||||
# 0x52BAD5F0BF97EA19 0 1 0 select a, b, c from x where id<? group by a, b
|
|
||||||
# 0x63C84ABE631F3CD0 1 1 0 select * from tbl order by a
|
|
||||||
# 0xADCE32553F5D5859 1 1 0 select * from tbl
|
|
||||||
# 0xB79802214165F670 1 0 0 insert into tbl values(?+)
|
|
||||||
# 0xEEA4D551871CCDC4 1 0 0 replace into tbl? values(?+)
|
|
@@ -1,11 +0,0 @@
|
|||||||
use test;
|
|
||||||
create table L (
|
|
||||||
l_id int not null primary key
|
|
||||||
);
|
|
||||||
insert into L(l_id) values(1),(2),(3);
|
|
||||||
|
|
||||||
create table R (
|
|
||||||
r_id int not null primary key,
|
|
||||||
r_other int NULL -- notice that this is NULL-able
|
|
||||||
);
|
|
||||||
insert into R(r_id, r_other) values(1, 5), (2, NULL);
|
|
@@ -1,22 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0x95718954DB8B7620 at byte 0
|
|
||||||
# NOTE COL.001 SELECT *.
|
|
||||||
# CRIT JOI.001 Mixing comma and ANSI joins.
|
|
||||||
# CRIT JOI.002 A table is joined twice.
|
|
||||||
SELECT * FROM `wibble_chapter`
|
|
||||||
INNER JOIN `wibble_series` AS `wibble_chapter__series`
|
|
||||||
ON `wibble_chapter`.`series_id` = `wibble_chapter__series`.`id`,
|
|
||||||
`wibble_series`,
|
|
||||||
`auth_user`
|
|
||||||
WHERE ( `wibble_chapter`.`chapnum` = 63.0
|
|
||||||
AND `wibble_chapter`.`status` = 1
|
|
||||||
AND `wibble_chapter__series`.`title` = 'bibble' )
|
|
||||||
AND `wibble_chapter`.`series_id` = `wibble_series`.`id`
|
|
||||||
AND `wibble_series`.`poster_id` = `auth_user`.`id`
|
|
||||||
ORDER BY `wibble_chapter`.`create_time` DESC
|
|
||||||
LIMIT 1
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0x95718954DB8B7620 1 0 2 select * from `wibble_chapter` inner join `wibble_series` as `wibble_chapter__series` on `wibble_chapter`.`series_id` = `wibble_chapter__series`.`id`, `wibble_series`, `auth_user` where ( `wibble_chapter`.`chapnum` = ? and `wibble_chapter`.`status` = ? and `wibble_chapter__series`.`title` = ? ) and `wibble_chapter`.`series_id` = `wibble_series`.`id` and `wibble_series`.`poster_id` = `auth_user`.`id` order by `wibble_chapter`.`create_time` desc limit ?
|
|
@@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0xDFCCE9A43086FAFB at byte 0
|
|
||||||
# WARN LIT.001 Storing an IP address as characters.
|
|
||||||
# matches near: p="127.0.0.1"
|
|
||||||
SELECT ip FROM tbl WHERE ip="127.0.0.1"
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== =============================
|
|
||||||
# 0xDFCCE9A43086FAFB 0 1 0 select ip from tbl where ip=?
|
|
@@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0x0C74A51C7CA7AA15 at byte 0
|
|
||||||
# WARN LIT.002 Unquoted date/time literal.
|
|
||||||
# matches near: < 2010-02-15
|
|
||||||
SELECT c FROM tbl WHERE c < 2010-02-15
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== =============================
|
|
||||||
# 0x0C74A51C7CA7AA15 0 1 0 select c from tbl where c < ?
|
|
@@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0xE6F50A59C746B888 at byte 0
|
|
||||||
SELECT c FROM tbl WHERE c=20100215
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ===========================
|
|
||||||
# 0xE6F50A59C746B888 0 0 0 select c from tbl where c=?
|
|
@@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0xD2BA209E593ABAA7 at byte 0
|
|
||||||
# NOTE COL.002 Blind INSERT.
|
|
||||||
insert into foo values ("bar")
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================
|
|
||||||
# 0xD2BA209E593ABAA7 1 0 0 insert into foo values(?+)
|
|
@@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0x9DEC61FB7711A48B at byte 0
|
|
||||||
# NOTE COL.002 Blind INSERT.
|
|
||||||
replace into foo values ("bar")
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ===========================
|
|
||||||
# 0x9DEC61FB7711A48B 1 0 0 replace into foo values(?+)
|
|
@@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0x3ABB67240C860825 at byte 0
|
|
||||||
# NOTE COL.001 SELECT *.
|
|
||||||
select * from tbl where id=42 order by col
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== =========================================
|
|
||||||
# 0x3ABB67240C860825 1 0 0 select * from tbl where id=? order by col
|
|
@@ -1,13 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0x3ABB67240C860825 at byte 0
|
|
||||||
# NOTE COL.001 SELECT *.
|
|
||||||
select * from tbl where id=42 order by col
|
|
||||||
|
|
||||||
# Query ID 0xE6CB49B8022C078D at byte 0
|
|
||||||
select col from tbl2 where id=52 order by col limit 10
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0x3ABB67240C860825 1 0 0 select * from tbl where id=? order by col
|
|
||||||
# 0xE6CB49B8022C078D 0 0 0 select col from tbl? where id=? order by col limit ?
|
|
@@ -1,14 +0,0 @@
|
|||||||
# Query_time: 0.000012 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
|
|
||||||
select * from tbl;
|
|
||||||
# Query_time: 0.000012 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
|
|
||||||
select * from tbl;
|
|
||||||
# Query_time: 0.000012 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
|
|
||||||
select * from tbl order by a;
|
|
||||||
# Query_time: 0.000012 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
|
|
||||||
insert into tbl values (null, 1, 'foo');
|
|
||||||
# Query_time: 0.000012 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
|
|
||||||
replace into tbl2 values (1, '2', 'bar');
|
|
||||||
# Query_time: 0.000012 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
|
|
||||||
select a, b, c from x where id<1000 group by a, b;
|
|
||||||
# Query_time: 0.000012 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
|
|
||||||
select x, y, z from foo where id>1000 group by x, y;
|
|
@@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0xD6E9D91F645455DB at byte 0
|
|
||||||
# CRIT SUB.001 IN() and NOT IN() subqueries are poorly optimized.
|
|
||||||
# matches near: i in (select * from j)
|
|
||||||
select t from w where i=1 or i in (select * from j)
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0xD6E9D91F645455DB 0 0 1 select t from w where i=? or i in (select * from j)
|
|
@@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0xE182E0865F5BEEBB at byte 0
|
|
||||||
SELECT * FROM tbl WHERE id=1
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ============================
|
|
||||||
# 0xE182E0865F5BEEBB 0 0 0 select * from tbl where id=?
|
|
@@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0xE182E0865F5BEEBB at byte 0
|
|
||||||
# NOTE COL.001 SELECT *.
|
|
||||||
SELECT * FROM tbl WHERE id=1
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ============================
|
|
||||||
# 0xE182E0865F5BEEBB 1 0 0 select * from tbl where id=?
|
|
@@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0x34C93ACCCD015F48 at byte 0
|
|
||||||
# NOTE COL.001 SELECT *.
|
|
||||||
SELECT tbl.* FROM tbl WHERE id=2
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ================================
|
|
||||||
# 0x34C93ACCCD015F48 1 0 0 select tbl.* from tbl where id=?
|
|
@@ -1,11 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0x75364D6054FA40ED at byte 0
|
|
||||||
# NOTE ALI.001 Aliasing without the AS keyword.
|
|
||||||
# WARN ALI.002 Aliasing the '*' wildcard.
|
|
||||||
# NOTE COL.001 SELECT *.
|
|
||||||
SELECT tbl.* foo, bar FROM tbl WHERE id=1
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== =========================================
|
|
||||||
# 0x75364D6054FA40ED 2 1 0 select tbl.* foo, bar from tbl where id=?
|
|
@@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
# Query ID 0x31C7ABF526209286 at byte 0
|
|
||||||
# WARN ALI.002 Aliasing the '*' wildcard.
|
|
||||||
# NOTE COL.001 SELECT *.
|
|
||||||
SELECT tbl.* AS foo, bar FROM tbl WHERE id=2
|
|
||||||
|
|
||||||
# Profile
|
|
||||||
# Query ID NOTE WARN CRIT Item
|
|
||||||
# ================== ==== ==== ==== ==========================================
|
|
||||||
# 0x31C7ABF526209286 1 1 0 select tbl.* as foo, bar from tbl where id=?
|
|
Reference in New Issue
Block a user