http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ed2af98c/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java ---------------------------------------------------------------------- diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java index 363c7b2..8770881 100644 --- a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java +++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java @@ -35,21 +35,20 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect { " WHERE a.owner = '%s'" + " ORDER BY a.owner, a.table_name, a.column_id"; - private static final int SQL_COLS_OWNER = 1; + /** Owner index. */ + private static final int OWNER_IDX = 1; - private static final int SQL_COLS_TAB_NAME = 2; + /** Table name index. */ + private static final int TABLE_NAME_IDX = 2; - private static final int SQL_COLS_COL_NAME = 3; + /** Column name index. */ + private static final int COLUMN_NAME_IDX = 3; - private static final int SQL_COLS_NULLABLE = 4; + /** Nullable index. */ + private static final int NULLABLE_IDX = 4; - private static final int SQL_COLS_DATA_TYPE = 5; - - /** SQL to get indexes metadata. */ - private static final String SQL_INDEXES = "select index_name, column_name, descend" + - " FROM all_ind_columns" + - " WHERE index_owner = ? and table_name = ?" + - " ORDER BY index_name, column_position"; + /** Data type index. */ + private static final int DATA_TYPE_IDX = 5; /** * @param type Column type from Oracle database. @@ -104,36 +103,10 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect { return "Y".equals(nullable); } - /** - * @param descend Index column sort direction from Oracle database. - * @return {@code true} if column sorted in descent direction. - */ - private static Boolean decodeDescend(String descend) { - return descend != null ? "DESC".equals(descend) : null; - } - - private static Map<String, Map<String, Boolean>> indexes(PreparedStatement stmt, String owner, String tbl) - throws SQLException { - Map<String, Map<String, Boolean>> idxs = new LinkedHashMap<>(); - - stmt.setString(1, owner); - stmt.setString(2, tbl); - - try (ResultSet idxsRs = stmt.executeQuery()) { - while (idxsRs.next()) { - String idxName = idxsRs.getString("INDEX_NAME"); - } - } - - return idxs; - } - /** {@inheritDoc} */ @Override public Collection<DbTable> tables(Connection conn, boolean tblsOnly) throws SQLException { Collection<DbTable> tbls = new ArrayList<>(); - PreparedStatement stmtIdxs = conn.prepareStatement(SQL_INDEXES); - try (Statement stmt = conn.createStatement()) { Collection<DbColumn> cols = new ArrayList<>(); @@ -145,8 +118,8 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect { String prevTbl = ""; while (colsRs.next()) { - String schema = colsRs.getString(SQL_COLS_OWNER); - String tbl = colsRs.getString(SQL_COLS_TAB_NAME); + String schema = colsRs.getString(OWNER_IDX); + String tbl = colsRs.getString(TABLE_NAME_IDX); if (prevSchema.isEmpty()) { prevSchema = schema; @@ -154,25 +127,22 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect { } if (!schema.equals(prevSchema) || !tbl.equals(prevTbl)) { - tbls.add(new DbTable(prevSchema, prevTbl, cols, Collections.<String>emptySet(), - Collections.<String>emptySet(), null)); + tbls.add(new DbTable(prevSchema, prevTbl, cols)); prevSchema = schema; prevTbl = tbl; cols = new ArrayList<>(); } - cols.add(new DbColumn(colsRs.getString(SQL_COLS_COL_NAME), - decodeType(colsRs.getString(SQL_COLS_DATA_TYPE)), + + cols.add(new DbColumn(colsRs.getString(COLUMN_NAME_IDX), + decodeType(colsRs.getString(DATA_TYPE_IDX)), false, - decodeNullable(colsRs.getString(SQL_COLS_NULLABLE)) - )); + decodeNullable(colsRs.getString(NULLABLE_IDX)))); } if (!cols.isEmpty()) - tbls.add(new DbTable(prevSchema, prevTbl, cols, - Collections.<String>emptySet(), Collections.<String>emptySet(), - Collections.<String, Map<String, Boolean>>emptyMap())); + tbls.add(new DbTable(prevSchema, prevTbl, cols)); } }
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ed2af98c/modules/schema-load/src/test/java/org/apache/ignite/schema/load/model/Ignite.xml ---------------------------------------------------------------------- diff --git a/modules/schema-load/src/test/java/org/apache/ignite/schema/load/model/Ignite.xml b/modules/schema-load/src/test/java/org/apache/ignite/schema/load/model/Ignite.xml index 2c969ce..bfd5ad4 100644 --- a/modules/schema-load/src/test/java/org/apache/ignite/schema/load/model/Ignite.xml +++ b/modules/schema-load/src/test/java/org/apache/ignite/schema/load/model/Ignite.xml @@ -22,300 +22,224 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - <bean class="org.apache.ignite.cache.query.CacheQueryTypeMetadata"> - <property name="type" value="org.apache.ignite.schema.load.model.Objects"/> + <bean class="org.apache.ignite.cache.CacheTypeMetadata"> + <property name="databaseSchema" value="PUBLIC"/> + <property name="databaseTable" value="OBJECTS"/> <property name="keyType" value="org.apache.ignite.schema.load.model.ObjectsKey"/> - <property name="schema" value="PUBLIC"/> - <property name="tableName" value="OBJECTS"/> - <property name="keyDescriptors"> + <property name="valueType" value="org.apache.ignite.schema.load.model.Objects"/> + <property name="keyFields"> <list> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="pk"/> - <property name="javaType" value="int"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="PK"/> <property name="dbType" value="4"/> + <property name="javaName" value="pk"/> + <property name="javaType" value="int"/> </bean> </list> </property> - <property name="valueDescriptors"> + <property name="valueFields"> <list> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="pk"/> - <property name="javaType" value="int"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="PK"/> <property name="dbType" value="4"/> + <property name="javaName" value="pk"/> + <property name="javaType" value="int"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="boolcol"/> - <property name="javaType" value="java.lang.Boolean"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="BOOLCOL"/> <property name="dbType" value="16"/> + <property name="javaName" value="boolcol"/> + <property name="javaType" value="java.lang.Boolean"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="bytecol"/> - <property name="javaType" value="java.lang.Byte"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="BYTECOL"/> <property name="dbType" value="-6"/> + <property name="javaName" value="bytecol"/> + <property name="javaType" value="java.lang.Byte"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="shortcol"/> - <property name="javaType" value="java.lang.Short"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="SHORTCOL"/> <property name="dbType" value="5"/> + <property name="javaName" value="shortcol"/> + <property name="javaType" value="java.lang.Short"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="intcol"/> - <property name="javaType" value="java.lang.Integer"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="INTCOL"/> <property name="dbType" value="4"/> + <property name="javaName" value="intcol"/> + <property name="javaType" value="java.lang.Integer"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="longcol"/> - <property name="javaType" value="java.lang.Long"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="LONGCOL"/> <property name="dbType" value="-5"/> + <property name="javaName" value="longcol"/> + <property name="javaType" value="java.lang.Long"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="floatcol"/> - <property name="javaType" value="java.lang.Float"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="FLOATCOL"/> <property name="dbType" value="7"/> + <property name="javaName" value="floatcol"/> + <property name="javaType" value="java.lang.Float"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="doublecol"/> - <property name="javaType" value="java.lang.Double"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="DOUBLECOL"/> <property name="dbType" value="8"/> - </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="doublecol2"/> + <property name="javaName" value="doublecol"/> <property name="javaType" value="java.lang.Double"/> + </bean> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="DOUBLECOL2"/> <property name="dbType" value="8"/> + <property name="javaName" value="doublecol2"/> + <property name="javaType" value="java.lang.Double"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="bigdecimalcol"/> - <property name="javaType" value="java.math.BigDecimal"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="BIGDECIMALCOL"/> <property name="dbType" value="3"/> + <property name="javaName" value="bigdecimalcol"/> + <property name="javaType" value="java.math.BigDecimal"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="strcol"/> - <property name="javaType" value="java.lang.String"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="STRCOL"/> <property name="dbType" value="12"/> + <property name="javaName" value="strcol"/> + <property name="javaType" value="java.lang.String"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="datecol"/> - <property name="javaType" value="java.sql.Date"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="DATECOL"/> <property name="dbType" value="91"/> + <property name="javaName" value="datecol"/> + <property name="javaType" value="java.sql.Date"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="timecol"/> - <property name="javaType" value="java.sql.Time"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="TIMECOL"/> <property name="dbType" value="92"/> + <property name="javaName" value="timecol"/> + <property name="javaType" value="java.sql.Time"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="tscol"/> - <property name="javaType" value="java.sql.Timestamp"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="TSCOL"/> <property name="dbType" value="93"/> + <property name="javaName" value="tscol"/> + <property name="javaType" value="java.sql.Timestamp"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="arrcol"/> - <property name="javaType" value="java.lang.Object"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="ARRCOL"/> <property name="dbType" value="-3"/> + <property name="javaName" value="arrcol"/> + <property name="javaType" value="java.lang.Object"/> </bean> </list> </property> - <property name="queryFields"> - <map> - <entry key="pk" value="int"/> - <entry key="boolcol" value="java.lang.Boolean"/> - <entry key="bytecol" value="java.lang.Byte"/> - <entry key="shortcol" value="java.lang.Short"/> - <entry key="intcol" value="java.lang.Integer"/> - <entry key="longcol" value="java.lang.Long"/> - <entry key="floatcol" value="java.lang.Float"/> - <entry key="doublecol" value="java.lang.Double"/> - <entry key="doublecol2" value="java.lang.Double"/> - <entry key="bigdecimalcol" value="java.math.BigDecimal"/> - <entry key="strcol" value="java.lang.String"/> - <entry key="datecol" value="java.sql.Date"/> - <entry key="timecol" value="java.sql.Time"/> - <entry key="tscol" value="java.sql.Timestamp"/> - <entry key="arrcol" value="java.lang.Object"/> - </map> - </property> - <property name="ascendingFields"> - <map> - <entry key="pk" value="int"/> - </map> - </property> - <property name="groups"> - <map> - <entry key="primaryKeyC"> - <map> - <entry key="pk"> - <bean class="org.apache.ignite.lang.IgniteBiTuple"> - <constructor-arg value="int"/> - <constructor-arg value="false"/> - </bean> - </entry> - </map> - </entry> - </map> - </property> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTypeMetadata"> - <property name="type" value="org.apache.ignite.schema.load.model.Primitives"/> + <bean class="org.apache.ignite.cache.CacheTypeMetadata"> + <property name="databaseSchema" value="PUBLIC"/> + <property name="databaseTable" value="PRIMITIVES"/> <property name="keyType" value="org.apache.ignite.schema.load.model.PrimitivesKey"/> - <property name="schema" value="PUBLIC"/> - <property name="tableName" value="PRIMITIVES"/> - <property name="keyDescriptors"> + <property name="valueType" value="org.apache.ignite.schema.load.model.Primitives"/> + <property name="keyFields"> <list> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="pk"/> - <property name="javaType" value="int"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="PK"/> <property name="dbType" value="4"/> + <property name="javaName" value="pk"/> + <property name="javaType" value="int"/> </bean> </list> </property> - <property name="valueDescriptors"> + <property name="valueFields"> <list> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="pk"/> - <property name="javaType" value="int"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="PK"/> <property name="dbType" value="4"/> + <property name="javaName" value="pk"/> + <property name="javaType" value="int"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="boolcol"/> - <property name="javaType" value="boolean"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="BOOLCOL"/> <property name="dbType" value="16"/> + <property name="javaName" value="boolcol"/> + <property name="javaType" value="boolean"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="bytecol"/> - <property name="javaType" value="byte"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="BYTECOL"/> <property name="dbType" value="-6"/> + <property name="javaName" value="bytecol"/> + <property name="javaType" value="byte"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="shortcol"/> - <property name="javaType" value="short"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="SHORTCOL"/> <property name="dbType" value="5"/> + <property name="javaName" value="shortcol"/> + <property name="javaType" value="short"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="intcol"/> - <property name="javaType" value="int"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="INTCOL"/> <property name="dbType" value="4"/> + <property name="javaName" value="intcol"/> + <property name="javaType" value="int"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="longcol"/> - <property name="javaType" value="long"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="LONGCOL"/> <property name="dbType" value="-5"/> + <property name="javaName" value="longcol"/> + <property name="javaType" value="long"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="floatcol"/> - <property name="javaType" value="float"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="FLOATCOL"/> <property name="dbType" value="7"/> + <property name="javaName" value="floatcol"/> + <property name="javaType" value="float"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="doublecol"/> - <property name="javaType" value="double"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="DOUBLECOL"/> <property name="dbType" value="8"/> - </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="doublecol2"/> + <property name="javaName" value="doublecol"/> <property name="javaType" value="double"/> + </bean> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="DOUBLECOL2"/> <property name="dbType" value="8"/> + <property name="javaName" value="doublecol2"/> + <property name="javaType" value="double"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="bigdecimalcol"/> - <property name="javaType" value="java.math.BigDecimal"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="BIGDECIMALCOL"/> <property name="dbType" value="3"/> + <property name="javaName" value="bigdecimalcol"/> + <property name="javaType" value="java.math.BigDecimal"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="strcol"/> - <property name="javaType" value="java.lang.String"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="STRCOL"/> <property name="dbType" value="12"/> + <property name="javaName" value="strcol"/> + <property name="javaType" value="java.lang.String"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="datecol"/> - <property name="javaType" value="java.sql.Date"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="DATECOL"/> <property name="dbType" value="91"/> + <property name="javaName" value="datecol"/> + <property name="javaType" value="java.sql.Date"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="timecol"/> - <property name="javaType" value="java.sql.Time"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="TIMECOL"/> <property name="dbType" value="92"/> + <property name="javaName" value="timecol"/> + <property name="javaType" value="java.sql.Time"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="tscol"/> - <property name="javaType" value="java.sql.Timestamp"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="TSCOL"/> <property name="dbType" value="93"/> + <property name="javaName" value="tscol"/> + <property name="javaType" value="java.sql.Timestamp"/> </bean> - <bean class="org.apache.ignite.cache.query.CacheQueryTableColumnMetadata"> - <property name="javaName" value="arrcol"/> - <property name="javaType" value="java.lang.Object"/> + <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata"> <property name="dbName" value="ARRCOL"/> <property name="dbType" value="-3"/> + <property name="javaName" value="arrcol"/> + <property name="javaType" value="java.lang.Object"/> </bean> </list> </property> - <property name="queryFields"> - <map> - <entry key="pk" value="int"/> - <entry key="boolcol" value="boolean"/> - <entry key="bytecol" value="byte"/> - <entry key="shortcol" value="short"/> - <entry key="intcol" value="int"/> - <entry key="longcol" value="long"/> - <entry key="floatcol" value="float"/> - <entry key="doublecol" value="double"/> - <entry key="doublecol2" value="double"/> - <entry key="bigdecimalcol" value="java.math.BigDecimal"/> - <entry key="strcol" value="java.lang.String"/> - <entry key="datecol" value="java.sql.Date"/> - <entry key="timecol" value="java.sql.Time"/> - <entry key="tscol" value="java.sql.Timestamp"/> - <entry key="arrcol" value="java.lang.Object"/> - </map> - </property> - <property name="ascendingFields"> - <map> - <entry key="pk" value="int"/> - </map> - </property> - <property name="groups"> - <map> - <entry key="primaryKeyD"> - <map> - <entry key="pk"> - <bean class="org.apache.ignite.lang.IgniteBiTuple"> - <constructor-arg value="int"/> - <constructor-arg value="false"/> - </bean> - </entry> - </map> - </entry> - </map> - </property> </bean> </beans>