[#1156] Bad inlining of DATE / TIME / TIMESTAMP data types in Ingres (and other dialects, when the setting differs from the default)

This commit is contained in:
Lukas Eder 2012-02-17 09:56:48 +00:00
parent 5c54b8d767
commit 283a43664e
27 changed files with 640 additions and 413 deletions

View File

@ -39,6 +39,7 @@ import static java.util.Arrays.asList;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNull;
import static junit.framework.Assert.fail;
import static org.jooq.SQLDialect.DERBY;
import static org.jooq.impl.Factory.field;
import static org.jooq.impl.Factory.param;
import static org.jooq.impl.Factory.vals;
@ -270,42 +271,44 @@ extends BaseTest<A, B, S, B2S, BS, L, X, D, T, U, I, IPK, T658, T725, T639, T785
@Test
public void testInlinedBindValues() throws Exception {
// [#1147] Some data types need special care when inlined
// [#1158] TODO get this working for derby as well
boolean derby = (getDialect() == DERBY);
// [#1147] Some data types need special care when inlined
String s1 = "test";
String s2 = "no SQL 'injection here; <<`'";
String s3 = "''";
String s4 = null;
String s4 = (derby ? s1 : null);
Byte b1 = Byte.valueOf("1");
Byte b2 = null;
Byte b2 = (derby ? b1 : null);
Short sh1 = Short.valueOf("2");
Short sh2 = null;
Short sh2 = (derby ? sh1 : null);
Integer i1 = 3;
Integer i2 = null;
Integer i2 = (derby ? i1 : null);
Long l1 = 4L;
Long l2 = null;
Long l2 = (derby ? l1 : null);
BigInteger bi1 = new BigInteger("5");
BigInteger bi2 = null;
BigInteger bi2 = (derby ? bi1 : null);
BigDecimal bd1 = new BigDecimal("6.01");
BigDecimal bd2 = null;
BigDecimal bd2 = (derby ? bd1 : null);
Double db1 = 7.25;
Double db2 = null;
Double db2 = (derby ? db1 : null);
Float f1 = 8.5f;
Float f2 = null;
Float f2 = (derby ? f1 : null);
Date d1 = Date.valueOf("1981-07-10");
Date d2 = null;
Date d2 = (derby ? d1 : null);
Time t1 = Time.valueOf("12:01:15");
Time t2 = null;
Time t2 = (derby ? t1 : null);
Timestamp ts1 = Timestamp.valueOf("1981-07-10 12:01:15");
Timestamp ts2 = null;
Timestamp ts2 = (derby ? ts1 : null);
byte[] by1 = "some bytes".getBytes();
byte[] by2 = null;
byte[] by2 = (derby ? by1 : null);
Boolean bool1 = true;
Boolean bool2 = false;
Boolean bool3 = null;
Boolean bool3 = (derby ? bool1 : null);
Factory create = create(new Settings()
.withExecution(new Execution()
@ -313,16 +316,21 @@ extends BaseTest<A, B, S, B2S, BS, L, X, D, T, U, I, IPK, T658, T725, T639, T785
Object[] array1 = create.select(vals(s1, s2, s3, s4)).fetchOneArray();
Object[] array2 = create.select(vals(b1, b2, sh1, sh2, i1, i2, l1, l2, bi1, bi2, bd1, bd2, db1, db2, f1, f2)).fetchOneArray();
Object[] array3 = create.select(vals(d1, d2, t1, t2, ts1, ts2)).fetchOneArray();
Object[] array4 = create.select(vals(by1, by2, bool1, bool2, bool3)).fetchOneArray();
assertEquals(4, array1.length);
assertEquals(16, array2.length);
assertEquals(6, array3.length);
assertEquals(5, array4.length);
assertEquals(asList(s1, s2, s3, s4), asList(array1));
assertEquals(asList((Number) b1, b2, sh1, sh2, i1, i2, l1, l2, bi1, bi2, bd1, bd2, db1, db2, f1, f2), asList(array2));
assertEquals(asList(d1, d2, t1, t2, ts1, ts2), asList(array3));
array4[0] = new String((byte[]) array4[0]);
assertEquals(asList(new String(by1), by2, bool1, bool2, bool3), asList(array4));
array4[1] = (derby ? new String((byte[]) array4[1]) : array4[1]);
assertEquals(asList(new String(by1), (derby ? new String(by2) : by2), bool1, bool2, bool3), asList(array4));
}
}

View File

@ -4,8 +4,8 @@ DROP VIEW v_book/
DROP PROCEDURE p_unused/
DROP PROCEDURE p_author_exists/
DROP PROCEDURE p_create_author/
DROP PROCEDURE p_create_author_by_name/
DROP PROCEDURE p_create_author/
DROP PROCEDURE p_create_author_by_name/
DROP PROCEDURE p391/
DROP FUNCTION f_author_exists/
DROP FUNCTION f_one/
@ -14,6 +14,7 @@ DROP FUNCTION f317/
DROP TRIGGER t_triggers_trigger/
DROP TABLE t_dates/
DROP TABLE t_triggers/
DROP TABLE t_book_to_book_store/
DROP TABLE t_book_store/
@ -44,7 +45,7 @@ DROP TABLE t_identity_pk/
CREATE TABLE t_identity_pk (
id INTEGER IDENTITY NOT NULL,
val int,
CONSTRAINT pk_t_identity_pk PRIMARY KEY (id)
)
/
@ -55,6 +56,18 @@ CREATE TABLE t_identity (
)
/
CREATE TABLE t_dates (
id int,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
one_zero int,
@ -76,7 +89,7 @@ CREATE TABLE t_triggers (
id_generated int IDENTITY not null,
id int null,
counter int null,
CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated)
)
/
@ -92,28 +105,28 @@ CREATE TABLE t_language (
description VARCHAR(50) NULL,
description_english VARCHAR(50) NULL,
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (id)
)
/
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -121,7 +134,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -129,7 +142,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -137,7 +150,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -162,7 +175,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
id int NOT NULL,
lob VARBINARY(500) NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -181,14 +194,14 @@ CREATE TABLE t_author (
date_of_birth DATE NULL,
year_of_birth INT NULL,
address VARCHAR(200) NULL,
CONSTRAINT pk_t_author PRIMARY KEY (id)
)
)
/
CREATE TABLE t_book_details (
id INT NOT NULL,
CONSTRAINT pk_t_book_details PRIMARY KEY (id)
)
/
@ -203,33 +216,33 @@ CREATE TABLE t_book (
language_id INT NOT NULL,
content_text text NULL,
content_pdf BINARY(400) NULL,
CONSTRAINT pk_t_book PRIMARY KEY (id),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (author_id) REFERENCES t_author(id),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (co_author_id) REFERENCES t_author(id),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (details_id) REFERENCES t_book_details(id),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (details_id) REFERENCES t_book_details(id),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (language_id) REFERENCES t_language(id)
)
/
CREATE TABLE t_book_store (
name VARCHAR(400) NOT NULL,
CONSTRAINT uk_t_book_store_name UNIQUE(name)
)
CONSTRAINT uk_t_book_store_name UNIQUE(name)
)
/
CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL,
book_id INTEGER NOT NULL,
stock INTEGER,
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name),
CONSTRAINT fk_b2bs_b_id FOREIGN KEY (book_id)
REFERENCES t_book (id)
)
)
/
CREATE TABLE x_unused (
@ -245,25 +258,25 @@ CREATE TABLE x_unused (
META_DATA INT,
TYPE0 INT,
PRIMARY_KEY INT,
PRIMARYKEY INT,
PRIMARYKEY INT,
[FIELD 737] DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES x_unused(ID, NAME)
)
)
/
CREATE TABLE t_986_1 (
REF INT,
CONSTRAINT pk_986 PRIMARY KEY(REF)
)
/
CREATE TABLE t_986_2 (
REF INT,
CONSTRAINT pk_986 PRIMARY KEY(REF)
)
/
@ -282,7 +295,7 @@ CREATE TABLE t_639_numbers_table (
BIG_DECIMAL DECIMAL(22, 5) NULL,
[FLOAT] REAL NULL,
[DOUBLE] DOUBLE PRECISION NULL,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
)
/
@ -290,26 +303,26 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
ID INT NOT NULL,
UNUSED_ID INT,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES x_unused(ID)
)
)
/
CREATE TABLE x_test_case_71 (
ID INT NOT NULL,
TEST_CASE_64_69_ID INT,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES x_test_case_64_69(ID)
)
)
/
CREATE TABLE x_test_case_85 (
id int NOT NULL,
x_unused_id int,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(id),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES x_unused(ID, NAME)
)

View File

@ -11,6 +11,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity/
DELETE FROM t_identity_pk/

View File

