# ignite-32 get column value by index from result set.

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

Branch: refs/heads/sprint-1
Commit: ffd877d38ea467b258969988600c40422e4b208b
Parents: f087f81
Author: anovikov <anovi...@gridgain.com>
Authored: Thu Feb 5 12:51:20 2015 +0700
Committer: anovikov <anovi...@gridgain.com>
Committed: Thu Feb 5 12:51:20 2015 +0700

----------------------------------------------------------------------
 .../ignite/cache/store/jdbc/JdbcCacheStore.java | 141 ++++++++++++++-----
 .../cache/store/jdbc/JdbcPojoCacheStore.java    |  56 ++------
 .../store/jdbc/dialect/BasicJdbcDialect.java    |  32 ++---
 .../cache/store/jdbc/dialect/DB2Dialect.java    |   6 +-
 .../cache/store/jdbc/dialect/H2Dialect.java     |   4 +-
 .../cache/store/jdbc/dialect/JdbcDialect.java   |  40 +++---
 .../cache/store/jdbc/dialect/MySQLDialect.java  |   4 +-
 .../cache/store/jdbc/dialect/OracleDialect.java |   6 +-
 .../store/jdbc/dialect/SQLServerDialect.java    |   6 +-
 9 files changed, 155 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ffd877d3/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 29ca25d..255b895 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
@@ -88,6 +88,9 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
     /** Connection attribute property name. */
     protected static final String ATTR_CONN_PROP = "JDBC_STORE_CONNECTION";
 
+    /** Empty column value. */
+    protected static final Object[] EMPTY_COLUMN_VALUE = new Object[] { null };
+
     /** Auto-injected logger instance. */
     @IgniteLoggerResource
     protected IgniteLogger log;
@@ -131,11 +134,12 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
      * @param <R> Type of result object.
      * @param typeName Type name.
      * @param fields Fields descriptors.
+     * @param loadColIdxs Select query columns index.
      * @param rs ResultSet.
      * @return Constructed object.
      */
-    protected abstract <R> R buildObject(String typeName, 
Collection<CacheTypeFieldMetadata> fields, ResultSet rs)
-        throws CacheLoaderException;
+    protected abstract <R> R buildObject(String typeName, 
Collection<CacheTypeFieldMetadata> fields,
+        Map<String, Integer> loadColIdxs, ResultSet rs) throws 
CacheLoaderException;
 
     /**
      * Extract key type id from key object.
@@ -316,15 +320,67 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
     }
 
     /**
+     * Retrieves the value of the designated column in the current row of this 
<code>ResultSet</code> object and
+     * will convert to the requested Java data type.
+     *
+     * @param rs Result set.
+     * @param colIdx Column index in result set.
+     * @param type Class representing the Java data type to convert the 
designated column to.
+     * @return Value in column.
+     * @throws SQLException If a database access error occurs or this method 
is called.
+     */
+    protected Object getColumnValue(ResultSet rs, int colIdx, Class<?> type) 
throws SQLException {
+        if (type == boolean.class)
+            return rs.getBoolean(colIdx);
+        if (type == int.class)
+            return rs.getInt(colIdx);
+        else if (type == long.class)
+            return rs.getLong(colIdx);
+        else if (type == double.class)
+            return rs.getDouble(colIdx);
+        else if (type == byte.class)
+            return rs.getByte(colIdx);
+        else if (type == short.class)
+            return rs.getShort(colIdx);
+        else if (type == float.class)
+            return rs.getFloat(colIdx);
+        else if (type == Integer.class || type == Long.class || type == 
Double.class ||
+            type == Byte.class || type == Short.class ||  type == Float.class) 
{
+            Object val = rs.getObject(colIdx);
+
+            if (val != null) {
+                Number num = (Number)val;
+
+                if (type == Integer.class)
+                    return num.intValue();
+                else if (type == Long.class)
+                    return num.longValue();
+                else if (type == Double.class)
+                    return num.doubleValue();
+                else if (type == Byte.class)
+                    return num.byteValue();
+                else if (type == Short.class)
+                    return num.shortValue();
+                else if (type == Float.class)
+                    return num.floatValue();
+            }
+            else
+                return EMPTY_COLUMN_VALUE;
+        }
+
+        return rs.getObject(colIdx);
+    }
+
+    /**
      * Construct load cache from range.
      *
-     * @param m Type mapping description.
+     * @param em Type mapping description.
      * @param clo Closure that will be applied to loaded values.
      * @param lowerBound Lower bound for range.
      * @param upperBound Upper bound for range.
      * @return Callable for pool submit.
      */
