You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2016/12/21 11:55:53 UTC
[1/2] cayenne git commit: CAY-2139 Upgrade HSQLDB dependency to the
most recent version (2.3.4)
Repository: cayenne
Updated Branches:
refs/heads/master 3ad0f4a22 -> 48d9d7bfc
CAY-2139
Upgrade HSQLDB dependency to the most recent version (2.3.4)
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/fdf3a89b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/fdf3a89b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/fdf3a89b
Branch: refs/heads/master
Commit: fdf3a89bf5ea05aa51a53688b9aae4c83ed1fcd8
Parents: 3ad0f4a
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Dec 20 18:12:52 2016 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Dec 20 18:12:52 2016 +0300
----------------------------------------------------------------------
cayenne-crypto/pom.xml | 2 +-
.../apache/cayenne/crypto/db/auto/_Table1.java | 8 +--
.../apache/cayenne/crypto/db/auto/_Table2.java | 4 +-
.../apache/cayenne/crypto/db/auto/_Table3.java | 2 +-
.../apache/cayenne/crypto/db/auto/_Table4.java | 4 +-
.../src/test/resources/datamap.map.xml | 4 +-
.../reverse/dbload/AttributeLoaderIT.java | 12 ++--
cayenne-java8/pom.xml | 2 +-
cayenne-joda/pom.xml | 2 +-
cayenne-lifecycle/pom.xml | 2 +-
cayenne-protostuff/pom.xml | 2 +-
.../cayenne/dba/hsqldb/HSQLDBAdapter.java | 43 +++++++++++++
.../hsqldb/HSQLEJBQLConditionTranslator.java | 65 ++++++++++++++++++++
.../dba/hsqldb/HSQLEJBQLTranslatorFactory.java | 35 +++++++++++
.../dba/hsqldb/HSQLQualifierTranslator.java | 57 +++++++++++++++++
.../cayenne/access/DataContextCrossDBIT.java | 7 +++
.../DataContextEJBQLNumericalFunctionalIT.java | 7 ++-
.../cayenne/unit/HSQLDBUnitDbAdapter.java | 9 +++
.../resources/ddl/hsqldb/create-sp-aliases.sql | 6 +-
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
pom.xml | 12 ++--
21 files changed, 256 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-crypto/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-crypto/pom.xml b/cayenne-crypto/pom.xml
index 0d7d1fb..74b60b9 100644
--- a/cayenne-crypto/pom.xml
+++ b/cayenne-crypto/pom.xml
@@ -53,7 +53,7 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>hsqldb</groupId>
+ <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table1.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table1.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table1.java
index 97116c4..1a22f44 100644
--- a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table1.java
+++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table1.java
@@ -15,10 +15,10 @@ public abstract class _Table1 extends CayenneDataObject {
public static final String ID_PK_COLUMN = "ID";
- public static final Property<Integer> CRYPTO_INT = new Property<Integer>("cryptoInt");
- public static final Property<String> CRYPTO_STRING = new Property<String>("cryptoString");
- public static final Property<Integer> PLAIN_INT = new Property<Integer>("plainInt");
- public static final Property<String> PLAIN_STRING = new Property<String>("plainString");
+ public static final Property<Integer> CRYPTO_INT = new Property<>("cryptoInt");
+ public static final Property<String> CRYPTO_STRING = new Property<>("cryptoString");
+ public static final Property<Integer> PLAIN_INT = new Property<>("plainInt");
+ public static final Property<String> PLAIN_STRING = new Property<>("plainString");
public void setCryptoInt(int cryptoInt) {
writeProperty("cryptoInt", cryptoInt);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table2.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table2.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table2.java
index 2a914d4..5cc9133 100644
--- a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table2.java
+++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table2.java
@@ -15,8 +15,8 @@ public abstract class _Table2 extends CayenneDataObject {
public static final String ID_PK_COLUMN = "ID";
- public static final Property<byte[]> CRYPTO_BYTES = new Property<byte[]>("cryptoBytes");
- public static final Property<byte[]> PLAIN_BYTES = new Property<byte[]>("plainBytes");
+ public static final Property<byte[]> CRYPTO_BYTES = new Property<>("cryptoBytes");
+ public static final Property<byte[]> PLAIN_BYTES = new Property<>("plainBytes");
public void setCryptoBytes(byte[] cryptoBytes) {
writeProperty("cryptoBytes", cryptoBytes);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table3.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table3.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table3.java
index 937b1e6..f21a3fa 100644
--- a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table3.java
+++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table3.java
@@ -15,7 +15,7 @@ public abstract class _Table3 extends CayenneDataObject {
public static final String ID_PK_COLUMN = "ID";
- public static final Property<String> CRYPTO_STRING = new Property<String>("cryptoString");
+ public static final Property<String> CRYPTO_STRING = new Property<>("cryptoString");
public void setCryptoString(String cryptoString) {
writeProperty("cryptoString", cryptoString);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table4.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table4.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table4.java
index 3f825bc..6349072 100644
--- a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table4.java
+++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/db/auto/_Table4.java
@@ -15,8 +15,8 @@ public abstract class _Table4 extends CayenneDataObject {
public static final String ID_PK_COLUMN = "ID";
- public static final Property<Integer> PLAIN_INT = new Property<Integer>("plainInt");
- public static final Property<String> PLAIN_STRING = new Property<String>("plainString");
+ public static final Property<Integer> PLAIN_INT = new Property<>("plainInt");
+ public static final Property<String> PLAIN_STRING = new Property<>("plainString");
public void setPlainInt(int plainInt) {
writeProperty("plainInt", plainInt);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-crypto/src/test/resources/datamap.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/test/resources/datamap.map.xml b/cayenne-crypto/src/test/resources/datamap.map.xml
index 4182205..51c0840 100644
--- a/cayenne-crypto/src/test/resources/datamap.map.xml
+++ b/cayenne-crypto/src/test/resources/datamap.map.xml
@@ -14,10 +14,10 @@
<db-entity name="TABLE2">
<db-attribute name="CRYPTO_BYTES" type="BLOB"/>
<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
- <db-attribute name="PLAIN_BYTES" type="VARBINARY"/>
+ <db-attribute name="PLAIN_BYTES" type="LONGVARBINARY"/>
</db-entity>
<db-entity name="TABLE3">
- <db-attribute name="CRYPTO_BYTES" type="VARBINARY"/>
+ <db-attribute name="CRYPTO_BYTES" type="LONGVARBINARY"/>
<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
</db-entity>
<db-entity name="TABLE4">
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/AttributeLoaderIT.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/AttributeLoaderIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/AttributeLoaderIT.java
index d1abac5..f0207bb 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/AttributeLoaderIT.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/AttributeLoaderIT.java
@@ -119,15 +119,19 @@ public class AttributeLoaderIT extends BaseLoaderIT {
assertNotNull(blobEnt);
DbAttribute blobAttr = getDbAttribute(blobEnt, "BLOB_COL");
assertNotNull(blobAttr);
- assertTrue(msgForTypeMismatch(Types.BLOB, blobAttr), Types.BLOB == blobAttr.getType()
- || Types.LONGVARBINARY == blobAttr.getType());
+ assertTrue(msgForTypeMismatch(Types.BLOB, blobAttr),
+ Types.BLOB == blobAttr.getType()
+ || Types.VARBINARY == blobAttr.getType()
+ || Types.LONGVARBINARY == blobAttr.getType());
DbEntity clobEnt = getDbEntity("CLOB_TEST");
assertNotNull(clobEnt);
DbAttribute clobAttr = getDbAttribute(clobEnt, "CLOB_COL");
assertNotNull(clobAttr);
- assertTrue(msgForTypeMismatch(Types.CLOB, clobAttr), Types.CLOB == clobAttr.getType()
- || Types.LONGVARCHAR == clobAttr.getType());
+ assertTrue(msgForTypeMismatch(Types.CLOB, clobAttr),
+ Types.CLOB == clobAttr.getType()
+ || Types.VARCHAR == clobAttr.getType()
+ || Types.LONGVARCHAR == clobAttr.getType());
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-java8/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-java8/pom.xml b/cayenne-java8/pom.xml
index 525f1b3..54096c2 100644
--- a/cayenne-java8/pom.xml
+++ b/cayenne-java8/pom.xml
@@ -42,7 +42,7 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>hsqldb</groupId>
+ <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-joda/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-joda/pom.xml b/cayenne-joda/pom.xml
index b03b5e5..7e969cf 100644
--- a/cayenne-joda/pom.xml
+++ b/cayenne-joda/pom.xml
@@ -78,7 +78,7 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>hsqldb</groupId>
+ <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-lifecycle/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/pom.xml b/cayenne-lifecycle/pom.xml
index 106cfd4..04d62a1 100644
--- a/cayenne-lifecycle/pom.xml
+++ b/cayenne-lifecycle/pom.xml
@@ -46,7 +46,7 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>hsqldb</groupId>
+ <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-protostuff/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-protostuff/pom.xml b/cayenne-protostuff/pom.xml
index 969e9d0..0328db7 100644
--- a/cayenne-protostuff/pom.xml
+++ b/cayenne-protostuff/pom.xml
@@ -82,7 +82,7 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>hsqldb</groupId>
+ <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java
index 96c5c0b..d38a56a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java
@@ -21,9 +21,16 @@ package org.apache.cayenne.dba.hsqldb;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
+import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
+import org.apache.cayenne.access.translator.select.QualifierTranslator;
+import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.translator.select.SelectTranslator;
+import org.apache.cayenne.access.types.CharType;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.access.types.ExtendedTypeFactory;
+import org.apache.cayenne.access.types.ExtendedTypeMap;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.dba.JdbcAdapter;
@@ -38,6 +45,8 @@ import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.resource.ResourceLocator;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
import java.sql.Types;
import java.util.Collection;
import java.util.Iterator;
@@ -57,6 +66,8 @@ import java.util.List;
*/
public class HSQLDBAdapter extends JdbcAdapter {
+ public static final String TRIM_FUNCTION = "RTRIM";
+
public HSQLDBAdapter(@Inject RuntimeProperties runtimeProperties,
@Inject(Constants.SERVER_DEFAULT_TYPES_LIST) List<ExtendedType> defaultExtendedTypes,
@Inject(Constants.SERVER_USER_TYPES_LIST) List<ExtendedType> userExtendedTypes,
@@ -69,11 +80,43 @@ public class HSQLDBAdapter extends JdbcAdapter {
* @since 4.0
*/
@Override
+ protected void configureExtendedTypes(ExtendedTypeMap map) {
+ super.configureExtendedTypes(map);
+
+ // create specially configured CharType handler
+ map.registerType(new CharType(true, true));
+ }
+
+ /**
+ * @since 4.0
+ */
+ @Override
public SelectTranslator getSelectTranslator(SelectQuery<?> query, EntityResolver entityResolver) {
return new HSQLSelectTranslator(query, this, entityResolver);
}
/**
+ * Returns a trimming translator.
+ * @since 4.0
+ */
+ @Override
+ public QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler) {
+ QualifierTranslator translator = new HSQLQualifierTranslator(queryAssembler);
+ translator.setCaseInsensitive(caseInsensitiveCollations);
+ return translator;
+ }
+
+ /**
+ * @since 4.0
+ */
+ @Override
+ protected EJBQLTranslatorFactory createEJBQLTranslatorFactory() {
+ JdbcEJBQLTranslatorFactory translatorFactory = new HSQLEJBQLTranslatorFactory();
+ translatorFactory.setCaseInsensitive(caseInsensitiveCollations);
+ return translatorFactory;
+ }
+
+ /**
* Generate fully-qualified name for 1.8 and on. Subclass generates
* unqualified name.
*
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLEJBQLConditionTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLEJBQLConditionTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLEJBQLConditionTranslator.java
new file mode 100644
index 0000000..7a1c12c
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLEJBQLConditionTranslator.java
@@ -0,0 +1,65 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.dba.hsqldb;
+
+import java.sql.Types;
+
+import org.apache.cayenne.access.translator.ejbql.EJBQLConditionTranslator;
+import org.apache.cayenne.access.translator.ejbql.EJBQLMultiColumnOperand;
+import org.apache.cayenne.access.translator.ejbql.EJBQLPathTranslator;
+import org.apache.cayenne.access.translator.ejbql.EJBQLTranslationContext;
+import org.apache.cayenne.ejbql.EJBQLExpression;
+import org.apache.cayenne.map.ObjAttribute;
+
+/**
+ * @since 4.0
+ */
+public class HSQLEJBQLConditionTranslator extends EJBQLConditionTranslator {
+
+ HSQLEJBQLConditionTranslator(EJBQLTranslationContext context) {
+ super(context);
+ }
+
+ @Override
+ public boolean visitPath(EJBQLExpression expression, int finishedChildIndex) {
+
+ expression.visit(new EJBQLPathTranslator(context) {
+
+ @Override
+ protected void appendMultiColumnPath(EJBQLMultiColumnOperand operand) {
+ HSQLEJBQLConditionTranslator.this.addMultiColumnOperand(operand);
+ }
+
+ @Override
+ protected void processTerminatingAttribute(ObjAttribute attribute) {
+ if (attribute.getDbAttribute().getType() == Types.CHAR) {
+ context.append(' ').append(HSQLDBAdapter.TRIM_FUNCTION).append("(");
+ super.processTerminatingAttribute(attribute);
+ context.append(')');
+ }
+ else {
+ super.processTerminatingAttribute(attribute);
+ }
+ }
+ });
+
+ return false;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLEJBQLTranslatorFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLEJBQLTranslatorFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLEJBQLTranslatorFactory.java
new file mode 100644
index 0000000..63d3b11
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLEJBQLTranslatorFactory.java
@@ -0,0 +1,35 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.dba.hsqldb;
+
+import org.apache.cayenne.access.translator.ejbql.EJBQLTranslationContext;
+import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
+import org.apache.cayenne.ejbql.EJBQLExpressionVisitor;
+
+/**
+ * @since 4.0
+ */
+public class HSQLEJBQLTranslatorFactory extends JdbcEJBQLTranslatorFactory {
+
+ @Override
+ public EJBQLExpressionVisitor getConditionTranslator(EJBQLTranslationContext context) {
+ return new HSQLEJBQLConditionTranslator(context);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLQualifierTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLQualifierTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLQualifierTranslator.java
new file mode 100644
index 0000000..ec3fa50
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLQualifierTranslator.java
@@ -0,0 +1,57 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.dba.hsqldb;
+
+import java.io.IOException;
+
+import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.access.translator.select.QueryAssembler;
+import org.apache.cayenne.access.translator.select.TrimmingQualifierTranslator;
+import org.apache.cayenne.exp.parser.PatternMatchNode;
+
+/**
+ * @since 4.0
+ */
+public class HSQLQualifierTranslator extends TrimmingQualifierTranslator {
+
+ public HSQLQualifierTranslator(QueryAssembler queryAssembler) {
+ super(queryAssembler, HSQLDBAdapter.TRIM_FUNCTION);
+ }
+
+ @Override
+ protected void appendLikeEscapeCharacter(PatternMatchNode patternMatchNode)
+ throws IOException {
+
+ char escapeChar = patternMatchNode.getEscapeChar();
+
+ if ('?' == escapeChar) {
+ throw new CayenneRuntimeException(
+ "the escape character of '?' is illegal for LIKE clauses.");
+ }
+
+ if (0 != escapeChar) {
+ // this is a difference with super implementation - HSQL driver seems does not
+ // support JDBC escape syntax, so creating an explicit SQL escape:
+ out.append(" ESCAPE '");
+ out.append(escapeChar);
+ out.append("'");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
index 8ac4620..3881244 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
@@ -23,6 +23,7 @@ import org.apache.cayenne.di.Inject;
import org.apache.cayenne.testdo.db1.CrossdbM1E1;
import org.apache.cayenne.testdo.db2.CrossdbM2E1;
import org.apache.cayenne.testdo.db2.CrossdbM2E2;
+import org.apache.cayenne.unit.UnitDbAdapter;
import org.apache.cayenne.unit.di.server.CayenneProjects;
import org.apache.cayenne.unit.di.server.ServerCase;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -34,9 +35,15 @@ public class DataContextCrossDBIT extends ServerCase {
@Inject
private DataContext context;
+ @Inject
+ private UnitDbAdapter dbAdapter;
+
@Test
public void testMultiDBUpdate() {
+ if(!dbAdapter.supportsPKGeneratorConcurrency()) {
+ return;
+ }
// for now testing that no exceptions are thrown... wouldn't hurt to check the
// data as well???
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
index bc7de1b..b1ea0e2 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
@@ -24,6 +24,9 @@ import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.QueryResponse;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.query.EJBQLQuery;
+import org.apache.cayenne.query.SQLSelect;
+import org.apache.cayenne.query.Select;
+import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.test.jdbc.DBHelper;
import org.apache.cayenne.test.jdbc.TableHelper;
import org.apache.cayenne.testdo.numeric_types.BigDecimalEntity;
@@ -72,10 +75,10 @@ public class DataContextEJBQLNumericalFunctionalIT extends ServerCase {
context.commitChanges();
EJBQLQuery query = new EJBQLQuery(
- "SELECT d FROM BigDecimalEntity d WHERE ABS(d.bigDecimalField) > 4.5");
+ "SELECT d FROM BigDecimalEntity d WHERE ABS(d.bigDecimalField) < 5.0");
List<?> objects = context.performQuery(query);
assertEquals(1, objects.size());
- assertTrue(objects.contains(o2));
+ assertTrue(objects.contains(o1));
}
@Test
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java
index 4fb5e94..29b99fe 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/HSQLDBUnitDbAdapter.java
@@ -57,6 +57,15 @@ public class HSQLDBUnitDbAdapter extends UnitDbAdapter {
}
}
+ /**
+ * In HyperSQL, REAL, FLOAT, DOUBLE are equivalent and all mapped to double in Java
+ * @see <a href="http://hsqldb.org/doc/guide/sqlgeneral-chapt.html#sgc_numeric_types">HSQLDB data types documentation</a>
+ */
+ @Override
+ public boolean realAsDouble() {
+ return true;
+ }
+
@Override
public boolean supportsPKGeneratorConcurrency() {
// HSQL is not locking AUTO_PK_TABLE, so running PkGenerator in parallel may result in conflicting ranges
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/cayenne-server/src/test/resources/ddl/hsqldb/create-sp-aliases.sql
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/ddl/hsqldb/create-sp-aliases.sql b/cayenne-server/src/test/resources/ddl/hsqldb/create-sp-aliases.sql
index aee8f7e..969ed2b 100644
--- a/cayenne-server/src/test/resources/ddl/hsqldb/create-sp-aliases.sql
+++ b/cayenne-server/src/test/resources/ddl/hsqldb/create-sp-aliases.sql
@@ -16,5 +16,7 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
-CREATE ALIAS cayenne_tst_upd_proc FOR "org.apache.cayenne.unit.HSQLProcedures.cayenne_tst_upd_proc";
-CREATE ALIAS cayenne_tst_select_proc FOR "org.apache.cayenne.unit.HSQLProcedures.cayenne_tst_select_proc";
+DROP PROCEDURE IF EXISTS cayenne_tst_upd_proc;
+DROP PROCEDURE IF EXISTS cayenne_tst_select_proc;
+CREATE PROCEDURE cayenne_tst_upd_proc( IN paintingPrice INT ) LANGUAGE JAVA EXTERNAL NAME 'CLASSPATH:org.apache.cayenne.unit.HSQLProcedures.cayenne_tst_upd_proc';
+CREATE PROCEDURE cayenne_tst_select_proc( IN name VARCHAR(50), IN paintingPrice INT ) LANGUAGE JAVA EXTERNAL NAME 'CLASSPATH:org.apache.cayenne.unit.HSQLProcedures.cayenne_tst_select_proc';
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index c67b2b9..ac84187 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -13,6 +13,7 @@ Date:
----------------------------------
Changes/New Features:
+CAY-2139 Upgrade HSQLDB dependency to the most recent version (2.3.4)
CAY-2163 Property.path() , ExpressionFactory.pathExp()
CAY-2164 Relocate builder bootstrap methods from ServerRuntimeBuilder to ServerRuntime
CAY-2165 Explicit "contribution" API for easier expansion of DI collections and maps
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fdf3a89b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7b4042f..38b62cb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -468,9 +468,9 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>hsqldb</groupId>
+ <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
- <version>1.8.0.4</version>
+ <version>2.3.4</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -1215,9 +1215,9 @@
</activation>
<dependencies>
<dependency>
- <groupId>hsqldb</groupId>
+ <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
- <version>1.8.0.4</version>
+ <version>2.3.4</version>
<scope>test</scope>
</dependency>
</dependencies>
@@ -1232,9 +1232,9 @@
</activation>
<dependencies>
<dependency>
- <groupId>hsqldb</groupId>
+ <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
- <version>1.8.0.4</version>
+ <version>2.3.4</version>
<scope>test</scope>
</dependency>
</dependencies>
[2/2] cayenne git commit: Merge branch '166'
Posted by sk...@apache.org.
Merge branch '166'
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/48d9d7bf
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/48d9d7bf
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/48d9d7bf
Branch: refs/heads/master
Commit: 48d9d7bfc5ad1752522f32fbac2a54a480795946
Parents: 3ad0f4a fdf3a89
Author: Savva Kolbachev <s....@gmail.com>
Authored: Wed Dec 21 14:55:31 2016 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Wed Dec 21 14:55:31 2016 +0300
----------------------------------------------------------------------
cayenne-crypto/pom.xml | 2 +-
.../apache/cayenne/crypto/db/auto/_Table1.java | 8 +--
.../apache/cayenne/crypto/db/auto/_Table2.java | 4 +-
.../apache/cayenne/crypto/db/auto/_Table3.java | 2 +-
.../apache/cayenne/crypto/db/auto/_Table4.java | 4 +-
.../src/test/resources/datamap.map.xml | 4 +-
.../reverse/dbload/AttributeLoaderIT.java | 12 ++--
cayenne-java8/pom.xml | 2 +-
cayenne-joda/pom.xml | 2 +-
cayenne-lifecycle/pom.xml | 2 +-
cayenne-protostuff/pom.xml | 2 +-
.../cayenne/dba/hsqldb/HSQLDBAdapter.java | 43 +++++++++++++
.../hsqldb/HSQLEJBQLConditionTranslator.java | 65 ++++++++++++++++++++
.../dba/hsqldb/HSQLEJBQLTranslatorFactory.java | 35 +++++++++++
.../dba/hsqldb/HSQLQualifierTranslator.java | 57 +++++++++++++++++
.../cayenne/access/DataContextCrossDBIT.java | 7 +++
.../DataContextEJBQLNumericalFunctionalIT.java | 7 ++-
.../cayenne/unit/HSQLDBUnitDbAdapter.java | 9 +++
.../resources/ddl/hsqldb/create-sp-aliases.sql | 6 +-
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
pom.xml | 12 ++--
21 files changed, 256 insertions(+), 30 deletions(-)
----------------------------------------------------------------------