File: 72-sqlite-add-drop-fields.t

package info (click to toggle)
libsql-translator-perl 0.11011-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 15,380 kB
  • sloc: perl: 251,748; sql: 3,805; xml: 233; makefile: 7
file content (69 lines) | stat: -rw-r--r-- 1,365 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/env perl

use strict;
use warnings;

use Test::More tests => 4;
use Test::Differences;
use SQL::Translator;
use SQL::Translator::Parser::SQLite;
use SQL::Translator::Diff;


ok my $version1 = SQL::Translator->new(from=>'SQLite')
  ->translate(\<<SQL);
CREATE TABLE "Foo" (
  "foo" INTEGER PRIMARY KEY NOT NULL,
  "bar" VARCHAR(10) NOT NULL,
  "biff" VARCHAR(10)
);
SQL

ok my $version2 = SQL::Translator->new(from=>'SQLite')
  ->translate(\<<SQL);
CREATE TABLE "Foo" (
  "foo" INTEGER PRIMARY KEY NOT NULL,
  "bar" VARCHAR(10) NOT NULL,
  "baz" VARCHAR(10),
  "doomed" VARCHAR(10)
);
SQL

ok my $upgrade_sql = SQL::Translator::Diff->new({
  output_db     => 'SQLite',
  source_schema => $version1,
  target_schema => $version2,
})->compute_differences->produce_diff_sql;

eq_or_diff($upgrade_sql, <<'## END OF DIFF', "Diff as expected");
-- Convert schema '' to '':;

BEGIN;

CREATE TEMPORARY TABLE Foo_temp_alter (
  foo INTEGER PRIMARY KEY NOT NULL,
  bar VARCHAR(10) NOT NULL,
  baz VARCHAR(10),
  doomed VARCHAR(10)
);

INSERT INTO Foo_temp_alter( foo, bar) SELECT foo, bar FROM Foo;

DROP TABLE Foo;

CREATE TABLE Foo (
  foo INTEGER PRIMARY KEY NOT NULL,
  bar VARCHAR(10) NOT NULL,
  baz VARCHAR(10),
  doomed VARCHAR(10)
);

INSERT INTO Foo SELECT foo, bar, baz, doomed FROM Foo_temp_alter;

DROP TABLE Foo_temp_alter;


COMMIT;

## END OF DIFF