[22/27] ignite git commit: IGNITE-3938 Implemented escaping for SQL identifiers. Added tests for escaped mode.
IGNITE-3938 Implemented escaping for SQL identifiers. Added tests for escaped mode. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/63888bd9 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/63888bd9 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/63888bd9 Branch: refs/heads/ignite-comm-balance Commit: 63888bd99b8a84cc961b226efba9964dcc292f4c Parents: a97483a Author: Alexey KuznetsovAuthored: Thu Sep 22 16:22:40 2016 +0700 Committer: Alexey Kuznetsov Committed: Thu Sep 22 16:22:40 2016 +0700 -- .../store/jdbc/CacheAbstractJdbcStore.java | 104 +++ .../store/jdbc/CacheJdbcPojoStoreFactory.java | 46 ++-- .../store/jdbc/dialect/BasicJdbcDialect.java| 8 +- .../cache/store/jdbc/dialect/DB2Dialect.java| 6 +- .../cache/store/jdbc/dialect/H2Dialect.java | 5 +- .../cache/store/jdbc/dialect/JdbcDialect.java | 18 +++- .../cache/store/jdbc/dialect/MySQLDialect.java | 9 +- .../cache/store/jdbc/dialect/OracleDialect.java | 5 +- .../store/jdbc/dialect/SQLServerDialect.java| 14 ++- .../CacheJdbcPojoStoreAbstractSelfTest.java | 48 ++--- ...heJdbcPojoStoreBinaryMarshallerSelfTest.java | 2 +- ...reBinaryMarshallerWithSqlEscapeSelfTest.java | 28 + ...dbcPojoStoreOptimizedMarshallerSelfTest.java | 2 +- ...ptimizedMarshallerWithSqlEscapeSelfTest.java | 28 + .../ignite/testsuites/IgniteCacheTestSuite.java | 4 + .../src/test/config/jdbc-pojo-store-builtin.xml | 12 +-- .../src/test/config/jdbc-pojo-store-obj.xml | 12 +-- .../jdbc/CacheJdbcBlobStoreFactorySelfTest.java | 12 +-- .../jdbc/CacheJdbcPojoStoreFactorySelfTest.java | 14 ++- .../store/jdbc/CachePojoStoreXmlSelfTest.java | 13 ++- .../CachePojoStoreXmlWithSqlEscapeSelfTest.java | 28 + .../testsuites/IgniteSpringTestSuite.java | 5 +- 22 files changed, 328 insertions(+), 95 deletions(-) -- http://git-wip-us.apache.org/repos/asf/ignite/blob/63888bd9/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java index fe8a50b..a9a8ce1 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java @@ -187,6 +187,9 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , /** Hash calculator. */ protected JdbcTypeHasher hasher = JdbcTypeDefaultHasher.INSTANCE; +/** Flag indicating that table and field names should be escaped in all SQL queries created by JDBC POJO store. */ +private boolean sqlEscapeAll; + /** * Get field value from object for use as query parameter. * @@ -727,7 +730,7 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , checkTypeConfiguration(cacheName, valKind, valType, type.getValueFields()); -entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, keyKind, valKind)); +entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, keyKind, valKind, sqlEscapeAll)); // Add one more binding to binary typeId for POJOs, // because object could be passed to store in binary format. @@ -736,7 +739,7 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , valKind = valKind == TypeKind.POJO ? TypeKind.BINARY : valKind; -entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, TypeKind.BINARY, valKind)); +entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, TypeKind.BINARY, valKind, sqlEscapeAll)); } } @@ -1675,6 +1678,28 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , } /** + * If {@code true} all the SQL table and field names will be escaped with double quotes like + * ({@code "tableName"."fieldsName"}). This enforces case sensitivity for field names and + * also allows having special characters in table and field names. + * + * @return Flag value. + */ +public boolean isSqlEscapeAll() { +return sqlEscapeAll; +} + +/** + * If {@code true} all the SQL table and field names will be escaped with double quotes like + * ({@code
[22/24] ignite git commit: IGNITE-3938 Implemented escaping for SQL identifiers. Added tests for escaped mode.
IGNITE-3938 Implemented escaping for SQL identifiers. Added tests for escaped mode. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/63888bd9 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/63888bd9 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/63888bd9 Branch: refs/heads/ignite-comm-opts2 Commit: 63888bd99b8a84cc961b226efba9964dcc292f4c Parents: a97483a Author: Alexey KuznetsovAuthored: Thu Sep 22 16:22:40 2016 +0700 Committer: Alexey Kuznetsov Committed: Thu Sep 22 16:22:40 2016 +0700 -- .../store/jdbc/CacheAbstractJdbcStore.java | 104 +++ .../store/jdbc/CacheJdbcPojoStoreFactory.java | 46 ++-- .../store/jdbc/dialect/BasicJdbcDialect.java| 8 +- .../cache/store/jdbc/dialect/DB2Dialect.java| 6 +- .../cache/store/jdbc/dialect/H2Dialect.java | 5 +- .../cache/store/jdbc/dialect/JdbcDialect.java | 18 +++- .../cache/store/jdbc/dialect/MySQLDialect.java | 9 +- .../cache/store/jdbc/dialect/OracleDialect.java | 5 +- .../store/jdbc/dialect/SQLServerDialect.java| 14 ++- .../CacheJdbcPojoStoreAbstractSelfTest.java | 48 ++--- ...heJdbcPojoStoreBinaryMarshallerSelfTest.java | 2 +- ...reBinaryMarshallerWithSqlEscapeSelfTest.java | 28 + ...dbcPojoStoreOptimizedMarshallerSelfTest.java | 2 +- ...ptimizedMarshallerWithSqlEscapeSelfTest.java | 28 + .../ignite/testsuites/IgniteCacheTestSuite.java | 4 + .../src/test/config/jdbc-pojo-store-builtin.xml | 12 +-- .../src/test/config/jdbc-pojo-store-obj.xml | 12 +-- .../jdbc/CacheJdbcBlobStoreFactorySelfTest.java | 12 +-- .../jdbc/CacheJdbcPojoStoreFactorySelfTest.java | 14 ++- .../store/jdbc/CachePojoStoreXmlSelfTest.java | 13 ++- .../CachePojoStoreXmlWithSqlEscapeSelfTest.java | 28 + .../testsuites/IgniteSpringTestSuite.java | 5 +- 22 files changed, 328 insertions(+), 95 deletions(-) -- http://git-wip-us.apache.org/repos/asf/ignite/blob/63888bd9/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java index fe8a50b..a9a8ce1 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java @@ -187,6 +187,9 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , /** Hash calculator. */ protected JdbcTypeHasher hasher = JdbcTypeDefaultHasher.INSTANCE; +/** Flag indicating that table and field names should be escaped in all SQL queries created by JDBC POJO store. */ +private boolean sqlEscapeAll; + /** * Get field value from object for use as query parameter. * @@ -727,7 +730,7 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , checkTypeConfiguration(cacheName, valKind, valType, type.getValueFields()); -entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, keyKind, valKind)); +entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, keyKind, valKind, sqlEscapeAll)); // Add one more binding to binary typeId for POJOs, // because object could be passed to store in binary format. @@ -736,7 +739,7 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , valKind = valKind == TypeKind.POJO ? TypeKind.BINARY : valKind; -entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, TypeKind.BINARY, valKind)); +entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, TypeKind.BINARY, valKind, sqlEscapeAll)); } } @@ -1675,6 +1678,28 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , } /** + * If {@code true} all the SQL table and field names will be escaped with double quotes like + * ({@code "tableName"."fieldsName"}). This enforces case sensitivity for field names and + * also allows having special characters in table and field names. + * + * @return Flag value. + */ +public boolean isSqlEscapeAll() { +return sqlEscapeAll; +} + +/** + * If {@code true} all the SQL table and field names will be escaped with double quotes like + * ({@code
[2/4] ignite git commit: IGNITE-3938 Implemented escaping for SQL identifiers. Added tests for escaped mode.
IGNITE-3938 Implemented escaping for SQL identifiers. Added tests for escaped mode. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/63888bd9 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/63888bd9 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/63888bd9 Branch: refs/heads/master Commit: 63888bd99b8a84cc961b226efba9964dcc292f4c Parents: a97483a Author: Alexey KuznetsovAuthored: Thu Sep 22 16:22:40 2016 +0700 Committer: Alexey Kuznetsov Committed: Thu Sep 22 16:22:40 2016 +0700 -- .../store/jdbc/CacheAbstractJdbcStore.java | 104 +++ .../store/jdbc/CacheJdbcPojoStoreFactory.java | 46 ++-- .../store/jdbc/dialect/BasicJdbcDialect.java| 8 +- .../cache/store/jdbc/dialect/DB2Dialect.java| 6 +- .../cache/store/jdbc/dialect/H2Dialect.java | 5 +- .../cache/store/jdbc/dialect/JdbcDialect.java | 18 +++- .../cache/store/jdbc/dialect/MySQLDialect.java | 9 +- .../cache/store/jdbc/dialect/OracleDialect.java | 5 +- .../store/jdbc/dialect/SQLServerDialect.java| 14 ++- .../CacheJdbcPojoStoreAbstractSelfTest.java | 48 ++--- ...heJdbcPojoStoreBinaryMarshallerSelfTest.java | 2 +- ...reBinaryMarshallerWithSqlEscapeSelfTest.java | 28 + ...dbcPojoStoreOptimizedMarshallerSelfTest.java | 2 +- ...ptimizedMarshallerWithSqlEscapeSelfTest.java | 28 + .../ignite/testsuites/IgniteCacheTestSuite.java | 4 + .../src/test/config/jdbc-pojo-store-builtin.xml | 12 +-- .../src/test/config/jdbc-pojo-store-obj.xml | 12 +-- .../jdbc/CacheJdbcBlobStoreFactorySelfTest.java | 12 +-- .../jdbc/CacheJdbcPojoStoreFactorySelfTest.java | 14 ++- .../store/jdbc/CachePojoStoreXmlSelfTest.java | 13 ++- .../CachePojoStoreXmlWithSqlEscapeSelfTest.java | 28 + .../testsuites/IgniteSpringTestSuite.java | 5 +- 22 files changed, 328 insertions(+), 95 deletions(-) -- http://git-wip-us.apache.org/repos/asf/ignite/blob/63888bd9/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java index fe8a50b..a9a8ce1 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java @@ -187,6 +187,9 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , /** Hash calculator. */ protected JdbcTypeHasher hasher = JdbcTypeDefaultHasher.INSTANCE; +/** Flag indicating that table and field names should be escaped in all SQL queries created by JDBC POJO store. */ +private boolean sqlEscapeAll; + /** * Get field value from object for use as query parameter. * @@ -727,7 +730,7 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , checkTypeConfiguration(cacheName, valKind, valType, type.getValueFields()); -entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, keyKind, valKind)); +entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, keyKind, valKind, sqlEscapeAll)); // Add one more binding to binary typeId for POJOs, // because object could be passed to store in binary format. @@ -736,7 +739,7 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , valKind = valKind == TypeKind.POJO ? TypeKind.BINARY : valKind; -entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, TypeKind.BINARY, valKind)); +entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, TypeKind.BINARY, valKind, sqlEscapeAll)); } } @@ -1675,6 +1678,28 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , } /** + * If {@code true} all the SQL table and field names will be escaped with double quotes like + * ({@code "tableName"."fieldsName"}). This enforces case sensitivity for field names and + * also allows having special characters in table and field names. + * + * @return Flag value. + */ +public boolean isSqlEscapeAll() { +return sqlEscapeAll; +} + +/** + * If {@code true} all the SQL table and field names will be escaped with double quotes like + * ({@code
ignite git commit: IGNITE-3938 Implemented escaping for SQL identifiers. Added tests for escaped mode.
Repository: ignite Updated Branches: refs/heads/ignite-3938 [created] 8d795a153 IGNITE-3938 Implemented escaping for SQL identifiers. Added tests for escaped mode. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8d795a15 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8d795a15 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8d795a15 Branch: refs/heads/ignite-3938 Commit: 8d795a153d937665a31200bc44d7f44e8ba66035 Parents: 4ee52f0 Author: Alexey KuznetsovAuthored: Thu Sep 22 14:12:43 2016 +0700 Committer: Alexey Kuznetsov Committed: Thu Sep 22 14:12:43 2016 +0700 -- .../store/jdbc/CacheAbstractJdbcStore.java | 104 +++ .../store/jdbc/CacheJdbcPojoStoreFactory.java | 45 ++-- .../store/jdbc/dialect/BasicJdbcDialect.java| 8 +- .../cache/store/jdbc/dialect/DB2Dialect.java| 6 +- .../cache/store/jdbc/dialect/H2Dialect.java | 5 +- .../cache/store/jdbc/dialect/JdbcDialect.java | 18 +++- .../cache/store/jdbc/dialect/MySQLDialect.java | 9 +- .../cache/store/jdbc/dialect/OracleDialect.java | 5 +- .../store/jdbc/dialect/SQLServerDialect.java| 14 ++- .../CacheJdbcPojoStoreAbstractSelfTest.java | 48 ++--- ...heJdbcPojoStoreBinaryMarshallerSelfTest.java | 2 +- ...reBinaryMarshallerWithSqlEscapeSelfTest.java | 28 + ...dbcPojoStoreOptimizedMarshallerSelfTest.java | 2 +- ...ptimizedMarshallerWithSqlEscapeSelfTest.java | 28 + .../ignite/testsuites/IgniteCacheTestSuite.java | 4 + .../src/test/config/jdbc-pojo-store-builtin.xml | 12 +-- .../src/test/config/jdbc-pojo-store-obj.xml | 12 +-- .../jdbc/CacheJdbcBlobStoreFactorySelfTest.java | 12 +-- .../jdbc/CacheJdbcPojoStoreFactorySelfTest.java | 14 ++- .../store/jdbc/CachePojoStoreXmlSelfTest.java | 13 ++- .../CachePojoStoreXmlWithSqlEscapeSelfTest.java | 28 + .../testsuites/IgniteSpringTestSuite.java | 5 +- 22 files changed, 327 insertions(+), 95 deletions(-) -- http://git-wip-us.apache.org/repos/asf/ignite/blob/8d795a15/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java index fe8a50b..a9a8ce1 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java @@ -187,6 +187,9 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , /** Hash calculator. */ protected JdbcTypeHasher hasher = JdbcTypeDefaultHasher.INSTANCE; +/** Flag indicating that table and field names should be escaped in all SQL queries created by JDBC POJO store. */ +private boolean sqlEscapeAll; + /** * Get field value from object for use as query parameter. * @@ -727,7 +730,7 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , checkTypeConfiguration(cacheName, valKind, valType, type.getValueFields()); -entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, keyKind, valKind)); +entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, keyKind, valKind, sqlEscapeAll)); // Add one more binding to binary typeId for POJOs, // because object could be passed to store in binary format. @@ -736,7 +739,7 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , valKind = valKind == TypeKind.POJO ? TypeKind.BINARY : valKind; -entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, TypeKind.BINARY, valKind)); +entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect, type, TypeKind.BINARY, valKind, sqlEscapeAll)); } } @@ -1675,6 +1678,28 @@ public abstract class CacheAbstractJdbcStore implements CacheStore , } /** + * If {@code true} all the SQL table and field names will be escaped with double quotes like + * ({@code "tableName"."fieldsName"}). This enforces case sensitivity for field names and + * also allows having special characters in table and field names. + * + * @return Flag value. + */ +public boolean isSqlEscapeAll() { +return sqlEscapeAll; +} + +/** + * If {@code true} all the SQL table and