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 2016/09/22 08:19:42 UTC

[1/6] ignite git commit: IGNITE-3635: Additional fix for stack overflow in binary objects.

Repository: ignite
Updated Branches:
  refs/heads/master 86d31537f -> 41b742cd6


IGNITE-3635: Additional fix for stack overflow in binary objects.


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

Branch: refs/heads/master
Commit: 16b82b77f00dff8e525c8cc68d3387de107c78d1
Parents: 135f0a8
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Wed Sep 21 12:35:07 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Sep 21 12:35:07 2016 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/internal/binary/BinaryObjectExImpl.java     | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/16b82b77/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
index e6df407..063bd83 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
@@ -30,6 +30,7 @@ import org.apache.ignite.binary.BinaryType;
 import org.apache.ignite.internal.binary.builder.BinaryObjectBuilderImpl;
 import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafeMemory;
 import org.apache.ignite.internal.util.typedef.internal.SB;
+import org.apache.ignite.lang.IgniteUuid;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -248,6 +249,8 @@ public abstract class BinaryObjectExImpl implements BinaryObjectEx {
             buf.a(Arrays.toString((boolean[]) val));
         else if (val instanceof BigDecimal[])
             buf.a(Arrays.toString((BigDecimal[])val));
+        else if (val instanceof IgniteUuid)
+            buf.a(val);
         else if (val instanceof BinaryObjectExImpl) {
             BinaryObjectExImpl po = (BinaryObjectExImpl)val;
 


[3/6] ignite git commit: Merge branch ignite-1.6.8 into ignite-1.6.9.

Posted by ak...@apache.org.
Merge branch ignite-1.6.8 into ignite-1.6.9.


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

Branch: refs/heads/master
Commit: f4cd72bdeee32c2cda0fa7ecbfcf5df1a06a35f1
Parents: e3827a4 16b82b7
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Thu Sep 22 14:34:01 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Sep 22 14:34:01 2016 +0700

----------------------------------------------------------------------
 .../org/apache/ignite/internal/binary/BinaryObjectExImpl.java     | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------



[2/6] ignite git commit: IGNITE-3892 - Fixed bug in BinaryWriterExImpl.doWriteClass() method

Posted by ak...@apache.org.
IGNITE-3892 - Fixed bug in BinaryWriterExImpl.doWriteClass() method


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

Branch: refs/heads/master
Commit: e3827a40bcbd54664cc0688e8e6ec57e4e328172
Parents: 4ee52f0
Author: Valentin Kulichenko <va...@gmail.com>
Authored: Wed Sep 21 16:07:02 2016 -0700
Committer: Valentin Kulichenko <va...@gmail.com>
Committed: Wed Sep 21 16:07:02 2016 -0700

----------------------------------------------------------------------
 .../internal/binary/BinaryWriterExImpl.java     | 21 ++++----
 .../binary/BinaryMarshallerSelfTest.java        | 53 ++++++++++++++++----
 .../marshaller/MarshallerContextTestImpl.java   | 28 +++++++++--
 3 files changed, 77 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e3827a40/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
index 21fb2bf..1a81819 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
@@ -17,16 +17,6 @@
 
 package org.apache.ignite.internal.binary;
 
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.binary.BinaryRawWriter;
-import org.apache.ignite.binary.BinaryWriter;
-import org.apache.ignite.internal.binary.streams.BinaryHeapOutputStream;
-import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
-import org.apache.ignite.internal.util.IgniteUtils;
-import org.apache.ignite.internal.util.typedef.internal.A;
-import org.jetbrains.annotations.Nullable;
-
 import java.io.IOException;
 import java.io.ObjectOutput;
 import java.lang.reflect.InvocationHandler;
@@ -38,6 +28,15 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.Map;
 import java.util.UUID;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.binary.BinaryObjectException;
+import org.apache.ignite.binary.BinaryRawWriter;
+import org.apache.ignite.binary.BinaryWriter;
+import org.apache.ignite.internal.binary.streams.BinaryHeapOutputStream;
+import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
+import org.apache.ignite.internal.util.IgniteUtils;
+import org.apache.ignite.internal.util.typedef.internal.A;
+import org.jetbrains.annotations.Nullable;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
@@ -823,7 +822,7 @@ public class BinaryWriterExImpl implements BinaryWriter, BinaryRawWriterEx, Obje
             else {
                 out.unsafeWriteInt(GridBinaryMarshaller.UNREGISTERED_TYPE_ID);
 
-                doWriteString(val.getClass().getName());
+                doWriteString(val.getName());
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/e3827a40/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
index b347ec0..f415472 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
@@ -2648,7 +2648,7 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
      */
     public void testDuplicateNameSimpleNameMapper() throws Exception {
         BinaryMarshaller marsh = binaryMarshaller(new BinaryBasicNameMapper(true),
-            new BinaryBasicIdMapper(true), null, null);
+            new BinaryBasicIdMapper(true), null, null, null);
 
         Test1.Job job1 = new Test1().new Job();
         Test2.Job job2 = new Test2().new Job();
@@ -2672,7 +2672,7 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
      */
     public void testDuplicateNameFullNameMapper() throws Exception {
         BinaryMarshaller marsh = binaryMarshaller(new BinaryBasicNameMapper(false),
-            new BinaryBasicIdMapper(false), null, null);
+            new BinaryBasicIdMapper(false), null, null, null);
 
         Test1.Job job1 = new Test1().new Job();
         Test2.Job job2 = new Test2().new Job();
@@ -2911,6 +2911,17 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
     }
 
     /**
+     * @throws Exception If failed.
+     */
+    public void testUnregisteredClass() throws Exception {
+        BinaryMarshaller m = binaryMarshaller(null, Collections.singletonList(Value.class.getName()));
+
+        ClassFieldObject res = m.unmarshal(m.marshal(new ClassFieldObject(Value.class)), null);
+
+        assertEquals(Value.class, res.cls);
+    }
+
+    /**
      *
      */
     private static interface SomeItf {
@@ -3227,9 +3238,8 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
     /**
      *
      */
-    protected BinaryMarshaller binaryMarshaller()
-        throws IgniteCheckedException {
-        return binaryMarshaller(null, null, null, null);
+    protected BinaryMarshaller binaryMarshaller() throws IgniteCheckedException {
+        return binaryMarshaller(null, null, null, null, null);
     }
 
     /**
@@ -3237,7 +3247,15 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
      */
     protected BinaryMarshaller binaryMarshaller(Collection<BinaryTypeConfiguration> cfgs)
         throws IgniteCheckedException {
-        return binaryMarshaller(null, null, null, cfgs);
+        return binaryMarshaller(null, null, null, cfgs, null);
+    }
+
+    /**
+     *
+     */
+    protected BinaryMarshaller binaryMarshaller(Collection<BinaryTypeConfiguration> cfgs,
+        Collection<String> excludedClasses) throws IgniteCheckedException {
+        return binaryMarshaller(null, null, null, cfgs, excludedClasses);
     }
 
     /**
@@ -3246,7 +3264,7 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
     protected BinaryMarshaller binaryMarshaller(BinaryNameMapper nameMapper, BinaryIdMapper mapper,
         Collection<BinaryTypeConfiguration> cfgs)
         throws IgniteCheckedException {
-        return binaryMarshaller(nameMapper, mapper, null, cfgs);
+        return binaryMarshaller(nameMapper, mapper, null, cfgs, null);
     }
 
     /**
@@ -3254,7 +3272,7 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
      */
     protected BinaryMarshaller binaryMarshaller(BinarySerializer serializer, Collection<BinaryTypeConfiguration> cfgs)
         throws IgniteCheckedException {
-        return binaryMarshaller(null, null, serializer, cfgs);
+        return binaryMarshaller(null, null, serializer, cfgs, null);
     }
 
     /**
@@ -3264,7 +3282,8 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
         BinaryNameMapper nameMapper,
         BinaryIdMapper mapper,
         BinarySerializer serializer,
-        Collection<BinaryTypeConfiguration> cfgs
+        Collection<BinaryTypeConfiguration> cfgs,
+        Collection<String> excludedClasses
     ) throws IgniteCheckedException {
         IgniteConfiguration iCfg = new IgniteConfiguration();
 
@@ -3283,7 +3302,7 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
 
         BinaryMarshaller marsh = new BinaryMarshaller();
 
-        marsh.setContext(new MarshallerContextTestImpl(null));
+        marsh.setContext(new MarshallerContextTestImpl(null, excludedClasses));
 
         IgniteUtils.invoke(BinaryMarshaller.class, marsh, "setBinaryContext", ctx, iCfg);
 
@@ -4885,4 +4904,18 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
     /**
      */
     private static class SingleHandleB {}
+
+    /**
+     */
+    private static class ClassFieldObject {
+        /** */
+        private Class<?> cls;
+
+        /**
+         * @param cls Class field.
+         */
+        public ClassFieldObject(Class<?> cls) {
+            this.cls = cls;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/e3827a40/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java b/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java
index c600ca4..9ff127d 100644
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java
+++ b/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java
@@ -17,11 +17,13 @@
 
 package org.apache.ignite.marshaller;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.ConcurrentMap;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.internal.MarshallerContextAdapter;
 import org.apache.ignite.plugin.PluginProvider;
+import org.jetbrains.annotations.Nullable;
 import org.jsr166.ConcurrentHashMap8;
 
 /**
@@ -29,26 +31,44 @@ import org.jsr166.ConcurrentHashMap8;
  */
 public class MarshallerContextTestImpl extends MarshallerContextAdapter {
     /** */
-    private final static ConcurrentMap<Integer, String> map = new ConcurrentHashMap8<>();
+    private static final ConcurrentMap<Integer, String> map = new ConcurrentHashMap8<>();
+
+    /** */
+    private final Collection<String> excluded;
 
     /**
      * Initializes context.
      *
      * @param plugins Plugins.
+     * @param excluded Excluded classes.
      */
-    public MarshallerContextTestImpl(List<PluginProvider> plugins) {
+    public MarshallerContextTestImpl(@Nullable List<PluginProvider> plugins, Collection<String> excluded) {
         super(plugins);
+
+        this.excluded = excluded;
+    }
+
+    /**
+     * Initializes context.
+     *
+     * @param plugins Plugins.
+     */
+    public MarshallerContextTestImpl(List<PluginProvider> plugins) {
+        this(plugins, null);
     }
 
     /**
      * Initializes context.
      */
     public MarshallerContextTestImpl() {
-        super(null);
+        this(null);
     }
 
     /** {@inheritDoc} */
     @Override protected boolean registerClassName(int id, String clsName) throws IgniteCheckedException {
+        if (excluded != null && excluded.contains(clsName))
+            return false;
+
         String oldClsName = map.putIfAbsent(id, clsName);
 
         if (oldClsName != null && !oldClsName.equals(clsName))
@@ -69,4 +89,4 @@ public class MarshallerContextTestImpl extends MarshallerContextAdapter {
     public ConcurrentMap<Integer, String> internalMap() {
         return map;
     }
-}
\ No newline at end of file
+}


[4/6] ignite git commit: IGNITE-3937 implemented support for unsigned types in MySQL.

Posted by ak...@apache.org.
IGNITE-3937 implemented support for unsigned types in MySQL.


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

Branch: refs/heads/master
Commit: 0d5ee7887be03295133704227133d619898b6abf
Parents: f4cd72b
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Thu Sep 22 14:36:50 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Sep 22 14:36:50 2016 +0700

----------------------------------------------------------------------
 .../apache/ignite/schema/parser/DbColumn.java   | 16 +++++++++++--
 .../parser/dialect/DatabaseMetadataDialect.java |  9 ++++++++
 .../parser/dialect/JdbcMetadataDialect.java     | 23 +++++++++++--------
 .../parser/dialect/MySQLMetadataDialect.java    | 24 ++++++++++++++++++--
 .../parser/dialect/OracleMetadataDialect.java   |  5 ++--
 .../ignite/schema/model/PojoDescriptor.java     | 24 +++++++++++++-------
 6 files changed, 77 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/0d5ee788/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbColumn.java
----------------------------------------------------------------------
diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbColumn.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbColumn.java
index 8b0c813..10fd50f 100644
--- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbColumn.java
+++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbColumn.java
@@ -33,17 +33,22 @@ public class DbColumn {
     /** Is {@code NULL} allowed for column in database. */
     private final boolean nullable;
 
+    /** Whether column unsigned. */
+    private final boolean unsigned;
+
     /**
      * @param name Column name.
      * @param type Column JDBC type.
      * @param key {@code true} if this column belongs to primary key.
      * @param nullable {@code true} if {@code NULL } allowed for column in database.
+     * @param unsigned {@code true} if column is unsigned.
      */
-    public DbColumn(String name, int type, boolean key, boolean nullable) {
+    public DbColumn(String name, int type, boolean key, boolean nullable, boolean unsigned) {
         this.name = name;
         this.type = type;
         this.key = key;
         this.nullable = nullable;
+        this.unsigned = unsigned;
     }
 
     /**
@@ -68,9 +73,16 @@ public class DbColumn {
     }
 
     /**
-     * @return nullable {@code true} if {@code NULL } allowed for column in database.
+     * @return {@code true} if {@code NULL } allowed for column in database.
      */
     public boolean nullable() {
         return nullable;
     }
+
+    /**
+     * @return {@code true} if column is unsigned.
+     */
+    public boolean unsigned() {
+        return unsigned;
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0d5ee788/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java
----------------------------------------------------------------------
diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java
index 5ef088a..56ee59b 100644
--- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java
+++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.schema.parser.dialect;
 
 import java.sql.Connection;
+import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 import java.util.Collection;
 import java.util.Collections;
@@ -63,6 +64,14 @@ public abstract class DatabaseMetadataDialect {
     }
 
     /**
+     * @return Collection of unsigned type names.
+     * @throws SQLException If failed to get unsigned type names.
+     */
+    public Set<String> unsignedTypes(DatabaseMetaData dbMeta) throws SQLException {
+        return Collections.emptySet();
+    }
+
+    /**
      * Create table descriptor.
      *
      * @param schema Schema name.

http://git-wip-us.apache.org/repos/asf/ignite/blob/0d5ee788/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
----------------------------------------------------------------------
diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
index 235c84c..f6c27f2 100644
--- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
+++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
@@ -30,7 +30,6 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ignite.cache.QueryIndex;
-import org.apache.ignite.cache.QueryIndexType;
 import org.apache.ignite.schema.parser.DbColumn;
 import org.apache.ignite.schema.parser.DbTable;
 
@@ -62,6 +61,9 @@ public class JdbcMetadataDialect extends DatabaseMetadataDialect {
     /** Column data type index. */
     private static final int COL_DATA_TYPE_IDX = 5;
 
+    /** Column type name index. */
+    private static final int COL_TYPE_NAME_IDX = 6;
+
     /** Column nullable index. */
     private static final int COL_NULLABLE_IDX = 11;
 
@@ -116,11 +118,11 @@ public class JdbcMetadataDialect extends DatabaseMetadataDialect {
 
         Set<String> sys = systemSchemas();
 
-        Collection<DbTable> tbls = new ArrayList<>();
-
         if (schemas.isEmpty())
             schemas.add(null);
 
+        Collection<DbTable> tbls = new ArrayList<>();
+
         for (String toSchema: schemas) {
             try (ResultSet tblsRs = dbMeta.getTables(useCatalog() ? toSchema : null, useSchema() ? toSchema : null, "%",
                     tblsOnly ? TABLES_ONLY : TABLES_AND_VIEWS)) {
@@ -136,24 +138,27 @@ public class JdbcMetadataDialect extends DatabaseMetadataDialect {
                     if (sys.contains(schema))
                         continue;
 
-                    Set<String> pkCols = new HashSet<>();
+                    Collection<String> pkCols = new HashSet<>();
 
                     try (ResultSet pkRs = dbMeta.getPrimaryKeys(tblCatalog, tblSchema, tblName)) {
                         while (pkRs.next())
                             pkCols.add(pkRs.getString(PK_COL_NAME_IDX));
                     }
 
-                    List<DbColumn> cols = new ArrayList<>();
+                    Collection<DbColumn> cols = new ArrayList<>();
+
+                    Collection<String> unsignedTypes = unsignedTypes(dbMeta);
 
                     try (ResultSet colsRs = dbMeta.getColumns(tblCatalog, tblSchema, tblName, null)) {
                         while (colsRs.next()) {
                             String colName = colsRs.getString(COL_NAME_IDX);
 
                             cols.add(new DbColumn(
-                                    colName,
-                                    colsRs.getInt(COL_DATA_TYPE_IDX),
-                                    pkCols.contains(colName),
-                                    colsRs.getInt(COL_NULLABLE_IDX) == DatabaseMetaData.columnNullable));
+                                colName,
+                                colsRs.getInt(COL_DATA_TYPE_IDX),
+                                pkCols.contains(colName),
+                                colsRs.getInt(COL_NULLABLE_IDX) == DatabaseMetaData.columnNullable,
+                                unsignedTypes.contains(colsRs.getString(COL_TYPE_NAME_IDX))));
                         }
                     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/0d5ee788/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java
----------------------------------------------------------------------
diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java
index 3332046..7bd6f31 100644
--- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java
+++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java
@@ -18,20 +18,24 @@
 package org.apache.ignite.schema.parser.dialect;
 
 import java.sql.Connection;
+import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
+import java.util.HashSet;
 import java.util.Set;
 
 /**
  * MySQL specific metadata dialect.
  */
 public class MySQLMetadataDialect extends JdbcMetadataDialect {
+    /** Type name index. */
+    private static final int TYPE_NAME_IDX = 1;
+
     /** {@inheritDoc} */
     @Override public Collection<String> schemas(Connection conn) throws SQLException {
-        List<String> schemas = new ArrayList<>();
+        Collection<String> schemas = new ArrayList<>();
 
         ResultSet rs = conn.getMetaData().getCatalogs();
 
@@ -59,4 +63,20 @@ public class MySQLMetadataDialect extends JdbcMetadataDialect {
     @Override protected boolean useSchema() {
         return false;
     }
+
+    /** {@inheritDoc} */
+    @Override public Set<String> unsignedTypes(DatabaseMetaData dbMeta) throws SQLException {
+        Set<String> unsignedTypes = new HashSet<>();
+
+        try (ResultSet typeRs = dbMeta.getTypeInfo()) {
+            while (typeRs.next()) {
+                String typeName = typeRs.getString(TYPE_NAME_IDX);
+
+                if (typeName.contains("UNSIGNED"))
+                    unsignedTypes.add(typeName);
+            }
+        }
+
+        return unsignedTypes;
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0d5ee788/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
----------------------------------------------------------------------
diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
index 3535655..47fb05c 100644
--- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
+++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
@@ -258,8 +258,7 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect {
      * @return Indexes.
      * @throws SQLException If failed to retrieve indexes columns.
      */
-    private Collection<QueryIndex> indexes(PreparedStatement stmt, String owner, String tbl)
-        throws SQLException {
+    private Collection<QueryIndex> indexes(PreparedStatement stmt, String owner, String tbl) throws SQLException {
         Map<String, QueryIndex> idxs = new LinkedHashMap<>();
 
         stmt.setString(1, owner);
@@ -347,7 +346,7 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect {
                         String colName = colsRs.getString(COL_NAME_IDX);
 
                         cols.add(new DbColumn(colName, decodeType(colsRs), pkCols.contains(colName),
-                                !"N".equals(colsRs.getString(NULLABLE_IDX))));
+                            !"N".equals(colsRs.getString(NULLABLE_IDX)), false));
                     }
 
                     if (!cols.isEmpty())

http://git-wip-us.apache.org/repos/asf/ignite/blob/0d5ee788/modules/schema-import/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/schema-import/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java b/modules/schema-import/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
index 5053b07..4f696d6 100644
--- a/modules/schema-import/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
+++ b/modules/schema-import/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
@@ -123,7 +123,7 @@ public class PojoDescriptor {
             String colName = col.name();
 
             PojoField fld = new PojoField(colName, col.type(),
-                toJavaFieldName(colName), toJavaType(col.type(), col.nullable()).getName(),
+                toJavaFieldName(colName), toJavaType(col).getName(),
                 col.key(), col.nullable());
 
             fld.owner(this);
@@ -427,24 +427,32 @@ public class PojoDescriptor {
     /**
      * Convert JDBC data type to java type.
      *
-     * @param type JDBC SQL data type.
-     * @param nullable {@code true} if {@code NULL} is allowed for this field in database.
+     * @param col Database column descriptor.
      * @return Java data type.
      */
-    private static Class<?> toJavaType(int type, boolean nullable) {
-        switch (type) {
+    private static Class<?> toJavaType(DbColumn col) {
+        boolean nullable = col.nullable();
+        boolean unsigned = col.unsigned();
+
+        switch (col.type()) {
             case BIT:
             case BOOLEAN:
                 return nullable ? Boolean.class : boolean.class;
 
             case TINYINT:
-                return nullable ? Byte.class : byte.class;
+                return unsigned
+                    ? (nullable ? Short.class : short.class)
+                    : (nullable ? Byte.class : byte.class);
 
             case SMALLINT:
-                return nullable ? Short.class : short.class;
+                return unsigned
+                    ? (nullable ? Integer.class : int.class)
+                    : (nullable ? Short.class : short.class);
 
             case INTEGER:
-                return nullable ? Integer.class : int.class;
+                return unsigned
+                    ? (nullable ? Long.class : long.class)
+                    : (nullable ? Integer.class : int.class);
 
             case BIGINT:
                 return nullable ? Long.class : long.class;


[6/6] ignite git commit: Merge branch ignite-1.7.2 into master.

Posted by ak...@apache.org.
Merge branch ignite-1.7.2 into master.


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

Branch: refs/heads/master
Commit: 41b742cd6d89da9c1573aee78209ddded5ecaa45
Parents: 86d3153 c8e7938
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Thu Sep 22 14:57:23 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Sep 22 14:57:23 2016 +0700

----------------------------------------------------------------------
 .../internal/binary/BinaryObjectExImpl.java     |  3 ++
 .../internal/binary/BinaryWriterExImpl.java     | 21 ++++----
 .../binary/BinaryMarshallerSelfTest.java        | 53 ++++++++++++++++----
 .../marshaller/MarshallerContextTestImpl.java   | 28 +++++++++--
 .../apache/ignite/schema/parser/DbColumn.java   | 16 +++++-
 .../parser/dialect/DatabaseMetadataDialect.java |  9 ++++
 .../parser/dialect/JdbcMetadataDialect.java     | 23 +++++----
 .../parser/dialect/MySQLMetadataDialect.java    | 24 ++++++++-
 .../parser/dialect/OracleMetadataDialect.java   |  5 +-
 .../ignite/schema/model/PojoDescriptor.java     | 24 ++++++---
 10 files changed, 157 insertions(+), 49 deletions(-)
----------------------------------------------------------------------



[5/6] ignite git commit: Merge ignite-1.6.9 into ignite-1.7.2.

Posted by ak...@apache.org.
Merge ignite-1.6.9 into ignite-1.7.2.


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

Branch: refs/heads/master
Commit: c8e79388305e026f36bca62cf7d87ba9bec7fd49
Parents: 85c47eb 0d5ee78
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Thu Sep 22 14:42:27 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Sep 22 14:42:27 2016 +0700

----------------------------------------------------------------------
 .../internal/binary/BinaryObjectExImpl.java     |  3 ++
 .../internal/binary/BinaryWriterExImpl.java     | 21 ++++----
 .../binary/BinaryMarshallerSelfTest.java        | 53 ++++++++++++++++----
 .../marshaller/MarshallerContextTestImpl.java   | 28 +++++++++--
 .../apache/ignite/schema/parser/DbColumn.java   | 16 +++++-
 .../parser/dialect/DatabaseMetadataDialect.java |  9 ++++
 .../parser/dialect/JdbcMetadataDialect.java     | 23 +++++----
 .../parser/dialect/MySQLMetadataDialect.java    | 24 ++++++++-
 .../parser/dialect/OracleMetadataDialect.java   |  5 +-
 .../ignite/schema/model/PojoDescriptor.java     | 24 ++++++---
 10 files changed, 157 insertions(+), 49 deletions(-)
----------------------------------------------------------------------