~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to lib/GenTest/Validator/Transformer.pm

merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
 
38
38
sub BEGIN {
39
39
        @transformer_names = (
 
40
                'DisableChosenPlan',
 
41
                'ConvertSubqueriesToViews',
40
42
                'Count',
41
43
#               'DisableIndexes',
42
44
                'Distinct',
90
92
        my $original_result = $results->[0];
91
93
        my $original_query = $original_result->query();
92
94
 
93
 
        my ($transform_outcome, $transformed_query, $transformed_result) = $transformer->transformExecuteValidate($original_query, $original_result, $executor);
 
95
        my ($transform_outcome, $transformed_queries, $transformed_results) = $transformer->transformExecuteValidate($original_query, $original_result, $executor);
94
96
        return $transform_outcome if ($transform_outcome > STATUS_CRITICAL_FAILURE) || ($transform_outcome eq STATUS_OK);
95
97
 
96
98
        say("Original query: $original_query failed transformation with Transformer ".$transformer->name());
97
 
        say("Transformed query: $transformed_query");
 
99
        say("Transformed query: ".join('; ', @$transformed_queries));
 
100
 
 
101
        say(GenTest::Comparator::dumpDiff($original_result, $transformed_results->[0]));
 
102
 
 
103
        say("Simplifying...");
98
104
 
99
105
        my $simplifier_query = GenTest::Simplifier::SQL->new(
100
106
                oracle => sub {
103
109
 
104
110
                        return ORACLE_ISSUE_STATUS_UNKNOWN if $oracle_result->status() != STATUS_OK;
105
111
 
106
 
                        my ($oracle_outcome, $oracle_transformed_query, $oracle_transformed_result) = $transformer->transformExecuteValidate($oracle_query, $oracle_result, $executor);
 
112
                        my ($oracle_outcome, $oracle_transformed_queries, $oracle_transformed_results) = $transformer->transformExecuteValidate($oracle_query, $oracle_result, $executor);
107
113
 
108
114
                        if (
109
115
                                ($oracle_outcome == STATUS_CONTENT_MISMATCH) ||
131
137
 
132
138
        say("Simplified query: $simplified_query");
133
139
 
134
 
        my $simplified_transformed_query = $transformer->transform($simplified_query, $executor);
135
 
        $simplified_transformed_query = join('; ', @$simplified_transformed_query) if ref($simplified_transformed_query) eq 'ARRAY';
136
 
        say("Simplified transformed query: $simplified_transformed_query");
137
 
 
138
 
        my $simplified_transformed_result = $executor->execute($simplified_transformed_query, 1);
139
 
        if (defined $simplified_transformed_result->warnings()) {
 
140
        my ($transform_outcome, $simplified_transformed_queries, $simplified_transformed_results) = $transformer->transformExecuteValidate($simplified_query, $simplified_result, $executor);
 
141
 
 
142
        $simplified_transformed_queries = join('; ', @$simplified_transformed_queries) if ref($simplified_transformed_queries) eq 'ARRAY';
 
143
        say("Simplified transformed query: $simplified_transformed_queries");
 
144
 
 
145
        if (defined $simplified_transformed_results->[0]->warnings()) {
140
146
                say("Simplified transformed query produced warnings.");
141
147
#               return STATUS_WONT_HANDLE;
142
148
        }
143
149
 
144
 
        say(GenTest::Comparator::dumpDiff($simplified_result, $simplified_transformed_result));
 
150
        say(GenTest::Comparator::dumpDiff($simplified_result, $simplified_transformed_results->[0]));
145
151
 
146
152
        my $simplifier_test = GenTest::Simplifier::Test->new(
147
153
                executors => [ $executor ],
148
 
                queries => [ $simplified_query, $simplified_transformed_query ]
 
154
                results => [ [ $simplified_result, $simplified_transformed_results->[0] ] ],
 
155
                queries => [ $simplified_query, $simplified_transformed_queries ]
149
156
        );
150
157
 
151
158
        my $test = $simplifier_test->simplify();