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 14:29:31 UTC

[1/2] incubator-ignite git commit: # IGNITE-32: warnings for batches.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-32 811713446 -> 605088c60


# IGNITE-32: warnings for batches.


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

Branch: refs/heads/ignite-32
Commit: 54ed9b1327734e6a9f4e7cb94c0c481c78c3752d
Parents: 8117134
Author: AKuznetsov <ak...@gridgain.com>
Authored: Mon Feb 2 20:27:19 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Mon Feb 2 20:27:19 2015 +0700

----------------------------------------------------------------------
 .../ignite/cache/store/jdbc/JdbcCacheStore.java | 50 +++++++++++++++-----
 .../store/jdbc/PojoJdbcCacheStoreTest.java      |  2 +
 2 files changed, 40 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/54ed9b13/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcCacheStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcCacheStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcCacheStore.java
index 15e1373..9ad64ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcCacheStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcCacheStore.java
@@ -731,7 +731,7 @@ public abstract class JdbcCacheStore<K, V> extends CacheStore<K, V> implements G
                     }
 
                     if (!currKeyTypeId.equals(keyTypeId)) {
-                        mergeStmt.executeBatch();
+                        executeBatch(mergeStmt, "writeAll", cnt);
 
                         currKeyTypeId = keyTypeId;
 
@@ -744,12 +744,15 @@ public abstract class JdbcCacheStore<K, V> extends CacheStore<K, V> implements G
 
                     mergeStmt.addBatch();
 
-                    if (cnt++ % batchSz == 0)
-                        mergeStmt.executeBatch();
+                    if (++cnt % batchSz == 0) {
+                        executeBatch(mergeStmt, "writeAll", cnt);
+
+                        cnt = 0;
+                    }
                 }
 
                 if (mergeStmt != null && cnt % batchSz != 0)
-                    mergeStmt.executeBatch();
+                    executeBatch(mergeStmt, "writeAll", cnt);
             }
             catch (SQLException e) {
                 throw new CacheWriterException("Failed to write entries in database", e);
@@ -796,6 +799,28 @@ public abstract class JdbcCacheStore<K, V> extends CacheStore<K, V> implements G
         }
     }
 
+    /**
+     * @param stmt Statement.
+     * @param stmtType Statement type for error message.
+     * @param batchSz Expected batch size.
+     */
+    private void executeBatch(Statement stmt, String stmtType, int batchSz) throws SQLException {
+        int[] rowCounts = stmt.executeBatch();
+
+        int numOfRowCnt = rowCounts.length;
+
+        if (numOfRowCnt != batchSz)
+            log.warning("JDBC driver did not return the expected number of row counts," +
+                " actual row count: " + numOfRowCnt + " expected: " + batchSz);
+
+        for (int rowCount : rowCounts)
+            if (rowCount != 1) {
+                log.warning("Batch " + stmtType + " returned unexpected row count from " + stmtType + " statement");
+
+                break;
+            }
+    }
+
     /** {@inheritDoc} */
     @Override public void deleteAll(Collection<?> keys) throws CacheWriterException {
         assert keys != null;
@@ -823,25 +848,26 @@ public abstract class JdbcCacheStore<K, V> extends CacheStore<K, V> implements G
                 }
 
                 if (!currKeyTypeId.equals(keyTypeId)) {
-                    delStmt.executeBatch();
-
-                    currKeyTypeId = keyTypeId;
+                    executeBatch(delStmt, "deleteAll", cnt);
 
                     cnt = 0;
+
+                    currKeyTypeId = keyTypeId;
                 }
 
                 fillKeyParameters(delStmt, em, key);
 
                 delStmt.addBatch();
 
-                if (cnt++ % batchSz == 0)
-                    delStmt.executeBatch();
+                if (++cnt % batchSz == 0) {
+                    executeBatch(delStmt, "deleteAll", cnt);
+
+                    cnt = 0;
+                }
             }
 
             if (delStmt != null && cnt % batchSz != 0)
