35 changes: 10 additions & 25 deletions t/51-xml-to-oracle.t
Original file line number Diff line number Diff line change
Expand Up @@ -58,19 +58,19 @@ my $want = [
CONSTRAINT u_Basic_emailuniqueindex UNIQUE (email),
CONSTRAINT u_Basic_very_long_index_name_o UNIQUE (title)
)',
'DROP TABLE Another CASCADE CONSTRAINTS',
'DROP SEQUENCE sq_Another_id',
'CREATE SEQUENCE sq_Another_id',
'CREATE TABLE Another (
'DROP TABLE Another CASCADE CONSTRAINTS',
'DROP SEQUENCE sq_Another_id',
'CREATE SEQUENCE sq_Another_id',
'CREATE TABLE Another (
id number(10) NOT NULL,
num number(10,2),
PRIMARY KEY (id)
)',
'DROP VIEW email_list',
'CREATE VIEW email_list AS
'CREATE VIEW email_list AS
SELECT email FROM Basic WHERE (email IS NOT NULL)',
'ALTER TABLE Basic ADD CONSTRAINT Basic_another_id_fk FOREIGN KEY (another_id) REFERENCES Another (id)',
'CREATE OR REPLACE TRIGGER ai_Basic_id
'ALTER TABLE Basic ADD CONSTRAINT Basic_another_id_fk FOREIGN KEY (another_id) REFERENCES Another (id)',
'CREATE OR REPLACE TRIGGER ai_Basic_id
BEFORE INSERT ON Basic
FOR EACH ROW WHEN (
new.id IS NULL OR new.id = 0
Expand All @@ -81,14 +81,7 @@ BEGIN
FROM dual;
END;
',
'CREATE OR REPLACE TRIGGER ts_Basic_timest
BEFORE INSERT OR UPDATE ON Basic
FOR EACH ROW WHEN (new.timest IS NULL)
BEGIN
SELECT sysdate INTO :new.timest FROM dual;
END;
',
'CREATE OR REPLACE TRIGGER ai_Another_id
'CREATE OR REPLACE TRIGGER ai_Another_id
BEFORE INSERT ON Another
FOR EACH ROW WHEN (
new.id IS NULL OR new.id = 0
Expand All @@ -99,7 +92,7 @@ BEGIN
FROM dual;
END;
',
'CREATE INDEX titleindex on Basic (title)'];
'CREATE INDEX titleindex ON Basic (title)'];

is_deeply(\@sql, $want, 'Got correct Oracle statements in list context');

