You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/02/02 10:57:30 UTC

incubator-ignite git commit: # IGNITE-32: WIP Oracle dialect: support for indexes.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-32 6706dbd8b -> 811713446


# IGNITE-32: WIP Oracle dialect: support for indexes.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/81171344
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/81171344
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/81171344

Branch: refs/heads/ignite-32
Commit: 8117134460ee50d894f40169c4ca37ee0694a22e
Parents: 6706dbd
Author: AKuznetsov <ak...@gridgain.com>
Authored: Mon Feb 2 16:57:37 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Mon Feb 2 16:57:37 2015 +0700

----------------------------------------------------------------------
 .../parser/dialect/OracleMetadataDialect.java   | 49 +++++++++++++++++---
 1 file changed, 42 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/81171344/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 fe8db43..81a9442 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
@@ -28,13 +28,6 @@ import static java.sql.Types.*;
  * Oracle specific metadata dialect.
  */
 public class OracleMetadataDialect extends DatabaseMetadataDialect {
-    /** SQL to get indexes metadata. */
-    private static final String SQL_INDEXES = "select a.index_owner, a.table_name, a.index_name, a.column_name," +
-        " b.uniqueness" +
-        " FROM all_ind_columns a" +
-        " LEFT JOIN all_indexes b on" +
-        "  (a.table_name = b.table_name AND a.table_owner = b.table_owner AND a.index_name  = b.index_name)";
-
     /** SQL to get columns metadata. */
     private static final String SQL_COLUMNS = "SELECT a.owner, a.table_name, a.column_name, a.nullable, a.data_type" +
         " FROM all_tab_columns a" +
@@ -42,6 +35,22 @@ 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;
+
+    private static final int SQL_COLS_TAB_NAME = 2;
+
+    private static final int SQL_COLS_COL_NAME = 3;
+
+    private static final int SQL_COLS_NULLABLE = 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";
+
     /**
      * @param type Column type from Oracle database.
      * @return JDBC type.
@@ -95,10 +104,36 @@ 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<>();