-    private Callable<Void> loadCacheRange(final EntryMapping m, final 
IgniteBiInClosure<K, V> clo,
+    private Callable<Void> loadCacheRange(final EntryMapping em, final 
IgniteBiInClosure<K, V> clo,
         @Nullable final Object[] lowerBound, @Nullable final Object[] 
upperBound) {
         return new Callable<Void>() {
             @Override public Void call() throws Exception {
@@ -336,8 +392,8 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
                     conn = openConnection(true);
 
                     stmt = conn.prepareStatement(lowerBound == null && 
upperBound == null
-                        ? m.loadCacheQry
-                        : m.loadCacheRangeQuery(lowerBound != null, upperBound 
!= null));
+                        ? em.loadCacheQry
+                        : em.loadCacheRangeQuery(lowerBound != null, 
upperBound != null));
 
                     int ix = 1;
 
@@ -354,8 +410,8 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
                     ResultSet rs = stmt.executeQuery();
 
                     while (rs.next()) {
-                        K key = buildObject(m.keyType(), m.keyColumns(), rs);
-                        V val = buildObject(m.valueType(), m.valueColumns(), 
rs);
+                        K key = buildObject(em.keyType(), em.keyColumns(), 
em.loadColIdxs, rs);
+                        V val = buildObject(em.valueType(), em.valueColumns(), 
em.loadColIdxs, rs);
 
                         clo.apply(key, val);
                     }
@@ -557,7 +613,7 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
             ResultSet rs = stmt.executeQuery();
 
             if (rs.next())
-                return buildObject(em.valueType(), em.valueColumns(), rs);
+                return buildObject(em.valueType(), em.valueColumns(), 
em.loadColIdxs, rs);
         }
         catch (SQLException e) {
             throw new CacheLoaderException("Failed to load object [table=" + 
em.fullTableName() +
@@ -1197,6 +1253,9 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
         /** Database unique value columns. */
         private final Collection<String> cols;
 
+        /** Select query columns index. */
+        private final Map<String, Integer> loadColIdxs;
+
         /** Unique value fields. */
         private final Collection<CacheTypeFieldMetadata> uniqValFields;
 
@@ -1228,33 +1287,38 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
 
             String tblName = typeMeta.getDatabaseTable();
 
-            fullTblName = schema + "." + tblName;
+            fullTblName = F.isEmpty(schema) ? tblName : schema + "." + tblName;
 
             keyCols = databaseColumns(keyFields);
 
-            Collection<String> valCols = databaseColumns(valFields);
-
             Collection<String> uniqValCols = databaseColumns(uniqValFields);
 
             cols = F.concat(false, keyCols, uniqValCols);
 
-            loadCacheQry = dialect.loadCacheQuery(schema, tblName, cols);
+            loadColIdxs = U.newHashMap(cols.size());
+
+            int idx = 1;
+
+            for (String col : cols)
+                loadColIdxs.put(col, idx++);
+
+            loadCacheQry = dialect.loadCacheQuery(fullTblName, cols);
 
-            loadCacheSelRangeQry = dialect.loadCacheSelectRangeQuery(schema, 
tblName, keyCols);
+            loadCacheSelRangeQry = 
dialect.loadCacheSelectRangeQuery(fullTblName, keyCols);
 
-            loadQrySingle = dialect.loadQuery(schema, tblName, keyCols, 
valCols, 1);
+            loadQrySingle = dialect.loadQuery(fullTblName, keyCols, cols, 1);
 
             maxKeysPerStmt = dialect.getMaxParamsCnt() / keyCols.size();
 
-            loadQry = dialect.loadQuery(schema, tblName, keyCols, uniqValCols, 
maxKeysPerStmt);
+            loadQry = dialect.loadQuery(fullTblName, keyCols, cols, 
maxKeysPerStmt);
 
-            insQry = dialect.insertQuery(schema, tblName, keyCols, 
uniqValCols);
+            insQry = dialect.insertQuery(fullTblName, keyCols, uniqValCols);
 
-            updQry = dialect.updateQuery(schema, tblName, keyCols, 
uniqValCols);
+            updQry = dialect.updateQuery(fullTblName, keyCols, uniqValCols);
 
-            mergeQry = dialect.mergeQuery(schema, tblName, keyCols, 
uniqValCols);
+            mergeQry = dialect.mergeQuery(fullTblName, keyCols, uniqValCols);
 
-            remQry = dialect.removeQuery(schema, tblName, keyCols);
+            remQry = dialect.removeQuery(fullTblName, keyCols);
         }
 
         /**
@@ -1285,7 +1349,7 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
             if (keyCnt == 1)
                 return loadQrySingle;
 
-            return dialect.loadQuery(typeMeta.getDatabaseSchema(), 
typeMeta.getDatabaseTable(), keyCols, cols, keyCnt);
+            return dialect.loadQuery(fullTblName, keyCols, cols, keyCnt);
         }
 
         /**
@@ -1296,8 +1360,7 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
          * @return Query with range.
          */
         protected String loadCacheRangeQuery(boolean appendLowerBound, boolean 
appendUpperBound) {
-            return dialect.loadCacheRangeQuery(typeMeta.getDatabaseSchema(), 
typeMeta.getDatabaseTable(), keyCols, cols,
-                appendLowerBound, appendUpperBound);
+            return dialect.loadCacheRangeQuery(fullTblName, keyCols, cols, 
appendLowerBound, appendUpperBound);
         }
 
         /** Key type. */
@@ -1346,7 +1409,7 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
      */
     private class LoadCacheCustomQueryWorker<K1, V1> implements Callable<Void> 
{
         /** Entry mapping description. */
-        private final EntryMapping m;
+        private final EntryMapping em;
 
         /** User query. */
         private final String qry;
@@ -1355,12 +1418,12 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
         private final IgniteBiInClosure<K1, V1> clo;
 
         /**
-         * @param m Entry mapping description.
+         * @param em Entry mapping description.
          * @param qry User query.
          * @param clo Closure for loaded values.
          */
-        private LoadCacheCustomQueryWorker(EntryMapping m, String qry, 
IgniteBiInClosure<K1, V1> clo) {
-            this.m = m;
+        private LoadCacheCustomQueryWorker(EntryMapping em, String qry, 
IgniteBiInClosure<K1, V1> clo) {
+            this.em = em;
             this.qry = qry;
             this.clo = clo;
         }
@@ -1379,8 +1442,8 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
                 ResultSet rs = stmt.executeQuery();
 
                 while (rs.next()) {
-                    K1 key = buildObject(m.keyType(), m.keyColumns(), rs);
-                    V1 val = buildObject(m.valueType(), m.valueColumns(), rs);
+                    K1 key = buildObject(em.keyType(), em.keyColumns(), 
em.loadColIdxs, rs);
+                    V1 val = buildObject(em.valueType(), em.valueColumns(), 
em.loadColIdxs, rs);
 
                     clo.apply(key, val);
                 }
@@ -1437,17 +1500,17 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
         private final Collection<K1> keys;
 
         /** Entry mapping description. */
-        private final EntryMapping m;
+        private final EntryMapping em;
 
         /**
          * @param conn Connection.
-         * @param m Entry mapping description.
+         * @param em Entry mapping description.
          */
-        private LoadWorker(Connection conn, EntryMapping m) {
+        private LoadWorker(Connection conn, EntryMapping em) {
             this.conn = conn;
-            this.m = m;
+            this.em = em;
 
-            keys = new ArrayList<>(m.maxKeysPerStmt);
+            keys = new ArrayList<>(em.maxKeysPerStmt);
         }
 
         /** {@inheritDoc} */
@@ -1455,13 +1518,13 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
             PreparedStatement stmt = null;
 
             try {
-                stmt = conn.prepareStatement(m.loadQuery(keys.size()));
+                stmt = conn.prepareStatement(em.loadQuery(keys.size()));
 
                 int i = 1;
 
                 for (Object key : keys)
-                    for (CacheTypeFieldMetadata field : m.keyColumns()) {
-                        Object fieldVal = extractField(m.keyType(), 
field.getJavaName(), key);
+                    for (CacheTypeFieldMetadata field : em.keyColumns()) {
+                        Object fieldVal = extractField(em.keyType(), 
field.getJavaName(), key);
 
                         if (fieldVal != null)
                             stmt.setObject(i++, fieldVal);
@@ -1474,8 +1537,8 @@ public abstract class JdbcCacheStore<K, V> extends 
CacheStore<K, V> implements L
                 Map<K1, V1> entries = U.newHashMap(keys.size());
 
                 while (rs.next()) {
-                    K1 key = buildObject(m.keyType(), m.keyColumns(), rs);
-                    V1 val = buildObject(m.valueType(), m.valueColumns(), rs);
+                    K1 key = buildObject(em.keyType(), em.keyColumns(), 
em.loadColIdxs, rs);
+                    V1 val = buildObject(em.valueType(), em.valueColumns(), 
em.loadColIdxs, rs);
 
                     entries.put(key, val);
                 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ffd877d3/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcPojoCacheStore.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcPojoCacheStore.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcPojoCacheStore.java
index 45f8dd9..e80fa62 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcPojoCacheStore.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/JdbcPojoCacheStore.java
@@ -154,58 +154,18 @@ public class JdbcPojoCacheStore extends 
JdbcCacheStore<Object, Object> {
 
     /** {@inheritDoc} */
     @Override protected <R> R buildObject(String typeName, 
Collection<CacheTypeFieldMetadata> fields,
-        ResultSet rs) throws CacheLoaderException {
-        PojoMethodsCache t = 
mtdsCache.get(session().cacheName()).get(typeName);
+        Map<String, Integer> loadColIdxs, ResultSet rs) throws 
CacheLoaderException {
+        PojoMethodsCache mc = 
mtdsCache.get(session().cacheName()).get(typeName);
 
-        Object obj = t.newInstance();
+        Object obj = mc.newInstance();
 
         try {
             for (CacheTypeFieldMetadata field : fields) {
-                Method setter = t.setters.get(field.getJavaName());
-
-                Class<?> type = field.getJavaType();
-
-                String colName = field.getDatabaseName();
-
-                if (type == boolean.class)
-                    setter.invoke(obj, rs.getBoolean(colName));
-                else if (type == byte.class)
-                    setter.invoke(obj, rs.getByte(colName));
-                else if (type == short.class)
-                    setter.invoke(obj, rs.getShort(colName));
-                else if (type == int.class)
-                    setter.invoke(obj, rs.getInt(colName));
-                else if (type == long.class)
-                    setter.invoke(obj, rs.getLong(colName));
-                else if (type == float.class)
-                    setter.invoke(obj, rs.getFloat(colName));
-                else if (type == double.class)
-                    setter.invoke(obj, rs.getDouble(colName));
-                else if (type == Byte.class || type == Short.class || type == 
Integer.class ||
-                    type == Long.class || type == Float.class || type == 
Double.class) {
-                    Object val = rs.getObject(colName);
-
-                    if (val != null) {
-                        Number num = (Number)val;
-
-                        if (type == Byte.class)
-                            setter.invoke(obj, num.byteValue());
-                        else if (type == Short.class)
-                            setter.invoke(obj, num.shortValue());
-                        else if (type == Integer.class)
-                            setter.invoke(obj, num.intValue());
-                        else if (type == long.class)
-                            setter.invoke(obj, num.longValue());
-                        else if (type == float.class)
-                            setter.invoke(obj, num.floatValue());
-                        else if (type == double.class)
-                            setter.invoke(obj, num.doubleValue());
-                    }
-                    else
-                        setter.invoke(obj, new Object[]{ null });
-                }
-                else
-                    setter.invoke(obj, rs.getObject(colName));
+                Method setter = mc.setters.get(field.getJavaName());
+
+                Integer colIdx = loadColIdxs.get(field.getDatabaseName());
+
+                setter.invoke(obj, getColumnValue(rs, colIdx, 
field.getJavaType()));
             }
 
             return (R)obj;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ffd877d3/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/BasicJdbcDialect.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/BasicJdbcDialect.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/BasicJdbcDialect.java
index da54b7c..4910025 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/BasicJdbcDialect.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/BasicJdbcDialect.java
@@ -146,15 +146,15 @@ public class BasicJdbcDialect implements JdbcDialect {
     }
 
     /** {@inheritDoc} */
-    @Override public String loadCacheSelectRangeQuery(String schema, String 
tblName, Collection<String> keyCols) {
+    @Override public String loadCacheSelectRangeQuery(String fullTblName, 
Collection<String> keyCols) {
         String cols = mkString(keyCols, ",");
 
-        return String.format("SELECT %s FROM (SELECT %s, ROWNUM() AS rn FROM 
%s.%s ORDER BY %s) WHERE mod(rn, ?) = 0",
-            cols, cols, schema, tblName, cols);
+        return String.format("SELECT %s FROM (SELECT %s, ROWNUM() AS rn FROM 
%s ORDER BY %s) WHERE mod(rn, ?) = 0",
+            cols, cols, fullTblName, cols);
     }
 
     /** {@inheritDoc} */
-    @Override public String loadCacheRangeQuery(String schema, String tblName,
+    @Override public String loadCacheRangeQuery(String fullTblName,
         Collection<String> keyCols, Iterable<String> uniqCols, boolean 
appendLowerBound, boolean appendUpperBound) {
         assert appendLowerBound || appendUpperBound;
 
@@ -197,35 +197,35 @@ public class BasicJdbcDialect implements JdbcDialect {
             sb.a(")");
         }
 
-        return String.format("SELECT %s FROM %s.%s WHERE %s", 
mkString(uniqCols, ","), schema, tblName, sb.toString());
+        return String.format("SELECT %s FROM %s WHERE %s", mkString(uniqCols, 
","), fullTblName, sb.toString());
     }
 
     /** {@inheritDoc} */
-    @Override public String loadCacheQuery(String schema, String tblName, 
Iterable<String> uniqCols) {
-        return String.format("SELECT %s FROM %s.%s", mkString(uniqCols, ","), 
schema, tblName);
+    @Override public String loadCacheQuery(String fullTblName, 
Iterable<String> uniqCols) {
+        return String.format("SELECT %s FROM %s", mkString(uniqCols, ","), 
fullTblName);
     }
 
     /** {@inheritDoc} */
-    @Override public String loadQuery(String schema, String tblName, 
Collection<String> keyCols, Iterable<String> cols,
+    @Override public String loadQuery(String fullTblName, Collection<String> 
keyCols, Iterable<String> cols,
         int keyCnt) {
         assert !keyCols.isEmpty();
 
         String params = where(keyCols, keyCnt);
 
-        return String.format("SELECT %s FROM %s.%s WHERE %s", mkString(cols, 
","), schema, tblName, params);
+        return String.format("SELECT %s FROM %s WHERE %s", mkString(cols, 
","), fullTblName, params);
     }
 
     /** {@inheritDoc} */
-    @Override public String insertQuery(String schema, String tblName, 
Collection<String> keyCols,
+    @Override public String insertQuery(String fullTblName, Collection<String> 
keyCols,
         Collection<String> valCols) {
         Collection<String> cols = F.concat(false, keyCols, valCols);
 
-        return String.format("INSERT INTO %s.%s(%s) VALUES(%s)", schema, 
tblName, mkString(cols, ","),
+        return String.format("INSERT INTO %s(%s) VALUES(%s)", fullTblName, 
mkString(cols, ","),
             repeat("?", cols.size(), "", ",", ""));
     }
 
     /** {@inheritDoc} */
-    @Override public String updateQuery(String schema, String tblName, 
Collection<String> keyCols,
+    @Override public String updateQuery(String fullTblName, Collection<String> 
keyCols,
         Iterable<String> valCols) {
         String params = mkString(valCols, new C1<String, String>() {
             @Override public String apply(String s) {
@@ -233,7 +233,7 @@ public class BasicJdbcDialect implements JdbcDialect {
             }
         }, "", ",", "");
 
-        return String.format("UPDATE %s.%s SET %s WHERE %s", schema, tblName, 
params, where(keyCols, 1));
+        return String.format("UPDATE %s SET %s WHERE %s", fullTblName, params, 
where(keyCols, 1));
     }
 
     /** {@inheritDoc} */
@@ -242,20 +242,20 @@ public class BasicJdbcDialect implements JdbcDialect {
     }
 
     /** {@inheritDoc} */
-    @Override public String mergeQuery(String schema, String tblName, 
Collection<String> keyCols,
+    @Override public String mergeQuery(String fullTblName, Collection<String> 
keyCols,
         Collection<String> uniqCols) {
         return "";
     }
 
     /** {@inheritDoc} */
-    @Override public String removeQuery(String schema, String tblName, 
Iterable<String> keyCols) {
+    @Override public String removeQuery(String fullTblName, Iterable<String> 
keyCols) {
         String whereParams = mkString(keyCols, new C1<String, String>() {
             @Override public String apply(String s) {
                 return s + "=?";
             }
         }, "", " AND ", "");
 
-        return String.format("DELETE FROM %s.%s WHERE %s", schema, tblName, 
whereParams);
+        return String.format("DELETE FROM %s WHERE %s", fullTblName, 
whereParams);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ffd877d3/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/DB2Dialect.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/DB2Dialect.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/DB2Dialect.java
index fecc2ae..bc55d97 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/DB2Dialect.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/DB2Dialect.java
@@ -31,7 +31,7 @@ public class DB2Dialect extends BasicJdbcDialect {
     }
 
     /** {@inheritDoc} */
-    @Override public String mergeQuery(String schema, String tblName, 
Collection<String> keyCols,
+    @Override public String mergeQuery(String fullTblName, Collection<String> 
keyCols,
         Collection<String> uniqCols) {
 
         Collection<String> cols = F.concat(false, keyCols, uniqCols);
@@ -56,13 +56,13 @@ public class DB2Dialect extends BasicJdbcDialect {
             }
         }, "", ", ", "");
 
-        return String.format("MERGE INTO %s.%s t" +
+        return String.format("MERGE INTO %s t" +
                 " USING (VALUES(%s)) AS v (%s)" +
                 "  ON %s" +
                 " WHEN MATCHED THEN" +
                 "  UPDATE SET %s" +
                 " WHEN NOT MATCHED THEN" +
-                "  INSERT (%s) VALUES (%s)", schema, tblName, repeat("?", 
cols.size(), "", ",", ""), colsLst,
+                "  INSERT (%s) VALUES (%s)", fullTblName, repeat("?", 
cols.size(), "", ",", ""), colsLst,
             match, setCols, colsLst, valuesCols);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ffd877d3/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/H2Dialect.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/H2Dialect.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/H2Dialect.java
index 13cabe0..a97e144 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/H2Dialect.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/H2Dialect.java
@@ -31,11 +31,11 @@ public class H2Dialect extends BasicJdbcDialect {
     }
 
     /** {@inheritDoc} */
-    @Override public String mergeQuery(String schema, String tblName, 
Collection<String> keyCols,
+    @Override public String mergeQuery(String fullTblName, Collection<String> 
keyCols,
         Collection<String> uniqCols) {
         Collection<String> cols = F.concat(false, keyCols, uniqCols);
 
-        return String.format("MERGE INTO %s (%s) KEY (%s) VALUES(%s)", 
tblName, mkString(cols, ","),
+        return String.format("MERGE INTO %s (%s) KEY (%s) VALUES(%s)", 
fullTblName, mkString(cols, ","),
             mkString(keyCols, ","), repeat("?", cols.size(), "", ", ", ""));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ffd877d3/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/JdbcDialect.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/JdbcDialect.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/JdbcDialect.java
index ad61d14..ab652ae 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/JdbcDialect.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/JdbcDialect.java
@@ -26,69 +26,63 @@ public interface JdbcDialect {
     /**
      * Construct select count query.
      *
-     * @param schema Database schema name.
-     * @param tblName Database table name.
+     * @param fullTblName Full table name.
      * @param keyCols Database key columns for order.
      * @return Query for select count.
      */
-    public String loadCacheSelectRangeQuery(String schema, String tblName, 
Collection<String> keyCols);
+    public String loadCacheSelectRangeQuery(String fullTblName, 
Collection<String> keyCols);
 
     /**
      * Construct select count query.
      *
-     * @param schema Database schema name.
-     * @param tblName Database table name.
+     * @param fullTblName Full table name.
      * @param keyCols Database key columns for order.
      * @param uniqCols Database unique value columns.
      * @param appendLowerBound Need add lower bound for range.
      * @param appendUpperBound Need add upper bound for range.
      * @return Query for select count.
      */
-    public String loadCacheRangeQuery(String schema, String tblName,
+    public String loadCacheRangeQuery(String fullTblName,
         Collection<String> keyCols, Iterable<String> uniqCols, boolean 
appendLowerBound, boolean appendUpperBound);
 
     /**
      * Construct load cache query.
      *
-     * @param schema Database schema name.
-     * @param tblName Database table name.
+     * @param fullTblName Full table name.
      * @param uniqCols Database unique value columns.
      * @return Load cache query.
      */
-    public String loadCacheQuery(String schema, String tblName, 
Iterable<String> uniqCols);
+    public String loadCacheQuery(String fullTblName, Iterable<String> 
uniqCols);
 
     /**
      * Construct load query.
      *
-     * @param schema Database schema name.
-     * @param tblName Database table name.
+     * @param fullTblName Full table name.
      * @param keyCols Database key columns.
      * @param cols Selected columns.
      * @param keyCnt Key count.
      * @return Load query.
      */
-    public String loadQuery(String schema, String tblName, Collection<String> 
keyCols, Iterable<String> cols,
+    public String loadQuery(String fullTblName, Collection<String> keyCols, 
Iterable<String> cols,
         int keyCnt);
 
     /**
      * Construct insert query.
      *
-     * @param schema Database schema name.
-     * @param tblName Database table name.
+     * @param fullTblName Full table name.
      * @param keyCols Database key columns.
      * @param valCols Database value columns.
      */
-    public String insertQuery(String schema, String tblName, 
Collection<String> keyCols, Collection<String> valCols);
+    public String insertQuery(String fullTblName, Collection<String> keyCols, 
Collection<String> valCols);
 
     /**
      * Construct update query.
      *
-     * @param schema Database schema name.
-     * @param tblName Database table name.
+     * @param fullTblName Full table name.
      * @param keyCols Database key columns.
      * @param valCols Database value columns.
      */
-    public String updateQuery(String schema, String tblName, 
Collection<String> keyCols, Iterable<String> valCols);
+    public String updateQuery(String fullTblName, Collection<String> keyCols, 
Iterable<String> valCols);
 
     /**
      * @return {@code True} if database support merge operation.
@@ -98,23 +92,21 @@ public interface JdbcDialect {
     /**
      * Construct merge query.
      *
-     * @param schema Database schema name.
-     * @param tblName Database table name.
+     * @param fullTblName Full table name.
      * @param keyCols Database key columns.
      * @param uniqCols Database unique value columns.
      * @return Put query.
      */
-    public String mergeQuery(String schema, String tblName, Collection<String> 
keyCols, Collection<String> uniqCols);
+    public String mergeQuery(String fullTblName, Collection<String> keyCols, 
Collection<String> uniqCols);
 
     /**
      * Construct remove query.
      *
-     * @param schema Database schema name.
-     * @param tblName Database table name.
+     * @param fullTblName Full table name.
      * @param keyCols Database key columns.
      * @return Remove query.
      */
-    public String removeQuery(String schema, String tblName, Iterable<String> 
keyCols);
+    public String removeQuery(String fullTblName, Iterable<String> keyCols);
 
     /**
      * Get max query parameters count.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ffd877d3/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/MySQLDialect.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/MySQLDialect.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/MySQLDialect.java
index f2a1565..df16841 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/MySQLDialect.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/MySQLDialect.java
@@ -31,7 +31,7 @@ public class MySQLDialect extends BasicJdbcDialect {
     }
 
     /** {@inheritDoc} */
-    @Override public String mergeQuery(String schema, String tblName, 
Collection<String> keyCols,
+    @Override public String mergeQuery(String fullTblName, Collection<String> 
keyCols,
         Collection<String> uniqCols) {
 
         Collection<String> cols = F.concat(false, keyCols, uniqCols);
@@ -42,7 +42,7 @@ public class MySQLDialect extends BasicJdbcDialect {
             }
         }, "", ", ", "");
 
-        return String.format("INSERT INTO %s.%s (%s) VALUES (%s) ON DUPLICATE 
KEY UPDATE %s", schema, tblName,
+        return String.format("INSERT INTO %s (%s) VALUES (%s) ON DUPLICATE KEY 
UPDATE %s", fullTblName,
             mkString(cols, ", "), repeat("?", cols.size(), "", ",", ""), 
updPart);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ffd877d3/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/OracleDialect.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/OracleDialect.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/OracleDialect.java
index e85e890..351f10a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/OracleDialect.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/OracleDialect.java
@@ -31,7 +31,7 @@ public class OracleDialect extends BasicJdbcDialect {
     }
 
     /** {@inheritDoc} */
-    @Override public String mergeQuery(String schema, String tblName, 
Collection<String> keyCols,
+    @Override public String mergeQuery(String fullTblName, Collection<String> 
keyCols,
         Collection<String> uniqCols) {
         Collection<String> cols = F.concat(false, keyCols, uniqCols);
 
@@ -61,12 +61,12 @@ public class OracleDialect extends BasicJdbcDialect {
             }
         }, "", ", ", "");
 
-        return String.format("MERGE INTO %s.%s t" +
+        return String.format("MERGE INTO %s t" +
             " USING (SELECT %s FROM dual) v" +
             "  ON %s" +
             " WHEN MATCHED THEN" +
             "  UPDATE SET %s" +
             " WHEN NOT MATCHED THEN" +
-            "  INSERT (%s) VALUES (%s)", schema, tblName, selCols, match, 
setCols, colsLst, valuesCols);
+            "  INSERT (%s) VALUES (%s)", fullTblName, selCols, match, setCols, 
colsLst, valuesCols);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ffd877d3/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/SQLServerDialect.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/SQLServerDialect.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/SQLServerDialect.java
index df8cef9..2de61b2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/SQLServerDialect.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/dialect/SQLServerDialect.java
@@ -31,7 +31,7 @@ public class SQLServerDialect extends BasicJdbcDialect {
     }
 
     /** {@inheritDoc} */
-    @Override public String mergeQuery(String schema, String tblName, 
Collection<String> keyCols,
+    @Override public String mergeQuery(String fullTblName, Collection<String> 
keyCols,
         Collection<String> uniqCols) {
         Collection<String> cols = F.concat(false, keyCols, uniqCols);
 
@@ -55,13 +55,13 @@ public class SQLServerDialect extends BasicJdbcDialect {
             }
         }, "", ", ", "");
 
-        return String.format("MERGE INTO %s.%s t" +
+        return String.format("MERGE INTO %s t" +
                 " USING (VALUES(%s)) AS v (%s)" +
                 "  ON %s" +
                 " WHEN MATCHED THEN" +
                 "  UPDATE SET %s" +
                 " WHEN NOT MATCHED THEN" +
-                "  INSERT (%s) VALUES (%s);", schema, tblName, repeat("?", 
cols.size(), "", ",", ""), colsLst,
+                "  INSERT (%s) VALUES (%s);", fullTblName, repeat("?", 
cols.size(), "", ",", ""), colsLst,
             match, setCols, colsLst, valuesCols);
     }
 }

Reply via email to