Commit | Line | Data |
1e54de2f |
1 | #!/usr/bin/env perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More tests => 4; |
7 | use Test::Differences; |
8 | use SQL::Translator; |
9 | use SQL::Translator::Parser::SQLite; |
10 | use SQL::Translator::Diff; |
11 | |
12 | |
13 | ok my $version1 = SQL::Translator->new(from=>'SQLite') |
14 | ->translate(\<<SQL); |
15 | CREATE TABLE "Foo" ( |
16 | "foo" INTEGER PRIMARY KEY NOT NULL, |
17 | "bar" VARCHAR(10) NOT NULL, |
18 | "biff" VARCHAR(10) |
19 | ); |
20 | SQL |
21 | |
22 | ok my $version2 = SQL::Translator->new(from=>'SQLite') |
23 | ->translate(\<<SQL); |
24 | CREATE TABLE "Foo" ( |
25 | "foo" INTEGER PRIMARY KEY NOT NULL, |
26 | "bar" VARCHAR(10) NOT NULL, |
27 | "baz" VARCHAR(10), |
28 | "doomed" VARCHAR(10) |
29 | ); |
30 | SQL |
31 | |
32 | ok my $upgrade_sql = SQL::Translator::Diff->new({ |
33 | output_db => 'SQLite', |
34 | source_schema => $version1, |
35 | target_schema => $version2, |
36 | })->compute_differences->produce_diff_sql; |
37 | |
38 | eq_or_diff($upgrade_sql, <<'## END OF DIFF', "Diff as expected"); |
39 | -- Convert schema '' to '':; |
40 | |
41 | BEGIN; |
42 | |
2d23c1e1 |
43 | CREATE TEMPORARY TABLE Foo_temp_alter ( |
44 | foo INTEGER PRIMARY KEY NOT NULL, |
45 | bar VARCHAR(10) NOT NULL, |
46 | baz VARCHAR(10), |
47 | doomed VARCHAR(10) |
1e54de2f |
48 | ); |
49 | |
2d23c1e1 |
50 | INSERT INTO Foo_temp_alter( foo, bar) SELECT foo, bar FROM Foo; |
1e54de2f |
51 | |
2d23c1e1 |
52 | DROP TABLE Foo; |
1e54de2f |
53 | |
2d23c1e1 |
54 | CREATE TABLE Foo ( |
55 | foo INTEGER PRIMARY KEY NOT NULL, |
56 | bar VARCHAR(10) NOT NULL, |
57 | baz VARCHAR(10), |
58 | doomed VARCHAR(10) |
1e54de2f |
59 | ); |
60 | |
2d23c1e1 |
61 | INSERT INTO Foo SELECT foo, bar, baz, doomed FROM Foo_temp_alter; |
1e54de2f |
62 | |
2d23c1e1 |
63 | DROP TABLE Foo_temp_alter; |
1e54de2f |
64 | |
65 | |
66 | COMMIT; |
67 | |
68 | ## END OF DIFF |
69 | |