From 283a43664eda308fbb1dfe86099f2d90b18b4f3a Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 17 Feb 2012 09:56:48 +0000 Subject: [PATCH] [#1156] Bad inlining of DATE / TIME / TIMESTAMP data types in Ingres (and other dialects, when the setting differs from the default) --- .../test/_/testcases/RenderAndBindTests.java | 40 +++-- jOOQ-test/src/org/jooq/test/ase/create.sql | 79 +++++---- jOOQ-test/src/org/jooq/test/ase/reset.sql | 1 + jOOQ-test/src/org/jooq/test/db2/create.sql | 105 +++++++----- jOOQ-test/src/org/jooq/test/db2/reset.sql | 5 +- jOOQ-test/src/org/jooq/test/derby/create.sql | 63 ++++--- jOOQ-test/src/org/jooq/test/derby/reset.sql | 5 +- jOOQ-test/src/org/jooq/test/h2/create.sql | 63 ++++--- jOOQ-test/src/org/jooq/test/h2/reset.sql | 5 +- jOOQ-test/src/org/jooq/test/hsqldb/create.sql | 95 ++++++----- jOOQ-test/src/org/jooq/test/hsqldb/reset.sql | 5 +- jOOQ-test/src/org/jooq/test/ingres/create.sql | 13 ++ jOOQ-test/src/org/jooq/test/ingres/reset.sql | 1 + .../src/org/jooq/test/jOOQAbstractTest.java | 7 +- jOOQ-test/src/org/jooq/test/mysql/create.sql | 85 ++++++---- jOOQ-test/src/org/jooq/test/mysql/reset.sql | 5 +- jOOQ-test/src/org/jooq/test/oracle/create.sql | 13 ++ jOOQ-test/src/org/jooq/test/oracle/reset.sql | 1 + .../src/org/jooq/test/postgres/create.sql | 157 ++++++++++-------- .../src/org/jooq/test/postgres/reset.sql | 3 +- jOOQ-test/src/org/jooq/test/sqlite/create.sql | 63 ++++--- jOOQ-test/src/org/jooq/test/sqlite/reset.sql | 1 + .../src/org/jooq/test/sqlserver/create.sql | 79 +++++---- .../src/org/jooq/test/sqlserver/reset.sql | 5 +- jOOQ-test/src/org/jooq/test/sybase/create.sql | 95 ++++++----- jOOQ-test/src/org/jooq/test/sybase/reset.sql | 5 +- jOOQ/src/main/java/org/jooq/impl/Val.java | 54 +++++- 27 files changed, 640 insertions(+), 413 deletions(-) diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/RenderAndBindTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/RenderAndBindTests.java index 2c1e526f30..4cce5fa5fa 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/RenderAndBindTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/RenderAndBindTests.java @@ -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 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 / diff --git a/jOOQ-test/src/org/jooq/test/mysql/reset.sql b/jOOQ-test/src/org/jooq/test/mysql/reset.sql index 05348aa8da..b539a79d3a 100644 --- a/jOOQ-test/src/org/jooq/test/mysql/reset.sql +++ b/jOOQ-test/src/org/jooq/test/mysql/reset.sql @@ -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), diff --git a/jOOQ-test/src/org/jooq/test/oracle/create.sql b/jOOQ-test/src/org/jooq/test/oracle/create.sql index f6fa2fd2f9..ce934dace4 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/create.sql +++ b/jOOQ-test/src/org/jooq/test/oracle/create.sql @@ -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), diff --git a/jOOQ-test/src/org/jooq/test/oracle/reset.sql b/jOOQ-test/src/org/jooq/test/oracle/reset.sql index 358824d951..44ee358115 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/reset.sql +++ b/jOOQ-test/src/org/jooq/test/oracle/reset.sql @@ -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/ diff --git a/jOOQ-test/src/org/jooq/test/postgres/create.sql b/jOOQ-test/src/org/jooq/test/postgres/create.sql index d7f0d490da..00155f67cc 100644 --- a/jOOQ-test/src/org/jooq/test/postgres/create.sql +++ b/jOOQ-test/src/org/jooq/test/postgres/create.sql @@ -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; diff --git a/jOOQ-test/src/org/jooq/test/postgres/reset.sql b/jOOQ-test/src/org/jooq/test/postgres/reset.sql index 165021efcf..69bd5fe905 100644 --- a/jOOQ-test/src/org/jooq/test/postgres/reset.sql +++ b/jOOQ-test/src/org/jooq/test/postgres/reset.sql @@ -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') diff --git a/jOOQ-test/src/org/jooq/test/sqlite/create.sql b/jOOQ-test/src/org/jooq/test/sqlite/create.sql index 9d7e83e88f..056a9dae66 100644 --- a/jOOQ-test/src/org/jooq/test/sqlite/create.sql +++ b/jOOQ-test/src/org/jooq/test/sqlite/create.sql @@ -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 / diff --git a/jOOQ-test/src/org/jooq/test/sqlite/reset.sql b/jOOQ-test/src/org/jooq/test/sqlite/reset.sql index 08d6b9a8d8..a02f24a3d0 100644 --- a/jOOQ-test/src/org/jooq/test/sqlite/reset.sql +++ b/jOOQ-test/src/org/jooq/test/sqlite/reset.sql @@ -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')/ diff --git a/jOOQ-test/src/org/jooq/test/sqlserver/create.sql b/jOOQ-test/src/org/jooq/test/sqlserver/create.sql index dc86b1c6b0..9e5cb694f9 100644 --- a/jOOQ-test/src/org/jooq/test/sqlserver/create.sql +++ b/jOOQ-test/src/org/jooq/test/sqlserver/create.sql @@ -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; / diff --git a/jOOQ-test/src/org/jooq/test/sqlserver/reset.sql b/jOOQ-test/src/org/jooq/test/sqlserver/reset.sql index 6e7846dae4..8d618d0f00 100644 --- a/jOOQ-test/src/org/jooq/test/sqlserver/reset.sql +++ b/jOOQ-test/src/org/jooq/test/sqlserver/reset.sql @@ -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') diff --git a/jOOQ-test/src/org/jooq/test/sybase/create.sql b/jOOQ-test/src/org/jooq/test/sybase/create.sql index 95919e673e..ab287e9e13 100644 --- a/jOOQ-test/src/org/jooq/test/sybase/create.sql +++ b/jOOQ-test/src/org/jooq/test/sybase/create.sql @@ -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 () diff --git a/jOOQ-test/src/org/jooq/test/sybase/reset.sql b/jOOQ-test/src/org/jooq/test/sybase/reset.sql index c71bfb2cbc..d1a3fea56e 100644 --- a/jOOQ-test/src/org/jooq/test/sybase/reset.sql +++ b/jOOQ-test/src/org/jooq/test/sybase/reset.sql @@ -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), diff --git a/jOOQ/src/main/java/org/jooq/impl/Val.java b/jOOQ/src/main/java/org/jooq/impl/Val.java index 74a5266032..777817ad69 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Val.java +++ b/jOOQ/src/main/java/org/jooq/impl/Val.java @@ -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 extends AbstractField implements Param, 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 extends AbstractField implements Param, BindingProvider { // Known fall-through types: // - Blob, Clob (both not supported by jOOQ) // - String - // - java.util.Date subtypes else { context.sql("'") .sql(val.toString().replace("'", "''"))