6 use Test::SQL::Translator;
10 use SQL::Translator::Schema::Constants;
13 maybe_plan(2, 'SQL::Translator::Parser::XML::SQLFairy',
14 'SQL::Translator::Producer::Oracle');
17 my $xmlfile = "$Bin/data/xml/schema.xml";
20 $sqlt = SQL::Translator->new(
26 die "Can't find test schema $xmlfile" unless -e $xmlfile;
28 my @sql = $sqlt->translate(
29 from => 'XML-SQLFairy',
32 ) or die $sqlt->error;
34 my $sql_string = $sqlt->translate(
35 from => 'XML-SQLFairy',
38 ) or die $sqlt->error;
41 'DROP TABLE Basic CASCADE CONSTRAINTS',
42 'DROP SEQUENCE sq_Basic_id',
43 'CREATE SEQUENCE sq_Basic_id',
45 id number(10) NOT NULL,
46 title varchar2(100) DEFAULT \'hello\' NOT NULL,
47 description clob DEFAULT \'\',
49 explicitnulldef varchar2,
50 explicitemptystring varchar2 DEFAULT \'\',
51 emptytagdef varchar2 DEFAULT \'\',
52 another_id number(10) DEFAULT \'2\',
55 CONSTRAINT emailuniqueindex UNIQUE (email)
57 'DROP TABLE Another CASCADE CONSTRAINTS',
58 'DROP SEQUENCE sq_Another_id',
59 'CREATE SEQUENCE sq_Another_id',
60 'CREATE TABLE Another (
61 id number(10) NOT NULL,
65 'CREATE VIEW email_list AS
66 SELECT email FROM Basic WHERE (email IS NOT NULL)',
67 'ALTER TABLE Basic ADD CONSTRAINT Basic_another_id_fk FOREIGN KEY (another_id) REFERENCES Another (id)',
68 'CREATE OR REPLACE TRIGGER ai_Basic_id
69 BEFORE INSERT ON Basic
71 new.id IS NULL OR new.id = 0
74 SELECT sq_Basic_id.nextval
79 'CREATE OR REPLACE TRIGGER ts_Basic_timest
80 BEFORE INSERT OR UPDATE ON Basic
81 FOR EACH ROW WHEN (new.timest IS NULL)
83 SELECT sysdate INTO :new.timest FROM dual;
86 'CREATE OR REPLACE TRIGGER ai_Another_id
87 BEFORE INSERT ON Another
89 new.id IS NULL OR new.id = 0
92 SELECT sq_Another_id.nextval
97 'CREATE INDEX titleindex on Basic (title)'];
99 is_deeply(\@sql, $want, 'Got correct Oracle statements in list context');
101 is($sql_string, q|DROP TABLE Basic CASCADE CONSTRAINTS;
103 DROP SEQUENCE sq_Basic_id01;
105 CREATE SEQUENCE sq_Basic_id01;
108 id number(10) NOT NULL,
109 title varchar2(100) DEFAULT 'hello' NOT NULL,
110 description clob DEFAULT '',
112 explicitnulldef varchar2,
113 explicitemptystring varchar2 DEFAULT '',
114 emptytagdef varchar2 DEFAULT '',
115 another_id number(10) DEFAULT '2',
118 CONSTRAINT emailuniqueindex UNIQUE (email)
121 DROP TABLE Another CASCADE CONSTRAINTS;
123 DROP SEQUENCE sq_Another_id01;
125 CREATE SEQUENCE sq_Another_id01;
127 CREATE TABLE Another (
128 id number(10) NOT NULL,
133 CREATE VIEW email_list AS
134 SELECT email FROM Basic WHERE (email IS NOT NULL);
136 ALTER TABLE Basic ADD CONSTRAINT Basic_another_id_fk01 FOREIGN KEY (another_id) REFERENCES Another (id);
138 CREATE INDEX titleindex01 on Basic (title);
140 CREATE OR REPLACE TRIGGER ai_Basic_id01
141 BEFORE INSERT ON Basic
143 new.id IS NULL OR new.id = 0
146 SELECT sq_Basic_id01.nextval
152 CREATE OR REPLACE TRIGGER ts_Basic_timest01
153 BEFORE INSERT OR UPDATE ON Basic
154 FOR EACH ROW WHEN (new.timest IS NULL)
156 SELECT sysdate INTO :new.timest FROM dual;
160 CREATE OR REPLACE TRIGGER ai_Another_id01
161 BEFORE INSERT ON Another
163 new.id IS NULL OR new.id = 0
166 SELECT sq_Another_id01.nextval