/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.tools.workbench.test.platformsplugin.model; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; import java.util.Collection; import java.util.Map; /** * For now, this class is actually targets Oracle8i. */ public abstract class OracleTests extends PlatformTests { public OracleTests(String name) { super(name); } /** * extend to drop array and user-defined type */ protected void dropDatabaseObjects() throws Exception { super.dropDatabaseObjects(); Statement stmt; stmt = this.connection.createStatement(); try { stmt.executeUpdate(this.buildDropArrayDDL()); } catch (SQLException ex) {/* ignore any problems dropping the table */} stmt.close(); stmt = this.connection.createStatement(); try { stmt.executeUpdate(this.buildDropTypeDDL()); } catch (SQLException ex) {/* ignore any problems dropping the type */} stmt.close(); } /** * extend to create user-defined type and array */ protected void createDatabaseObjects() throws Exception { Statement stmt; stmt = this.connection.createStatement(); stmt.executeUpdate(this.buildCreateTypeDDL()); stmt.close(); stmt = this.connection.createStatement(); stmt.executeUpdate(this.buildCreateArrayDDL()); stmt.close(); super.createDatabaseObjects(); } protected String[] driverJARNames() { return new String[] {"OracleThinJDBC_jdk14_10.2.0.1.0.jar"}; } protected String driverClassName() { return "oracle.jdbc.OracleDriver"; } protected String connectionURL() { return "jdbc:oracle:thin:@" + this.serverName() + ":1521:" + this.instanceName(); } protected abstract String serverName(); protected String instanceName() { return "TOPLINK"; } /** * more recent Oracle platforms return twice what 8i did... */ protected int unicodeSizeFor(int size) { return size; } /** * this varies across versions... */ protected int varraySize() { return 2615; } protected void addIgnorableTypeNamesTo(Collection adtNames) { super.addIgnorableTypeNamesTo(adtNames); adtNames.add(this.typeName()); adtNames.add(this.arrayName()); } protected String buildDropTypeDDL() { return "DROP TYPE " + this.typeName(); } protected String buildCreateTypeDDL() { return "CREATE TYPE " + this.typeName() + " AS OBJECT (" + this.typeName() + "_NUMBER_10_0_COL NUMBER(10)," + this.typeName() + "_VARCHAR2_20_COL VARCHAR2(20)" + ")"; } protected String typeName() { return this.baseName() + "_TYPE"; } protected String buildDropArrayDDL() { return "DROP TYPE " + this.arrayName(); } protected String buildCreateArrayDDL() { return "CREATE TYPE " + this.arrayName() + " AS VARRAY(50) OF " + this.typeName(); } protected String arrayName() { return this.typeName() + "_ARRAY"; } protected void appendColumnsToTableDDL(StringBuffer sb) { sb.append(" VARCHAR2_20_COL VARCHAR2(20),"); sb.append(CR); // size is required sb.append(" NVARCHAR2_20_COL NVARCHAR2(20),"); sb.append(CR); // size is required sb.append(" NUMBER_COL NUMBER,"); sb.append(CR); sb.append(" NUMBER_3_0_COL NUMBER(3),"); sb.append(CR); sb.append(" NUMBER_10_0_COL NUMBER(10),"); sb.append(CR); sb.append(" NUMBER_20_2_COL NUMBER(20, 2),"); sb.append(CR); sb.append(" LONG_COL LONG,"); sb.append(CR); sb.append(" DATE_COL DATE,"); sb.append(CR); sb.append(" FLOAT_COL FLOAT,"); sb.append(CR); // ANSI datatype? sb.append(" FLOAT_100_COL FLOAT(100),"); sb.append(CR); // ANSI datatype? sb.append(" REAL_COL REAL,"); sb.append(CR); // ANSI datatype? sb.append(" RAW_1000_COL RAW(1000),"); sb.append(CR); // size is required // sb.append(" LONG_RAW_COL LONG RAW,"); sb.append(CR); // only one LONG allowed per table (LONG or LONG RAW) sb.append(" ROWID_COL ROWID,"); sb.append(CR); sb.append(" UROWID_COL UROWID,"); sb.append(CR); sb.append(" UROWID_2000_COL UROWID(2000),"); sb.append(CR); sb.append(" CHAR_COL CHAR,"); sb.append(CR); sb.append(" CHAR_1000_COL CHAR(1000),"); sb.append(CR); sb.append(" NCHAR_COL NCHAR,"); sb.append(CR); sb.append(" NCHAR_1000_COL NCHAR(1000),"); sb.append(CR); sb.append(" CLOB_COL CLOB,"); sb.append(CR); sb.append(" NCLOB_COL NCLOB,"); sb.append(CR); sb.append(" BLOB_COL BLOB,"); sb.append(CR); sb.append(" BFILE_COL BFILE,"); sb.append(CR); sb.append(" " + this.typeName() + "_COL " + this.typeName() + ","); sb.append(CR); // STRUCT? sb.append(" " + this.arrayName() + "_COL " + this.arrayName()); sb.append(CR); // ARRAY? } protected void verifyTable(Map metaDataMap) { // VARCHAR2(20) this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "DATA_TYPE", Types.VARCHAR); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "TYPE_NAME", "VARCHAR2"); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "COLUMN_SIZE", 20); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "VARCHAR2_20_COL", "IS_NULLABLE", "YES"); // NVARCHAR2(20) this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "DATA_TYPE", Types.OTHER); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "TYPE_NAME", "NVARCHAR2"); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "COLUMN_SIZE", this.unicodeSizeFor(20)); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "NVARCHAR2_20_COL", "IS_NULLABLE", "YES"); // NUMBER this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "DATA_TYPE", Types.DECIMAL); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "TYPE_NAME", "NUMBER"); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "COLUMN_SIZE", 22); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_COL", "IS_NULLABLE", "YES"); // NUMBER(3) this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "DATA_TYPE", Types.DECIMAL); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "TYPE_NAME", "NUMBER"); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "COLUMN_SIZE", 3); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "DECIMAL_DIGITS", 0); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_3_0_COL", "IS_NULLABLE", "YES"); // NUMBER(10) this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "DATA_TYPE", Types.DECIMAL); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "TYPE_NAME", "NUMBER"); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "COLUMN_SIZE", 10); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "DECIMAL_DIGITS", 0); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_10_0_COL", "IS_NULLABLE", "YES"); // NUMBER(20, 2) this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "DATA_TYPE", Types.DECIMAL); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "TYPE_NAME", "NUMBER"); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "COLUMN_SIZE", 20); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "DECIMAL_DIGITS", 2); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "NUMBER_20_2_COL", "IS_NULLABLE", "YES"); // LONG this.verifyColumnAttribute(metaDataMap, "LONG_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "DATA_TYPE", Types.LONGVARCHAR); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "TYPE_NAME", "LONG"); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "COLUMN_SIZE", 0); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "LONG_COL", "IS_NULLABLE", "YES"); // DATE this.verifyColumnAttribute(metaDataMap, "DATE_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "DATA_TYPE", Types.DATE); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "TYPE_NAME", "DATE"); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "COLUMN_SIZE", 7); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "DATE_COL", "IS_NULLABLE", "YES"); // FLOAT this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "DATA_TYPE", Types.FLOAT); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "TYPE_NAME", "FLOAT"); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "COLUMN_SIZE", 126); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "FLOAT_COL", "IS_NULLABLE", "YES"); // FLOAT(100) this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "DATA_TYPE", Types.FLOAT); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "TYPE_NAME", "FLOAT"); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "COLUMN_SIZE", 100); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "FLOAT_100_COL", "IS_NULLABLE", "YES"); // REAL this.verifyColumnAttribute(metaDataMap, "REAL_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "DATA_TYPE", Types.FLOAT); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "TYPE_NAME", "FLOAT"); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "COLUMN_SIZE", 63); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "REAL_COL", "IS_NULLABLE", "YES"); // RAW(1000) this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "DATA_TYPE", Types.VARBINARY); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "TYPE_NAME", "RAW"); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "COLUMN_SIZE", 1000); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "RAW_1000_COL", "IS_NULLABLE", "YES"); // ROWID this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "DATA_TYPE", Types.OTHER); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "TYPE_NAME", "ROWID"); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "COLUMN_SIZE", 10); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "ROWID_COL", "IS_NULLABLE", "YES"); // UROWID this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "DATA_TYPE", Types.OTHER); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "TYPE_NAME", "UROWID"); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "COLUMN_SIZE", 4000); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "UROWID_COL", "IS_NULLABLE", "YES"); // UROWID(2000) this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "DATA_TYPE", Types.OTHER); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "TYPE_NAME", "UROWID"); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "COLUMN_SIZE", 2000); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "UROWID_2000_COL", "IS_NULLABLE", "YES"); // CHAR this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "DATA_TYPE", Types.CHAR); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "TYPE_NAME", "CHAR"); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "COLUMN_SIZE", 1); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "CHAR_COL", "IS_NULLABLE", "YES"); // CHAR(1000) this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "DATA_TYPE", Types.CHAR); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "TYPE_NAME", "CHAR"); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "COLUMN_SIZE", 1000); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "CHAR_1000_COL", "IS_NULLABLE", "YES"); // NCHAR this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "DATA_TYPE", Types.OTHER); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "TYPE_NAME", "NCHAR"); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "COLUMN_SIZE", this.unicodeSizeFor(1)); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "NCHAR_COL", "IS_NULLABLE", "YES"); // NCHAR(1000) this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "DATA_TYPE", Types.OTHER); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "TYPE_NAME", "NCHAR"); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "COLUMN_SIZE", this.unicodeSizeFor(1000)); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "NCHAR_1000_COL", "IS_NULLABLE", "YES"); // CLOB this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "DATA_TYPE", Types.CLOB); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "TYPE_NAME", "CLOB"); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "COLUMN_SIZE", 4000); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "CLOB_COL", "IS_NULLABLE", "YES"); // NCLOB this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "DATA_TYPE", Types.OTHER); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "TYPE_NAME", "NCLOB"); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "COLUMN_SIZE", 4000); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "NCLOB_COL", "IS_NULLABLE", "YES"); // BLOB this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "DATA_TYPE", Types.BLOB); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "TYPE_NAME", "BLOB"); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "COLUMN_SIZE", 4000); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "BLOB_COL", "IS_NULLABLE", "YES"); // BFILE this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "DATA_TYPE", -13); // ??? this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "TYPE_NAME", "BFILE"); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "COLUMN_SIZE", 530); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "BFILE_COL", "IS_NULLABLE", "YES"); // FOO_TYPE (user-defined datatype) this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "DATA_TYPE", Types.OTHER); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "TYPE_NAME", "FOO_TYPE"); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "COLUMN_SIZE", 1); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_COL", "IS_NULLABLE", "YES"); // FOO_TYPE_ARRAY (user-defined datatype) this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "TABLE_CAT", null); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "TABLE_SCHEM", this.userName().toUpperCase()); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "TABLE_NAME", this.tableName()); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "DATA_TYPE", Types.OTHER); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "TYPE_NAME", "FOO_TYPE_ARRAY"); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "COLUMN_SIZE", this.varraySize()); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "DECIMAL_DIGITS", null); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "NUM_PREC_RADIX", 10); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "NULLABLE", DatabaseMetaData.columnNullable); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "REMARKS", null); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "COLUMN_DEF", null); this.verifyColumnAttribute(metaDataMap, "FOO_TYPE_ARRAY_COL", "IS_NULLABLE", "YES"); } }