You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ko...@apache.org on 2015/02/16 13:53:29 UTC

cayenne git commit: fix tests for oracle, fix loading relationships for oracle

Repository: cayenne
Updated Branches:
  refs/heads/master a9f43dbed -> 3ac0046b4


fix tests for oracle, fix loading relationships for oracle


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

Branch: refs/heads/master
Commit: 3ac0046b4bb785b04c34caebd3ed1d7cfef42e90
Parents: a9f43db
Author: kolonitsky <Al...@gmail.com>
Authored: Mon Feb 16 15:49:33 2015 +0300
Committer: kolonitsky <Al...@gmail.com>
Committed: Mon Feb 16 15:49:33 2015 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/access/DbLoader.java     |  16 +++
 .../cayenne/dba/oracle/OracleAdapter.java       |  40 ++----
 .../apache/cayenne/map/naming/ExportedKey.java  |  52 ++++++-
 .../org/apache/cayenne/access/DbLoaderIT.java   |   9 +-
 .../org/apache/cayenne/query/SQLSelectIT.java   | 136 +++++++++----------
 .../org/apache/cayenne/query/SelectQueryIT.java |   5 +-
 6 files changed, 150 insertions(+), 108 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ac0046b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
index 07b674c..27007e8 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
@@ -43,6 +43,7 @@ import org.apache.cayenne.map.naming.LegacyNameGenerator;
 import org.apache.cayenne.map.naming.NameCheckers;
 import org.apache.cayenne.map.naming.ObjectNameGenerator;
 import org.apache.cayenne.util.EntityMergeSupport;
+import org.apache.cayenne.util.EqualsBuilder;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -527,6 +528,21 @@ public class DbLoader {
                     continue;
                 }
 
+                if (!new EqualsBuilder()
+                        .append(pkEntity.getCatalog(), key.pkCatalog)
+                        .append(pkEntity.getSchema(), key.pkSchema)
+                        .append(fkEntity.getCatalog(), key.fkCatalog)
+                        .append(fkEntity.getSchema(), key.fkSchema)
+                        .isEquals()) {
+
+                    LOGGER.info("Skip relation: '" + key + "' because it related to objects from other catalog/schema");
+                    LOGGER.info("     relation primary key: '" + key.pkCatalog + "." + key.pkSchema + "'");
+                    LOGGER.info("       primary key entity: '" + pkEntity.getCatalog() + "." + pkEntity.getSchema() + "'");
+                    LOGGER.info("     relation foreign key: '" + key.fkCatalog + "." + key.fkSchema + "'");
+                    LOGGER.info("       foreign key entity: '" + fkEntity.getCatalog() + "." + fkEntity.getSchema() + "'");
+                    continue;
+                }
+
                 // forwardRelationship is a reference from table with primary key
                 DbRelationship forwardRelationship = new DbRelationship(generateName(pkEntity, key, true));
                 forwardRelationship.setSourceEntity(pkEntity);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ac0046b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