@ -1,7 +1,7 @@
DROP PROCEDURE p_unused/
DROP PROCEDURE p_author_exists/
DROP PROCEDURE p_create_author/
DROP PROCEDURE p_create_author_by_name/
DROP PROCEDURE p_unused/
DROP PROCEDURE p_author_exists/
DROP PROCEDURE p_create_author/
DROP PROCEDURE p_create_author_by_name/
DROP PROCEDURE p391/
DROP FUNCTION f_author_exists/
@ -15,6 +15,7 @@ DROP VIEW v_book/
DROP TRIGGER t_triggers_trigger/
DROP TABLE t_dates/
DROP TABLE t_triggers/
DROP TABLE t_book_to_book_store/
DROP TABLE t_book_store/
@ -45,7 +46,7 @@ DROP TABLE t_identity_pk/
CREATE TABLE t_identity_pk (
id INTEGER GENERATED BY DEFAULT AS IDENTITY,
val int,
CONSTRAINT pk_t_identity_pk PRIMARY KEY (id)
)
/
@ -56,6 +57,18 @@ CREATE TABLE t_identity (
)
/
CREATE TABLE t_dates (
id int not null,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int not null,
one_zero int,
@ -68,7 +81,7 @@ CREATE TABLE t_booleans (
vc_boolean varchar(1),
c_boolean char(1),
n_boolean int,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
@ -80,7 +93,7 @@ CREATE TABLE t_triggers (
id_generated int not null,
id int,
counter int,
CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated)
)
/
@ -92,7 +105,7 @@ REFERENCING NEW AS new
FOR EACH ROW
BEGIN
select s_trigger_id.nextval into new.id_generated from sysibm.dual;
set new.id = new.id_generated;
set new.counter = new.id_generated * 2;
END
@ -103,28 +116,28 @@ CREATE TABLE t_language (
description VARCHAR(50),
description_english VARCHAR(50),
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (ID)
)
/
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -132,7 +145,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -140,7 +153,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -148,7 +161,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -173,7 +186,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
ID int NOT NULL,
LOB BLOB NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -192,14 +205,14 @@ CREATE TABLE t_author (
DATE_OF_BIRTH DATE,
YEAR_OF_BIRTH INT,
ADDRESS VARCHAR(200),
CONSTRAINT pk_t_author PRIMARY KEY (ID)
)
/
CREATE TABLE t_book_details (
ID INT NOT NULL,
CONSTRAINT pk_t_book_details PRIMARY KEY (ID)
)
/
@ -214,11 +227,11 @@ CREATE TABLE t_book (
LANGUAGE_ID INT NOT NULL,
CONTENT_TEXT LONG VARCHAR,
CONTENT_PDF BLOB,
CONSTRAINT pk_t_book PRIMARY KEY (ID),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
)
/
@ -226,7 +239,7 @@ CREATE TABLE t_book (
CREATE TABLE t_book_store (
name VARCHAR(400) NOT NULL,
CONSTRAINT uk_t_book_store_name UNIQUE(name)
)
/
@ -235,7 +248,7 @@ CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL,
book_id INTEGER NOT NULL,
stock INTEGER,
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name)
@ -262,9 +275,9 @@ CREATE TABLE x_unused (
TYPE0 INT,
PRIMARY_KEY INT,
PRIMARYKEY INT,
NAME_REF VARCHAR(10),
NAME_REF VARCHAR(10),
"FIELD 737" DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES X_UNUSED(ID, NAME)
@ -273,7 +286,7 @@ CREATE TABLE x_unused (
CREATE TABLE t_986_1 (
REF INT NOT NULL,
CONSTRAINT pk_986 PRIMARY KEY(REF),
CONSTRAINT uk_986 UNIQUE(REF),
CONSTRAINT fk_986 FOREIGN KEY(REF) REFERENCES X_UNUSED(ID)
@ -282,7 +295,7 @@ CREATE TABLE t_986_1 (
CREATE TABLE t_986_2 (
REF INT NOT NULL,
CONSTRAINT pk_986 PRIMARY KEY(REF),
CONSTRAINT uk_986 UNIQUE(REF),
CONSTRAINT fk_986 FOREIGN KEY(REF) REFERENCES X_UNUSED(ID)
@ -302,7 +315,7 @@ CREATE TABLE t_639_numbers_table (
BIG_DECIMAL DECIMAL(22, 5),
"FLOAT" REAL,
"DOUBLE" DOUBLE,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
)
/
@ -310,7 +323,7 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
ID INT NOT NULL,
UNUSED_ID INT,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES X_UNUSED(ID)
)
@ -319,7 +332,7 @@ CREATE TABLE x_test_case_64_69 (
CREATE TABLE x_test_case_71 (
ID INT NOT NULL,
TEST_CASE_64_69_ID SMALLINT,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES X_TEST_CASE_64_69(ID)
)
@ -329,7 +342,7 @@ CREATE TABLE x_test_case_85 (
id int NOT NULL,
x_unused_id int,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES X_UNUSED(id, name)
)
@ -339,7 +352,7 @@ CREATE VIEW V_LIBRARY (AUTHOR, TITLE) AS
SELECT T_AUTHOR.FIRST_NAME || ' ' || T_AUTHOR.LAST_NAME, T_BOOK.TITLE
FROM T_AUTHOR JOIN T_BOOK ON T_BOOK.AUTHOR_ID = T_AUTHOR.ID
/
CREATE VIEW v_author AS
SELECT * FROM t_author
/
@ -356,7 +369,7 @@ END
/
CREATE PROCEDURE p_author_exists (IN author_name VARCHAR(50), OUT result INT) LANGUAGE SQL
BEGIN
BEGIN
SELECT COUNT(*) INTO result
FROM t_author
WHERE first_name LIKE author_name
@ -372,7 +385,7 @@ END
/
CREATE PROCEDURE p_create_author() LANGUAGE SQL
BEGIN
BEGIN
call {jdbc.Schema}.p_create_author_by_name('William', 'Shakespeare');
END
/
@ -389,17 +402,17 @@ BEGIN
END
/
CREATE FUNCTION f_author_exists (author_name varchar(50))
RETURNS INTEGER
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
RETURN
SELECT COUNT(*)
FROM t_author
WHERE first_name = author_name
OR last_name = author_name
CREATE FUNCTION f_author_exists (author_name varchar(50))
RETURNS INTEGER
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
RETURN
SELECT COUNT(*)
FROM t_author
WHERE first_name = author_name
OR last_name = author_name
/
CREATE FUNCTION f_one ()
@ -416,8 +429,8 @@ CREATE FUNCTION f_number (n integer)
RETURN n
/
CREATE FUNCTION f317 (p1 INTEGER, p2 INTEGER, p3 INTEGER, p4 INTEGER)
RETURNS INTEGER
CREATE FUNCTION f317 (p1 INTEGER, p2 INTEGER, p3 INTEGER, p4 INTEGER)
RETURNS INTEGER
LANGUAGE SQL
DETERMINISTIC
RETURN 1000 * p1 + 100 * p2 + p4

View File

@ -12,6 +12,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity/
DELETE FROM t_identity_pk/
@ -48,13 +49,13 @@ INSERT INTO t_book VALUES (3, 2, null, null, 'O Alquimista', 1988, 4, null, null
INSERT INTO t_book VALUES (4, 2, null, null, 'Brida', 1990, 2, null, null)
/
INSERT INTO t_book_store (name) VALUES
INSERT INTO t_book_store (name) VALUES
('Orell Füssli'),
('Ex Libris'),
('Buchhandlung im Volkshaus')
/
INSERT INTO t_book_to_book_store VALUES
INSERT INTO t_book_to_book_store VALUES
('Orell Füssli', 1, 10),
('Orell Füssli', 2, 10),
('Orell Füssli', 3, 10),

View File

@ -4,6 +4,7 @@ DROP VIEW v_library/
DROP TRIGGER t_triggers_trigger/
DROP TABLE t_dates/
DROP TABLE t_triggers/
DROP TABLE t_book_to_book_store/
DROP TABLE t_book_store/
@ -35,7 +36,7 @@ CREATE SCHEMA test AUTHORIZATION test
CREATE TABLE t_identity_pk (
id INTEGER GENERATED BY DEFAULT AS IDENTITY,
val int,
CONSTRAINT pk_t_identity_pk PRIMARY KEY (id)
)
/
@ -46,6 +47,18 @@ CREATE TABLE t_identity (
)
/
CREATE TABLE t_dates (
id int,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
one_zero int,
@ -58,7 +71,7 @@ CREATE TABLE t_booleans (
vc_boolean varchar(1),
c_boolean char(1),
n_boolean int,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
@ -67,7 +80,7 @@ CREATE TABLE t_triggers (
id_generated INTEGER GENERATED ALWAYS AS IDENTITY,
id int,
counter int,
CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated)
)
/
@ -77,7 +90,7 @@ AFTER INSERT
ON t_triggers
REFERENCING NEW AS new
FOR EACH ROW
update t_triggers
update t_triggers
set id = id_generated,
counter = id_generated * 2
/
@ -87,28 +100,28 @@ CREATE TABLE t_language (
description VARCHAR(50),
description_english VARCHAR(50),
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (ID)
)
/
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -116,7 +129,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -124,7 +137,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -132,7 +145,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -157,7 +170,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
ID int NOT NULL,
LOB BLOB,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -176,14 +189,14 @@ CREATE TABLE t_author (
DATE_OF_BIRTH DATE,
YEAR_OF_BIRTH INT,
ADDRESS VARCHAR(50),
CONSTRAINT pk_t_author PRIMARY KEY (ID)
)
/
CREATE TABLE t_book_details (
ID INT,
CONSTRAINT pk_t_book_details PRIMARY KEY (ID)
)
/
@ -198,11 +211,11 @@ CREATE TABLE t_book (
LANGUAGE_ID INT NOT NULL,
CONTENT_TEXT CLOB,
CONTENT_PDF BLOB,
CONSTRAINT pk_t_book PRIMARY KEY (ID),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
)
/
@ -210,7 +223,7 @@ CREATE TABLE t_book (
CREATE TABLE t_book_store (
name VARCHAR(400) NOT NULL,
CONSTRAINT uk_t_book_store_name UNIQUE(name)
)
/
@ -220,7 +233,7 @@ CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL,
book_id INTEGER NOT NULL,
stock INTEGER,
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name)
@ -245,9 +258,9 @@ CREATE TABLE x_unused (
TYPE0 INT,
PRIMARY_KEY INT,
PRIMARYKEY INT,
NAME_REF VARCHAR(10),
NAME_REF VARCHAR(10),
"FIELD 737" DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES X_UNUSED(ID, NAME)
@ -267,7 +280,7 @@ CREATE TABLE t_639_numbers_table (
BIG_DECIMAL DECIMAL(22, 5),
"FLOAT" REAL,
"DOUBLE" DOUBLE,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
)
/
@ -275,7 +288,7 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
ID INT NOT NULL,
UNUSED_ID INT,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES X_UNUSED(ID)
)
@ -284,7 +297,7 @@ CREATE TABLE x_test_case_64_69 (
CREATE TABLE x_test_case_71 (
ID INT NOT NULL,
TEST_CASE_64_69_ID INT,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES X_TEST_CASE_64_69(ID)
)
@ -294,7 +307,7 @@ CREATE TABLE x_test_case_85 (
id int NOT NULL,
x_unused_id int,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES X_UNUSED(id, name)
)
@ -304,7 +317,7 @@ CREATE VIEW V_LIBRARY (AUTHOR, TITLE) AS
SELECT T_AUTHOR.FIRST_NAME || ' ' || T_AUTHOR.LAST_NAME, T_BOOK.TITLE
FROM T_AUTHOR JOIN T_BOOK ON T_BOOK.AUTHOR_ID = T_AUTHOR.ID
/
CREATE VIEW v_author AS
SELECT * FROM t_author
/

View File

@ -12,6 +12,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity/
DELETE FROM t_identity_pk/
@ -46,13 +47,13 @@ INSERT INTO t_book VALUES (3, 2, null, null, 'O Alquimista', 1988, 4, null, null
INSERT INTO t_book VALUES (4, 2, null, null, 'Brida', 1990, 2, null, null)
/
INSERT INTO t_book_store (name) VALUES
INSERT INTO t_book_store (name) VALUES
('Orell Füssli'),
('Ex Libris'),
('Buchhandlung im Volkshaus')
/
INSERT INTO t_book_to_book_store VALUES
INSERT INTO t_book_to_book_store VALUES
('Orell Füssli', 1, 10),
('Orell Füssli', 2, 10),
('Orell Füssli', 3, 10),

View File

@ -16,6 +16,7 @@ DROP ALIAS IF EXISTS f_get_one_cursor/
DROP TRIGGER IF EXISTS t_triggers_trigger/
DROP SEQUENCE IF EXISTS s_triggers_sequence/
DROP TABLE IF EXISTS t_dates/
DROP TABLE IF EXISTS t_triggers/
DROP TABLE IF EXISTS t_arrays/
DROP TABLE IF EXISTS t_book_to_book_store/
@ -46,7 +47,7 @@ DROP TABLE IF EXISTS t_identity_pk/
CREATE TABLE t_identity_pk (
id INTEGER AUTO_INCREMENT,
val int,
CONSTRAINT pk_t_identity_pk PRIMARY KEY (id)
)
/
@ -57,6 +58,18 @@ CREATE TABLE t_identity (
)
/
CREATE TABLE t_dates (
id int,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
one_zero int,
@ -69,7 +82,7 @@ CREATE TABLE t_booleans (
vc_boolean varchar(1),
c_boolean char(1),
n_boolean int,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
@ -78,7 +91,7 @@ CREATE TABLE t_triggers (
id_generated int AUTO_INCREMENT,
id int,
counter int,
CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated)
)
/
@ -97,7 +110,7 @@ CREATE TABLE t_language (
description VARCHAR(50),
description_english VARCHAR(50),
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (ID)
)
/
@ -109,21 +122,21 @@ COMMENT ON COLUMN t_language.description IS 'The language description'/
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -131,7 +144,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -139,7 +152,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -147,7 +160,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -172,7 +185,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
ID int NOT NULL,
LOB BLOB NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -196,7 +209,7 @@ CREATE TABLE t_author (
DATE_OF_BIRTH DATE,
YEAR_OF_BIRTH INT,
ADDRESS VARCHAR(50),
CONSTRAINT pk_t_author PRIMARY KEY (ID)
);
/
@ -210,7 +223,7 @@ COMMENT ON COLUMN t_author.address IS 'The author''s address'/
CREATE TABLE t_book_details (
ID INT,
CONSTRAINT pk_t_book_details PRIMARY KEY (ID)
)
/
@ -226,11 +239,11 @@ CREATE TABLE t_book (
LANGUAGE_ID INT NOT NULL,
CONTENT_TEXT CLOB,
CONTENT_PDF BLOB,
CONSTRAINT pk_t_book PRIMARY KEY (ID),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
);
/
@ -245,7 +258,7 @@ COMMENT ON COLUMN t_book.content_pdf IS 'Some binary content of the book'/
CREATE TABLE t_book_store (
name VARCHAR(400) NOT NULL,
CONSTRAINT uk_t_book_store_name UNIQUE(name)
);
/
@ -257,7 +270,7 @@ CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL,
book_id INTEGER NOT NULL,
stock INTEGER,
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name)
@ -278,7 +291,7 @@ CREATE TABLE t_arrays (
string_array ARRAY,
number_array ARRAY,
date_array ARRAY,
CONSTRAINT pk_t_arrays PRIMARY KEY (ID)
);
/
@ -298,9 +311,9 @@ CREATE TABLE x_unused (
VALUES INT,
TYPE0 INT,
PRIMARY_KEY INT,
PRIMARYKEY INT,
PRIMARYKEY INT,
"FIELD 737" DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES X_UNUSED(ID, NAME)
@ -321,7 +334,7 @@ CREATE TABLE t_639_numbers_table (
BIG_DECIMAL DECIMAL(22, 5),
FLOAT REAL,
DOUBLE DOUBLE,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
);
/
@ -329,7 +342,7 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
ID INT NOT NULL,
UNUSED_ID INT,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES X_UNUSED(ID)
);
@ -338,7 +351,7 @@ CREATE TABLE x_test_case_64_69 (
CREATE TABLE x_test_case_71 (
ID INT NOT NULL,
TEST_CASE_64_69_ID SMALLINT,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES X_TEST_CASE_64_69(ID)
);
@ -348,7 +361,7 @@ CREATE TABLE x_test_case_85 (
id int NOT NULL,
x_unused_id int,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES X_UNUSED(id, name)
);
@ -358,7 +371,7 @@ CREATE VIEW V_LIBRARY (AUTHOR, TITLE) AS
SELECT CONCAT(T_AUTHOR.FIRST_NAME, ' ', T_AUTHOR.LAST_NAME), T_BOOK.TITLE
FROM T_AUTHOR JOIN T_BOOK ON T_BOOK.AUTHOR_ID = T_AUTHOR.ID;
/
CREATE VIEW v_author AS
SELECT * FROM t_author
/

View File

@ -12,6 +12,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity/
DELETE FROM t_identity_pk/
@ -46,13 +47,13 @@ INSERT INTO t_book VALUES (3, 2, null, null, 'O Alquimista', 1988, 4, null, null
INSERT INTO t_book VALUES (4, 2, null, null, 'Brida', 1990, 2, null, null);
/
INSERT INTO t_book_store (name) VALUES
INSERT INTO t_book_store (name) VALUES
('Orell Füssli'),
('Ex Libris'),
('Buchhandlung im Volkshaus')
/
INSERT INTO t_book_to_book_store VALUES
INSERT INTO t_book_to_book_store VALUES
('Orell Füssli', 1, 10),
('Orell Füssli', 2, 10),
('Orell Füssli', 3, 10),

View File

@ -6,7 +6,7 @@ DROP FUNCTION IF EXISTS f_arrays2/
DROP FUNCTION IF EXISTS f_arrays3/
DROP PROCEDURE IF EXISTS p_author_exists/
DROP PROCEDURE IF EXISTS p_unused/
DROP PROCEDURE IF EXISTS p_create_author/
DROP PROCEDURE IF EXISTS p_create_author/
DROP PROCEDURE IF EXISTS p_create_author_by_name/
DROP PROCEDURE IF EXISTS p391/
DROP FUNCTION IF EXISTS f_author_exists/
@ -24,6 +24,7 @@ DROP VIEW IF EXISTS v_library/
DROP TRIGGER IF EXISTS t_triggers_trigger/
DROP SEQUENCE s_triggers_sequence/
DROP TABLE IF EXISTS t_dates/
DROP TABLE IF EXISTS t_triggers/
DROP TABLE IF EXISTS t_arrays/
DROP TABLE IF EXISTS t_book_to_book_store/
@ -64,7 +65,7 @@ DROP TABLE IF EXISTS t_identity_pk/
CREATE TABLE t_identity_pk (
id INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1),
val int,
CONSTRAINT pk_t_identity_pk PRIMARY KEY (id)
)
/
@ -75,6 +76,18 @@ CREATE TABLE t_identity (
)
/
CREATE TABLE t_dates (
id int,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
one_zero int,
@ -87,7 +100,7 @@ CREATE TABLE t_booleans (
vc_boolean varchar(1),
c_boolean char(1),
n_boolean int,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
@ -98,7 +111,7 @@ CREATE TABLE t_triggers (
id_generated int not null,
id int,
counter int,
CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated)
)
/
@ -109,10 +122,10 @@ ON t_triggers
REFERENCING NEW AS new
FOR EACH ROW
BEGIN ATOMIC
select next value for s_triggers_sequence
select next value for s_triggers_sequence
into new.id_generated
from information_schema.system_users;
set new.id = new.id_generated;
set new.counter = new.id_generated * 2;
END
@ -123,28 +136,28 @@ CREATE TABLE t_language (
description VARCHAR(50),
description_english VARCHAR(50),
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (ID)
)
/
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -152,7 +165,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -160,7 +173,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -168,7 +181,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -193,7 +206,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
ID int NOT NULL,
LOB LONGVARBINARY NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -207,7 +220,7 @@ CREATE TABLE t_785 (
CREATE TABLE T_937 (
T_937 int,
CONSTRAINT T_937 PRIMARY KEY (T_937)
)
/
@ -219,14 +232,14 @@ CREATE TABLE t_author (
DATE_OF_BIRTH DATE,
YEAR_OF_BIRTH INT,
ADDRESS VARCHAR(50),
CONSTRAINT pk_t_author PRIMARY KEY (ID)
);
/
CREATE TABLE t_book_details (
ID INT,
CONSTRAINT pk_t_book_details PRIMARY KEY (ID)
);
/
@ -241,18 +254,18 @@ CREATE TABLE t_book (
LANGUAGE_ID INT NOT NULL,
CONTENT_TEXT LONGVARCHAR,
CONTENT_PDF LONGVARBINARY,
CONSTRAINT pk_t_book PRIMARY KEY (ID),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
);
/
CREATE TABLE t_book_store (
name VARCHAR(400) NOT NULL,
CONSTRAINT uk_t_book_store_name UNIQUE(name)
);
/
@ -261,7 +274,7 @@ CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL,
book_id INTEGER NOT NULL,
stock INTEGER,
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name)
@ -278,7 +291,7 @@ CREATE TABLE t_arrays (
string_array VARCHAR(20) ARRAY,
number_array INTEGER ARRAY,
date_array DATE ARRAY,
CONSTRAINT pk_t_arrays PRIMARY KEY (ID)
);
/
@ -295,10 +308,10 @@ CREATE TABLE x_unused (
META_DATA INT,
TYPE0 INT,
PRIMARY_KEY INT,
PRIMARYKEY INT,
NAME_REF VARCHAR(10),
PRIMARYKEY INT,
NAME_REF VARCHAR(10),
"FIELD 737" DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES X_UNUSED(ID, NAME)
@ -319,7 +332,7 @@ CREATE TABLE t_639_numbers_table (
BIG_DECIMAL DECIMAL(22, 5),
FLOAT REAL,
DOUBLE DOUBLE,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
);
/
@ -327,7 +340,7 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
ID INT NOT NULL,
UNUSED_ID INT,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES X_UNUSED(ID)
);
@ -336,7 +349,7 @@ CREATE TABLE x_test_case_64_69 (
CREATE TABLE x_test_case_71 (
ID INT NOT NULL,
TEST_CASE_64_69_ID SMALLINT,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES X_TEST_CASE_64_69(ID)
);
@ -346,7 +359,7 @@ CREATE TABLE x_test_case_85 (
id int NOT NULL,
x_unused_id int,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES X_UNUSED(id, name)
);
@ -364,7 +377,7 @@ CREATE VIEW V_LIBRARY (AUTHOR, TITLE) AS
SELECT T_AUTHOR.FIRST_NAME + ' ' + T_AUTHOR.LAST_NAME, T_BOOK.TITLE
FROM T_AUTHOR JOIN T_BOOK ON T_BOOK.AUTHOR_ID = T_AUTHOR.ID;
/
CREATE VIEW v_author AS
SELECT * FROM t_author
/
@ -374,15 +387,15 @@ SELECT * FROM t_book
/
CREATE FUNCTION f_author_exists (author_name varchar(50))
RETURNS INTEGER
CREATE FUNCTION f_author_exists (author_name varchar(50))
RETURNS INTEGER
READS SQL DATA
RETURN (
SELECT COUNT(*)
FROM t_author
WHERE first_name = author_name
RETURN (
SELECT COUNT(*)
FROM t_author
WHERE first_name = author_name
OR last_name = author_name
)
)
/
CREATE FUNCTION f_one ()
@ -424,19 +437,19 @@ END
CREATE PROCEDURE p_arrays1(IN in_array int array, OUT out_array int array)
BEGIN ATOMIC
SET out_array = in_array;
SET out_array = in_array;
END
/
CREATE PROCEDURE p_arrays2(IN in_array bigint array, OUT out_array bigint array)
BEGIN ATOMIC
SET out_array = in_array;
SET out_array = in_array;
END
/
CREATE PROCEDURE p_arrays3(IN in_array varchar(1000) array, OUT out_array varchar(1000) array)
BEGIN ATOMIC
SET out_array = in_array;
SET out_array = in_array;
END
/
@ -455,7 +468,7 @@ RETURNS varchar(1000) array
RETURN in_array
/
CREATE PROCEDURE p_author_exists (IN author_name VARCHAR(50), OUT result INT)
CREATE PROCEDURE p_author_exists (IN author_name VARCHAR(50), OUT result INT)
READS SQL DATA
BEGIN ATOMIC
SELECT COUNT(*) INTO result

View File

@ -12,6 +12,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity/
DELETE FROM t_identity_pk/
@ -40,13 +41,13 @@ INSERT INTO t_book VALUES (2, 1, null, null, 'Animal Farm', 1945, 1, null, null)
INSERT INTO t_book VALUES (3, 2, null, null, 'O Alquimista', 1988, 4, null, null)/
INSERT INTO t_book VALUES (4, 2, null, null, 'Brida', 1990, 2, null, null)/
INSERT INTO t_book_store (name) VALUES
INSERT INTO t_book_store (name) VALUES
('Orell Füssli'),
('Ex Libris'),
('Buchhandlung im Volkshaus')
/
INSERT INTO t_book_to_book_store VALUES
INSERT INTO t_book_to_book_store VALUES
('Orell Füssli', 1, 10),
('Orell Füssli', 2, 10),
('Orell Füssli', 3, 10),

View File

@ -28,6 +28,7 @@ DROP TABLE IF EXISTS t_658_32/
DROP TABLE IF EXISTS t_725_lob_test/
DROP TABLE IF EXISTS t_785/
DROP TABLE IF EXISTS t_booleans/
DROP TABLE IF EXISTS t_dates/
DROP TABLE IF EXISTS t_identity/
DROP TABLE IF EXISTS t_identity_pk/
@ -45,6 +46,18 @@ CREATE TABLE t_identity (
)
/
CREATE TABLE t_dates (
id int not null,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int not null,
one_zero int,

View File

@ -11,6 +11,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity/
DELETE FROM t_identity_pk/

View File

@ -109,7 +109,6 @@ import org.junit.Test;
import org.postgresql.util.PSQLException;
import com.microsoft.sqlserver.jdbc.SQLServerException;
import com.sybase.jdbc3.jdbc.SybSQLException;
/**
* The abstract test suite uses generic types to model the generated test schema
@ -264,7 +263,7 @@ public abstract class jOOQAbstractTest<
}
// There is no DROP FUNCTION IF EXISTS statement in Postgres
else if (e instanceof PSQLException) {
else if (e.getClass().getName().startsWith("org.postgresql")) {
if ("42883".equals(((PSQLException) e).getSQLState())) {
continue;
}
@ -278,7 +277,7 @@ public abstract class jOOQAbstractTest<
}
// There is no DROP ** IF EXISTS statement in SQL Server
else if (e instanceof SQLServerException) {
else if (e.getClass().getName().startsWith("com.microsoft")) {
switch (((SQLServerException)e).getErrorCode()) {
case 3701: // Tables
case 218: // Types
@ -287,7 +286,7 @@ public abstract class jOOQAbstractTest<
}
// There is no DROP SEQUENCE IF EXISTS statement in Sybase
else if (e instanceof SybSQLException) {
else if (e.getClass().getName().startsWith("com.sybase")) {
if (sql.contains("DROP SEQUENCE")) {
continue;
}

View File

@ -4,8 +4,8 @@ DROP VIEW IF EXISTS v_book/
DROP PROCEDURE IF EXISTS p_unused/
DROP PROCEDURE IF EXISTS p_author_exists/
DROP PROCEDURE IF EXISTS p_create_author/
DROP PROCEDURE IF EXISTS p_create_author_by_name/
DROP PROCEDURE IF EXISTS p_create_author/
DROP PROCEDURE IF EXISTS p_create_author_by_name/
DROP PROCEDURE IF EXISTS p391/
DROP FUNCTION IF EXISTS f_author_exists/
DROP FUNCTION IF EXISTS f_one/
@ -14,6 +14,7 @@ DROP FUNCTION IF EXISTS f317/
DROP TRIGGER IF EXISTS t_triggers_trigger/
DROP TABLE IF EXISTS t_dates/
DROP TABLE IF EXISTS t_triggers/
DROP TABLE IF EXISTS t_book_to_book_store/
DROP TABLE IF EXISTS t_book_store/
@ -43,11 +44,23 @@ DROP TABLE IF EXISTS t_identity_pk/
CREATE TABLE t_identity_pk (
id INT NOT NULL AUTO_INCREMENT,
val int,
CONSTRAINT pk_t_identity_pk PRIMARY KEY (id)
)
/
CREATE TABLE t_dates (
id int,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
one_zero int,
@ -60,7 +73,7 @@ CREATE TABLE t_booleans (
vc_boolean varchar(1),
c_boolean char(1),
n_boolean int,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
@ -69,10 +82,10 @@ CREATE TABLE t_959 (
java_keywords enum('abstract', 'assert', 'boolean', 'break', 'byte', 'case', 'catch',
'char', 'class', 'const', 'continue', 'default', 'double', 'do',
'else', 'enum', 'extends', 'false', 'final', 'finally', 'float',
'for', 'goto', 'if', 'implements', 'import', 'instanceof',
'for', 'goto', 'if', 'implements', 'import', 'instanceof',
'interface', 'int', 'long', 'native', 'new', 'package', 'private',
'protected', 'public', 'return', 'short', 'static', 'strictfp',
'super', 'switch', 'synchronized', 'this', 'throw', 'throws',
'protected', 'public', 'return', 'short', 'static', 'strictfp',
'super', 'switch', 'synchronized', 'this', 'throw', 'throws',
'transient', 'true', 'try', 'void', 'volatile', 'while')
) ENGINE = InnoDB
/
@ -89,7 +102,7 @@ CREATE TABLE t_triggers (
id_generated int not null AUTO_INCREMENT,
id int,
counter int,
CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated)
) ENGINE = InnoDB
/
@ -100,9 +113,9 @@ ON t_triggers
FOR EACH ROW
BEGIN
DECLARE new_id INT;
SELECT IFNULL(MAX(id_generated), 0) + 1 INTO new_id FROM t_triggers;
SET NEW.id = new_id;
SET NEW.counter = new_id * 2;
END;
@ -113,7 +126,7 @@ CREATE TABLE t_language (
DESCRIPTION VARCHAR(50) COMMENT 'The language description',
description_english VARCHAR(50),
ID INT NOT NULL COMMENT 'The language ID',
CONSTRAINT pk_t_language PRIMARY KEY (ID)
) ENGINE = InnoDB
COMMENT 'An entity holding language master data'
@ -121,21 +134,21 @@ CREATE TABLE t_language (
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -143,7 +156,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -151,7 +164,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -159,7 +172,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -184,7 +197,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
ID int NOT NULL,
LOB LONGBLOB NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -203,7 +216,7 @@ CREATE TABLE t_author (
DATE_OF_BIRTH DATE COMMENT 'The author''s date of birth',
YEAR_OF_BIRTH INT COMMENT 'The author''s year of birth',
ADDRESS VARCHAR(200) COMMENT 'The author''s address',
CONSTRAINT pk_t_author PRIMARY KEY (ID)
) ENGINE = InnoDB
COMMENT = 'An entity holding authors of books';
@ -211,7 +224,7 @@ CREATE TABLE t_author (
CREATE TABLE t_book_details (
ID INT NOT NULL COMMENT 'The details ID',
CONSTRAINT pk_t_book_details PRIMARY KEY (ID)
) ENGINE = InnoDB
COMMENT = 'An unused details table'
@ -230,11 +243,11 @@ CREATE TABLE t_book (
STATUS enum('SOLD OUT','ORDERED','ON STOCK') COMMENT 'The book''s stock status',
INDEX (AUTHOR_ID),
INDEX (LANGUAGE_ID),
CONSTRAINT pk_t_book PRIMARY KEY (ID),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
) ENGINE = InnoDB
COMMENT = 'An entity holding books';
@ -242,7 +255,7 @@ CREATE TABLE t_book (
CREATE TABLE t_book_store (
name VARCHAR(400) NOT NULL COMMENT 'The books store name',
CONSTRAINT uk_t_book_store_name UNIQUE(name)
) ENGINE = InnoDB
COMMENT = 'A book store'
@ -252,7 +265,7 @@ CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL COMMENT 'The book store name',
book_id INTEGER NOT NULL COMMENT 'The book ID',
stock INTEGER COMMENT 'The number of books on stock',
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name)
@ -278,9 +291,9 @@ CREATE TABLE x_unused (
META_DATA INT,
TYPE0 INT,
PRIMARY_KEY INT,
PRIMARYKEY INT,
PRIMARYKEY INT,
`FIELD 737` DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES X_UNUSED(ID, NAME)
@ -309,7 +322,7 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
ID INT NOT NULL,
UNUSED_ID INT,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES X_UNUSED(ID)
) ENGINE = InnoDB
@ -319,7 +332,7 @@ CREATE TABLE x_test_case_64_69 (
CREATE TABLE x_test_case_71 (
ID INT NOT NULL,
TEST_CASE_64_69_ID INT,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES X_TEST_CASE_64_69(ID)
) ENGINE = InnoDB
@ -330,7 +343,7 @@ CREATE TABLE x_test_case_85 (
id int NOT NULL,
x_unused_id int,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES X_UNUSED(id, name)
) ENGINE = InnoDB
@ -341,7 +354,7 @@ CREATE OR REPLACE VIEW V_LIBRARY (AUTHOR, TITLE) AS
SELECT CONCAT(A.FIRST_NAME, ' ', A.LAST_NAME), B.TITLE
FROM T_AUTHOR A JOIN T_BOOK B ON B.AUTHOR_ID = A.ID;
/
CREATE VIEW v_author AS
SELECT * FROM t_author
/
@ -360,9 +373,9 @@ CREATE PROCEDURE p_create_author_by_name (IN first_name VARCHAR(50), IN last_nam
COMMENT 'Create a new author'
BEGIN
SET @id = 0;
SELECT max(id) + 1 INTO @id FROM t_author;
INSERT INTO T_AUTHOR (ID, FIRST_NAME, LAST_NAME)
VALUES (@id, first_name, last_name);
END
@ -379,8 +392,8 @@ CREATE PROCEDURE p_author_exists (author_name VARCHAR(50), OUT result INT)
COMMENT 'Check existence of an author'
BEGIN
SELECT COUNT(*) > 0 INTO result
FROM t_author
WHERE first_name LIKE author_name
FROM t_author
WHERE first_name LIKE author_name
OR last_name LIKE author_name;
END
/
@ -403,8 +416,8 @@ CREATE FUNCTION f_author_exists (author_name VARCHAR(50))
COMMENT 'Check existence of an author'
BEGIN
RETURN (SELECT COUNT(*) > 0
FROM t_author
WHERE first_name LIKE author_name
FROM t_author
WHERE first_name LIKE author_name
OR last_name LIKE author_name);
END
/

View File

@ -11,6 +11,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity_pk/
INSERT INTO t_language (id, cd, description, description_english) VALUES (1, 'en', 'English', 'English')/
@ -35,12 +36,12 @@ INSERT INTO t_book VALUES (2, 1, null, null, 'Animal Farm', 1945, 1, null, null,
INSERT INTO t_book VALUES (3, 2, null, null, 'O Alquimista', 1988, 4, null, null, 'ON STOCK')/
INSERT INTO t_book VALUES (4, 2, null, null, 'Brida', 1990, 2, null, null, 'SOLD OUT')/
INSERT INTO t_book_store (name) VALUES
INSERT INTO t_book_store (name) VALUES
('Orell Füssli'),
('Ex Libris'),
('Buchhandlung im Volkshaus')/
INSERT INTO t_book_to_book_store VALUES
INSERT INTO t_book_to_book_store VALUES
('Orell Füssli', 1, 10),
('Orell Füssli', 2, 10),
('Orell Füssli', 3, 10),

View File

@ -15,6 +15,7 @@ DROP TABLE multi_schema.t_book_sale/
DROP TABLE multi_schema.t_book/
DROP TABLE multi_schema.t_author/
DROP TABLE t_dates/
DROP TABLE t_triggers/
DROP TABLE t_arrays/
DROP TABLE t_book_to_book_store/
@ -245,6 +246,18 @@ CREATE SEQUENCE s_961_big_integer/
CREATE SEQUENCE s_triggers_sequence
/
CREATE TABLE t_dates (
id int,
d date,
t timestamp,
ts timestamp,
d_int number(7),
ts_bigint number(18),
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id number(7),
one_zero number(7),

View File

@ -16,6 +16,7 @@ DELETE FROM t_language/
DELETE FROM t_directory/
DELETE FROM t_triggers/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DROP SEQUENCE s_author_id/
CREATE SEQUENCE s_author_id MAXVALUE 2000000000/

View File

@ -12,8 +12,8 @@ DROP FUNCTION p_enhance_address1(address IN u_address_type, no OUT VARCHAR)/
DROP FUNCTION p_enhance_address2(address OUT u_address_type)/
DROP FUNCTION p_enhance_address3(address IN OUT u_address_type)/
DROP FUNCTION p_unused(in1 VARCHAR, out1 OUT INTEGER, out2 IN OUT INTEGER)/
DROP FUNCTION p_create_author()/
DROP FUNCTION p_create_author_by_name(first_name VARCHAR, last_name VARCHAR)/
DROP FUNCTION p_create_author()/
DROP FUNCTION p_create_author_by_name(first_name VARCHAR, last_name VARCHAR)/
DROP FUNCTION p_author_exists(author_name VARCHAR, result OUT INTEGER)/
DROP FUNCTION p391(
i1 INTEGER, io1 IN OUT INTEGER, o1 OUT INTEGER,
@ -30,28 +30,29 @@ DROP FUNCTION f_get_one_cursor(book_ids IN int[])/
DROP TRIGGER IF EXISTS t_triggers_trigger ON t_triggers/
DROP FUNCTION p_triggers()/
DROP TABLE IF EXISTS t_triggers CASCADE/
DROP TABLE IF EXISTS t_arrays CASCADE/
DROP TABLE IF EXISTS t_book_to_book_store CASCADE/
DROP TABLE IF EXISTS t_book_store CASCADE/
DROP TABLE IF EXISTS t_book CASCADE/
DROP TABLE IF EXISTS t_book_details CASCADE/
DROP TABLE IF EXISTS t_author CASCADE/
DROP TABLE IF EXISTS t_language CASCADE/
DROP TABLE IF EXISTS x_test_case_71 CASCADE/
DROP TABLE IF EXISTS x_test_case_64_69 CASCADE/
DROP TABLE IF EXISTS x_test_case_85 CASCADE/
DROP TABLE IF EXISTS t_986_1 CASCADE/
DROP TABLE IF EXISTS t_986_2 CASCADE/
DROP TABLE IF EXISTS x_unused CASCADE/
DROP TABLE IF EXISTS t_639_numbers_table CASCADE/
DROP TABLE IF EXISTS t_658_ref CASCADE/
DROP TABLE IF EXISTS t_658_11 CASCADE/
DROP TABLE IF EXISTS t_658_21 CASCADE/
DROP TABLE IF EXISTS t_658_31 CASCADE/
DROP TABLE IF EXISTS t_658_12 CASCADE/
DROP TABLE IF EXISTS t_658_22 CASCADE/
DROP TABLE IF EXISTS t_658_32 CASCADE/
DROP TABLE IF EXISTS t_dates/
DROP TABLE IF EXISTS t_triggers/
DROP TABLE IF EXISTS t_arrays/
DROP TABLE IF EXISTS t_book_to_book_store/
DROP TABLE IF EXISTS t_book_store/
DROP TABLE IF EXISTS t_book/
DROP TABLE IF EXISTS t_book_details/
DROP TABLE IF EXISTS t_author/
DROP TABLE IF EXISTS t_language/
DROP TABLE IF EXISTS x_test_case_71/
DROP TABLE IF EXISTS x_test_case_64_69/
DROP TABLE IF EXISTS x_test_case_85/
DROP TABLE IF EXISTS t_986_1/
DROP TABLE IF EXISTS t_986_2/
DROP TABLE IF EXISTS x_unused/
DROP TABLE IF EXISTS t_639_numbers_table/
DROP TABLE IF EXISTS t_658_ref/
DROP TABLE IF EXISTS t_658_11/
DROP TABLE IF EXISTS t_658_21/
DROP TABLE IF EXISTS t_658_31/
DROP TABLE IF EXISTS t_658_12/
DROP TABLE IF EXISTS t_658_22/
DROP TABLE IF EXISTS t_658_32/
DROP TABLE IF EXISTS t_725_lob_test/
DROP TABLE IF EXISTS t_785/
DROP TABLE IF EXISTS t_959/
@ -59,19 +60,19 @@ DROP TABLE IF EXISTS t_booleans/
DROP TABLE IF EXISTS t_identity/
DROP TABLE IF EXISTS t_identity_pk/
DROP TYPE IF EXISTS u_address_type CASCADE/
DROP TYPE IF EXISTS u_street_type CASCADE/
DROP TYPE IF EXISTS u_book_status CASCADE/
DROP TYPE IF EXISTS u_country CASCADE/
DROP TYPE IF EXISTS u_959 CASCADE/
DROP TYPE IF EXISTS u_address_type/
DROP TYPE IF EXISTS u_street_type/
DROP TYPE IF EXISTS u_book_status/
DROP TYPE IF EXISTS u_country/
DROP TYPE IF EXISTS u_959/
CREATE TYPE u_959 AS ENUM('abstract', 'assert', 'boolean', 'break', 'byte', 'case', 'catch',
'char', 'class', 'const', 'continue', 'default', 'double', 'do',
'else', 'enum', 'extends', 'false', 'final', 'finally', 'float',
'for', 'goto', 'if', 'implements', 'import', 'instanceof',
'for', 'goto', 'if', 'implements', 'import', 'instanceof',
'interface', 'int', 'long', 'native', 'new', 'package', 'private',
'protected', 'public', 'return', 'short', 'static', 'strictfp',
'super', 'switch', 'synchronized', 'this', 'throw', 'throws',
'protected', 'public', 'return', 'short', 'static', 'strictfp',
'super', 'switch', 'synchronized', 'this', 'throw', 'throws',
'transient', 'true', 'try', 'void', 'volatile', 'while')/
CREATE TYPE u_book_status AS ENUM ('SOLD OUT', 'ON STOCK', 'ORDERED')/
CREATE TYPE u_country AS ENUM ('Brazil', 'England', 'Germany')/
@ -96,7 +97,7 @@ CREATE TYPE u_address_type AS (
CREATE TABLE t_identity_pk (
id serial not null,
val int,
CONSTRAINT pk_t_identity_pk PRIMARY KEY (id)
)
/
@ -107,6 +108,18 @@ CREATE TABLE t_identity (
)
/
CREATE TABLE t_dates (
id int,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
one_zero int,
@ -119,7 +132,7 @@ CREATE TABLE t_booleans (
vc_boolean varchar(1),
c_boolean char(1),
n_boolean int,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
@ -133,7 +146,7 @@ CREATE TABLE t_triggers (
id_generated serial4 not null,
id int,
counter int,
CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated)
)
/
@ -144,9 +157,9 @@ AS $$
BEGIN
new.id = new.id_generated;
new.counter = new.id_generated * 2;
return new;
END
END
$$ LANGUAGE plpgsql;
/
@ -162,7 +175,7 @@ CREATE TABLE t_language (
description VARCHAR(50),
description_english VARCHAR(50),
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (ID)
)
/
@ -177,21 +190,21 @@ COMMENT ON COLUMN t_language.description IS 'The language description'
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -199,7 +212,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -207,7 +220,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -215,7 +228,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -240,7 +253,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
ID int NOT NULL,
LOB BYTEA NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -259,7 +272,7 @@ CREATE TABLE t_author (
date_of_birth DATE,
year_of_birth INTEGER,
address u_address_type,
CONSTRAINT pk_t_author PRIMARY KEY (ID)
)
/
@ -280,7 +293,7 @@ COMMENT ON COLUMN t_author.address IS 'The author''s address'
CREATE TABLE t_book_details (
ID INT,
CONSTRAINT pk_t_book_details PRIMARY KEY (ID)
)
/
@ -298,11 +311,11 @@ CREATE TABLE t_book (
content_text TEXT,
content_pdf BYTEA,
status u_book_status,
CONSTRAINT pk_t_book PRIMARY KEY (ID),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
)
/
@ -328,7 +341,7 @@ COMMENT ON COLUMN t_book.status IS 'The book''s stock status'
CREATE TABLE t_book_store (
name VARCHAR(400) NOT NULL,
CONSTRAINT uk_t_book_store_name UNIQUE(name)
)
/
@ -342,7 +355,7 @@ CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL,
book_id INTEGER NOT NULL,
stock INTEGER,
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name)
@ -370,7 +383,7 @@ CREATE TABLE t_arrays (
udt_array u_street_type[],
enum_array u_country[],
array_array INTEGER[][],
CONSTRAINT pk_t_arrays PRIMARY KEY (ID)
)
/
@ -388,10 +401,10 @@ CREATE TABLE x_unused (
VALUES INT,
TYPE0 INT,
PRIMARY_KEY INT,
PRIMARYKEY INT,
name_ref VARCHAR(10),
PRIMARYKEY INT,
name_ref VARCHAR(10),
"FIELD 737" DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES X_UNUSED(ID, NAME)
@ -402,14 +415,14 @@ COMMENT ON TABLE x_unused IS 'An unused table in the same schema.'
CREATE TABLE t_986_1 (
REF INT,
CONSTRAINT fk_986 FOREIGN KEY(REF) REFERENCES X_UNUSED(ID)
)
/
CREATE TABLE t_986_2 (
REF INT,
CONSTRAINT fk_986 FOREIGN KEY(REF) REFERENCES X_UNUSED(ID)
)
/
@ -427,7 +440,7 @@ CREATE TABLE t_639_numbers_table (
BIG_DECIMAL DECIMAL(22, 5),
FLOAT REAL,
DOUBLE DOUBLE PRECISION,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
);
/
@ -436,7 +449,7 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
id INTEGER NOT NULL,
unused_id INTEGER,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES X_UNUSED(ID)
)
@ -445,7 +458,7 @@ CREATE TABLE x_test_case_64_69 (
CREATE TABLE x_test_case_71 (
id INTEGER NOT NULL,
test_case_64_69_id SMALLINT,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES X_TEST_CASE_64_69(ID)
)
@ -455,7 +468,7 @@ CREATE TABLE x_test_case_85 (
id INTEGER NOT NULL,
x_unused_id INTEGER,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES X_UNUSED(id, name)
)
@ -466,7 +479,7 @@ CREATE OR REPLACE VIEW v_library (author, title) AS
SELECT a.first_name || ' ' || a.last_name, b.title
FROM t_author a JOIN t_book b ON b.author_id = a.id
/
CREATE VIEW v_author AS
SELECT * FROM t_author
/
@ -496,7 +509,7 @@ CREATE FUNCTION p_enhance_address2 (address OUT u_address_type)
AS $$
BEGIN
address := (
SELECT t_author.address
SELECT t_author.address
FROM t_author
WHERE first_name = 'George'
);
@ -538,10 +551,10 @@ DECLARE
BEGIN
SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
INTO v_result
FROM t_author
WHERE first_name LIKE author_name
FROM t_author
WHERE first_name LIKE author_name
OR last_name LIKE author_name;
result := v_result;
END;
$$ LANGUAGE plpgsql;
@ -620,10 +633,10 @@ DECLARE
BEGIN
SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
INTO v_result
FROM t_author
WHERE first_name LIKE author_name
FROM t_author
WHERE first_name LIKE author_name
OR last_name LIKE author_name;
return v_result;
END;
$$ LANGUAGE plpgsql;
@ -657,7 +670,7 @@ $$ LANGUAGE plpgsql;
/
CREATE FUNCTION p_get_two_cursors (
books OUT refcursor,
books OUT refcursor,
authors OUT refcursor)
AS $$
BEGIN
@ -669,7 +682,7 @@ $$ LANGUAGE plpgsql;
CREATE FUNCTION p_get_one_cursor (
total OUT int,
books OUT refcursor,
books OUT refcursor,
book_ids IN int[])
AS $$
BEGIN
@ -690,7 +703,7 @@ BEGIN
ELSE
OPEN ref FOR SELECT * FROM t_book WHERE id IN (SELECT * FROM UNNEST(book_ids)) ORDER BY id ASC;
END IF;
RETURN ref;
END;
$$ LANGUAGE plpgsql;

View File

@ -12,6 +12,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity/
DELETE FROM t_identity_pk/
@ -46,7 +47,7 @@ INSERT INTO t_book VALUES (3, 2, null, null, 'O Alquimista', 1988, 4, null, null
INSERT INTO t_book VALUES (4, 2, null, null, 'Brida', 1990, 2, null, null, 'SOLD OUT')
/
INSERT INTO t_book_store (name)
INSERT INTO t_book_store (name)
VALUES ('Orell Füssli'),
('Ex Libris'),
('Buchhandlung im Volkshaus')

View File

@ -27,6 +27,19 @@ DROP TABLE IF EXISTS t_658_32/
DROP TABLE IF EXISTS t_725_lob_test/
DROP TABLE IF EXISTS t_785/
DROP TABLE IF EXISTS t_booleans/
DROP TABLE IF EXISTS t_dates/
CREATE TABLE t_dates (
id int,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
@ -40,7 +53,7 @@ CREATE TABLE t_booleans (
vc_boolean varchar(1),
c_boolean char(1),
n_boolean int,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
@ -68,28 +81,28 @@ CREATE TABLE t_language (
description VARCHAR(50),
description_english VARCHAR(50),
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (ID)
)
/
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -97,7 +110,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -105,7 +118,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -113,7 +126,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -138,7 +151,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
ID int NOT NULL,
LOB LONGVARBINARY NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -157,14 +170,14 @@ CREATE TABLE t_author (
DATE_OF_BIRTH DATE,
YEAR_OF_BIRTH INT,
ADDRESS VARCHAR(50),
CONSTRAINT pk_t_author PRIMARY KEY (ID)
);
/
CREATE TABLE t_book_details (
ID INT,
CONSTRAINT pk_t_book_details PRIMARY KEY (ID)
);
/
@ -179,18 +192,18 @@ CREATE TABLE t_book (
LANGUAGE_ID INT NOT NULL,
CONTENT_TEXT LONGVARCHAR,
CONTENT_PDF LONGVARBINARY,
CONSTRAINT pk_t_book PRIMARY KEY (ID),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
);
/
CREATE TABLE t_book_store (
name VARCHAR(400) NOT NULL,
CONSTRAINT uk_t_book_store_name PRIMARY KEY(name)
);
/
@ -199,7 +212,7 @@ CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL,
book_id INT NOT NULL,
stock INT,
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name)
@ -223,10 +236,10 @@ CREATE TABLE x_unused (
META_DATA INT,
TYPE0 INT,
PRIMARY_KEY INT,
PRIMARYKEY INT,
NAME_REF VARCHAR(10),
PRIMARYKEY INT,
NAME_REF VARCHAR(10),
"FIELD 737" DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES X_UNUSED(ID, NAME)
@ -235,7 +248,7 @@ CREATE TABLE x_unused (
CREATE TABLE t_986_1 (
REF INT,
CONSTRAINT pk_986 PRIMARY KEY(REF),
CONSTRAINT uk_986 UNIQUE(REF),
CONSTRAINT fk_986 FOREIGN KEY(REF) REFERENCES X_UNUSED(ID)
@ -244,7 +257,7 @@ CREATE TABLE t_986_1 (
CREATE TABLE t_986_2 (
REF INT,
CONSTRAINT pk_986 PRIMARY KEY(REF),
CONSTRAINT uk_986 UNIQUE(REF),
CONSTRAINT fk_986 FOREIGN KEY(REF) REFERENCES X_UNUSED(ID)
@ -265,7 +278,7 @@ CREATE TABLE t_639_numbers_table (
BIG_DECIMAL DECIMAL(22, 5),
FLOAT REAL,
DOUBLE DOUBLE,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
);
/
@ -273,7 +286,7 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
ID INT NOT NULL,
UNUSED_ID INT,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES X_UNUSED(ID)
);
@ -282,7 +295,7 @@ CREATE TABLE x_test_case_64_69 (
CREATE TABLE x_test_case_71 (
ID INT NOT NULL,
TEST_CASE_64_69_ID SMALLINT,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES X_TEST_CASE_64_69(ID)
);
@ -292,7 +305,7 @@ CREATE TABLE x_test_case_85 (
id int NOT NULL,
x_unused_id int,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES X_UNUSED(id, name)
);
@ -302,7 +315,7 @@ CREATE VIEW V_LIBRARY AS
SELECT T_AUTHOR.FIRST_NAME AUTHOR, T_BOOK.TITLE TITLE
FROM T_AUTHOR JOIN T_BOOK ON T_BOOK.AUTHOR_ID = T_AUTHOR.ID;
/
CREATE VIEW v_author AS
SELECT * FROM t_author
/

View File

@ -11,6 +11,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
INSERT INTO t_language (id, cd, description, description_english) VALUES (1, 'en', 'English', 'English')/
INSERT INTO t_language (id, cd, description, description_english) VALUES (2, 'de', 'Deutsch', 'German')/

View File

@ -13,8 +13,8 @@ DROP PROCEDURE p_enhance_address1/
DROP PROCEDURE p_enhance_address2/
DROP PROCEDURE p_enhance_address3/
DROP PROCEDURE p_unused/
DROP PROCEDURE p_create_author/
DROP PROCEDURE p_create_author_by_name/
DROP PROCEDURE p_create_author/
DROP PROCEDURE p_create_author_by_name/
DROP PROCEDURE p_author_exists/
DROP PROCEDURE p391/
DROP FUNCTION f_many_parameters/
@ -26,6 +26,7 @@ DROP FUNCTION f378/
DROP TRIGGER t_triggers_trigger/
DROP TABLE t_dates/
DROP TABLE t_triggers/
DROP TABLE t_arrays/
DROP TABLE t_book_to_book_store/
@ -56,7 +57,7 @@ DROP TABLE t_identity_pk/
CREATE TABLE t_identity_pk (
id INTEGER IDENTITY(1,1) NOT NULL,
val int,
CONSTRAINT pk_t_identity_pk PRIMARY KEY (id)
)
/
@ -68,6 +69,18 @@ CREATE TABLE t_identity (
/
CREATE TABLE t_dates (
id int,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
one_zero int,
@ -80,7 +93,7 @@ CREATE TABLE t_booleans (
vc_boolean varchar(1),
c_boolean char(1),
n_boolean int,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
@ -89,7 +102,7 @@ CREATE TABLE t_triggers (
id_generated int IDENTITY(1,1) not null,
id int,
counter int,
CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated)
)
/
@ -107,28 +120,28 @@ CREATE TABLE t_language (
description VARCHAR(50),
description_english VARCHAR(50),
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (ID)
)
/
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -136,7 +149,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -144,7 +157,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -152,7 +165,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -177,7 +190,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
ID int NOT NULL,
LOB varbinary(max) NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -196,14 +209,14 @@ CREATE TABLE t_author (
DATE_OF_BIRTH DATE,
YEAR_OF_BIRTH int,
ADDRESS VARCHAR(50),
CONSTRAINT pk_t_author PRIMARY KEY (ID)
)
/
CREATE TABLE t_book_details (
ID int,
CONSTRAINT pk_t_book_details PRIMARY KEY (ID)
)
/
@ -218,11 +231,11 @@ CREATE TABLE t_book (
LANGUAGE_ID int NOT NULL,
CONTENT_TEXT text,
CONTENT_PDF varbinary(max),
CONSTRAINT pk_t_book PRIMARY KEY (ID),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
)
/
@ -230,7 +243,7 @@ CREATE TABLE t_book (
CREATE TABLE t_book_store (
NAME VARCHAR(400) NOT NULL,
CONSTRAINT uk_t_book_store_name UNIQUE(name)
)
/
@ -240,7 +253,7 @@ CREATE TABLE t_book_to_book_store (
BOOK_STORE_NAME VARCHAR(400) NOT NULL,
BOOK_ID INTEGER NOT NULL,
STOCK INTEGER,
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name)
@ -264,10 +277,10 @@ CREATE TABLE x_unused (
META_DATA int,
TYPE0 int,
PRIMARY_KEY int,
PRIMARYKEY int,
name_ref VARCHAR(10),
PRIMARYKEY int,
name_ref VARCHAR(10),
"FIELD 737" DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES X_UNUSED(ID, NAME)
@ -288,7 +301,7 @@ CREATE TABLE t_639_numbers_table (
BIG_DECIMAL DECIMAL(22, 5),
FLOAT REAL,
"DOUBLE" FLOAT,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
)
/
@ -297,7 +310,7 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
id int NOT NULL,
unused_id int,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES X_UNUSED(ID)
)
@ -306,7 +319,7 @@ CREATE TABLE x_test_case_64_69 (
CREATE TABLE x_test_case_71 (
id int NOT NULL,
test_case_64_69_id int,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES X_TEST_CASE_64_69(ID)
)
@ -316,7 +329,7 @@ CREATE TABLE x_test_case_85 (
id int NOT NULL,
x_unused_id int,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES X_UNUSED(id, name)
)
@ -327,7 +340,7 @@ CREATE VIEW v_library (author, title) AS
SELECT a.first_name + ' ' + a.last_name, b.title
FROM t_author a JOIN t_book b ON b.author_id = a.id
/
CREATE VIEW v_author AS
SELECT * FROM t_author
/
@ -542,8 +555,8 @@ CREATE PROCEDURE p_author_exists (@author_name VARCHAR(50), @result int OUT)
AS
BEGIN
SELECT @result = CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
FROM t_author
WHERE first_name LIKE @author_name
FROM t_author
WHERE first_name LIKE @author_name
OR last_name LIKE @author_name
END;
/
@ -565,12 +578,12 @@ RETURNS int
AS
BEGIN
DECLARE @result int;
SELECT @result = CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
FROM t_author
WHERE first_name LIKE @author_name
FROM t_author
WHERE first_name LIKE @author_name
OR last_name LIKE @author_name;
RETURN @result;
END;
/

View File

@ -11,6 +11,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity/
DELETE FROM t_identity_pk/
@ -28,7 +29,7 @@ INSERT INTO t_658_22 VALUES (1, 1), (2, 2), (3, 3)/
INSERT INTO t_658_32 VALUES (1, 1), (2, 2), (3, 3)/
INSERT INTO t_658_ref VALUES ('A', 1, 1, 'B', 2, 2)/
INSERT INTO t_author (id, first_name, last_name, date_of_birth, year_of_birth, address)
INSERT INTO t_author (id, first_name, last_name, date_of_birth, year_of_birth, address)
VALUES (1, 'George', 'Orwell', '1903-06-25', 1903, null),
(2, 'Paulo', 'Coelho', '1947-08-24', 1947, null)
/
@ -40,7 +41,7 @@ VALUES (1, 1, null, null, '1984', 1948, 1, 'To know and not to know, to
(4, 2, null, null, 'Brida', 1990, 2, null, null)
/
INSERT INTO t_book_store (name)
INSERT INTO t_book_store (name)
VALUES ('Orell Füssli'),
('Ex Libris'),
('Buchhandlung im Volkshaus')

View File

@ -4,8 +4,8 @@ DROP VIEW IF EXISTS v_book/
DROP PROCEDURE IF EXISTS p_unused/
DROP PROCEDURE IF EXISTS p_author_exists/
DROP PROCEDURE IF EXISTS p_create_author/
DROP PROCEDURE IF EXISTS p_create_author_by_name/
DROP PROCEDURE IF EXISTS p_create_author/
DROP PROCEDURE IF EXISTS p_create_author_by_name/
DROP PROCEDURE IF EXISTS p391/
DROP FUNCTION IF EXISTS f_author_exists/
DROP FUNCTION IF EXISTS f_one/
@ -14,6 +14,7 @@ DROP FUNCTION IF EXISTS f317/
DROP TRIGGER IF EXISTS t_triggers_trigger/
DROP TABLE IF EXISTS t_dates/
DROP TABLE IF EXISTS t_triggers/
DROP TABLE IF EXISTS t_book_to_book_store/
DROP TABLE IF EXISTS t_book_store/
@ -44,7 +45,7 @@ DROP TABLE IF EXISTS t_identity_pk/
CREATE TABLE t_identity_pk (
id INTEGER NOT NULL IDENTITY,
val int,
CONSTRAINT pk_t_identity_pk PRIMARY KEY (id)
)
/
@ -55,6 +56,18 @@ CREATE TABLE t_identity (
)
/
CREATE TABLE t_dates (
id int,
d date,
t time,
ts timestamp,
d_int int,
ts_bigint bigint,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
one_zero int,
@ -67,7 +80,7 @@ CREATE TABLE t_booleans (
vc_boolean varchar(1),
c_boolean char(1),
n_boolean int,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
@ -76,7 +89,7 @@ CREATE TABLE t_triggers (
id_generated int IDENTITY not null,
id int null,
counter int null,
CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated)
)
/
@ -97,7 +110,7 @@ CREATE TABLE t_language (
description VARCHAR(50) NULL,
description_english VARCHAR(50) NULL,
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (ID)
)
/
@ -111,21 +124,21 @@ COMMENT ON COLUMN t_language.description IS 'The language description'
/
CREATE TABLE t_658_11 (
id CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_11 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_21 (
id INT NOT NULL,
CONSTRAINT pk_t_658_21 PRIMARY KEY (id)
)
/
CREATE TABLE t_658_31 (
id BIGINT NOT NULL,
CONSTRAINT pk_t_658_31 PRIMARY KEY (id)
)
/
@ -133,7 +146,7 @@ CREATE TABLE t_658_31 (
CREATE TABLE t_658_12 (
id CHAR(3) NOT NULL,
cd CHAR(3) NOT NULL,
CONSTRAINT pk_t_658_12 PRIMARY KEY (id)
)
/
@ -141,7 +154,7 @@ CREATE TABLE t_658_12 (
CREATE TABLE t_658_22 (
id INT NOT NULL,
cd INT NOT NULL,
CONSTRAINT pk_t_658_22 PRIMARY KEY (id)
)
/
@ -149,7 +162,7 @@ CREATE TABLE t_658_22 (
CREATE TABLE t_658_32 (
id BIGINT NOT NULL,
cd BIGINT NOT NULL,
CONSTRAINT pk_t_658_32 PRIMARY KEY (id)
)
/
@ -174,7 +187,7 @@ CREATE TABLE t_658_ref (
CREATE TABLE t_725_lob_test (
ID int NOT NULL,
LOB LONG BINARY NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
@ -193,9 +206,9 @@ CREATE TABLE t_author (
DATE_OF_BIRTH DATE NULL,
YEAR_OF_BIRTH INT NULL,
ADDRESS VARCHAR(200) NULL,
CONSTRAINT pk_t_author PRIMARY KEY (ID)
)
)
/
COMMENT ON TABLE t_author IS 'An entity holding authors of books'
/
@ -214,7 +227,7 @@ COMMENT ON COLUMN t_author.address IS 'The author''s address'
CREATE TABLE t_book_details (
ID INT NOT NULL,
CONSTRAINT pk_t_book_details PRIMARY KEY (ID)
)
/
@ -229,11 +242,11 @@ CREATE TABLE t_book (
LANGUAGE_ID INT NOT NULL,
CONTENT_TEXT LONG VARCHAR NULL,
CONTENT_PDF LONG BINARY NULL,
CONSTRAINT pk_t_book PRIMARY KEY (ID),
CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES T_BOOK_DETAILS(ID),
CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
)
/
@ -256,9 +269,9 @@ COMMENT ON COLUMN t_book.content_pdf IS 'Some binary content of the book'
CREATE TABLE t_book_store (
name VARCHAR(400) NOT NULL,
CONSTRAINT uk_t_book_store_name UNIQUE(name)
)
CONSTRAINT uk_t_book_store_name UNIQUE(name)
)
/
COMMENT ON TABLE t_book_store IS 'A book store'
/
@ -268,7 +281,7 @@ CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL,
book_id INTEGER NOT NULL,
stock INTEGER,
CONSTRAINT pk_b2bs PRIMARY KEY(book_store_name, book_id),
CONSTRAINT fk_b2bs_bs_name FOREIGN KEY (book_store_name)
REFERENCES t_book_store (name)
@ -276,7 +289,7 @@ CREATE TABLE t_book_to_book_store (
CONSTRAINT fk_b2bs_b_id FOREIGN KEY (book_id)
REFERENCES t_book (id)
ON DELETE CASCADE
)
)
COMMENT ON TABLE t_book_to_book_store IS 'An m:n relation between books and book stores'
/
COMMENT ON COLUMN t_book_to_book_store.book_store_name IS 'The book store name'
@ -298,18 +311,18 @@ CREATE TABLE x_unused (
META_DATA INT,
TYPE0 INT,
PRIMARY_KEY INT,
PRIMARYKEY INT,
PRIMARYKEY INT,
"FIELD 737" DECIMAL(25, 2),
CONSTRAINT pk_x_unused PRIMARY KEY(ID, NAME),
CONSTRAINT uk_x_unused_id UNIQUE(ID),
CONSTRAINT fk_x_unused_self FOREIGN KEY(ID_REF, NAME_REF) REFERENCES X_UNUSED(ID, NAME)
)
)
/
CREATE TABLE t_986_1 (
REF INT,
CONSTRAINT pk_986 PRIMARY KEY(REF),
CONSTRAINT uk_986 UNIQUE(REF),
CONSTRAINT fk_986 FOREIGN KEY(REF) REFERENCES X_UNUSED(ID)
@ -318,7 +331,7 @@ CREATE TABLE t_986_1 (
CREATE TABLE t_986_2 (
REF INT,
CONSTRAINT pk_986 PRIMARY KEY(REF),
CONSTRAINT uk_986 UNIQUE(REF),
CONSTRAINT fk_986 FOREIGN KEY(REF) REFERENCES X_UNUSED(ID)
@ -339,7 +352,7 @@ CREATE TABLE t_639_numbers_table (
BIG_DECIMAL DECIMAL(22, 5) NULL,
"FLOAT" REAL NULL,
"DOUBLE" DOUBLE NULL,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
)
/
@ -347,26 +360,26 @@ CREATE TABLE t_639_numbers_table (
CREATE TABLE x_test_case_64_69 (
ID INT NOT NULL,
UNUSED_ID INT,
CONSTRAINT pk_x_test_case_64_69 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_64_69 FOREIGN KEY(UNUSED_ID) REFERENCES X_UNUSED(ID)
)
)
/
CREATE TABLE x_test_case_71 (
ID INT NOT NULL,
TEST_CASE_64_69_ID INT,
CONSTRAINT pk_x_test_case_71 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_71 FOREIGN KEY(TEST_CASE_64_69_ID) REFERENCES X_TEST_CASE_64_69(ID)
)
)
/
CREATE TABLE x_test_case_85 (
id int NOT NULL,
x_unused_id int,
x_unused_name VARCHAR(10),
CONSTRAINT pk_x_test_case_85 PRIMARY KEY(ID),
CONSTRAINT fk_x_test_case_85 FOREIGN KEY(x_unused_id, x_unused_name) REFERENCES X_UNUSED(id, name)
)
@ -407,10 +420,10 @@ CREATE PROCEDURE p_author_exists (IN author_name VARCHAR(50), OUT result INT)
BEGIN
SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
INTO result
FROM t_author
WHERE first_name LIKE author_name
FROM t_author
WHERE first_name LIKE author_name
OR last_name LIKE author_name
END
END
/
CREATE PROCEDURE p391 (
@ -432,12 +445,12 @@ BEGIN
SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
INTO @result
FROM t_author
WHERE first_name LIKE author_name
FROM t_author
WHERE first_name LIKE author_name
OR last_name LIKE author_name;
return @result;
END
END
/
CREATE FUNCTION f_one ()

View File

@ -11,6 +11,7 @@ DELETE FROM t_book/
DELETE FROM t_author/
DELETE FROM t_language/
DELETE FROM t_booleans/
DELETE FROM t_dates/
DELETE FROM t_identity/
DELETE FROM t_identity_pk/
@ -43,13 +44,13 @@ INSERT INTO t_book VALUES (3, 2, null, null, 'O Alquimista', 1988, 4, null, null
/
INSERT INTO t_book VALUES (4, 2, null, null, 'Brida', 1990, 2, null, null)
/
INSERT INTO t_book_store (name) VALUES
INSERT INTO t_book_store (name) VALUES
('Orell Füssli'),
('Ex Libris'),
('Buchhandlung im Volkshaus')
/
INSERT INTO t_book_to_book_store VALUES
INSERT INTO t_book_to_book_store VALUES
('Orell Füssli', 1, 10),
('Orell Füssli', 2, 10),
('Orell Füssli', 3, 10),

View File

@ -48,8 +48,12 @@ import static org.jooq.SQLDialect.POSTGRES;
import static org.jooq.SQLDialect.SQLITE;
import static org.jooq.SQLDialect.SQLSERVER;
import static org.jooq.SQLDialect.SYBASE;
import static org.jooq.impl.Factory.field;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@ -309,6 +313,55 @@ class Val<T> extends AbstractField<T> implements Param<T>, BindingProvider {
else if (Number.class.isAssignableFrom(type)) {
context.sql(val.toString());
}
// [#1156] Date/Time data types should be inlined using JDBC
// escape syntax
else if (type == Date.class) {
// Sybase ASE needs explicit casting to DATE
if (dialect == ASE) {
context.sql(field("{d '" + val + "'}").cast(Date.class));
}
// The SQLite JDBC driver does not implement the escape syntax
else if (dialect == SQLITE) {
context.sql("'").sql(val.toString()).sql("'");
}
// Normal behaviour: Apply JDBC escape syntax
else {
context.sql("{d '").sql(val.toString()).sql("'}");
}
}
else if (type == Timestamp.class) {
// Sybase ASE needs explicit casting to DATETIME
if (dialect == ASE) {
context.sql(field("{ts '" + val + "'}").cast(Timestamp.class));
}
// The SQLite JDBC driver does not implement the escape syntax
else if (dialect == SQLITE) {
context.sql("'").sql(val.toString()).sql("'");
}
// Normal behaviour: Apply JDBC escape syntax
else {
context.sql("{ts '").sql(val.toString()).sql("'}");
}
}
else if (type == Time.class) {
// The SQLite JDBC driver does not implement the escape syntax
if (dialect == SQLITE) {
context.sql("'").sql(val.toString()).sql("'");
}
// Normal behaviour: Apply JDBC escape syntax
else {
context.sql("{t '").sql(val.toString()).sql("'}");
}
}
else if (type.isArray()) {
// H2 renders arrays as tuples
@ -338,7 +391,6 @@ class Val<T> extends AbstractField<T> implements Param<T>, BindingProvider {
// Known fall-through types:
// - Blob, Clob (both not supported by jOOQ)
// - String
// - java.util.Date subtypes
else {
context.sql("'")
.sql(val.toString().replace("'", "''"))