Release commit for 1.62
[dbsrgits/SQL-Translator.git] / t / 44-xml-to-db2-array.t
CommitLineData
5e2c196a 1#!/usr/bin/perl
2use strict;
3
4use FindBin qw/$Bin/;
5use Test::More;
6use Test::SQL::Translator;
7use Test::Exception;
8use Data::Dumper;
9use SQL::Translator;
10use SQL::Translator::Schema::Constants;
11
12
13BEGIN {
14 maybe_plan(1, 'SQL::Translator::Parser::XML::SQLFairy',
15 'SQL::Translator::Producer::DB2');
16}
17
18my $xmlfile = "$Bin/data/xml/schema.xml";
19
20my $sqlt;
21$sqlt = SQL::Translator->new(
22 no_comments => 1,
9768b204 23 show_warnings => 0,
5e2c196a 24 add_drop_table => 1,
25);
26
27die "Can't find test schema $xmlfile" unless -e $xmlfile;
28
29my @sql = $sqlt->translate(
30 from => 'XML-SQLFairy',
31 to => 'DB2',
32 filename => $xmlfile,
33) or die $sqlt->error;
34
35my $want = [ 'DROP TABLE Basic;',
36q|CREATE TABLE Basic (
b08b5416 37 id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL,
38 title VARCHAR(100) NOT NULL DEFAULT 'hello',
39 description VARCHAR(0) DEFAULT '',
1022b157 40 email VARCHAR(500),
b08b5416 41 explicitnulldef VARCHAR(0),
42 explicitemptystring VARCHAR(0) DEFAULT '',
43 emptytagdef VARCHAR(0) DEFAULT '',
44 another_id INTEGER DEFAULT 2,
45 timest TIMESTAMP,
46 PRIMARY KEY (id),
3b9249fb 47 CONSTRAINT emailuniqueindex UNIQUE (email),
48 CONSTRAINT very_long_index_name_on_title_field_which_should_be_truncated_for_various_rdbms UNIQUE (title)
5e2c196a 49);|,
50
b08b5416 51'DROP TABLE Another;',
52
53q|CREATE TABLE Another (
54 id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL,
5ca2365a 55 num NUMERIC(10,2),
b08b5416 56 PRIMARY KEY (id)
57);|,
58
59'ALTER TABLE Basic ADD FOREIGN KEY (another_id) REFERENCES Another(id);',
60
5e2c196a 61'CREATE INDEX titleindex ON Basic ( title );',
62
63'CREATE VIEW email_list AS
3910f248 64SELECT email FROM Basic WHERE (email IS NOT NULL);',
5e2c196a 65
bc2ed06a 66'CREATE TRIGGER foo_trigger after insert ON Basic REFERENCING OLD AS oldrow NEW AS newrow FOR EACH ROW MODE DB2SQL update modified=timestamp();',
67
68'CREATE TRIGGER bar_trigger before insert, update ON Basic REFERENCING OLD AS oldrow NEW AS newrow FOR EACH ROW MODE DB2SQL update modified2=timestamp();',
5e2c196a 69];
70
08d91aad 71is_deeply(\@sql, $want, 'Got correct DB2 statements in list context');