-                delStmt.executeBatch();
-
-            // TODO check delete result?
+                executeBatch(delStmt, "deleteAll", cnt);
         }
         catch (SQLException e) {
             throw new CacheWriterException("Failed to remove values from database", e);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/54ed9b13/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/PojoJdbcCacheStoreTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/PojoJdbcCacheStoreTest.java b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/PojoJdbcCacheStoreTest.java
index b7acf23..b8b751b 100644
--- a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/PojoJdbcCacheStoreTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/PojoJdbcCacheStoreTest.java
@@ -345,6 +345,8 @@ public class PojoJdbcCacheStoreTest extends GridCommonAbstractTest {
 
         assertEquals(v3, store.load(k3));
 
+        store.deleteAll(Arrays.asList(new OrganizationKey(-100)));
+
         // Remove all.
         store.deleteAll(Arrays.asList(k3));
 


[2/2] incubator-ignite git commit: # IGNITE-32: Use indexes instead of columns names.

Posted by ak...@apache.org.
# IGNITE-32: Use indexes instead of columns names.


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

Branch: refs/heads/ignite-32
Commit: 605088c60865dd9bed40525ce547a0dbb183c0b7
Parents: 54ed9b1
Author: AKuznetsov <ak...@gridgain.com>
Authored: Mon Feb 2 20:29:24 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Mon Feb 2 20:29:24 2015 +0700

----------------------------------------------------------------------
 .../parser/dialect/JdbcMetadataDialect.java     | 36 ++++++++++++++++----
 .../parser/dialect/OracleMetadataDialect.java   | 10 +++---
 2 files changed, 34 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/605088c6/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
index 4e34f35..c9cf0cf 100644
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
+++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
@@ -32,6 +32,28 @@ public class JdbcMetadataDialect extends DatabaseMetadataDialect {
     /** */
     private static final String[] TABLES_AND_VIEWS = {"TABLE", "VIEW"};
 
+    /** Schema name index. */
+    private static final int SCHEMA_NAME_IDX = 1;
+
+    /** Schema catalog index. */
+    private static final int SCHEMA_CATALOG_IDX = 2;
+
+    /** Table name index. */
+    private static final int TABLE_NAME_IDX = 3;
+
+    /** Primary key column name index. */
+    private static final int PK_COLUMN_NAME_IDX = 4;
+
+    /** Column name index. */
+    private static final int COLUMN_NAME_IDX = 4;
+
+    /** Column data type index. */
+    private static final int COLUMN_DATA_TYPE_IDX = 5;
+
+    /** Column nullable index. */
+    private static final int COLUMN_NULLABLE_IDX = 11;
+
+
     /** {@inheritDoc} */
     @Override public Collection<DbTable> tables(Connection conn, boolean tblsOnly) throws SQLException {
         DatabaseMetaData dbMeta = conn.getMetaData();
@@ -42,37 +64,37 @@ public class JdbcMetadataDialect extends DatabaseMetadataDialect {
 
         try (ResultSet schemasRs = dbMeta.getSchemas()) {
             while (schemasRs.next()) {
-                String schema = schemasRs.getString("TABLE_SCHEM");
+                String schema = schemasRs.getString(SCHEMA_NAME_IDX);
 
                 // Skip system schemas.
                 if (sys.contains(schema))
                     continue;
 
-                String catalog = schemasRs.getString("TABLE_CATALOG");
+                String catalog = schemasRs.getString(SCHEMA_CATALOG_IDX);
 
                 try (ResultSet tblsRs = dbMeta.getTables(catalog, schema, "%",
                     tblsOnly ? TABLES_ONLY : TABLES_AND_VIEWS)) {
                     while (tblsRs.next()) {
-                        String tblName = tblsRs.getString("TABLE_NAME");
+                        String tblName = tblsRs.getString(TABLE_NAME_IDX);
 
                         Set<String> pkCols = new HashSet<>();
 
                         try (ResultSet pkRs = dbMeta.getPrimaryKeys(catalog, schema, tblName)) {
                             while (pkRs.next())
-                                pkCols.add(pkRs.getString("COLUMN_NAME"));
+                                pkCols.add(pkRs.getString(PK_COLUMN_NAME_IDX));
                         }
 
                         List<DbColumn> cols = new ArrayList<>();
 
                         try (ResultSet colsRs = dbMeta.getColumns(catalog, schema, tblName, null)) {
                             while (colsRs.next()) {
-                                String colName = colsRs.getString("COLUMN_NAME");
+                                String colName = colsRs.getString(COLUMN_NAME_IDX);
 
                                 cols.add(new DbColumn(
                                     colName,
-                                    colsRs.getInt("DATA_TYPE"),
+                                    colsRs.getInt(COLUMN_DATA_TYPE_IDX),
                                     pkCols.contains(colName),
-                                    colsRs.getInt("NULLABLE") == DatabaseMetaData.columnNullable));
+                                    colsRs.getInt(COLUMN_NULLABLE_IDX) == DatabaseMetaData.columnNullable));
                             }
                         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/605088c6/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 81a9442..363c7b2 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
@@ -145,8 +145,8 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect {
                 String prevTbl = "";
 
                 while (colsRs.next()) {
-                    String schema = colsRs.getString("OWNER");
-                    String tbl = colsRs.getString("TABLE_NAME");
+                    String schema = colsRs.getString(SQL_COLS_OWNER);
+                    String tbl = colsRs.getString(SQL_COLS_TAB_NAME);
 
                     if (prevSchema.isEmpty()) {
                         prevSchema = schema;
@@ -162,10 +162,10 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect {
 
                         cols = new ArrayList<>();
                     }
-                    cols.add(new DbColumn(colsRs.getString("COLUMN_NAME"),
-                        decodeType(colsRs.getString("DATA_TYPE")),
+                    cols.add(new DbColumn(colsRs.getString(SQL_COLS_COL_NAME),
+                        decodeType(colsRs.getString(SQL_COLS_DATA_TYPE)),
                         false,
-                        decodeNullable(colsRs.getString("NULLABLE"))
+                        decodeNullable(colsRs.getString(SQL_COLS_NULLABLE))
                     ));
                 }