[#2492] Add support for the MS Access database - Initial setup

This commit is contained in:
Lukas Eder 2013-07-02 21:26:47 +02:00
parent ddb456025b
commit e25b92d711
19 changed files with 1353 additions and 7 deletions

View File

@ -32,6 +32,10 @@
<classpathentry kind="lib" path="lib/postgis-jdbc-1.3.3.jar" sourcepath="C:/Users/Lukas/.m2/repository/org/postgis/postgis-jdbc/1.3.3/postgis-jdbc-1.3.3-sources.jar"/>
<classpathentry kind="lib" path="lib/sqlite-jdbc-3.7.15-SNAPSHOT-2.jar"/>
<classpathentry kind="lib" path="lib/mariadb-java-client-1.1.2.jar"/>
<classpathentry kind="lib" path="lib/ucanaccess/commons-lang-2.4.jar"/>
<classpathentry kind="lib" path="lib/ucanaccess/commons-logging-1.0.4.jar"/>
<classpathentry kind="lib" path="lib/ucanaccess/jackcess-1.2.13.jar"/>
<classpathentry kind="lib" path="lib/ucanaccess/ucanaccess-1.0.2.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/jOOQ-console"/>
<classpathentry combineaccessrules="false" kind="src" path="/jOOQ-meta"/>
<classpathentry kind="output" path="bin"/>

View File

@ -9,3 +9,4 @@
/test.script
/test
/test.lobs
/access

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-2.1.0.xsd">
<jdbc>
<driver>net.ucanaccess.jdbc.UcanaccessDriver</driver>
<url>jdbc:ucanaccess:///C:/Users/Lukas/workspace/jOOQ/jOOQ-test/access/test.mdb;Newdatabaseversion=V2010</url>
<user>admin</user>
<password></password>
</jdbc>
<generator>
<name>org.jooq.util.DefaultGenerator</name>
<database>
<name>org.jooq.util.jdbc.JDBCDatabase</name>
<includes>(?i:t_.*|x_.*|v_.*|V_.*|p_.*|f_.*|(f|p)[0-9]+|s_.*)</includes>
<excludes>(?i:t_book_details)</excludes>
<dateAsTimestamp>false</dateAsTimestamp>
<unsignedTypes>true</unsignedTypes>
<customTypes>
<customType>
<name>org.jooq.test._.converters.Boolean_10</name>
<converter>org.jooq.test._.converters.Boolean_10_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_TF_LC</name>
<converter>org.jooq.test._.converters.Boolean_TF_LC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_TF_UC</name>
<converter>org.jooq.test._.converters.Boolean_TF_UC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YN_LC</name>
<converter>org.jooq.test._.converters.Boolean_YN_LC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YN_UC</name>
<converter>org.jooq.test._.converters.Boolean_YN_UC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YES_NO_LC</name>
<converter>org.jooq.test._.converters.Boolean_YES_NO_LC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YES_NO_UC</name>
<converter>org.jooq.test._.converters.Boolean_YES_NO_UC_Converter</converter>
</customType>
</customTypes>
<forcedTypes>
<forcedType>
<name>BIT</name>
<expressions>(?i:(.*?.)?T_BOOLEANS.(VC|C|N)_BOOLEAN)</expressions>
</forcedType>
<!-- [#2477] Check if unsigned types work correctly -->
<forcedType>
<name>TINYINTUNSIGNED</name>
<expressions>(?i:(.*?.)?T_UNSIGNED.U_BYTE)</expressions>
</forcedType>
<forcedType>
<name>SMALLINTUNSIGNED</name>
<expressions>(?i:(.*?.)?T_UNSIGNED.U_SHORT)</expressions>
</forcedType>
<forcedType>
<name>INTEGERUNSIGNED</name>
<expressions>(?i:(.*?.)?T_UNSIGNED.U_INT)</expressions>
</forcedType>
<forcedType>
<name>BIGINTUNSIGNED</name>
<expressions>(?i:(.*?.)?T_UNSIGNED.U_LONG)</expressions>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YES_NO_LC</name>
<expressions>(?i:(.*?.)?T_BOOLEANS.YES_NO_LC)</expressions>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YES_NO_UC</name>
<expressions>(?i:(.*?.)?T_BOOLEANS.YES_NO_UC)</expressions>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YN_LC</name>
<expressions>(?i:(.*?.)?T_BOOLEANS.Y_N_LC)</expressions>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YN_UC</name>
<expressions>(?i:(.*?.)?T_BOOLEANS.Y_N_UC)</expressions>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_TF_LC</name>
<expressions>(?i:(.*?.)?T_BOOLEANS.TRUE_FALSE_LC)</expressions>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_TF_UC</name>
<expressions>(?i:(.*?.)?T_BOOLEANS.TRUE_FALSE_UC)</expressions>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_10</name>
<expressions>(?i:(.*?.)?T_BOOLEANS.ONE_ZERO)</expressions>
</forcedType>
</forcedTypes>
</database>
<generate>
<navigationMethods>true</navigationMethods>
<deprecated>true</deprecated>
<instanceFields>false</instanceFields>
<generatedAnnotation>false</generatedAnnotation>
<records>true</records>
<pojos>false</pojos>
<jpaAnnotations>false</jpaAnnotations>
</generate>
<target>
<packageName>org.jooq.test.access.generatedclasses</packageName>
<directory>./src</directory>
</target>
</generator>
</configuration>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/jOOQ-test/src/org/jooq/test/AccessTest.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.jooq.test.AccessTest"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="jOOQ-test"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.jooq.configuration=/org/jooq/configuration/${env_var:USERNAME}/access/library.xml"/>
</launchConfiguration>

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,760 @@
/**
* Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* . Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* . Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* . Neither the name of the "jOOQ" nor the names of its contributors may be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package org.jooq.test;
import static org.jooq.test.access.generatedclasses.Tables.T_BOOK_TO_BOOK_STORE;
import static org.jooq.test.access.generatedclasses.Tables.T_BOOLEANS;
import static org.jooq.test.access.generatedclasses.Tables.T_DATES;
import static org.jooq.test.access.generatedclasses.Tables.T_IDENTITY;
import static org.jooq.test.access.generatedclasses.Tables.T_IDENTITY_PK;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Date;
import java.util.UUID;
import org.jooq.ArrayRecord;
import org.jooq.DSLContext;
import org.jooq.DataType;
import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.Record;
import org.jooq.Result;
import org.jooq.SQLDialect;
import org.jooq.Table;
import org.jooq.TableField;
import org.jooq.UDTRecord;
import org.jooq.conf.Settings;
import org.jooq.impl.DSL;
import org.jooq.test._.converters.Boolean_10;
import org.jooq.test._.converters.Boolean_TF_LC;
import org.jooq.test._.converters.Boolean_TF_UC;
import org.jooq.test._.converters.Boolean_YES_NO_LC;
import org.jooq.test._.converters.Boolean_YES_NO_UC;
import org.jooq.test._.converters.Boolean_YN_LC;
import org.jooq.test._.converters.Boolean_YN_UC;
import org.jooq.test.access.generatedclasses.Keys;
import org.jooq.test.access.generatedclasses.tables.TAuthor;
import org.jooq.test.access.generatedclasses.tables.TBook;
import org.jooq.test.access.generatedclasses.tables.TBookStore;
import org.jooq.test.access.generatedclasses.tables.TBookToBookStore;
import org.jooq.test.access.generatedclasses.tables.TBooleans;
import org.jooq.test.access.generatedclasses.tables.TIdentity;
import org.jooq.test.access.generatedclasses.tables.TIdentityPk;
import org.jooq.test.access.generatedclasses.tables.TTriggers;
import org.jooq.test.access.generatedclasses.tables.T_639NumbersTable;
import org.jooq.test.access.generatedclasses.tables.T_725LobTest;
import org.jooq.test.access.generatedclasses.tables.T_785;
import org.jooq.test.access.generatedclasses.tables.records.TAuthorRecord;
import org.jooq.test.access.generatedclasses.tables.records.TBookRecord;
import org.jooq.test.access.generatedclasses.tables.records.TBookStoreRecord;
import org.jooq.test.access.generatedclasses.tables.records.TBookToBookStoreRecord;
import org.jooq.test.access.generatedclasses.tables.records.TBooleansRecord;
import org.jooq.test.access.generatedclasses.tables.records.TDatesRecord;
import org.jooq.test.access.generatedclasses.tables.records.TIdentityPkRecord;
import org.jooq.test.access.generatedclasses.tables.records.TIdentityRecord;
import org.jooq.test.access.generatedclasses.tables.records.TTriggersRecord;
import org.jooq.test.access.generatedclasses.tables.records.T_639NumbersTableRecord;
import org.jooq.test.access.generatedclasses.tables.records.T_725LobTestRecord;
import org.jooq.test.access.generatedclasses.tables.records.T_785Record;
import org.jooq.types.UByte;
import org.jooq.types.UInteger;
import org.jooq.types.ULong;
import org.jooq.types.UShort;
import org.jooq.util.access.AccessDataType;
/**
* Integration test that creates tables and performs various sql operations.
*
* @author Lukas Eder
*/
public class AccessTest extends jOOQAbstractTest<
TAuthorRecord,
Object,
TBookRecord,
TBookStoreRecord,
TBookToBookStoreRecord,
TBookRecord,
TBookRecord,
TBookRecord,
TDatesRecord,
TBooleansRecord,
TBookRecord,
TTriggersRecord,
TBookRecord,
TBookRecord,
TIdentityRecord,
TIdentityPkRecord,
TBookRecord,
TBookRecord,
T_785Record> {
@Override
protected DSLContext create0(Settings settings) {
return DSL.using(getConnection(), SQLDialect.ACCESS, settings);
}
@Override
protected Table<TAuthorRecord> TAuthor() {
return TAuthor.T_AUTHOR;
}
@Override
protected TableField<TAuthorRecord, String> TAuthor_LAST_NAME() {
return TAuthor.LAST_NAME;
}
@Override
protected TableField<TAuthorRecord, String> TAuthor_FIRST_NAME() {
return TAuthor.FIRST_NAME;
}
@Override
protected TableField<TAuthorRecord, Date> TAuthor_DATE_OF_BIRTH() {
return TAuthor.DATE_OF_BIRTH;
}
@Override
protected TableField<TAuthorRecord, Integer> TAuthor_YEAR_OF_BIRTH() {
return TAuthor.YEAR_OF_BIRTH;
}
@Override
protected TableField<TAuthorRecord, Integer> TAuthor_ID() {
return TAuthor.ID;
}
@Override
protected TableField<TAuthorRecord, ? extends UDTRecord<?>> TAuthor_ADDRESS() {
return null;
}
@Override
protected Table<TBookRecord> TBook() {
return TBook.T_BOOK;
}
@Override
protected TableField<TBookRecord, Integer> TBook_ID() {
return TBook.ID;
}
@Override
protected TableField<TBookRecord, Integer> TBook_AUTHOR_ID() {
return TBook.AUTHOR_ID;
}
@Override
protected TableField<TBookRecord, String> TBook_TITLE() {
return TBook.TITLE;
}
@Override
protected Table<TBookStoreRecord> TBookStore() {
return TBookStore.T_BOOK_STORE;
}
@Override
protected TableField<TBookStoreRecord, String> TBookStore_NAME() {
return TBookStore.NAME;
}
@Override
protected Table<TBookToBookStoreRecord> TBookToBookStore() {
return T_BOOK_TO_BOOK_STORE;
}
@Override
protected Table<XUnusedRecord> TBookSale() {
return null;
}
@Override
protected TableField<TBookToBookStoreRecord, Integer> TBookToBookStore_BOOK_ID() {
return TBookToBookStore.BOOK_ID;
}
@Override
protected TableField<TBookToBookStoreRecord, String> TBookToBookStore_BOOK_STORE_NAME() {
return TBookToBookStore.BOOK_STORE_NAME;
}
@Override
protected TableField<TBookToBookStoreRecord, Integer> TBookToBookStore_STOCK() {
return TBookToBookStore.STOCK;
}
@Override
protected ForeignKey<TBookRecord, TAuthorRecord> FK_T_BOOK_AUTHOR_ID() {
return Keys.T_BOOK__FK_T_BOOK_AUTHOR_ID;
}
@Override
protected ForeignKey<TBookRecord, TAuthorRecord> FK_T_BOOK_CO_AUTHOR_ID() {
return Keys.T_BOOK__FK_T_BOOK_CO_AUTHOR_ID;
}
@Override
protected Table<T_725LobTestRecord> T725() {
return T_725LobTest.T_725_LOB_TEST;
}
@Override
protected TableField<T_725LobTestRecord, Integer> T725_ID() {
return T_725LobTest.ID;
}
@Override
protected TableField<T_725LobTestRecord, byte[]> T725_LOB() {
return T_725LobTest.LOB;
}
@Override
protected Table<T_785Record> T785() {
return T_785.T_785;
}
@Override
protected TableField<T_785Record, Integer> T785_ID() {
return T_785.ID;
}
@Override
protected TableField<T_785Record, String> T785_NAME() {
return T_785.NAME;
}
@Override
protected TableField<T_785Record, String> T785_VALUE() {
return T_785.VALUE;
}
@Override
protected Table<XUnusedRecord> TUnsigned() {
return null;
}
@Override
protected TableField<XUnusedRecord, UByte> TUnsigned_U_BYTE() {
return null;
}
@Override
protected TableField<XUnusedRecord, UShort> TUnsigned_U_SHORT() {
return null;
}
@Override
protected TableField<XUnusedRecord, UInteger> TUnsigned_U_INT() {
return null;
}
@Override
protected TableField<XUnusedRecord, ULong> TUnsigned_U_LONG() {
return null;
}
@Override
protected Table<XUnusedRecord> TExoticTypes() {
return null;
}
@Override
protected TableField<XUnusedRecord, Integer> TExoticTypes_ID() {
return null;
}
@Override
protected TableField<XUnusedRecord, UUID> TExoticTypes_UU() {
return null;
}
@Override
protected Table<TDatesRecord> TDates() {
return T_DATES;
}
@Override
protected Table<TBooleansRecord> TBooleans() {
return T_BOOLEANS;
}
@Override
protected TableField<TBooleansRecord, Integer> TBooleans_ID() {
return TBooleans.ID;
}
@Override
protected TableField<TBooleansRecord, Boolean_10> TBooleans_BOOLEAN_10() {
return TBooleans.ONE_ZERO;
}
@Override
protected TableField<TBooleansRecord, Boolean_TF_LC> TBooleans_Boolean_TF_LC() {
return TBooleans.TRUE_FALSE_LC;
}
@Override
protected TableField<TBooleansRecord, Boolean_TF_UC> TBooleans_Boolean_TF_UC() {
return TBooleans.TRUE_FALSE_UC;
}
@Override
protected TableField<TBooleansRecord, Boolean_YN_LC> TBooleans_Boolean_YN_LC() {
return TBooleans.Y_N_LC;
}
@Override
protected TableField<TBooleansRecord, Boolean_YN_UC> TBooleans_Boolean_YN_UC() {
return TBooleans.Y_N_UC;
}
@Override
protected TableField<TBooleansRecord, Boolean_YES_NO_LC> TBooleans_Boolean_YES_NO_LC() {
return TBooleans.YES_NO_LC;
}
@Override
protected TableField<TBooleansRecord, Boolean_YES_NO_UC> TBooleans_Boolean_YES_NO_UC() {
return TBooleans.YES_NO_UC;
}
@Override
protected TableField<TBooleansRecord, Boolean> TBooleans_VC() {
return TBooleans.VC_BOOLEAN;
}
@Override
protected TableField<TBooleansRecord, Boolean> TBooleans_C() {
return TBooleans.C_BOOLEAN;
}
@Override
protected TableField<TBooleansRecord, Boolean> TBooleans_N() {
return TBooleans.N_BOOLEAN;
}
@Override
protected Table<T_639NumbersTableRecord> T639() {
return T_639NumbersTable.T_639_NUMBERS_TABLE;
}
@Override
protected TableField<T_639NumbersTableRecord, Integer> T639_ID() {
return T_639NumbersTable.ID;
}
@Override
protected TableField<T_639NumbersTableRecord, BigDecimal> T639_BIG_DECIMAL() {
return T_639NumbersTable.BIG_DECIMAL;
}
@Override
protected TableField<T_639NumbersTableRecord, BigInteger> T639_BIG_INTEGER() {
return T_639NumbersTable.BIG_INTEGER;
}
@Override
protected TableField<T_639NumbersTableRecord, Byte> T639_BYTE() {
return T_639NumbersTable.BYTE;
}
@Override
protected TableField<T_639NumbersTableRecord, Byte> T639_BYTE_DECIMAL() {
return T_639NumbersTable.BYTE_DECIMAL;
}
@Override
protected TableField<T_639NumbersTableRecord, Short> T639_SHORT() {
return T_639NumbersTable.SHORT;
}
@Override
protected TableField<T_639NumbersTableRecord, Short> T639_SHORT_DECIMAL() {
return T_639NumbersTable.SHORT_DECIMAL;
}
@Override
protected TableField<T_639NumbersTableRecord, Integer> T639_INTEGER() {
return T_639NumbersTable.INTEGER;
}
@Override
protected TableField<T_639NumbersTableRecord, Integer> T639_INTEGER_DECIMAL() {
return T_639NumbersTable.INTEGER_DECIMAL;
}
@Override
protected TableField<T_639NumbersTableRecord, Long> T639_LONG() {
return T_639NumbersTable.LONG;
}
@Override
protected TableField<T_639NumbersTableRecord, Long> T639_LONG_DECIMAL() {
return T_639NumbersTable.LONG_DECIMAL;
}
@Override
protected TableField<T_639NumbersTableRecord, Double> T639_DOUBLE() {
return T_639NumbersTable.DOUBLE;
}
@Override
protected TableField<T_639NumbersTableRecord, Float> T639_FLOAT() {
return null;
}
@Override
protected Table<XUnusedRecord> TArrays() {
return null;
}
@Override
protected TableField<XUnusedRecord, Integer> TArrays_ID() {
return null;
}
@Override
protected TableField<XUnusedRecord, String[]> TArrays_STRING() {
return null;
}
@Override
protected TableField<XUnusedRecord, Integer[]> TArrays_NUMBER() {
return null;
}
@Override
protected TableField<XUnusedRecord, Date[]> TArrays_DATE() {
return null;
}
@Override
protected TableField<XUnusedRecord, ArrayRecord<String>> TArrays_STRING_R() {
return null;
}
@Override
protected TableField<XUnusedRecord, ArrayRecord<Integer>> TArrays_NUMBER_R() {
return null;
}
@Override
protected TableField<XUnusedRecord, ArrayRecord<Date>> TArrays_DATE_R() {
return null;
}
@Override
protected TableField<XUnusedRecord, ? extends ArrayRecord<Long>> TArrays_NUMBER_LONG_R() {
return null;
}
@Override
protected TableField<TBookRecord, Integer> TBook_LANGUAGE_ID() {
return TBook.LANGUAGE_ID;
}
@Override
protected TableField<TBookRecord, Integer> TBook_PUBLISHED_IN() {
return TBook.PUBLISHED_IN;
}
@Override
protected TableField<TBookRecord, String> TBook_CONTENT_TEXT() {
return TBook.CONTENT_TEXT;
}
@Override
protected TableField<TBookRecord, byte[]> TBook_CONTENT_PDF() {
return TBook.CONTENT_PDF;
}
@Override
protected TableField<TBookRecord, ? extends Enum<?>> TBook_STATUS() {
return null;
}
@Override
protected Table<VLibraryRecord> VLibrary() {
return VLibrary.V_LIBRARY;
}
@Override
protected TableField<VLibraryRecord, String> VLibrary_TITLE() {
return VLibrary.TITLE;
}
@Override
protected TableField<VLibraryRecord, String> VLibrary_AUTHOR() {
return VLibrary.AUTHOR;
}
@Override
protected Table<?> VAuthor() {
return V_AUTHOR;
}
@Override
protected Table<?> VBook() {
return V_BOOK;
}
@Override
protected Table<XUnusedRecord> TDirectory() {
return null;
}
@Override
protected TableField<XUnusedRecord, Integer> TDirectory_ID() {
return null;
}
@Override
protected TableField<XUnusedRecord, Integer> TDirectory_PARENT_ID() {
return null;
}
@Override
protected TableField<XUnusedRecord, Integer> TDirectory_IS_DIRECTORY() {
return null;
}
@Override
protected TableField<XUnusedRecord, String> TDirectory_NAME() {
return null;
}
@Override
protected Table<TTriggersRecord> TTriggers() {
return TTriggers.T_TRIGGERS;
}
@Override
protected TableField<TTriggersRecord, Integer> TTriggers_ID_GENERATED() {
return TTriggers.ID_GENERATED;
}
@Override
protected TableField<TTriggersRecord, Integer> TTriggers_ID() {
return TTriggers.ID;
}
@Override
protected TableField<TTriggersRecord, Integer> TTriggers_COUNTER() {
return TTriggers.COUNTER;
}
@Override
protected Table<TIdentityRecord> TIdentity() {
return T_IDENTITY;
}
@Override
protected TableField<TIdentityRecord, Integer> TIdentity_ID() {
return TIdentity.ID;
}
@Override
protected TableField<TIdentityRecord, Integer> TIdentity_VAL() {
return TIdentity.VAL;
}
@Override
protected Table<TIdentityPkRecord> TIdentityPK() {
return T_IDENTITY_PK;
}
@Override
protected TableField<TIdentityPkRecord, Integer> TIdentityPK_ID() {
return TIdentityPk.ID;
}
@Override
protected TableField<TIdentityPkRecord, Integer> TIdentityPK_VAL() {
return TIdentityPk.VAL;
}
@Override
protected Field<? extends Number> FAuthorExistsField(String authorName) {
return null;
}
@Override
protected Field<? extends Number> FOneField() {
return null;
}
@Override
protected Field<? extends Number> FNumberField(Number n) {
return null;
}
@Override
protected Field<? extends Number> FNumberField(Field<? extends Number> n) {
return null;
}
@Override
protected Field<? extends Number> F317Field(Number n1, Number n2, Number n3, Number n4) {
return null;
}
@Override
protected Field<? extends Number> F317Field(Field<? extends Number> n1, Field<? extends Number> n2,
Field<? extends Number> n3, Field<? extends Number> n4) {
return null;
}
@Override
protected Field<Result<Record>> FGetOneCursorField(Integer[] array) {
return null;
}
@Override
protected Field<Integer[]> FArrays1Field(Field<Integer[]> array) {
return null;
}
@Override
protected Field<Long[]> FArrays2Field(Field<Long[]> array) {
return null;
}
@Override
protected Field<String[]> FArrays3Field(Field<String[]> array) {
return null;
}
@Override
protected <T extends ArrayRecord<Integer>> Field<T> FArrays1Field_R(Field<T> array) {
return null;
}
@Override
protected <T extends ArrayRecord<Long>> Field<T> FArrays2Field_R(Field<T> array) {
return null;
}
@Override
protected <T extends ArrayRecord<String>> Field<T> FArrays3Field_R(Field<T> array) {
return null;
}
@Override
protected Class<? extends UDTRecord<?>> cUAddressType() {
return null;
}
@Override
protected Class<? extends UDTRecord<?>> cUStreetType() {
return null;
}
@Override
protected Class<?> cRoutines() {
return null;
}
@Override
protected boolean supportsOUTParameters() {
return false;
}
@Override
protected boolean supportsReferences() {
return true;
}
@Override
protected boolean supportsRecursiveQueries() {
return false;
}
@Override
protected Class<?> cLibrary() {
return null;
}
@Override
protected Class<?> cSequences() {
return null;
}
@Override
protected TableField<XUnusedRecord, ? extends UDTRecord<?>[]> TArrays_UDT() {
return null;
}
@Override
protected DataType<?>[] getCastableDataTypes() {
return new DataType<?>[] {
AccessDataType.BIGINT,
AccessDataType.BINARY,
AccessDataType.BINARYLARGEOBJECT,
AccessDataType.BIT,
AccessDataType.BOOLEAN,
AccessDataType.CHAR,
AccessDataType.CHARACTER,
AccessDataType.CHARACTERLARGEOBJECT,
AccessDataType.CHARACTERVARYING,
AccessDataType.CHARLARGEOBJECT,
AccessDataType.DATE,
AccessDataType.DATETIME,
AccessDataType.DECIMAL,
AccessDataType.DOUBLE,
AccessDataType.DOUBLEPRECISION,
AccessDataType.FLOAT,
AccessDataType.INT,
AccessDataType.INTEGER,
AccessDataType.LONGVARBINARY,
AccessDataType.LONGVARCHAR,
AccessDataType.NUMERIC,
AccessDataType.OBJECT,
AccessDataType.OTHER,
AccessDataType.REAL,
AccessDataType.SMALLINT,
AccessDataType.TIME,
AccessDataType.TIMESTAMP,
AccessDataType.TINYINT,
AccessDataType.VARBINARY,
AccessDataType.VARCHAR,
AccessDataType.VARCHARIGNORECASE,
};
}
}

View File

@ -0,0 +1,197 @@
GRANT SELECT ON MSysObjects TO Admin/
DROP TABLE t_dates/
DROP TABLE t_triggers/
DROP TABLE t_book_to_book_store/
DROP TABLE t_book_store/
DROP TABLE t_book/
DROP TABLE t_book_details/
DROP TABLE t_author/
DROP TABLE t_language/
DROP TABLE x_test_case_2025/
DROP TABLE x_test_case_85/
DROP TABLE x_test_case_71/
DROP TABLE x_test_case_64_69/
DROP TABLE t_986_1/
DROP TABLE t_986_2/
DROP TABLE x_unused/
DROP TABLE t_exotic_types/
DROP TABLE t_639_numbers_table/
DROP TABLE t_658_ref/
DROP TABLE t_658_11/
DROP TABLE t_658_21/
DROP TABLE t_658_31/
DROP TABLE t_658_12/
DROP TABLE t_658_22/
DROP TABLE t_658_32/
DROP TABLE t_725_lob_test/
DROP TABLE t_785/
DROP TABLE t_unsigned/
DROP TABLE t_booleans/
DROP TABLE t_identity/
DROP TABLE t_identity_pk/
CREATE TABLE t_identity_pk (
id INTEGER IDENTITY NOT NULL,
val int
)
/
CREATE TABLE t_identity (
id INTEGER IDENTITY NOT NULL,
val int
)
/
CREATE TABLE t_dates (
id int,
d date null,
t time null,
ts datetime null,
d_int int null,
ts_bigint bigint null,
CONSTRAINT pk_t_dates PRIMARY KEY (id)
)
/
CREATE TABLE t_booleans (
id int,
one_zero int null,
true_false_lc varchar(5) null,
true_false_uc varchar(5) null,
yes_no_lc varchar(3) null,
yes_no_uc varchar(3) null,
y_n_lc char(1) null,
y_n_uc char(1) null,
vc_boolean varchar(1) null,
c_boolean char(1) null,
n_boolean int null,
CONSTRAINT pk_t_booleans PRIMARY KEY (id)
)
/
CREATE TABLE t_unsigned (
u_byte smallint,
u_short int,
u_int bigint,
u_long decimal(20)
)
/
CREATE TABLE t_triggers (
id_generated int IDENTITY not null,
id int null,
counter int null
)
/
CREATE TABLE t_language (
cd CHAR(2) NOT NULL,
description VARCHAR(50) NULL,
description_english VARCHAR(50) NULL,
id INTEGER NOT NULL,
CONSTRAINT pk_t_language PRIMARY KEY (id)
)
/
CREATE TABLE t_725_lob_test (
id int NOT NULL,
lob VARBINARY(500) NULL,
CONSTRAINT pk_t_725_lob_test PRIMARY KEY (id)
)
/
CREATE TABLE t_785 (
ID int NULL,
NAME varchar(50) NULL,
VALUE varchar(50) NULL
)
/
CREATE TABLE t_author (
id INT NOT NULL,
first_name VARCHAR(50) NULL,
last_name VARCHAR(50) NOT NULL,
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)
)
/
CREATE TABLE t_book (
id INT NOT NULL,
author_id INT NOT NULL,
co_author_id INT NULL,
details_id INT NULL,
title VARCHAR(400) NOT NULL,
published_in INT NOT NULL,
language_id INT NOT NULL,
content_text CLOB 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_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)
)
/
CREATE TABLE t_book_to_book_store (
book_store_name VARCHAR(400) NOT NULL,
book_id INTEGER NOT NULL,
stock INTEGER,
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 t_exotic_types (
ID INT NOT NULL,
UU CHAR(36),
CONSTRAINT pk_t_exotic_types PRIMARY KEY(ID)
)
/
CREATE TABLE t_639_numbers_table (
ID INT NOT NULL,
BYTE TINYINT NULL,
SHORT SMALLINT NULL,
[INTEGER] INT NULL,
[LONG] BIGINT NULL,
BYTE_DECIMAL DECIMAL(2, 0) NULL,
SHORT_DECIMAL DECIMAL(4, 0) NULL,
INTEGER_DECIMAL DECIMAL(9, 0) NULL,
LONG_DECIMAL DECIMAL(18, 0) NULL,
BIG_INTEGER DECIMAL(22, 0) NULL,
BIG_DECIMAL DECIMAL(22, 5) NULL,
[FLOAT] REAL NULL,
[DOUBLE] DOUBLE PRECISION NULL,
CONSTRAINT pk_t_639_numbers_table PRIMARY KEY(ID)
)
/

View File

@ -0,0 +1,36 @@
DELETE FROM t_exotic_types/
DELETE FROM t_639_numbers_table/
DELETE FROM t_book_to_book_store/
DELETE FROM t_book_store/
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/
DELETE FROM t_triggers/
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')/
INSERT INTO t_language (id, cd, description, description_english) VALUES (3, 'fr', 'Français', 'French')/
INSERT INTO t_language (id, cd, description, description_english) VALUES (4, 'pt', null, null)/
/
INSERT INTO t_author VALUES (1, 'George', 'Orwell', '1903-06-25', 1903, null)/
INSERT INTO t_author VALUES (2, 'Paulo', 'Coelho', '1947-08-24', 1947, null)/
INSERT INTO t_book VALUES (1, 1, null, null, '1984', 1948, 1, 'To know and not to know, to be conscious of complete truthfulness while telling carefully constructed lies, to hold simultaneously two opinions which cancelled out, knowing them to be contradictory and believing in both of them, to use logic against logic, to repudiate morality while laying claim to it, to believe that democracy was impossible and that the Party was the guardian of democracy, to forget, whatever it was necessary to forget, then to draw it back into memory again at the moment when it was needed, and then promptly to forget it again, and above all, to apply the same process to the process itself -- that was the ultimate subtlety; consciously to induce unconsciousness, and then, once again, to become unconscious of the act of hypnosis you had just performed. Even to understand the word ''doublethink'' involved the use of doublethink..', null)/
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 VALUES ('Orell Füssli')/
INSERT INTO t_book_store VALUES ('Ex Libris')/
INSERT INTO t_book_store VALUES ('Buchhandlung im Volkshaus')/
INSERT INTO t_book_to_book_store VALUES ('Orell Füssli', 1, 10)/
INSERT INTO t_book_to_book_store VALUES ('Orell Füssli', 2, 10)/
INSERT INTO t_book_to_book_store VALUES ('Orell Füssli', 3, 10)/
INSERT INTO t_book_to_book_store VALUES ('Ex Libris', 1, 1)/
INSERT INTO t_book_to_book_store VALUES ('Ex Libris', 3, 2)/
INSERT INTO t_book_to_book_store VALUES ('Buchhandlung im Volkshaus', 3, 1)/

View File

@ -304,6 +304,12 @@ public abstract class jOOQAbstractTest<
}
}
catch (Exception e) {
// Ignore all errors on DROP statements
if (sql.trim().startsWith("DROP")) {
continue;
}
// There is no DROP TABLE IF EXISTS statement in Oracle
if (e.getMessage().contains("ORA-00942")) {
continue;

View File

@ -60,6 +60,11 @@ public enum SQLDialect {
@Deprecated
SQL99(null),
/**
* The MS Access SQL dialect family.
*/
ACCESS("Access"),
/**
* The Sybase Adaptive Server SQL dialect family.
*/

View File

@ -114,10 +114,21 @@ class MetaImpl implements Meta, Serializable {
public final List<Catalog> getCatalogs() {
try {
List<Catalog> result = new ArrayList<Catalog>();
Result<Record> catalogs = create.fetch(meta().getCatalogs());
switch (configuration.dialect()) {
for (String name : catalogs.getValues(0, String.class)) {
result.add(new MetaCatalog(name));
// Some dialects do not support catalogs in their meta data APIs
case ACCESS:
break;
default: {
Result<Record> catalogs = create.fetch(meta().getCatalogs());
for (String name : catalogs.getValues(0, String.class)) {
result.add(new MetaCatalog(name));
}
break;
}
}
// There should always be at least one (empty) catalog in a database
@ -169,10 +180,21 @@ class MetaImpl implements Meta, Serializable {
public final List<Schema> getSchemas() {
try {
List<Schema> result = new ArrayList<Schema>();
Result<Record> schemas = create.fetch(meta().getSchemas());
switch (configuration.dialect()) {
for (String name : schemas.getValues(0, String.class)) {
result.add(new MetaSchema(name));
// Some dialects do not support schemas in their meta data APIs
case ACCESS:
break;
default: {
Result<Record> schemas = create.fetch(meta().getSchemas());
for (String name : schemas.getValues(0, String.class)) {
result.add(new MetaSchema(name));
}
break;
}
}
// There should always be at least one (empty) schema in a database
@ -265,6 +287,8 @@ class MetaImpl implements Meta, Serializable {
tableName
});
System.out.println(getColumns0(schema, "%").format(1000));
columnCache = new LinkedHashMap<Name, Result<Record>>();
for (Entry<Record, Result<Record>> entry : groups.entrySet()) {

View File

@ -53,6 +53,7 @@ import org.jooq.types.UInteger;
import org.jooq.types.ULong;
import org.jooq.types.UShort;
import org.jooq.types.YearToMonth;
import org.jooq.util.access.AccessDataType;
import org.jooq.util.ase.ASEDataType;
import org.jooq.util.cubrid.CUBRIDDataType;
import org.jooq.util.db2.DB2DataType;
@ -316,6 +317,7 @@ public final class SQLDataType {
// TODO [#650] Make this more reliable using a data type registry
try {
Class.forName(AccessDataType.class.getName());
Class.forName(ASEDataType.class.getName());
Class.forName(CUBRIDDataType.class.getName());
Class.forName(DB2DataType.class.getName());

View File

@ -35,6 +35,7 @@
*/
package org.jooq.tools.jdbc;
import static org.jooq.SQLDialect.ACCESS;
import static org.jooq.SQLDialect.ASE;
import static org.jooq.SQLDialect.CUBRID;
import static org.jooq.SQLDialect.DB2;
@ -108,7 +109,10 @@ public class JDBCUtils {
// The below list might not be accurate or complete. Feel free to
// contribute fixes related to new / different JDBC driver configuraitons
if (url.startsWith("jdbc:jtds:sybase:")) {
if (url.startsWith("jdbc:ucanaccess:")) {
return ACCESS;
}
else if (url.startsWith("jdbc:jtds:sybase:")) {
return ASE;
}
else if (url.startsWith("jdbc:cubrid:")) {

View File

@ -0,0 +1,128 @@
/**
* Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* . Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* . Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* . Neither the name of the "jOOQ" nor the names of its contributors may be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package org.jooq.util.access;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.UUID;
import org.jooq.DataType;
import org.jooq.Record;
import org.jooq.Result;
import org.jooq.SQLDialect;
import org.jooq.impl.DefaultDataType;
import org.jooq.impl.SQLDataType;
import org.jooq.types.DayToSecond;
import org.jooq.types.UByte;
import org.jooq.types.UInteger;
import org.jooq.types.ULong;
import org.jooq.types.UShort;
import org.jooq.types.YearToMonth;
/**
* Supported data types for the {@link SQLDialect#ACCESS} dialect
*
* @see <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms714540(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/ms714540(v=vs.85).aspx</a>
* @author Lukas Eder
*/
public class AccessDataType {
// -------------------------------------------------------------------------
// Default SQL data types and synonyms thereof
// -------------------------------------------------------------------------
public static final DataType<Byte> TINYINT = new DefaultDataType<Byte>(SQLDialect.ACCESS, SQLDataType.TINYINT, "tinyint");
public static final DataType<Short> SMALLINT = new DefaultDataType<Short>(SQLDialect.ACCESS, SQLDataType.SMALLINT, "smallint");
public static final DataType<Integer> INT = new DefaultDataType<Integer>(SQLDialect.ACCESS, SQLDataType.INTEGER, "int");
public static final DataType<Integer> INTEGER = new DefaultDataType<Integer>(SQLDialect.ACCESS, SQLDataType.INTEGER, "integer");
public static final DataType<Long> BIGINT = new DefaultDataType<Long>(SQLDialect.ACCESS, SQLDataType.BIGINT, "bigint");
public static final DataType<Double> DOUBLE = new DefaultDataType<Double>(SQLDialect.ACCESS, SQLDataType.DOUBLE, "double");
public static final DataType<Double> DOUBLEPRECISION = new DefaultDataType<Double>(SQLDialect.ACCESS, SQLDataType.DOUBLE, "double precision");
public static final DataType<Double> FLOAT = new DefaultDataType<Double>(SQLDialect.ACCESS, SQLDataType.FLOAT, "float");
public static final DataType<Float> REAL = new DefaultDataType<Float>(SQLDialect.ACCESS, SQLDataType.REAL, "real");
public static final DataType<Boolean> BOOLEAN = new DefaultDataType<Boolean>(SQLDialect.ACCESS, SQLDataType.BOOLEAN, "boolean");
public static final DataType<Boolean> BIT = new DefaultDataType<Boolean>(SQLDialect.ACCESS, SQLDataType.BIT, "bit");
public static final DataType<BigDecimal> DECIMAL = new DefaultDataType<BigDecimal>(SQLDialect.ACCESS, SQLDataType.DECIMAL, "decimal");
public static final DataType<BigDecimal> NUMERIC = new DefaultDataType<BigDecimal>(SQLDialect.ACCESS, SQLDataType.NUMERIC, "numeric");
public static final DataType<String> VARCHAR = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.VARCHAR, "varchar", "varchar(32672)");
public static final DataType<String> LONGVARCHAR = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.LONGVARCHAR, "longvarchar");
public static final DataType<String> CHAR = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.CHAR, "char");
public static final DataType<String> CHARACTER = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.CHAR, "character");
public static final DataType<String> CHARACTERVARYING = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.VARCHAR, "character varying", "character varying(32672)");
public static final DataType<String> CLOB = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.CLOB, "clob");
public static final DataType<String> CHARLARGEOBJECT = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.CLOB, "char large object", "clob");
public static final DataType<String> CHARACTERLARGEOBJECT = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.CLOB, "character large object", "clob");
public static final DataType<Date> DATE = new DefaultDataType<Date>(SQLDialect.ACCESS, SQLDataType.DATE, "date");
public static final DataType<Time> TIME = new DefaultDataType<Time>(SQLDialect.ACCESS, SQLDataType.TIME, "time");
public static final DataType<Timestamp> TIMESTAMP = new DefaultDataType<Timestamp>(SQLDialect.ACCESS, SQLDataType.TIMESTAMP, "timestamp");
public static final DataType<Timestamp> DATETIME = new DefaultDataType<Timestamp>(SQLDialect.ACCESS, SQLDataType.TIMESTAMP, "datetime");
public static final DataType<byte[]> LONGVARBINARY = new DefaultDataType<byte[]>(SQLDialect.ACCESS, SQLDataType.LONGVARBINARY, "longvarbinary");
public static final DataType<byte[]> VARBINARY = new DefaultDataType<byte[]>(SQLDialect.ACCESS, SQLDataType.VARBINARY, "varbinary", "varbinary(32672)");
public static final DataType<byte[]> BINARY = new DefaultDataType<byte[]>(SQLDialect.ACCESS, SQLDataType.BINARY, "binary");
public static final DataType<byte[]> BLOB = new DefaultDataType<byte[]>(SQLDialect.ACCESS, SQLDataType.BLOB, "blob");
public static final DataType<byte[]> BINARYLARGEOBJECT = new DefaultDataType<byte[]>(SQLDialect.ACCESS, SQLDataType.BLOB, "binary large object", "blob");
public static final DataType<Object> OTHER = new DefaultDataType<Object>(SQLDialect.ACCESS, SQLDataType.OTHER, "other");
public static final DataType<YearToMonth> INTERVALYEARTOMONTH = new DefaultDataType<YearToMonth>(SQLDialect.ACCESS, SQLDataType.INTERVALYEARTOMONTH, "interval year to month");
public static final DataType<DayToSecond> INTERVALDAYTOSECOND = new DefaultDataType<DayToSecond>(SQLDialect.ACCESS, SQLDataType.INTERVALDAYTOSECOND, "interval day to second");
// -------------------------------------------------------------------------
// Compatibility types for supported SQLDialect.ACCESS, SQLDataTypes
// -------------------------------------------------------------------------
protected static final DataType<String> __NCHAR = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.NCHAR, "char");
protected static final DataType<String> __NCLOB = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.NCLOB, "clob");
protected static final DataType<String> __LONGNVARCHAR = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.LONGNVARCHAR, "longvarchar");
protected static final DataType<String> __NVARCHAR = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.NVARCHAR, "varchar", "varchar(32672)");
protected static final DataType<UByte> __TINYINTUNSIGNED = new DefaultDataType<UByte>(SQLDialect.ACCESS, SQLDataType.TINYINTUNSIGNED, "smallint");
protected static final DataType<UShort> __SMALLINTUNSIGNED = new DefaultDataType<UShort>(SQLDialect.ACCESS, SQLDataType.SMALLINTUNSIGNED, "int");
protected static final DataType<UInteger> __INTEGERUNSIGNED = new DefaultDataType<UInteger>(SQLDialect.ACCESS, SQLDataType.INTEGERUNSIGNED, "bigint");
protected static final DataType<ULong> __BIGINTUNSIGNED = new DefaultDataType<ULong>(SQLDialect.ACCESS, SQLDataType.BIGINTUNSIGNED, "decimal");
// -------------------------------------------------------------------------
// Compatibility types for supported Java types
// -------------------------------------------------------------------------
protected static final DataType<BigInteger> __BIGINTEGER = new DefaultDataType<BigInteger>(SQLDialect.ACCESS, SQLDataType.DECIMAL_INTEGER, "decimal");
protected static final DataType<UUID> __UUID = new DefaultDataType<UUID>(SQLDialect.ACCESS, SQLDataType.UUID, "varchar", "varchar(36)");
// -------------------------------------------------------------------------
// Dialect-specific data types and synonyms thereof
// -------------------------------------------------------------------------
public static final DataType<String> VARCHARIGNORECASE = new DefaultDataType<String>(SQLDialect.ACCESS, SQLDataType.VARCHAR, "varchar_ignorecase", "varchar_ignorecase(32672)");
public static final DataType<Object> OBJECT = new DefaultDataType<Object>(SQLDialect.ACCESS, SQLDataType.OTHER, "object");
public static final DataType<Result<Record>> ROW = new DefaultDataType<Result<Record>>(SQLDialect.ACCESS, SQLDataType.RESULT, "row");
private AccessDataType() {}
}

View File

@ -0,0 +1,5 @@
/**
* The <code>org.jooq.util.ase</code> package contains classes related to the
* {@link org.jooq.SQLDialect#ACCESS} dialect.
*/
package org.jooq.util.access;