You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by dw...@apache.org on 2009/10/27 18:42:59 UTC
svn commit: r830260 - in /openjpa/branches/1.3.x:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/apps/...
Author: dwoods
Date: Tue Oct 27 17:42:58 2009
New Revision: 830260
URL: http://svn.apache.org/viewvc?rev=830260&view=rev
Log:
OPENJPA-1308 shouldn't always use CAST with UPPER and LOWER for DB2. merged in from trunk/1.2.2.
Modified:
openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java
openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java
openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java
openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java
openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/apps/CompUser.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestGenerationType.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigIntegerId.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLDateId.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEJBQLCondExpression.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/functions/TestEJBQLFunction.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/CompUser.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/FrequentFlierPlan.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/Request.java
openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/TestJPQLSubquery.java
Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java (original)
+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java Tue Oct 27 17:42:58 2009
@@ -43,7 +43,12 @@
DBDictionary dict = ctx.store.getDBDictionary();
String func = dict.toLowerCaseFunction;
dict.assertSupport(func != null, "ToLowerCaseFunction");
- func = dict.getCastFunction(getValue(), func);
+ if (getValue() instanceof PCPath) {
+ func = dict.getCastFunction(getValue(), func,
+ ((PCPath)getValue()).getFieldMapping(state).getColumns()[0]);
+ } else {
+ func = dict.getCastFunction(getValue(), func);
+ }
int idx = func.indexOf("{0}");
buf.append(func.substring(0, idx));
Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java (original)
+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java Tue Oct 27 17:42:58 2009
@@ -43,7 +43,12 @@
DBDictionary dict = ctx.store.getDBDictionary();
String func = dict.toUpperCaseFunction;
dict.assertSupport(func != null, "ToUpperCaseFunction");
- func = dict.getCastFunction(getValue(), func);
+ if (getValue() instanceof PCPath) {
+ func = dict.getCastFunction(getValue(), func,
+ ((PCPath)getValue()).getFieldMapping(state).getColumns()[0]);
+ } else {
+ func = dict.getCastFunction(getValue(), func);
+ }
int idx = func.indexOf("{0}");
buf.append(func.substring(0, idx));
Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java (original)
+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java Tue Oct 27 17:42:58 2009
@@ -37,13 +37,9 @@
// DB2-based databases have restrictions on having uncast parameters
// in string functions
- toUpperCaseFunction = "UPPER(CAST({0} AS VARCHAR(" + varcharCastLength
- + ")))";
- toLowerCaseFunction = "LOWER(CAST({0} AS VARCHAR(" + varcharCastLength
- + ")))";
stringLengthFunction = "LENGTH({0})";
concatenateFunction = "(CAST({0} AS VARCHAR(" + varcharCastLength
- + ")))||(CAST({1} AS VARCHAR(1000)))";
+ + ")) || CAST({1} AS VARCHAR(" + varcharCastLength + ")))";
trimLeadingFunction = "LTRIM({0})";
trimTrailingFunction = "RTRIM({0})";
@@ -59,6 +55,7 @@
supportsLockingWithOuterJoin = false;
supportsLockingWithInnerJoin = false;
supportsLockingWithSelectRange = true;
+ supportsCaseConversionForLob = true;
requiresAutoCommitForMetaData = true;
requiresAliasForSubselect = true;
Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java (original)
+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java Tue Oct 27 17:42:58 2009
@@ -52,6 +52,7 @@
private static final Localizer _loc = Localizer.forPackage
(DB2Dictionary.class);
+ public static final String VENDOR_IBM = "ibm";
public String optimizeClause = "optimize for";
public String rowClause = "row";
protected int db2ServerType = 0;
@@ -248,6 +249,12 @@
super.connectedConfiguration(conn);
DatabaseMetaData metaData = conn.getMetaData();
+ String driverName = metaData.getDriverName();
+ if (driverName != null && driverName.startsWith("IBM DB2"))
+ driverVendor = VENDOR_IBM;
+ else
+ driverVendor = VENDOR_OTHER;
+
databaseProductName = nullSafe(metaData.getDatabaseProductName());
databaseProductVersion = nullSafe(metaData.getDatabaseProductVersion());
@@ -733,9 +740,36 @@
* @return a String with the correct CAST function syntax
*/
public String getCastFunction(Val val, String func) {
- if (val instanceof Lit || val instanceof Param)
- if (func.indexOf("VARCHAR") == -1)
- func = addCastAsString(func, "{0}", " AS VARCHAR(1000)");
+ if (val instanceof Lit || val instanceof Param) {
+ if (func.indexOf("VARCHAR") == -1) {
+ func = addCastAsString(func, "{0}", " AS VARCHAR(" + varcharCastLength + ")");
+ }
+ }
+ return func;
+ }
+
+ /**
+ * Return the correct CAST function syntax
+ *
+ * @param val operand of cast
+ * @param func original string
+ * @param col database column
+ * @return a String with the correct CAST function syntax
+ */
+ public String getCastFunction(Val val, String func, Column col) {
+ boolean doCast = false;
+ if (val instanceof Lit || val instanceof Param) {
+ doCast = true;
+ }
+ // cast anything not already a VARCHAR to VARCHAR
+ if (col.getType() != Types.VARCHAR) {
+ doCast = true;
+ }
+ if (doCast == true) {
+ if (func.indexOf("VARCHAR") == -1) {
+ func = addCastAsString(func, "{0}", " AS VARCHAR(" + varcharCastLength + ")");
+ }
+ }
return func;
}
Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Tue Oct 27 17:42:58 2009
@@ -237,6 +237,7 @@
public boolean requiresCastForComparisons = false;
public boolean supportsModOperator = false;
public boolean supportsXMLColumn = false;
+ public boolean supportsCaseConversionForLob = false;
public boolean reportsSuccessNoInfoOnBatchUpdates = false;
public boolean supportsSelectFromFinalTable = false;
@@ -381,7 +382,7 @@
public DBDictionary() {
fixedSizeTypeNameSet.addAll(Arrays.asList(new String[]{
"BIGINT", "BIT", "BLOB", "CLOB", "DATE", "DECIMAL", "DISTINCT",
- "DOUBLE", "FLOAT", "INTEGER", "JAVA_OBJECT", "NULL",
+ "DOUBLE", "FLOAT", "INTEGER", "JAVA_OBJECT", "NULL",
"OTHER", "REAL", "REF", "SMALLINT", "STRUCT", "TIME", "TIMESTAMP",
"TINYINT",
}));
@@ -480,7 +481,7 @@
// try from the most generic, and if errors occur, try
// less generic types; this enables us to handle values
// like Double.NaN without having to introspect on the
- // ResultSetMetaData (bug #1053). note that we handle
+ // ResultSetMetaData (bug #1053). Note that we handle
// generic exceptions, since some drivers may throw
// NumberFormatExceptions, whereas others may throw SQLExceptions
try {
@@ -2748,7 +2749,7 @@
Class rc = Filters.wrap(rhs.getType());
int type = 0;
if (requiresCastForMathFunctions && (lc != rc
- || (lhs.isConstant() && rhs.isConstant()))) {
+ || (lhs.isConstant() || rhs.isConstant()))) {
Class c = Filters.promote(lc, rc);
type = getJDBCType(JavaTypes.getTypeCode(c), false);
if (type != Types.VARBINARY && type != Types.BLOB) {
@@ -4505,6 +4506,19 @@
public String getCastFunction(Val val, String func) {
return func;
}
+
+ /**
+ * Return the correct CAST function syntax. This should be overriden by subclasses
+ * that need access to the Column information.
+ *
+ * @param val operand of cast
+ * @param func original string
+ * @param col database column
+ * @return a String with the correct CAST function syntax
+ */
+ public String getCastFunction(Val val, String func, Column col) {
+ return getCastFunction (val, func);
+ }
/**
* Create an index if necessary for some database tables
Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java (original)
+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java Tue Oct 27 17:42:58 2009
@@ -45,6 +45,8 @@
validationSQL = "VALUES(1)";
stringLengthFunction = "LENGTH({0})";
substringFunctionName = "SUBSTR";
+ toUpperCaseFunction = "UPPER(CAST({0} AS VARCHAR(" + varcharCastLength + ")))";
+ toLowerCaseFunction = "LOWER(CAST({0} AS VARCHAR(" + varcharCastLength + ")))";
// Derby name length restriction has been relaxed
// http://www.archivum.info/derby-dev@db.apache.org/2004-12/msg00270.html
Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java (original)
+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java Tue Oct 27 17:42:58 2009
@@ -52,6 +52,8 @@
public class InformixDictionary
extends DBDictionary {
+ public static final String VENDOR_IBM = "ibm";
+
/**
* If true, then we will issue a "SET LOCK MODE TO WAIT N"
* statement whenever we create a {@link Connection}, in order
@@ -154,22 +156,25 @@
public void connectedConfiguration(Connection conn)
throws SQLException {
super.connectedConfiguration(conn);
- if (driverVendor == null) {
- DatabaseMetaData meta = conn.getMetaData();
- String driverName = meta.getDriverName();
- if ("Informix".equalsIgnoreCase(driverName))
- driverVendor = VENDOR_DATADIRECT;
- else
- driverVendor = VENDOR_OTHER;
-
- if (driverName.equals("IBM DB2 JDBC Universal Driver Architecture")) {
+
+ DatabaseMetaData meta = conn.getMetaData();
+ String driverName = meta.getDriverName();
+ if (driverName != null) {
+ if (driverName.equals("IBM DB2 JDBC Universal Driver Architecture"))
+ {
+ driverVendor = VENDOR_IBM;
useJCC = true;
try {
if (meta.storesLowerCaseIdentifiers())
schemaCase = SCHEMA_CASE_LOWER;
} catch (SQLException e) {}
- }
- }
+ } else if ("Informix".equalsIgnoreCase(driverName))
+ driverVendor = VENDOR_DATADIRECT;
+ else
+ driverVendor = VENDOR_OTHER;
+ } else
+ driverVendor = VENDOR_OTHER;
+
if (isJDBC3) {
conn.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT);
if (log.isTraceEnabled())
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/apps/CompUser.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/apps/CompUser.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/apps/CompUser.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/apps/CompUser.java Tue Oct 27 17:42:58 2009
@@ -38,6 +38,9 @@
@Column(name="compName", length=50)
private String computerName;
+ @Basic @Lob
+ private String nameAsLob;
+
@PersistentCollection
private String[] nicknames = new String[0];
@@ -57,6 +60,7 @@
this.computerName = cName;
this.address = address;
this.age = age;
+ this.nameAsLob = name;
}
public String getComputerName() {
@@ -95,4 +99,13 @@
this.age = age;
}
+ public String getNameAsLob() {
+ return nameAsLob;
+ }
+
+ public void setNameAsLob(String nameAsLob) {
+ this.nameAsLob = nameAsLob;
+ }
+
}
+
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestGenerationType.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestGenerationType.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestGenerationType.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestGenerationType.java Tue Oct 27 17:42:58 2009
@@ -50,22 +50,20 @@
} else {
setUp(IdentityGenerationType.class);
}
-
- /*
- * If the DBDictionary doesn't support AutoAssign(ment) of column
- * values, then null out the emf instance to prevent the rest of
- * the tests from executing.
- */
- JDBCConfiguration conf = (JDBCConfiguration) emf.getConfiguration();
- if (!conf.getDBDictionaryInstance().supportsAutoAssign) {
- emf = null;
}
+ /**
+ * Not all databases support GenerationType.IDENTITY column(s).
+ */
+ private boolean supportsAutoAssign() {
+ return ((JDBCConfiguration) emf.getConfiguration())
+ .getDBDictionaryInstance().supportsAutoAssign;
}
public void testCreateEntityManager() {
- if (emf == null)
+ if (!supportsAutoAssign()) {
return;
+ }
EntityManager em = emf.createEntityManager();
EntityTransaction t = em.getTransaction();
@@ -83,8 +81,9 @@
}
public void testPersist() {
- if (emf == null)
+ if (!supportsAutoAssign()) {
return;
+ }
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(new IdentityGenerationType());
@@ -93,8 +92,9 @@
}
public void testQuery() {
- if (emf == null)
+ if (!supportsAutoAssign()) {
return;
+ }
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
IdentityGenerationType igt = new IdentityGenerationType();
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java Tue Oct 27 17:42:58 2009
@@ -24,6 +24,10 @@
import junit.textui.TestRunner;
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.sql.DBDictionary;
+import org.apache.openjpa.jdbc.sql.MySQLDictionary;
+import org.apache.openjpa.persistence.test.AllowFailure;
import org.apache.openjpa.persistence.test.SingleEMFTestCase;
/**
@@ -33,7 +37,7 @@
extends SingleEMFTestCase {
public void setUp() {
- setUp(SQLBigDecimalIdEntity.class, CLEAR_TABLES);
+ setUp(SQLBigDecimalIdEntity.class, DROP_TABLES);
}
public void testPersist() {
@@ -44,6 +48,18 @@
e.setId(decimal);
e.setData(1);
+ // trigger schema definition
+ JDBCConfiguration jdbccfg = (JDBCConfiguration) emf.getConfiguration();
+ DBDictionary dict = jdbccfg.getDBDictionaryInstance();
+ // currently BigDecimal is mapped to NUMERIC column type. This causes
+ // truncation error from MySQL. Without knowing the implication of changing the
+ // mapping of BigDecimal universally to DOUBLE, I will just change the mapping
+ // for this test case.
+ if (dict instanceof MySQLDictionary) {
+ dict.numericTypeName = "DOUBLE";
+ }
+
+
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(e);
@@ -55,6 +71,7 @@
e = em.find(SQLBigDecimalIdEntity.class, decimal);
assertEquals(1, e.getData());
em.close();
+
}
public void testQuery() {
@@ -78,7 +95,8 @@
em.close();
}
+
public static void main(String[] args) {
- TestRunner.run(SQLBigDecimalIdEntity.class);
+ TestRunner.run(TestSQLBigDecimalId.class);
}
}
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigIntegerId.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigIntegerId.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigIntegerId.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigIntegerId.java Tue Oct 27 17:42:58 2009
@@ -57,6 +57,6 @@
}
public static void main(String[] args) {
- TestRunner.run(SQLBigIntegerIdEntity.class);
+ TestRunner.run(TestSQLBigIntegerId.class);
}
}
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLDateId.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLDateId.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLDateId.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLDateId.java Tue Oct 27 17:42:58 2009
@@ -57,7 +57,7 @@
}
public static void main(String[] args) {
- TestRunner.run(SQLDateIdEntity.class);
+ TestRunner.run(TestSQLBigIntegerId.class);
}
}
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEJBQLCondExpression.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEJBQLCondExpression.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEJBQLCondExpression.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEJBQLCondExpression.java Tue Oct 27 17:42:58 2009
@@ -313,12 +313,14 @@
user.setComputerName(cName);
user.setAddress(add);
user.setAge(age);
+ user.setNameAsLob(name);
} else {
user = new FemaleUser();
user.setName(name);
user.setComputerName(cName);
user.setAddress(add);
user.setAge(age);
+ user.setNameAsLob(name);
}
return user;
}
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/functions/TestEJBQLFunction.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/functions/TestEJBQLFunction.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/functions/TestEJBQLFunction.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/functions/TestEJBQLFunction.java Tue Oct 27 17:42:58 2009
@@ -21,6 +21,10 @@
import java.util.List;
import javax.persistence.EntityManager;
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.sql.DBDictionary;
+import org.apache.openjpa.jdbc.sql.OracleDictionary;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
import org.apache.openjpa.persistence.common.apps.Address;
import org.apache.openjpa.persistence.common.apps.CompUser;
import org.apache.openjpa.persistence.common.apps.FemaleUser;
@@ -116,7 +120,21 @@
user = em.find(CompUser.class, userid1);
em.refresh(user);
assertNotNull(user);
- assertEquals("", user.getName());
+ // Empty strings are stored as null on Oracle so the assertion below
+ // must be handled differently on that DB. The docs indicate that
+ // this may not be the case in future releases so either result is
+ // allowed.
+ // The note in this section of Oracle doc explains the behavior:
+ // http://download.oracle.com/docs/cd/B14117_01/server.101/ +
+ // b10759/sql_elements005.htm#sthref511
+ DBDictionary dict = ((JDBCConfiguration) getEmf().getConfiguration())
+ .getDBDictionaryInstance();
+ if (dict instanceof OracleDictionary) {
+ assertTrue(user.getName() == null ||
+ "".equals(user.getName()));
+ } else {
+ assertEquals("", user.getName());
+ }
endTx(em);
endEm(em);
@@ -166,6 +184,35 @@
endEm(em);
}
+ public void testLowerClobFunc() {
+ OpenJPAEntityManagerSPI em = (OpenJPAEntityManagerSPI) currentEntityManager();
+ // some databases do not support case conversion on LOBs,
+ // just skip this test case
+ DBDictionary dict = ((JDBCConfiguration) em.getConfiguration())
+ .getDBDictionaryInstance();
+ if (!dict.supportsCaseConversionForLob) {
+ return;
+ }
+ startTx(em);
+
+ CompUser user = em.find(CompUser.class, userid5);
+ assertNotNull(user);
+ assertEquals("Famzy", user.getName());
+
+ String query = "UPDATE CompUser e SET " +
+ "e.name = LOWER(e.name) WHERE LOWER(e.nameAsLob)='famzy'";
+
+ int result = em.createQuery(query).executeUpdate();
+
+ user = em.find(CompUser.class, userid5);
+ em.refresh(user);
+ assertNotNull(user);
+ assertEquals("famzy", user.getName());
+
+ endTx(em);
+ endEm(em);
+ }
+
public void testUpperFunc() {
EntityManager em = currentEntityManager();
startTx(em);
@@ -188,6 +235,35 @@
endEm(em);
}
+ public void testUpperClobFunc() {
+ OpenJPAEntityManagerSPI em = (OpenJPAEntityManagerSPI) currentEntityManager();
+ // some databases do not support case conversion on LOBs,
+ // just skip this test case
+ DBDictionary dict = ((JDBCConfiguration) em.getConfiguration())
+ .getDBDictionaryInstance();
+ if (!dict.supportsCaseConversionForLob) {
+ return;
+ }
+ startTx(em);
+
+ CompUser user = em.find(CompUser.class, userid5);
+ assertNotNull(user);
+ assertEquals("Famzy", user.getName());
+
+ String query = "UPDATE CompUser e SET " +
+ "e.name = UPPER(e.name) WHERE UPPER(e.nameAsLob)='FAMZY'";
+
+ int result = em.createQuery(query).executeUpdate();
+
+ user = em.find(CompUser.class, userid5);
+ em.refresh(user);
+ assertNotNull(user);
+ assertEquals("FAMZY", user.getName());
+
+ endTx(em);
+ endEm(em);
+ }
+
public void testLengthFunc() {
EntityManager em = currentEntityManager();
@@ -385,12 +461,14 @@
user.setComputerName(cName);
user.setAddress(add);
user.setAge(age);
+ user.setNameAsLob(name);
} else {
user = new FemaleUser();
user.setName(name);
user.setComputerName(cName);
user.setAddress(add);
user.setAge(age);
+ user.setNameAsLob(name);
}
return user;
}
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/CompUser.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/CompUser.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/CompUser.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/CompUser.java Tue Oct 27 17:42:58 2009
@@ -22,6 +22,7 @@
import org.apache.openjpa.persistence.*;
@Entity
+@Table(name="CR_COMPUSER")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class CompUser
{
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/FrequentFlierPlan.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/FrequentFlierPlan.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/FrequentFlierPlan.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/FrequentFlierPlan.java Tue Oct 27 17:42:58 2009
@@ -21,8 +21,10 @@
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
+import javax.persistence.Table;
@Entity
+@Table(name="CR_FFPLAN")
public class FrequentFlierPlan {
@Id
@GeneratedValue
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/Request.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/Request.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/Request.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/Request.java Tue Oct 27 17:42:58 2009
@@ -23,6 +23,7 @@
import javax.persistence.*;
@Entity
+@Table(name="CR_REQ")
public class Request {
@Id
int id;
Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/TestJPQLSubquery.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/TestJPQLSubquery.java?rev=830260&r1=830259&r2=830260&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/TestJPQLSubquery.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/subquery/TestJPQLSubquery.java Tue Oct 27 17:42:58 2009
@@ -65,7 +65,7 @@
+ "t2.street, t3.userid, t3.DTYPE, t3.age, t3.compName, t3.creditRating, t3.name, t2.zipCode, "
+ "t0.balanceOwed, t0.creditRating, t0.filledOrderCount, t0.firstName, t0.lastName, t0.name, t0.status "
+ "FROM CR_CUST t0 LEFT OUTER JOIN CR_ADDR t2 ON t0.ADDRESS_ID = t2.id "
- + "LEFT OUTER JOIN CompUser t3 ON t2.id = t3.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID "
+ "WHERE (t0.balanceOwed < (SELECT AVG(t1.balanceOwed) FROM CR_CUST t1))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -84,10 +84,10 @@
+ "t8.MANAGER_ID, t8.name, t8.rating, t8.salary, t8.hireDate, t1.hireDate "
+ "FROM CR_EMP t1 LEFT OUTER JOIN CR_ADDR t2 ON t1.ADDRESS_ID = t2.id "
+ "LEFT OUTER JOIN CR_DEPT t4 ON t1.DEPARTMENT_DEPTNO = t4.deptNo "
- + "LEFT OUTER JOIN FrequentFlierPlan t5 ON t1.FREQUENTFLIERPLAN_ID = t5.id "
+ + "LEFT OUTER JOIN CR_FFPLAN t5 ON t1.FREQUENTFLIERPLAN_ID = t5.id "
+ "LEFT OUTER JOIN CR_MGR t6 ON t1.MANAGER_ID = t6.id "
+ "LEFT OUTER JOIN CR_EMP t8 ON t1.SPOUSE_EMPID = t8.empId "
- + "LEFT OUTER JOIN CompUser t3 ON t2.id = t3.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID "
+ "LEFT OUTER JOIN CR_DEPT t7 ON t6.DEPARTMENT_DEPTNO = t7.deptNo "
+ "WHERE (EXISTS (SELECT t0.empId FROM CR_EMP t0 WHERE (t0.empId = t1.SPOUSE_EMPID)))";
@@ -107,10 +107,10 @@
"t8.FREQUENTFLIERPLAN_ID, t8.MANAGER_ID, t8.name, t8.rating, t8.salary, t8.hireDate, t0.hireDate " +
"FROM CR_EMP t0 LEFT OUTER JOIN CR_ADDR t2 ON t0.ADDRESS_ID = t2.id " +
"LEFT OUTER JOIN CR_DEPT t4 ON t0.DEPARTMENT_DEPTNO = t4.deptNo " +
- "LEFT OUTER JOIN FrequentFlierPlan t5 ON t0.FREQUENTFLIERPLAN_ID = t5.id " +
+ "LEFT OUTER JOIN CR_FFPLAN t5 ON t0.FREQUENTFLIERPLAN_ID = t5.id " +
"LEFT OUTER JOIN CR_MGR t6 ON t0.MANAGER_ID = t6.id " +
"LEFT OUTER JOIN CR_EMP t8 ON t0.SPOUSE_EMPID = t8.empId " +
- "LEFT OUTER JOIN CompUser t3 ON t2.id = t3.ADD_ID " +
+ "LEFT OUTER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID " +
"LEFT OUTER JOIN CR_DEPT t7 ON t6.DEPARTMENT_DEPTNO = t7.deptNo " +
"WHERE (CAST(t0.salary AS NUMERIC) > ALL (SELECT t1.salary " +
"FROM CR_MGR t1 WHERE (t1.DEPARTMENT_DEPTNO = t0.DEPARTMENT_DEPTNO)))";
@@ -126,7 +126,7 @@
"t0.balanceOwed, t0.creditRating, " +
"t0.filledOrderCount, t0.firstName, t0.lastName, t0.name, t0.status " +
"FROM CR_CUST t0 LEFT OUTER JOIN CR_ADDR t3 ON t0.ADDRESS_ID = t3.id " +
- "LEFT OUTER JOIN CompUser t4 ON t3.id = t4.ADD_ID " +
+ "LEFT OUTER JOIN CR_COMPUSER t4 ON t3.id = t4.ADD_ID " +
"WHERE ((SELECT COUNT(t2.id) FROM CR_ODR t1, CR_ODR t2 " +
"WHERE (t1.id = t2.id) AND (t0.id = t1.CUSTOMER_ID)) > ?)";
@@ -141,7 +141,7 @@
+ "t3.street, t4.userid, t4.DTYPE, t4.age, t4.compName, t4.creditRating, t4.name, t3.zipCode, "
+ "t2.balanceOwed, t2.creditRating, t2.filledOrderCount, t2.firstName, t2.lastName, t2.name, t2.status "
+ "FROM CR_CUST t2 LEFT OUTER JOIN CR_ADDR t3 ON t2.ADDRESS_ID = t3.id "
- + "LEFT OUTER JOIN CompUser t4 ON t3.id = t4.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t4 ON t3.id = t4.ADD_ID "
+ "WHERE ((SELECT COUNT(t1.id) "
+ "FROM CR_CUST t0 INNER JOIN CR_ODR t1 ON t0.id = t1.CUSTOMER_ID WHERE (t2.id = t0.id)) > ?)";
@@ -156,7 +156,7 @@
+ "t3.street, t4.userid, t4.DTYPE, t4.age, t4.compName, t4.creditRating, t4.name, t3.zipCode, "
+ "t2.balanceOwed, t2.creditRating, t2.filledOrderCount, t2.firstName, t2.lastName, t2.name, t2.status "
+ "FROM CR_CUST t2 LEFT OUTER JOIN CR_ADDR t3 ON t2.ADDRESS_ID = t3.id "
- + "LEFT OUTER JOIN CompUser t4 ON t3.id = t4.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t4 ON t3.id = t4.ADD_ID "
+ "WHERE ((SELECT COUNT(t1.id) "
+ "FROM CR_CUST t0 INNER JOIN CR_ODR t1 ON t0.id = t1.CUSTOMER_ID WHERE (t2.id = t0.id)) > ?)";
@@ -171,7 +171,7 @@
+ "t3.street, t4.userid, t4.DTYPE, t4.age, t4.compName, t4.creditRating, t4.name, t3.zipCode, "
+ "t2.balanceOwed, t2.creditRating, t2.filledOrderCount, t2.firstName, t2.lastName, t2.name, t2.status "
+ "FROM CR_CUST t2 LEFT OUTER JOIN CR_ADDR t3 ON t2.ADDRESS_ID = t3.id "
- + "LEFT OUTER JOIN CompUser t4 ON t3.id = t4.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t4 ON t3.id = t4.ADD_ID "
+ "WHERE ((SELECT COUNT(t1.id) FROM CR_CUST t0 INNER JOIN CR_ODR t1 ON t0.id = t1.CUSTOMER_ID) > ?)";
executeAndCompareSQL(jpql, expectedSQL);
@@ -188,7 +188,7 @@
+ "FROM CR_CUST t2 "
+ "INNER JOIN CR_ADDR t3 ON t2.ADDRESS_ID = t3.id "
+ "LEFT OUTER JOIN CR_ADDR t5 ON t2.ADDRESS_ID = t5.id "
- + "LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID "
+ "WHERE ((SELECT COUNT(t1.id) "
+ "FROM CR_CUST t0 "
+ "INNER JOIN CR_ODR t1 ON t0.id = t1.CUSTOMER_ID "
@@ -207,7 +207,7 @@
"t1.creditRating, t1.filledOrderCount, t1.firstName, t1.lastName, t1.name, t1.status " +
"FROM CR_CUST t1 " +
"LEFT OUTER JOIN CR_ADDR t2 ON t1.ADDRESS_ID = t2.id " +
- "LEFT OUTER JOIN CompUser t3 ON t2.id = t3.ADD_ID WHERE " +
+ "LEFT OUTER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID WHERE " +
"(EXISTS (SELECT t0.id FROM CR_ODR t0 WHERE (t0.CUSTOMER_ID = t1.id)))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -222,7 +222,7 @@
// t3.name, t3.orderTs, t3.quantity, t3.totalCost
// FROM CR_ODR t3 LEFT OUTER JOIN CR_CUST t4 ON t3.CUSTOMER_ID = t4.id
// LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id
- // LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID
+ // LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID
// WHERE (CAST(? AS BIGINT) <
// CAST(ALL (SELECT t2.balance
// FROM CR_CUST t0 INNER JOIN CR_CUST_CR_ACCT t1 ON t0.id = t1.CUSTOMER_ID
@@ -238,7 +238,7 @@
+ "t3.delivered, t3.name, t3.orderTs, t3.quantity, t3.totalCost "
+ "FROM CR_ODR t3 LEFT OUTER JOIN CR_CUST t4 ON t3.CUSTOMER_ID = t4.id "
+ "LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id "
- + "LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID "
+ "WHERE (? < ALL (SELECT t2.balance FROM CR_CUST t0 INNER JOIN CR_CUST_CR_ACCT t1 ON "
+ "t0.id = t1.CUSTOMER_ID INNER JOIN CR_ACCT t2 ON t1.ACCOUNTS_ID = t2.id "
+ "WHERE (t3.CUSTOMER_ID = t0.id)))";
@@ -256,7 +256,7 @@
+ "t3.delivered, t3.name, t3.orderTs, t3.quantity, t3.totalCost "
+ "FROM CR_ODR t3 LEFT OUTER JOIN CR_CUST t4 ON t3.CUSTOMER_ID = t4.id "
+ "LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id "
- + "LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID "
+ "WHERE (t3.name = ANY (SELECT t2.name "
+ "FROM CR_CUST t0 INNER JOIN CR_CUST_CR_ACCT t1 ON t0.id = t1.CUSTOMER_ID "
+ "INNER JOIN CR_ACCT t2 ON t1.ACCOUNTS_ID = t2.id WHERE (t3.CUSTOMER_ID = t0.id)))";
@@ -275,7 +275,7 @@
//FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id
//LEFT OUTER JOIN CR_CUST t4 ON t0.CUSTOMER_ID = t4.id
//LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id
- //LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID
+ //LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID
//WHERE (CAST(? AS BIGINT) <
//CAST(ALL (SELECT t3.balance
//FROM CR_CUST_CR_ACCT t2, CR_ACCT t3
@@ -292,7 +292,7 @@
+ "FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id "
+ "LEFT OUTER JOIN CR_CUST t4 ON t0.CUSTOMER_ID = t4.id "
+ "LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id "
- + "LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID WHERE (? < ALL ("
+ + "LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID WHERE (? < ALL ("
+ "SELECT t3.balance FROM CR_CUST_CR_ACCT t2, CR_ACCT t3 WHERE (t2.ACCOUNTS_ID = t3.id) AND "
+ "(t1.id = t2.CUSTOMER_ID)))";
@@ -310,7 +310,7 @@
+ "FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id "
+ "LEFT OUTER JOIN CR_CUST t4 ON t0.CUSTOMER_ID = t4.id "
+ "LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id "
- + "LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID WHERE (t0.name = ANY ("
+ + "LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID WHERE (t0.name = ANY ("
+ "SELECT t3.name FROM CR_CUST_CR_ACCT t2, CR_ACCT t3 WHERE (t2.ACCOUNTS_ID = t3.id) "
+ "AND (t1.id = t2.CUSTOMER_ID)))";
@@ -328,7 +328,7 @@
+ "FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id "
+ "LEFT OUTER JOIN CR_CUST t3 ON t0.CUSTOMER_ID = t3.id "
+ "LEFT OUTER JOIN CR_ADDR t4 ON t3.ADDRESS_ID = t4.id "
- + "LEFT OUTER JOIN CompUser t5 ON t4.id = t5.ADD_ID WHERE (t0.name = ANY "
+ + "LEFT OUTER JOIN CR_COMPUSER t5 ON t4.id = t5.ADD_ID WHERE (t0.name = ANY "
+ "(SELECT t2.county FROM CR_ADDR t2 WHERE (t1.ADDRESS_ID = t2.id)))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -345,10 +345,10 @@
//FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id
//LEFT OUTER JOIN CR_CUST t4 ON t0.CUSTOMER_ID = t4.id
//LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id
- //LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID
+ //LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID
//WHERE (CAST(? AS BIGINT) <
//CAST(ALL (SELECT t3.age
- //FROM CR_ADDR t2 INNER JOIN CompUser t3 ON t2.id = t3.ADD_ID
+ //FROM CR_ADDR t2 INNER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID
//WHERE (t1.ADDRESS_ID = t2.id)) AS BIGINT))} [code=30000, state=42X01]
public void ctestSubqueries6c() {
String jpql = "SELECT o FROM Order o JOIN o.customer c WHERE 10000 < "
@@ -361,8 +361,8 @@
+ "FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id "
+ "LEFT OUTER JOIN CR_CUST t4 ON t0.CUSTOMER_ID = t4.id "
+ "LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id "
- + "LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID WHERE (? < ALL ("
- + "SELECT t3.age FROM CR_ADDR t2 INNER JOIN CompUser t3 ON t2.id = t3.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID WHERE (? < ALL ("
+ + "SELECT t3.age FROM CR_ADDR t2 INNER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID "
+ "WHERE (t1.ADDRESS_ID = t2.id)))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -380,10 +380,10 @@
//LEFT OUTER JOIN CR_CUST t5 ON t2.CUSTOMER_ID = t5.id
//INNER JOIN CR_ADDR t4 ON t3.ADDRESS_ID = t4.id
//LEFT OUTER JOIN CR_ADDR t6 ON t5.ADDRESS_ID = t6.id
- //LEFT OUTER JOIN CompUser t7 ON t6.id = t7.ADD_ID
+ //LEFT OUTER JOIN CR_COMPUSER t7 ON t6.id = t7.ADD_ID
//WHERE (CAST(? AS BIGINT) <
//CAST(ALL (SELECT t1.age
- //FROM CR_ADDR t0 INNER JOIN CompUser t1 ON t0.id = t1.ADD_ID
+ //FROM CR_ADDR t0 INNER JOIN CR_COMPUSER t1 ON t0.id = t1.ADD_ID
//WHERE (t4.city = t0.city AND t3.ADDRESS_ID = t0.id)) AS BIGINT) AND 1 = 1)}
//[code=30000, state=42X01]
public void ctestSubqueries6d() {
@@ -398,8 +398,8 @@
+ "LEFT OUTER JOIN CR_CUST t5 ON t2.CUSTOMER_ID = t5.id "
+ "INNER JOIN CR_ADDR t4 ON t3.ADDRESS_ID = t4.id "
+ "LEFT OUTER JOIN CR_ADDR t6 ON t5.ADDRESS_ID = t6.id "
- + "LEFT OUTER JOIN CompUser t7 ON t6.id = t7.ADD_ID WHERE (? < ALL ("
- + "SELECT t1.age FROM CR_ADDR t0 INNER JOIN CompUser t1 ON t0.id = t1.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t7 ON t6.id = t7.ADD_ID WHERE (? < ALL ("
+ + "SELECT t1.age FROM CR_ADDR t0 INNER JOIN CR_COMPUSER t1 ON t0.id = t1.ADD_ID "
+ "WHERE (t4.city = t0.city AND "
+ "t3.ADDRESS_ID = t0.id)) AND 1 = 1)";
@@ -418,10 +418,10 @@
//LEFT OUTER JOIN CR_CUST t5 ON t0.CUSTOMER_ID = t5.id
//INNER JOIN CR_ADDR t2 ON t1.ADDRESS_ID = t2.id
//LEFT OUTER JOIN CR_ADDR t6 ON t5.ADDRESS_ID = t6.id
- //LEFT OUTER JOIN CompUser t7 ON t6.id = t7.ADD_ID
+ //LEFT OUTER JOIN CR_COMPUSER t7 ON t6.id = t7.ADD_ID
//WHERE (CAST(? AS BIGINT) <
//CAST(ALL (SELECT t4.age
- //FROM CompUser t3, CompUser t4
+ //FROM CR_COMPUSER t3, CR_COMPUSER t4
//WHERE (t3.userid = t4.userid) AND (t2.id = t3.ADD_ID)) AS BIGINT) AND 1 = 1)}
//[code=30000, state=42X01]
public void ctestSubqueries6e() {
@@ -436,8 +436,8 @@
+ "LEFT OUTER JOIN CR_CUST t5 ON t0.CUSTOMER_ID = t5.id "
+ "INNER JOIN CR_ADDR t2 ON t1.ADDRESS_ID = t2.id "
+ "LEFT OUTER JOIN CR_ADDR t6 ON t5.ADDRESS_ID = t6.id "
- + "LEFT OUTER JOIN CompUser t7 ON t6.id = t7.ADD_ID "
- + "WHERE (? < ALL (SELECT t4.age FROM CompUser t3, CompUser t4 "
+ + "LEFT OUTER JOIN CR_COMPUSER t7 ON t6.id = t7.ADD_ID "
+ + "WHERE (? < ALL (SELECT t4.age FROM CR_COMPUSER t3, CR_COMPUESR t4 "
+ "WHERE (t3.userid = t4.userid) AND (t2.id = t3.ADD_ID)) AND 1 = 1)";
executeAndCompareSQL(jpql, expectedSQL);
@@ -454,10 +454,10 @@
//FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id
//LEFT OUTER JOIN CR_CUST t5 ON t0.CUSTOMER_ID = t5.id
//LEFT OUTER JOIN CR_ADDR t6 ON t5.ADDRESS_ID = t6.id
- //LEFT OUTER JOIN CompUser t7 ON t6.id = t7.ADD_ID
+ //LEFT OUTER JOIN CR_COMPUSER t7 ON t6.id = t7.ADD_ID
//WHERE (CAST(? AS BIGINT) <
//CAST(ALL (SELECT t4.age
- //FROM CR_ADDR t2 INNER JOIN CompUser t3 ON t2.id = t3.ADD_ID, CompUser t4
+ //FROM CR_ADDR t2 INNER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID, CR_COMPUSER t4
//WHERE (t3.userid = t4.userid) AND (t1.ADDRESS_ID = t2.id)) AS BIGINT))}
//[code=30000, state=42X01]
public void ctestSubqueries6f() {
@@ -474,9 +474,9 @@
+ "FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id "
+ "LEFT OUTER JOIN CR_CUST t5 ON t0.CUSTOMER_ID = t5.id "
+ "LEFT OUTER JOIN CR_ADDR t6 ON t5.ADDRESS_ID = t6.id "
- + "LEFT OUTER JOIN CompUser t7 ON t6.id = t7.ADD_ID "
+ + "LEFT OUTER JOIN CR_COMPUSER t7 ON t6.id = t7.ADD_ID "
+ "WHERE (? < ALL (SELECT t4.age "
- + "FROM CR_ADDR t2 INNER JOIN CompUser t3 ON t2.id = t3.ADD_ID, CompUser t4 "
+ + "FROM CR_ADDR t2 INNER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID, CR_COMPUSER t4 "
+ "WHERE (t3.userid = t4.userid) AND (t1.ADDRESS_ID = t2.id)))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -493,10 +493,10 @@
//FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id
//LEFT OUTER JOIN CR_CUST t4 ON t0.CUSTOMER_ID = t4.id
//LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id
- //LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID
+ //LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID
//WHERE (CAST(? AS BIGINT) <
//CAST(ALL (SELECT t3.age
- //FROM CR_ADDR t2 INNER JOIN CompUser t3 ON t2.id = t3.ADD_ID
+ //FROM CR_ADDR t2 INNER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID
//WHERE (t1.ADDRESS_ID = t2.id)) AS BIGINT))} [code=30000, state=42X01]
public void ctestSubqueries6g() {
String jpql = "SELECT o FROM Order o JOIN o.customer c WHERE 10000 < "
@@ -510,10 +510,10 @@
+ "INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id "
+ "LEFT OUTER JOIN CR_CUST t4 ON t0.CUSTOMER_ID = t4.id "
+ "LEFT OUTER JOIN CR_ADDR t5 ON t4.ADDRESS_ID = t5.id "
- + "LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID WHERE (? < ALL ("
+ + "LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID WHERE (? < ALL ("
+ "SELECT t3.age "
+ "FROM CR_ADDR t2 "
- + "INNER JOIN CompUser t3 ON t2.id = t3.ADD_ID WHERE (t1.ADDRESS_ID = t2.id)))";
+ + "INNER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID WHERE (t1.ADDRESS_ID = t2.id)))";
executeAndCompareSQL(jpql, expectedSQL);
}
@@ -529,10 +529,10 @@
//FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id
//INNER JOIN CR_ADDR t2 ON t1.ADDRESS_ID = t2.id
//LEFT OUTER JOIN CR_ADDR t6 ON t1.ADDRESS_ID = t6.id
- //LEFT OUTER JOIN CompUser t7 ON t6.id = t7.ADD_ID
+ //LEFT OUTER JOIN CR_COMPUSER t7 ON t6.id = t7.ADD_ID
//WHERE (CAST(? AS BIGINT) <
//CAST(ALL (SELECT t5.age
- //FROM CR_CUST t3, CompUser t4, CompUser t5
+ //FROM CR_CUST t3, CR_COMPUSER t4, CR_COMPUSER t5
//WHERE (t4.userid = t5.userid) AND (t0.CUSTOMER_ID = t3.id) AND (t2.id = t4.ADD_ID))
//AS BIGINT))} [code=30000, state=42X01]
public void ctestSubqueries6h() {
@@ -549,8 +549,8 @@
+ "FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id "
+ "INNER JOIN CR_ADDR t2 ON t1.ADDRESS_ID = t2.id "
+ "LEFT OUTER JOIN CR_ADDR t6 ON t1.ADDRESS_ID = t6.id "
- + "LEFT OUTER JOIN CompUser t7 ON t6.id = t7.ADD_ID WHERE (? < ALL ("
- + "SELECT t5.age FROM CR_CUST t3, CompUser t4, CompUser t5 "
+ + "LEFT OUTER JOIN CR_COMPUSER t7 ON t6.id = t7.ADD_ID WHERE (? < ALL ("
+ + "SELECT t5.age FROM CR_CUST t3, CR_COMPUSER t4, CR_COMPUSER t5 "
+ "WHERE (t4.userid = t5.userid) AND (t0.CUSTOMER_ID = t3.id) AND (t2.id = t4.ADD_ID)))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -560,7 +560,7 @@
String jpql = "SELECT DISTINCT c.name FROM CompUser c WHERE EXISTS"
+ " (SELECT a FROM Address a WHERE a = c.address )";
- String expectedSQL = "SELECT DISTINCT t1.name FROM CompUser t1 WHERE (EXISTS ("
+ String expectedSQL = "SELECT DISTINCT t1.name FROM CR_COMPUSER t1 WHERE (EXISTS ("
+ "SELECT t0.id FROM CR_ADDR t0 WHERE (t0.id = t1.ADD_ID)))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -571,9 +571,9 @@
+ " (SELECT s FROM CompUser s WHERE s.address.country = "
+ "o.address.country)";
- String expectedSQL = "SELECT DISTINCT t2.name " + "FROM CompUser t2 "
+ String expectedSQL = "SELECT DISTINCT t2.name " + "FROM CR_COMPUSER t2 "
+ "INNER JOIN CR_ADDR t3 ON t2.ADD_ID = t3.id "
- + "WHERE (EXISTS (" + "SELECT t0.userid " + "FROM CompUser t0 "
+ + "WHERE (EXISTS (" + "SELECT t0.userid " + "FROM CR_COMPUSER t0 "
+ "INNER JOIN CR_ADDR t1 ON t0.ADD_ID = t1.id "
+ "WHERE (t1.country = t3.country)))";
@@ -592,7 +592,7 @@
"LEFT OUTER JOIN CR_ODR t1 ON t0.id = t1.CUSTOMER_ID " +
"LEFT OUTER JOIN CR_ODR t2 ON t0.id = t2.CUSTOMER_ID " +
"LEFT OUTER JOIN CR_ADDR t5 ON t0.ADDRESS_ID = t5.id " +
- "LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID WHERE (EXISTS (" +
+ "LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID WHERE (EXISTS (" +
"SELECT t4.id FROM CR_ODR t3, CR_ODR t4 " +
"WHERE (t2.id = t4.id AND t3.id = t4.id) AND (t0.id = t3.CUSTOMER_ID)))";
@@ -603,7 +603,7 @@
String jpql = "SELECT DISTINCT c.name FROM CompUser c WHERE NOT EXISTS"
+ " (SELECT a FROM Address a WHERE a = c.address )";
- String expectedSQL = "SELECT DISTINCT t1.name FROM CompUser t1 WHERE (NOT (EXISTS ("
+ String expectedSQL = "SELECT DISTINCT t1.name FROM CR_COMPUSER t1 WHERE (NOT (EXISTS ("
+ "SELECT t0.id FROM CR_ADDR t0 WHERE (t0.id = t1.ADD_ID))))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -621,7 +621,7 @@
"LEFT OUTER JOIN CR_ODR t1 ON t0.id = t1.CUSTOMER_ID " +
"LEFT OUTER JOIN CR_ODR t2 ON t0.id = t2.CUSTOMER_ID " +
"LEFT OUTER JOIN CR_ADDR t5 ON t0.ADDRESS_ID = t5.id " +
- "LEFT OUTER JOIN CompUser t6 ON t5.id = t6.ADD_ID WHERE (NOT (EXISTS (" +
+ "LEFT OUTER JOIN CR_COMPUSER t6 ON t5.id = t6.ADD_ID WHERE (NOT (EXISTS (" +
"SELECT t4.id FROM CR_ODR t3, CR_ODR t4 " +
"WHERE (t2.id = t4.id AND t3.id = t4.id) AND (t0.id = t3.CUSTOMER_ID))))";
@@ -634,11 +634,11 @@
+ " FROM CompUser s WHERE s.address.country IS NOT NULL)";
String expectedSQL = "SELECT t0.name "
- + "FROM CompUser t0 "
+ + "FROM CR_COMPUSER t0 "
+ "INNER JOIN CR_ADDR t1 ON t0.ADD_ID = t1.id "
+ "WHERE (t1.zipCode = ANY ("
+ "SELECT t2.compName "
- + "FROM CompUser t2 "
+ + "FROM CR_COMPUSER t2 "
+ "INNER JOIN CR_ADDR t3 ON t2.ADD_ID = t3.id WHERE (t3.country IS NOT NULL)))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -684,7 +684,7 @@
+ "FROM CR_ODR t0 "
+ "INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id "
+ "LEFT OUTER JOIN CR_ADDR t4 ON t1.ADDRESS_ID = t4.id "
- + "LEFT OUTER JOIN CompUser t5 ON t4.id = t5.ADD_ID WHERE (t1.balanceOwed = ("
+ + "LEFT OUTER JOIN CR_COMPUSER t5 ON t4.id = t5.ADD_ID WHERE (t1.balanceOwed = ("
+ "SELECT MAX(t3.balanceOwed) FROM CR_ODR t2 "
+ "INNER JOIN CR_CUST t3 ON t2.CUSTOMER_ID = t3.id WHERE (t0.CUSTOMER_ID = t2.CUSTOMER_ID)))";
@@ -937,7 +937,7 @@
"t0.status " +
"FROM CR_CUST t0 " +
"LEFT OUTER JOIN CR_ADDR t2 ON t0.ADDRESS_ID = t2.id " +
- "LEFT OUTER JOIN CompUser t3 ON t2.id = t3.ADD_ID " +
+ "LEFT OUTER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID " +
"WHERE (t0.creditRating = (" +
"SELECT CASE WHEN t1.quantity > ? THEN 0 WHEN t1.quantity = ? THEN 1 ELSE 2 END " +
"FROM CR_ODR t1 WHERE (t0.id = t1.CUSTOMER_ID)))";
@@ -960,7 +960,7 @@
"t0.status " +
"FROM CR_CUST t0 " +
"LEFT OUTER JOIN CR_ADDR t2 ON t0.ADDRESS_ID = t2.id " +
- "LEFT OUTER JOIN CompUser t3 ON t2.id = t3.ADD_ID WHERE (t0.creditRating = (" +
+ "LEFT OUTER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID WHERE (t0.creditRating = (" +
"SELECT COALESCE(t1.creditRating,0) FROM CR_CUST t1 WHERE (t1.name = ?))) " +
"ORDER BY t0.name DESC";
@@ -982,7 +982,7 @@
"t0.name, t0.status " +
"FROM CR_CUST t0 " +
"LEFT OUTER JOIN CR_ADDR t2 ON t0.ADDRESS_ID = t2.id " +
- "LEFT OUTER JOIN CompUser t3 ON t2.id = t3.ADD_ID WHERE (t0.creditRating = (" +
+ "LEFT OUTER JOIN CR_COMPUSER t3 ON t2.id = t3.ADD_ID WHERE (t0.creditRating = (" +
"SELECT NULLIF(t1.creditRating,0) FROM CR_CUST t1 WHERE (t1.name = ?))) " +
"ORDER BY t0.name DESC";
@@ -1000,7 +1000,7 @@
"FROM CR_ODR t0 " +
"LEFT OUTER JOIN CR_CUST t2 ON t0.CUSTOMER_ID = t2.id " +
"LEFT OUTER JOIN CR_ADDR t3 ON t2.ADDRESS_ID = t3.id " +
- "LEFT OUTER JOIN CompUser t4 ON t3.id = t4.ADD_ID WHERE (CAST(t0.count AS BIGINT) > " +
+ "LEFT OUTER JOIN CR_COMPUSER t4 ON t3.id = t4.ADD_ID WHERE (CAST(t0.count AS BIGINT) > " +
"CAST((SELECT COUNT(t1.id) FROM CR_ODR t1) AS BIGINT))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -1017,7 +1017,7 @@
"FROM CR_ODR t0 " +
"LEFT OUTER JOIN CR_CUST t2 ON t0.CUSTOMER_ID = t2.id " +
"LEFT OUTER JOIN CR_ADDR t3 ON t2.ADDRESS_ID = t3.id " +
- "LEFT OUTER JOIN CompUser t4 ON t3.id = t4.ADD_ID WHERE (CAST(t0.count AS BIGINT) > " +
+ "LEFT OUTER JOIN CR_COMPUSER t4 ON t3.id = t4.ADD_ID WHERE (CAST(t0.count AS BIGINT) > " +
"CAST((SELECT COUNT(t1.id) FROM CR_ODR t1) AS BIGINT))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -1059,7 +1059,7 @@
"t1.balanceOwed, t1.creditRating, t1.filledOrderCount, t1.firstName, t1.lastName, t1.name, " +
"t1.status " +
"FROM CR_CUST t1 LEFT OUTER JOIN CR_ADDR t3 ON t1.ADDRESS_ID = t3.id " +
- "LEFT OUTER JOIN CompUser t4 ON t3.id = t4.ADD_ID WHERE (NOT (EXISTS (" +
+ "LEFT OUTER JOIN CR_COMPUSER t4 ON t3.id = t4.ADD_ID WHERE (NOT (EXISTS (" +
"SELECT t0.id FROM CR_ACCT t0 WHERE (t0.CUSTOMER_ID = t1.id AND EXISTS (" +
"SELECT t2.id FROM CR_ODR t2 WHERE (t2.CUSTOMER_ID = t1.id AND CAST(t2.count AS BIGINT) = " +
"CAST(? AS BIGINT)))))))";
@@ -1075,7 +1075,7 @@
String expectedSQL = "SELECT t1.pid, t1.version, t1.productType FROM CR_PRD t1 WHERE (NOT (EXISTS (" +
"SELECT t0.id FROM CR_ACCT t0 WHERE (t0.PRODUCT_PID = t1.pid AND EXISTS (" +
- "SELECT t2.id FROM Request t2 WHERE (t2.ACCOUNT_ID = t0.id AND CAST(t2.status AS BIGINT) = " +
+ "SELECT t2.id FROM CR_REQ t2 WHERE (t2.ACCOUNT_ID = t0.id AND CAST(t2.status AS BIGINT) = " +
"CAST(? AS BIGINT)))))))";
executeAndCompareSQL(jpql, expectedSQL);
@@ -1130,7 +1130,7 @@
+ "LEFT OUTER JOIN CR_ADDR t7 ON t6.ADDRESS_ID = t7.id "
+ "INNER JOIN CR_ACCT t3 ON t2.ACCOUNTS_ID = t3.id "
+ "INNER JOIN CR_ACCT t4 ON t2.ACCOUNTS_ID = t4.id "
- + "LEFT OUTER JOIN CompUser t8 ON t7.id = t8.ADD_ID WHERE (t1.name = "
+ + "LEFT OUTER JOIN CR_COMPUSER t8 ON t7.id = t8.ADD_ID WHERE (t1.name = "
+ "ANY (SELECT t5.name FROM CR_ACCT t5 "
+ "WHERE (t4.OWNER_ID = t5.OWNER_ID)) AND 1 = 1)";