Author: shawkins
Date: 2010-11-17 12:08:34 -0500 (Wed, 17 Nov 2010)
New Revision: 2729
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java
Log:
TEIID-1361 fix for sf in handling
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java 2010-11-17
17:07:37 UTC (rev 2728)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java 2010-11-17
17:08:34 UTC (rev 2729)
@@ -168,14 +168,16 @@
public void visit( In criteria ) {
try {
Expression lExpr = criteria.getLeftExpression();
- String columnName = lExpr.toString();
- if (columnElementsByName.containsKey(columnName)) {
- Column column = columnElementsByName.get(columnName);
- if (MULTIPICKLIST.equalsIgnoreCase(column.getNativeType()) ||
RESTRICTEDMULTISELECTPICKLIST.equalsIgnoreCase(column.getNativeType())) {
+ if (lExpr instanceof ColumnReference) {
+ ColumnReference cr = (ColumnReference)lExpr;
+ Column column = cr.getMetadataObject();
+ if (column != null &&
(MULTIPICKLIST.equalsIgnoreCase(column.getNativeType()) ||
RESTRICTEDMULTISELECTPICKLIST.equalsIgnoreCase(column.getNativeType()))) {
appendMultiselectIn(column, criteria);
} else {
appendCriteria(criteria);
}
+ } else {
+ appendCriteria(criteria);
}
setHasCriteria(true, isIdColumn(criteria.getLeftExpression()));
} catch (TranslatorException e) {
@@ -378,9 +380,6 @@
}
List<Column> columnIds = table.getColumns();
for (Column element : columnIds) {
- String name = table.getName() + '.' + element.getNameInSource();
- columnElementsByName.put(name, element);
-
// influences queryAll behavior
if (element.getNameInSource().equals("IsDeleted")) { //$NON-NLS-1$
String isDeleted = element.getDefaultValue();
Modified:
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java
===================================================================
---
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java 2010-11-17
17:07:37 UTC (rev 2728)
+++
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java 2010-11-17
17:08:34 UTC (rev 2729)
@@ -76,7 +76,7 @@
}
// Create Contact group
- Table contactTable = RealMetadataFactory.createPhysicalGroup("Contact",
salesforceModel); //$NON-NLS-1$
+ Table contactTable =
RealMetadataFactory.createPhysicalGroup("Contacts", salesforceModel);
//$NON-NLS-1$
contactTable.setNameInSource("Contact"); //$NON-NLS-1$
contactTable.setProperty("Supports Query", Boolean.TRUE.toString());
//$NON-NLS-1$
// Create Contact Columns
@@ -151,17 +151,24 @@
}
@Test public void testJoin() throws Exception {
- Select command = (Select)translationUtility.parseCommand("SELECT Account.Name,
Contact.Name FROM Contact LEFT OUTER JOIN Account ON Account.Id =
Contact.AccountId"); //$NON-NLS-1$
+ Select command = (Select)translationUtility.parseCommand("SELECT Account.Name,
Contacts.Name FROM Contacts LEFT OUTER JOIN Account ON Account.Id =
Contacts.AccountId"); //$NON-NLS-1$
SelectVisitor visitor = new
JoinQueryVisitor(translationUtility.createRuntimeMetadata());
visitor.visit(command);
assertEquals("SELECT Account.AccountName, Contact.ContactName FROM Contact",
visitor.getQuery().toString().trim()); //$NON-NLS-1$
}
@Test public void testJoin2() throws Exception {
- Select command = (Select)translationUtility.parseCommand("SELECT Account.Name,
Contact.Name FROM Account LEFT OUTER JOIN Contact ON Account.Id =
Contact.AccountId"); //$NON-NLS-1$
+ Select command = (Select)translationUtility.parseCommand("SELECT Account.Name,
Contacts.Name FROM Account LEFT OUTER JOIN Contacts ON Account.Id =
Contacts.AccountId"); //$NON-NLS-1$
SelectVisitor visitor = new
JoinQueryVisitor(translationUtility.createRuntimeMetadata());
visitor.visit(command);
assertEquals("SELECT Account.AccountName, (SELECT Contact.ContactName FROM
Contacts) FROM Account", visitor.getQuery().toString().trim()); //$NON-NLS-1$
}
+
+ @Test public void testInWithNameInSourceDifferent() throws Exception {
+ Select command = (Select)translationUtility.parseCommand("SELECT Contacts.Name
FROM Contacts WHERE Contacts.Name in ('x', 'y')"); //$NON-NLS-1$
+ SelectVisitor visitor = new SelectVisitor(translationUtility.createRuntimeMetadata());
+ visitor.visit(command);
+ assertEquals("SELECT Contact.ContactName FROM Contact WHERE ContactName
IN('x','y')", visitor.getQuery().toString().trim()); //$NON-NLS-1$
+ }
}
Show replies by date