Expand Down Expand Up @@ -143,7 +136,7 @@ SELECT email FROM Basic WHERE (email IS NOT NULL);
ALTER TABLE Basic ADD CONSTRAINT Basic_another_id_fk01 FOREIGN KEY (another_id) REFERENCES Another (id);
CREATE INDEX titleindex01 on Basic (title);
CREATE INDEX titleindex01 ON Basic (title);
CREATE OR REPLACE TRIGGER ai_Basic_id01
BEFORE INSERT ON Basic
Expand All @@ -157,14 +150,6 @@ BEGIN
END;
/
CREATE OR REPLACE TRIGGER ts_Basic_timest01
BEFORE INSERT OR UPDATE ON Basic
FOR EACH ROW WHEN (new.timest IS NULL)
BEGIN
SELECT sysdate INTO :new.timest FROM dual;
END;
/
CREATE OR REPLACE TRIGGER ai_Another_id01
BEFORE INSERT ON Another
FOR EACH ROW WHEN (
Expand Down
41 changes: 13 additions & 28 deletions t/51-xml-to-oracle_quoted.t
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ my $sql_string = $sqlt->translate(

my $want = [
'DROP TABLE "Basic" CASCADE CONSTRAINTS',
'DROP SEQUENCE "sq_Basic_id"',
'CREATE SEQUENCE "sq_Basic_id"',
'CREATE TABLE "Basic" (
'DROP SEQUENCE "sq_Basic_id"',
'CREATE SEQUENCE "sq_Basic_id"',
'CREATE TABLE "Basic" (
"id" number(10) NOT NULL,
"title" varchar2(100) DEFAULT \'hello\' NOT NULL,
"description" clob DEFAULT \'\',
Expand All @@ -58,19 +58,19 @@ my $want = [
CONSTRAINT "u_Basic_emailuniqueindex" UNIQUE ("email"),
CONSTRAINT "u_Basic_very_long_index_name_o" UNIQUE ("title")
)',
'DROP TABLE "Another" CASCADE CONSTRAINTS',
'DROP SEQUENCE "sq_Another_id"',
'CREATE SEQUENCE "sq_Another_id"',
'CREATE TABLE "Another" (
'DROP TABLE "Another" CASCADE CONSTRAINTS',
'DROP SEQUENCE "sq_Another_id"',
'CREATE SEQUENCE "sq_Another_id"',
'CREATE TABLE "Another" (
"id" number(10) NOT NULL,
"num" number(10,2),
PRIMARY KEY ("id")
)',
'DROP VIEW "email_list"',
'CREATE VIEW "email_list" AS
'CREATE VIEW "email_list" AS
SELECT email FROM Basic WHERE (email IS NOT NULL)',
'ALTER TABLE "Basic" ADD CONSTRAINT "Basic_another_id_fk" FOREIGN KEY ("another_id") REFERENCES "Another" ("id")',
'CREATE OR REPLACE TRIGGER "ai_Basic_id"
'ALTER TABLE "Basic" ADD CONSTRAINT "Basic_another_id_fk" FOREIGN KEY ("another_id") REFERENCES "Another" ("id")',
'CREATE OR REPLACE TRIGGER "ai_Basic_id"
BEFORE INSERT ON "Basic"
FOR EACH ROW WHEN (
new."id" IS NULL OR new."id" = 0
Expand All @@ -81,14 +81,7 @@ BEGIN
FROM dual;
END;
',
'CREATE OR REPLACE TRIGGER "ts_Basic_timest"
BEFORE INSERT OR UPDATE ON "Basic"
FOR EACH ROW WHEN (new."timest" IS NULL)
BEGIN
SELECT sysdate INTO :new."timest" FROM dual;
END;
',
'CREATE OR REPLACE TRIGGER "ai_Another_id"
'CREATE OR REPLACE TRIGGER "ai_Another_id"
BEFORE INSERT ON "Another"
FOR EACH ROW WHEN (
new."id" IS NULL OR new."id" = 0
Expand All @@ -99,7 +92,7 @@ BEGIN
FROM dual;
END;
',
'CREATE INDEX "titleindex" on "Basic" ("title")'];
'CREATE INDEX "titleindex" ON "Basic" ("title")'];

is_deeply(\@sql, $want, 'Got correct Oracle statements in list context');

Expand Down Expand Up @@ -143,7 +136,7 @@ SELECT email FROM Basic WHERE (email IS NOT NULL);
ALTER TABLE "Basic" ADD CONSTRAINT "Basic_another_id_fk01" FOREIGN KEY ("another_id") REFERENCES "Another" ("id");
CREATE INDEX "titleindex01" on "Basic" ("title");
CREATE INDEX "titleindex01" ON "Basic" ("title");
CREATE OR REPLACE TRIGGER "ai_Basic_id01"
BEFORE INSERT ON "Basic"
Expand All @@ -157,14 +150,6 @@ BEGIN
END;
/
CREATE OR REPLACE TRIGGER "ts_Basic_timest01"
BEFORE INSERT OR UPDATE ON "Basic"
FOR EACH ROW WHEN (new."timest" IS NULL)
BEGIN
SELECT sysdate INTO :new."timest" FROM dual;
END;
/
CREATE OR REPLACE TRIGGER "ai_Another_id01"
BEFORE INSERT ON "Another"
FOR EACH ROW WHEN (
Expand Down
11 changes: 8 additions & 3 deletions t/55-oracle-producer.t
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,17 @@ use SQL::Translator::Producer::Oracle;
type => FOREIGN_KEY,
);

my ($table1_def, $trigger1_def,
my ($table1_def, $fk1_def, $trigger1_def,
$index1_def, $constraint1_def
) = SQL::Translator::Producer::Oracle::create_table($table1);

like($table1_def->[1], '/CONSTRAINT table1_fk_col1_fk_col2_fk FOREIGN KEY \(fk_col1, fk_col2\) REFERENCES table2 \(fk_col1, fk_col2\)/', 'correct "CONSTRAINT" SQL');

is_deeply(
$fk1_def,
[ 'ALTER TABLE table1 ADD CONSTRAINT table1_fk_col1_fk_col2_fk FOREIGN KEY (fk_col1, fk_col2) REFERENCES table2 (fk_col1, fk_col2)'
],
'correct "CREATE CONSTRAINT" SQL'
);

my $materialized_view = SQL::Translator::Schema::View->new(
name => 'matview',
sql => 'SELECT id, name FROM table3',
Expand Down