index f810753..50d621c 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
@@ -71,6 +71,7 @@ public class OracleAdapter extends JdbcAdapter {
     public static final String ORACLE_FLOAT = "FLOAT";
     public static final String ORACLE_BLOB = "BLOB";
     public static final String ORACLE_CLOB = "CLOB";
+    public static final String ORACLE_NCLOB = "NCLOB";
 
     public static final String TRIM_FUNCTION = "RTRIM";
     public static final String NEW_CLOB_FUNCTION = "EMPTY_CLOB()";
@@ -220,12 +221,8 @@ public class OracleAdapter extends JdbcAdapter {
      */
     @Override
     public Collection<String> dropTableStatements(DbEntity table) {
-        QuotingStrategy context = getQuotingStrategy();
-        StringBuffer buf = new StringBuffer("DROP TABLE ");
-        buf.append(context.quotedFullyQualifiedName(table));
-
-        buf.append(" CASCADE CONSTRAINTS");
-        return Collections.singleton(buf.toString());
+        return Collections.singleton("DROP TABLE " + getQuotingStrategy().quotedFullyQualifiedName(table)
+                + " CASCADE CONSTRAINTS");
     }
 
     @Override
@@ -253,40 +250,25 @@ public class OracleAdapter extends JdbcAdapter {
      * and has non-positive precision it is converted to INTEGER.
      */
     @Override
-    public DbAttribute buildAttribute(
-            String name,
-            String typeName,
-            int type,
-            int size,
-            int scale,
-            boolean allowNulls) {
-
-        DbAttribute attr = super.buildAttribute(
-                name,
-                typeName,
-                type,
-                size,
-                scale,
-                allowNulls);
+    public DbAttribute buildAttribute(String name, String typeName, int type, int size, int scale, boolean allowNulls) {
+        DbAttribute attr = super.buildAttribute(name, typeName, type, size, scale, allowNulls);
 
         if (type == Types.DECIMAL && scale <= 0) {
             attr.setType(Types.INTEGER);
             attr.setScale(-1);
-        }
-        else if (type == Types.OTHER) {
+        } else if (type == Types.OTHER) {
             // in this case we need to guess the attribute type
             // based on its string value
             if (ORACLE_FLOAT.equals(typeName)) {
                 attr.setType(Types.FLOAT);
-            }
-            else if (ORACLE_BLOB.equals(typeName)) {
+            } else if (ORACLE_BLOB.equals(typeName)) {
                 attr.setType(Types.BLOB);
-            }
-            else if (ORACLE_CLOB.equals(typeName)) {
+            } else if (ORACLE_CLOB.equals(typeName)) {
                 attr.setType(Types.CLOB);
+            } else if (ORACLE_NCLOB.equals(typeName)) {
+                attr.setType(Types.NCLOB);
             }
-        }
-        else if (type == Types.DATE) {
+        } else if (type == Types.DATE) {
             // Oracle DATE can store JDBC TIMESTAMP
             if ("DATE".equals(typeName)) {
                 attr.setType(Types.TIMESTAMP);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ac0046b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ExportedKey.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ExportedKey.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ExportedKey.java
index ab8229f..9a415d8 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ExportedKey.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ExportedKey.java
@@ -44,6 +44,9 @@ import java.sql.SQLException;
  * 
  */
 public class ExportedKey implements Comparable {
+
+    public final String pkCatalog;
+    public final String pkSchema;
     /**
      * Name of source table
      */
@@ -54,6 +57,8 @@ public class ExportedKey implements Comparable {
      */
     public final String pkColumn;
 
+    public final String fkCatalog;
+    public final String fkSchema;
     /**
      * Name of destination table
      */
@@ -79,9 +84,18 @@ public class ExportedKey implements Comparable {
 
     public ExportedKey(String pkTable, String pkColumn, String pkName,
                        String fkTable, String fkColumn, String fkName, short keySeq) {
+        this(null, null, pkTable, pkColumn, pkName, null, null, fkTable, fkColumn, fkName, keySeq);
+    }
+
+    public ExportedKey(String pkCatalog, String pkSchema, String pkTable, String pkColumn, String pkName,
+                       String fkCatalog, String fkSchema, String fkTable, String fkColumn, String fkName, short keySeq) {
+       this.pkCatalog  = pkCatalog;
+       this.pkSchema  = pkSchema;
        this.pkTable  = pkTable;
        this.pkColumn = pkColumn;
        this.pkName   = pkName;
+       this.fkCatalog  = fkCatalog;
+       this.fkSchema  = fkSchema;
        this.fkTable  = fkTable;
        this.fkColumn = fkColumn;
        this.fkName   = fkName;
@@ -97,16 +111,37 @@ public class ExportedKey implements Comparable {
      */
     public static ExportedKey extractData(ResultSet rs) throws SQLException {
         return new ExportedKey(
+                rs.getString("PKTABLE_CAT"),
+                rs.getString("PKTABLE_SCHEM"),
                 rs.getString("PKTABLE_NAME"),
                 rs.getString("PKCOLUMN_NAME"),
                 rs.getString("PK_NAME"),
+                rs.getString("FKTABLE_CAT"),
+                rs.getString("FKTABLE_SCHEM"),
                 rs.getString("FKTABLE_NAME"),
                 rs.getString("FKCOLUMN_NAME"),
                 rs.getString("FK_NAME"),
                 rs.getShort("KEY_SEQ")
         );
     }
-    
+
+
+    public String getPkCatalog() {
+        return pkCatalog;
+    }
+
+    public String getPkSchema() {
+        return pkSchema;
+    }
+
+    public String getFkCatalog() {
+        return fkCatalog;
+    }
+
+    public String getFkSchema() {
+        return fkSchema;
+    }
+
     /**
      * @return source table name
      */
@@ -167,8 +202,12 @@ public class ExportedKey implements Comparable {
         }
         ExportedKey rhs = (ExportedKey) obj;
         return new EqualsBuilder()
+                .append(this.pkCatalog, rhs.pkCatalog)
+                .append(this.pkSchema, rhs.pkSchema)
                 .append(this.pkTable, rhs.pkTable)
                 .append(this.pkColumn, rhs.pkColumn)
+                .append(this.fkCatalog, rhs.fkCatalog)
+                .append(this.fkSchema, rhs.fkSchema)
                 .append(this.fkTable, rhs.fkTable)
                 .append(this.fkColumn, rhs.fkColumn)
                 .append(this.fkName, rhs.fkName)
@@ -180,8 +219,12 @@ public class ExportedKey implements Comparable {
     @Override
     public int hashCode() {
         return new HashCodeBuilder()
+                .append(pkCatalog)
+                .append(pkSchema)
                 .append(pkTable)
                 .append(pkColumn)
+                .append(fkCatalog)
+                .append(fkSchema)
                 .append(fkTable)
                 .append(fkColumn)
                 .append(fkName)
@@ -201,8 +244,12 @@ public class ExportedKey implements Comparable {
 
         ExportedKey rhs = (ExportedKey) obj;
         return new CompareToBuilder()
+                .append(pkCatalog, rhs.pkCatalog)
+                .append(pkSchema, rhs.pkSchema)
                 .append(pkTable, rhs.pkTable)
                 .append(pkName, rhs.pkName)
+                .append(fkCatalog, rhs.fkCatalog)
+                .append(fkSchema, rhs.fkSchema)
                 .append(fkTable, rhs.fkTable)
                 .append(fkName, rhs.fkName)
                 .append(keySeq, rhs.keySeq)
@@ -217,6 +264,7 @@ public class ExportedKey implements Comparable {
     }
 
     public String getStrKey() {
-        return pkTable + "." + pkColumn + " <- " + fkTable + "." + fkColumn;
+        return pkCatalog + "." + pkSchema + "." + pkTable + "." + pkColumn
+                + " <- " + fkCatalog + "." + fkSchema + "." + fkTable + "." + fkColumn;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ac0046b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
index 206c3aa..a9fccc4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DbLoaderIT.java
@@ -41,10 +41,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import java.sql.Types;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static org.junit.Assert.*;
 
@@ -243,8 +240,8 @@ public class DbLoaderIT extends ServerCase {
         assertFalse(a.isGenerated());
 
         if (adapter.supportsGeneratedKeys()) {
-            DbEntity bag = getDbEntity(map, "BAG");
-            DbAttribute id = bag.getAttribute("ID");
+            DbEntity bag = getDbEntity(map, "GENERATED_COLUMN_TEST");
+            DbAttribute id = bag.getAttribute("GENERATED_COLUMN");
             assertTrue(id.isPrimaryKey());
             assertTrue(id.isGenerated());
         }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ac0046b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
index 5f05546..155eff4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
@@ -22,7 +22,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-import java.sql.Date;
+import java.sql.Types;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,7 +32,7 @@ import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.testdo.testmap.Artist;
+import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -48,28 +48,28 @@ public class SQLSelectIT extends ServerCase {
 	@Inject
 	private DBHelper dbHelper;
 
-	private TableHelper tArtist;
+	private TableHelper tPainting;
 
 	@Before
 	public void before() {
-		tArtist = new TableHelper(dbHelper, "ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
-	}
-
-	protected void createArtistsDataSet() throws Exception {
-
-		long dateBase = System.currentTimeMillis();
 
-		for (int i = 1; i <= 20; i++) {
-			tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 * i));
-		}
+		tPainting = new TableHelper(dbHelper, "PAINTING")
+                .setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE")
+                .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL);
 	}
 
+    protected void createArtistsDataSet() throws Exception {
+        for (int i = 1; i <= 20; i++) {
+            tPainting.insert(i, "painting" + i, 10000. * i);
+        }
+    }
+
 	@Test
 	public void test_DataRows_DataMapNameRoot() throws Exception {
 
 		createArtistsDataSet();
 
-		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("testmap", "SELECT * FROM ARTIST");
+		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("testmap", "SELECT * FROM PAINTING");
 		assertTrue(q1.isFetchingDataRows());
 
 		List<DataRow> result = context.select(q1);
@@ -82,7 +82,7 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("SELECT * FROM ARTIST");
+		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("SELECT * FROM PAINTING");
 		assertTrue(q1.isFetchingDataRows());
 
 		List<DataRow> result = context.select(q1);
@@ -95,11 +95,11 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		SQLSelect<Artist> q1 = SQLSelect.query(Artist.class, "SELECT * FROM ARTIST").columnNameCaps(CapsStrategy.UPPER);
+		SQLSelect<Painting> q1 = SQLSelect.query(Painting.class, "SELECT * FROM PAINTING").columnNameCaps(CapsStrategy.UPPER);
 		assertFalse(q1.isFetchingDataRows());
-		List<Artist> result = context.select(q1);
+		List<Painting> result = context.select(q1);
 		assertEquals(20, result.size());
-		assertTrue(result.get(0) instanceof Artist);
+		assertTrue(result.get(0) instanceof Painting);
 	}
 
 	@Test
@@ -107,12 +107,12 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		SQLSelect<Artist> q1 = SQLSelect.query(Artist.class, "SELECT * FROM ARTIST WHERE ARTIST_NAME = #bind($a)");
-		q1.params("a", "artist3").columnNameCaps(CapsStrategy.UPPER);
+		SQLSelect<Painting> q1 = SQLSelect.query(Painting.class, "SELECT * FROM PAINTING WHERE PAINTING_TITLE = #bind($a)");
+		q1.params("a", "painting3").columnNameCaps(CapsStrategy.UPPER);
 
 		assertFalse(q1.isFetchingDataRows());
-		Artist a = context.selectOne(q1);
-		assertEquals("artist3", a.getArtistName());
+        Painting a = context.selectOne(q1);
+		assertEquals("painting3", a.getPaintingTitle());
 	}
 
 	@Test
@@ -120,18 +120,18 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		SQLSelect<Artist> q1 = SQLSelect.query(Artist.class,
-				"SELECT * FROM ARTIST WHERE ARTIST_NAME = #bind($a) OR ARTIST_NAME = #bind($b)").columnNameCaps(CapsStrategy.UPPER);
-		q1.params("a", "artist3").params("b", "artist4");
+		SQLSelect<Painting> q1 = SQLSelect.query(Painting.class,
+				"SELECT * FROM PAINTING WHERE PAINTING_TITLE = #bind($a) OR PAINTING_TITLE = #bind($b)").columnNameCaps(CapsStrategy.UPPER);
+		q1.params("a", "painting3").params("b", "painting4");
 
-		List<Artist> result = context.select(q1);
+		List<Painting> result = context.select(q1);
 		assertEquals(2, result.size());
 	}
 
 	@Test
 	public void test_DataRows_ColumnNameCaps() throws Exception {
 
-		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("SELECT * FROM ARTIST WHERE ARTIST_NAME = 'artist2'");
+		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("SELECT * FROM PAINTING WHERE PAINTING_TITLE = 'painting2'");
 		q1.upperColumnNames();
 
 		SQLTemplate r1 = (SQLTemplate) q1.getReplacementQuery(context.getEntityResolver());
@@ -147,7 +147,7 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("SELECT * FROM ARTIST");
+		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("SELECT * FROM PAINTING");
 		q1.limit(5);
 
 		assertEquals(5, context.select(q1).size());
@@ -158,7 +158,7 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("SELECT * FROM ARTIST");
+		SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("SELECT * FROM PAINTING");
 		q1.offset(4);
 
 		assertEquals(16, context.select(q1).size());
@@ -169,10 +169,10 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		SQLSelect<Artist> q1 = SQLSelect.query(Artist.class, "SELECT * FROM ARTIST")
-				.append(" WHERE ARTIST_NAME = #bind($a)").params("a", "artist3").columnNameCaps(CapsStrategy.UPPER);
+		SQLSelect<Painting> q1 = SQLSelect.query(Painting.class, "SELECT * FROM PAINTING")
+				.append(" WHERE PAINTING_TITLE = #bind($a)").params("a", "painting3").columnNameCaps(CapsStrategy.UPPER);
 
-		List<Artist> result = context.select(q1);
+		List<Painting> result = context.select(q1);
 		assertEquals(1, result.size());
 	}
 
@@ -181,8 +181,8 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		List<Artist> result = SQLSelect.query(Artist.class, "SELECT * FROM ARTIST WHERE ARTIST_NAME = #bind($a)")
-				.params("a", "artist3").columnNameCaps(CapsStrategy.UPPER).select(context);
+		List<Painting> result = SQLSelect.query(Painting.class, "SELECT * FROM PAINTING WHERE PAINTING_TITLE = #bind($a)")
+				.params("a", "painting3").columnNameCaps(CapsStrategy.UPPER).select(context);
 
 		assertEquals(1, result.size());
 	}
@@ -192,10 +192,10 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		Artist a = SQLSelect.query(Artist.class, "SELECT * FROM ARTIST WHERE ARTIST_NAME = #bind($a)")
-				.params("a", "artist3").columnNameCaps(CapsStrategy.UPPER).selectOne(context);
+        Painting a = SQLSelect.query(Painting.class, "SELECT * FROM PAINTING WHERE PAINTING_TITLE = #bind($a)")
+				.params("a", "painting3").columnNameCaps(CapsStrategy.UPPER).selectOne(context);
 
-		assertEquals("artist3", a.getArtistName());
+		assertEquals("painting3", a.getPaintingTitle());
 	}
 
 	@Test
@@ -203,8 +203,8 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		long id = SQLSelect.scalarQuery(Long.class, "SELECT ARTIST_ID FROM ARTIST WHERE ARTIST_NAME = #bind($a)")
-				.params("a", "artist3").selectOne(context);
+		long id = SQLSelect.scalarQuery(Integer.class, "SELECT PAINTING_ID FROM PAINTING WHERE PAINTING_TITLE = #bind($a)")
+				.params("a", "painting3").selectOne(context);
 
 		assertEquals(3l, id);
 	}
@@ -214,11 +214,11 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		List<Long> ids = SQLSelect.scalarQuery(Long.class, "SELECT ARTIST_ID FROM ARTIST ORDER BY ARTIST_ID").select(
+		List<Integer> ids = SQLSelect.scalarQuery(Integer.class, "SELECT PAINTING_ID FROM PAINTING ORDER BY PAINTING_ID").select(
 				context);
 
 		assertEquals(20, ids.size());
-		assertEquals(2l, ids.get(1).longValue());
+		assertEquals(2l, ids.get(1).intValue());
 	}
 
 	@Test
@@ -226,7 +226,7 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		int c = SQLSelect.scalarQuery(Integer.class, "SELECT #result('COUNT(*)' 'int') FROM ARTIST").selectOne(context);
+		int c = SQLSelect.scalarQuery(Integer.class, "SELECT #result('COUNT(*)' 'int') FROM PAINTING").selectOne(context);
 
 		assertEquals(20, c);
 	}
@@ -236,10 +236,10 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		Long id = SQLSelect.scalarQuery(Long.class, "SELECT ARTIST_ID FROM ARTIST WHERE ARTIST_NAME = #bind($a)")
-				.paramsArray("artist3").selectOne(context);
+        Integer id = SQLSelect.scalarQuery(Integer.class, "SELECT PAINTING_ID FROM PAINTING WHERE PAINTING_TITLE = #bind($a)")
+				.paramsArray("painting3").selectOne(context);
 
-		assertEquals(3l, id.longValue());
+		assertEquals(3l, id.intValue());
 	}
 
 	@Test
@@ -247,30 +247,28 @@ public class SQLSelectIT extends ServerCase {
 
 		createArtistsDataSet();
 
-		List<Long> ids = SQLSelect
-				.scalarQuery(Long.class,
-						"SELECT ARTIST_ID FROM ARTIST WHERE ARTIST_NAME = #bind($a) OR ARTIST_NAME = #bind($b) ORDER BY ARTIST_ID")
-				.paramsArray("artist3", "artist2").select(context);
+		List<Integer> ids = SQLSelect
+				.scalarQuery(Integer.class,
+						"SELECT PAINTING_ID FROM PAINTING WHERE PAINTING_TITLE = #bind($a) OR PAINTING_TITLE = #bind($b) ORDER BY PAINTING_ID")
+				.paramsArray("painting3", "painting2").select(context);
 
-		assertEquals(2l, ids.get(0).longValue());
-		assertEquals(3l, ids.get(1).longValue());
+		assertEquals(2l, ids.get(0).intValue());
+		assertEquals(3l, ids.get(1).intValue());
 	}
 
 	@Test
 	public void test_ParamsArray_Multiple_OptionalChunks() throws Exception {
 
-		Date dob = new java.sql.Date(System.currentTimeMillis());
-
-		tArtist.insert(1, "artist1", dob);
-		tArtist.insert(2, "artist2", null);
+		tPainting.insert(1, "painting1", 1.0);
+		tPainting.insert(2, "painting2", null);
 
-		List<Long> ids = SQLSelect
+		List<Integer> ids = SQLSelect
 				.scalarQuery(
-						Long.class,
-						"SELECT ARTIST_ID FROM ARTIST #chain('OR' 'WHERE') "
-								+ "#chunk($a) DATE_OF_BIRTH #bindEqual($a) #end "
-								+ "#chunk($b) ARTIST_NAME #bindEqual($b) #end #end ORDER BY ARTIST_ID")
-				.paramsArray(null, "artist1").select(context);
+						Integer.class,
+						"SELECT PAINTING_ID FROM PAINTING #chain('OR' 'WHERE') "
+								+ "#chunk($a) ESTIMATED_PRICE #bindEqual($a) #end "
+								+ "#chunk($b) PAINTING_TITLE #bindEqual($b) #end #end ORDER BY PAINTING_ID")
+				.paramsArray(null, "painting1").select(context);
 
 		assertEquals(1, ids.size());
 		assertEquals(1l, ids.get(0).longValue());
@@ -279,21 +277,19 @@ public class SQLSelectIT extends ServerCase {
 	@Test
 	public void test_Params_Multiple_OptionalChunks() throws Exception {
 
-		Date dob = new java.sql.Date(System.currentTimeMillis());
-
-		tArtist.insert(1, "artist1", dob);
-		tArtist.insert(2, "artist2", null);
+		tPainting.insert(1, "painting1", 1.0);
+		tPainting.insert(2, "painting2", null);
 
 		Map<String, Object> params = new HashMap<String, Object>();
 		params.put("a", null);
-		params.put("b", "artist1");
+		params.put("b", "painting1");
 
-		List<Long> ids = SQLSelect
+		List<Integer> ids = SQLSelect
 				.scalarQuery(
-						Long.class,
-						"SELECT ARTIST_ID FROM ARTIST #chain('OR' 'WHERE') "
-								+ "#chunk($a) DATE_OF_BIRTH #bindEqual($a) #end "
-								+ "#chunk($b) ARTIST_NAME #bindEqual($b) #end #end ORDER BY ARTIST_ID").params(params)
+                        Integer.class,
+						"SELECT PAINTING_ID FROM PAINTING #chain('OR' 'WHERE') "
+								+ "#chunk($a) ESTIMATED_PRICE #bindEqual($a) #end "
+								+ "#chunk($b) PAINTING_TITLE #bindEqual($b) #end #end ORDER BY PAINTING_ID").params(params)
 				.select(context);
 
 		assertEquals(1, ids.size());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3ac0046b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
index 7911419..9becc33 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
+import java.sql.Types;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -70,7 +71,9 @@ public class SelectQueryIT extends ServerCase {
 
 	@Before
 	public void before() {
-		this.tArtist = new TableHelper(dbHelper, "ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
+		this.tArtist = new TableHelper(dbHelper, "ARTIST")
+                .setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH")
+                .setColumnTypes(Types.BIGINT, Types.CHAR, Types.DATE);
 	}
 
 	protected void createArtistsDataSet() throws Exception {