~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to lib/GenTest/Transform/ExecuteAsView.pm

merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
use GenTest::Transform;
28
28
use GenTest::Constants;
29
29
 
 
30
 
30
31
sub transform {
31
32
        my ($class, $original_query, $executor) = @_;
32
33
 
33
 
        # Handle only SELECT statements but without subqueries
34
 
 
35
 
        my @selects = $original_query =~ m{(SELECT)}siog;
36
 
        return STATUS_WONT_HANDLE if $#selects != 0;
37
 
 
38
 
        return [
39
 
                "CREATE DATABASE IF NOT EXISTS views_db",
40
 
                "CREATE OR REPLACE VIEW views_db.view_$$ AS $original_query",
41
 
                "SELECT * FROM views_db.view_$$ /* TRANSFORM_OUTCOME_UNORDERED_MATCH */",
42
 
                "DROP VIEW IF EXISTS views_db.view_$$"
43
 
        ];
 
34
        if ($executor->execute("CREATE OR REPLACE VIEW view_".$$."_probe AS $original_query", 1)->err() > 0) {
 
35
                return STATUS_WONT_HANDLE;
 
36
        } else {
 
37
                return [
 
38
                        "CREATE OR REPLACE ALGORITHM=MERGE VIEW view_".$$."_merge AS $original_query",
 
39
                        "SELECT * FROM view_".$$."_merge /* TRANSFORM_OUTCOME_UNORDERED_MATCH */",
 
40
                        "CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW view_".$$."_temptable AS $original_query",
 
41
                        "SELECT * FROM view_".$$."_temptable /* TRANSFORM_OUTCOME_UNORDERED_MATCH */"
 
42
                ];
 
43
        }
44
44
}
45
45
 
46
46
1;