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,
64 'CREATE VIEW email_list AS
65 SELECT email FROM Basic WHERE (email IS NOT NULL)',
66 'ALTER TABLE Basic ADD CONSTRAINT Basic_another_id_fk FOREIGN KEY (another_id) REFERENCES Another (id)',
67 'CREATE OR REPLACE TRIGGER ai_Basic_id
68 BEFORE INSERT ON Basic
70 new.id IS NULL OR new.id = 0
73 SELECT sq_Basic_id.nextval
78 'CREATE OR REPLACE TRIGGER ts_Basic_timest
79 BEFORE INSERT OR UPDATE ON Basic
80 FOR EACH ROW WHEN (new.timest IS NULL)
82 SELECT sysdate INTO :new.timest FROM dual;
85 'CREATE OR REPLACE TRIGGER ai_Another_id
86 BEFORE INSERT ON Another
88 new.id IS NULL OR new.id = 0
91 SELECT sq_Another_id.nextval
96 'CREATE INDEX titleindex on Basic (title)'];
98 is_deeply(\@sql, $want, 'Got correct Oracle statements in list context');
100 is($sql_string, q|DROP TABLE Basic CASCADE CONSTRAINTS;
102 DROP SEQUENCE sq_Basic_id01;
104 CREATE SEQUENCE sq_Basic_id01;
107 id number(10) NOT NULL,
108 title varchar2(100) DEFAULT 'hello' NOT NULL,
109 description clob DEFAULT '',
111 explicitnulldef varchar2,
112 explicitemptystring varchar2 DEFAULT '',
113 emptytagdef varchar2 DEFAULT '',
114 another_id number(10) DEFAULT '2',
117 CONSTRAINT emailuniqueindex UNIQUE (email)
120 DROP TABLE Another CASCADE CONSTRAINTS;
122 DROP SEQUENCE sq_Another_id01;
124 CREATE SEQUENCE sq_Another_id01;
126 CREATE TABLE Another (
127 id number(10) NOT NULL,
131 CREATE VIEW email_list AS
132 SELECT email FROM Basic WHERE (email IS NOT NULL);
134 ALTER TABLE Basic ADD CONSTRAINT Basic_another_id_fk01 FOREIGN KEY (another_id) REFERENCES Another (id);
136 CREATE INDEX titleindex01 on Basic (title);
138 CREATE OR REPLACE TRIGGER ai_Basic_id01
139 BEFORE INSERT ON Basic
141 new.id IS NULL OR new.id = 0
144 SELECT sq_Basic_id01.nextval
150 CREATE OR REPLACE TRIGGER ts_Basic_timest01
151 BEFORE INSERT OR UPDATE ON Basic
152 FOR EACH ROW WHEN (new.timest IS NULL)
154 SELECT sysdate INTO :new.timest FROM dual;
158 CREATE OR REPLACE TRIGGER ai_Another_id01
159 BEFORE INSERT ON Another
161 new.id IS NULL OR new.id = 0
164 SELECT sq_Another_id01.nextval