[teiid-commits] teiid SVN: r1520 - in trunk: connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator and 4 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Fri Oct 2 15:08:46 EDT 2009
Author: shawkins
Date: 2009-10-02 15:08:46 -0400 (Fri, 02 Oct 2009)
New Revision: 1520
Modified:
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCBaseExecution.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java
trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java
trunk/connectors/connector-jdbc/src/main/resources/connector-jdbc.xml
trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
trunk/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/extension/TestSQLConversionVisitor.java
trunk/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/util/TestJDBCExecutionHelper.java
Log:
TEIID-728 fix for inaccurate trim logic. No specific columns with a type of char or nchar are rtrimmed to produce consistent string forms.
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCBaseExecution.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCBaseExecution.java 2009-10-02 17:47:50 UTC (rev 1519)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCBaseExecution.java 2009-10-02 19:08:46 UTC (rev 1520)
@@ -60,7 +60,6 @@
protected ExecutionContext context;
// Derived from properties
- protected boolean trimString;
protected int fetchSize;
protected int maxResultRows;
@@ -81,7 +80,6 @@
this.logger = logger;
this.context = context;
- trimString = PropertiesUtils.getBooleanProperty(props, JDBCPropertyNames.TRIM_STRINGS, false);
fetchSize = PropertiesUtils.getIntProperty(props, JDBCPropertyNames.FETCH_SIZE, context.getBatchSize());
maxResultRows = PropertiesUtils.getIntProperty(props, ConnectorPropertyNames.MAX_RESULT_ROWS, -1);
//if the connector work needs to throw an excpetion, set the size plus 1
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java 2009-10-02 17:47:50 UTC (rev 1519)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java 2009-10-02 19:08:46 UTC (rev 1520)
@@ -24,9 +24,7 @@
import java.sql.CallableStatement;
import java.sql.Connection;
-import java.sql.ParameterMetaData;
import java.sql.SQLException;
-import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
@@ -37,7 +35,6 @@
import org.teiid.connector.api.DataNotAvailableException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.ProcedureExecution;
-import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.jdbc.translator.Translator;
import org.teiid.connector.language.ICommand;
@@ -50,8 +47,6 @@
*/
public class JDBCProcedureExecution extends JDBCQueryExecution implements ProcedureExecution {
- private ParameterMetaData parameterMetaData;
-
/**
* @param connection
* @param sqlTranslator
@@ -82,11 +77,7 @@
try{
//create parameter index map
CallableStatement cstmt = getCallableStatement(sql);
- this.parameterMetaData = cstmt.getParameterMetaData();
this.results = sqlTranslator.executeStoredProcedure(cstmt, translatedComm);
- if (results != null) {
- initResultSetInfo();
- }
addStatementWarnings();
}catch(SQLException e){
throw new ConnectorException(e, JDBCPlugin.Util.getString("JDBCQueryExecution.Error_executing_query__1", sql)); //$NON-NLS-1$
@@ -135,12 +126,6 @@
private void addParameterValue(List<Object> result, int paramIndex,
IParameter parameter) throws SQLException {
Object value = sqlTranslator.retrieveValue((CallableStatement)this.statement, paramIndex, parameter.getType());
- if (value != null
- && TypeFacility.RUNTIME_TYPES.STRING.equals(value.getClass())
- && (trimString || (parameterMetaData != null && parameterMetaData
- .getParameterType(paramIndex) == Types.CHAR))) {
- value = trimString((String)value);
- }
result.add(value);
}
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java 2009-10-02 17:47:50 UTC (rev 1519)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java 2009-10-02 19:08:46 UTC (rev 1520)
@@ -28,9 +28,7 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
import java.sql.SQLException;
-import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
@@ -60,7 +58,6 @@
protected ConnectorEnvironment env;
protected ICommand command;
protected Class<?>[] columnDataTypes;
- private boolean[] trimColumn;
// ===========================================================================================================================
// Constructors
@@ -97,24 +94,11 @@
results = pstatement.executeQuery();
}
addStatementWarnings();
- initResultSetInfo();
-
} catch (SQLException e) {
throw new JDBCExecutionException(e, translatedComm);
}
}
- protected void initResultSetInfo() throws SQLException {
- trimColumn = new boolean[columnDataTypes.length];
- ResultSetMetaData rsmd = results.getMetaData();
- for(int i=0; i<columnDataTypes.length; i++) {
-
- if(columnDataTypes[i].equals(String.class)) {
- trimColumn[i] = trimString || rsmd.getColumnType(i+1) == Types.CHAR;
- }
- }
- }
-
@Override
public List<?> next() throws ConnectorException, DataNotAvailableException {
try {
@@ -125,9 +109,6 @@
for (int i = 0; i < columnDataTypes.length; i++) {
// Convert from 0-based to 1-based
Object value = sqlTranslator.retrieveValue(results, i+1, columnDataTypes[i]);
- if (trimColumn[i] && value instanceof String) {
- value = trimString((String)value);
- }
vals.add(value);
}
@@ -142,24 +123,6 @@
}
/**
- * Expects string to never be null
- * @param value Incoming value
- * @return Right trimmed value
- * @since 4.2
- */
- public static String trimString(String value) {
- for(int i=value.length()-1; i>=0; i--) {
- if(value.charAt(i) != ' ') {
- // end of trim, return what's left
- return value.substring(0, i+1);
- }
- }
-
- // All spaces, so trim it all
- return ""; //$NON-NLS-1$
- }
-
- /**
* @see org.teiid.connector.jdbc.JDBCBaseExecution#close()
*/
public void close() throws ConnectorException {
Modified: trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java 2009-10-02 17:47:50 UTC (rev 1519)
+++ trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java 2009-10-02 19:08:46 UTC (rev 1520)
@@ -33,6 +33,7 @@
import java.sql.Time;
import java.sql.Timestamp;
import java.text.MessageFormat;
+import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
@@ -44,11 +45,14 @@
import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.JDBCCapabilities;
import org.teiid.connector.jdbc.JDBCPlugin;
import org.teiid.connector.jdbc.JDBCPropertyNames;
import org.teiid.connector.language.ICommand;
+import org.teiid.connector.language.IElement;
+import org.teiid.connector.language.IExpression;
import org.teiid.connector.language.IFunction;
import org.teiid.connector.language.ILanguageFactory;
import org.teiid.connector.language.ILanguageObject;
@@ -59,6 +63,7 @@
import org.teiid.connector.language.IParameter.Direction;
import com.metamatrix.common.util.PropertiesUtils;
+import com.metamatrix.core.MetaMatrixRuntimeException;
import com.metamatrix.core.util.ReflectionHelper;
/**
@@ -135,6 +140,7 @@
private volatile boolean initialConnection;
private String connectionTestQuery;
private int isValidTimeout = -1;
+ private boolean trimChar;
/**
* Initialize the SQLTranslator.
@@ -157,7 +163,8 @@
this.useComments = PropertiesUtils.getBooleanProperty(env.getProperties(), JDBCPropertyNames.USE_COMMENTS_SOURCE_QUERY, false);
this.usePreparedStatements = PropertiesUtils.getBooleanProperty(env.getProperties(), JDBCPropertyNames.USE_BIND_VARIABLES, false);
this.connectionTestQuery = env.getProperties().getProperty(JDBCPropertyNames.CONNECTION_TEST_QUERY, getDefaultConnectionTestQuery());
- this.isValidTimeout = PropertiesUtils.getIntProperty(env.getProperties(), JDBCPropertyNames.IS_VALID_TIMEOUT, -1);
+ this.isValidTimeout = PropertiesUtils.getIntProperty(env.getProperties(), JDBCPropertyNames.IS_VALID_TIMEOUT, -1);
+ this.trimChar = PropertiesUtils.getBooleanProperty(env.getProperties(), JDBCPropertyNames.TRIM_STRINGS, false);
}
/**
@@ -206,6 +213,16 @@
parts = translateCommand((ICommand)obj, context);
} else if (obj instanceof ILimit) {
parts = translateLimit((ILimit)obj, context);
+ } else if (obj instanceof IElement) {
+ IElement elem = (IElement)obj;
+ try {
+ if (trimChar && elem.getType() == TypeFacility.RUNTIME_TYPES.STRING
+ && ("char".equalsIgnoreCase(elem.getMetadataObject().getNativeType()) || "nchar".equalsIgnoreCase(elem.getMetadataObject().getNativeType()))) { //$NON-NLS-1$ //$NON-NLS-2$
+ return Arrays.asList(getLanguageFactory().createFunction(SourceSystemFunctions.RTRIM, new IExpression[] {elem}, TypeFacility.RUNTIME_TYPES.STRING));
+ }
+ } catch (ConnectorException e) {
+ throw new MetaMatrixRuntimeException(e);
+ }
}
return parts;
}
@@ -814,7 +831,12 @@
return NullOrder.LOW;
}
+ /**
+ *
+ * @return true if nulls high|low can be specified
+ */
public boolean supportsExplicitNullOrdering() {
return false;
}
+
}
Modified: trunk/connectors/connector-jdbc/src/main/resources/connector-jdbc.xml
===================================================================
--- trunk/connectors/connector-jdbc/src/main/resources/connector-jdbc.xml 2009-10-02 17:47:50 UTC (rev 1519)
+++ trunk/connectors/connector-jdbc/src/main/resources/connector-jdbc.xml 2009-10-02 19:08:46 UTC (rev 1520)
@@ -15,7 +15,7 @@
</PropertyDefinition>
<PropertyDefinition Name="ExtensionTranslationClass" DisplayName="Extension SQL Translation Class" ShortDescription="" DefaultValue="org.teiid.connector.jdbc.translator.Translator" IsExpert="true" />
<PropertyDefinition Name="ConnectionSource" DisplayName="Connection Source Class" ShortDescription="Driver, DataSource, or XADataSource class name" IsRequired="true" />
- <PropertyDefinition Name="TrimStrings" DisplayName="Trim string flag" ShortDescription="Right Trim fixed character types returned as Strings" DefaultValue="false" PropertyType="Boolean" IsExpert="true" />
+ <PropertyDefinition Name="TrimStrings" DisplayName="Trim string flag" ShortDescription="Right Trim fixed character types returned as Strings - note that the native type must be char or nchar and the source must support the rtrim function." DefaultValue="false" PropertyType="Boolean" IsExpert="true" />
<PropertyDefinition Name="UseCommentsInSourceQuery" DisplayName="Use informational comments in Source Queries" ShortDescription="This will embed /*comment*/ style comment with session/request id in source SQL query for informational purposes" DefaultValue="false" PropertyType="Boolean" IsExpert="true"/>
</ComponentType>
<ComponentType Name="Oracle Connector" ComponentTypeCode="2" Deployable="true" Deprecated="false" Monitorable="false" SuperComponentType="JDBC Connector" ParentComponentType="Connectors" LastChangedBy="ConfigurationStartup" CreatedBy="ConfigurationStartup">
Modified: trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
===================================================================
--- trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java 2009-10-02 17:47:50 UTC (rev 1519)
+++ trunk/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java 2009-10-02 19:08:46 UTC (rev 1520)
@@ -2134,7 +2134,8 @@
DataTypeManager.DefaultDataTypes.BIG_INTEGER, DataTypeManager.DefaultDataTypes.BIG_DECIMAL,
DataTypeManager.DefaultDataTypes.OBJECT };
- List bqt1SmallAe = createElements(bqt1SmallA, elemNames, elemTypes);
+ List<FakeMetadataObject> bqt1SmallAe = createElements(bqt1SmallA, elemNames, elemTypes);
+ bqt1SmallAe.get(1).putProperty(FakeMetadataObject.Props.NATIVE_TYPE, "char"); //$NON-NLS-1$
List bqt1SmallBe = createElements(bqt1SmallB, elemNames, elemTypes);
List bqt1MediumAe = createElements(bqt1MediumA, elemNames, elemTypes);
List bqt1MediumBe = createElements(bqt1MediumB, elemNames, elemTypes);
@@ -4166,9 +4167,9 @@
* @param types Array of element types
* @return List Ordered list of elements in the group
*/
- public static List createElements(FakeMetadataObject group, String[] names, String[] types) {
+ public static List<FakeMetadataObject> createElements(FakeMetadataObject group, String[] names, String[] types) {
String groupRoot = group.getName() + "."; //$NON-NLS-1$
- List elements = new ArrayList();
+ List<FakeMetadataObject> elements = new ArrayList<FakeMetadataObject>();
for(int i=0; i<names.length; i++) {
FakeMetadataObject element = createElement(groupRoot + names[i], group, types[i], i);
Modified: trunk/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/extension/TestSQLConversionVisitor.java
===================================================================
--- trunk/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/extension/TestSQLConversionVisitor.java 2009-10-02 17:47:50 UTC (rev 1519)
+++ trunk/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/extension/TestSQLConversionVisitor.java 2009-10-02 19:08:46 UTC (rev 1520)
@@ -29,39 +29,20 @@
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.jdbc.JDBCPropertyNames;
+import org.teiid.connector.jdbc.MetadataFactory;
import org.teiid.connector.jdbc.translator.SQLConversionVisitor;
-import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
import org.teiid.connector.language.ILanguageObject;
import org.teiid.connector.metadata.runtime.RuntimeMetadata;
import org.teiid.dqp.internal.datamgr.impl.ExecutionContextImpl;
-import org.teiid.dqp.internal.datamgr.impl.FakeExecutionContextImpl;
-import org.teiid.dqp.internal.datamgr.language.LanguageBridgeFactory;
import org.teiid.dqp.internal.datamgr.language.TestDeleteImpl;
import org.teiid.dqp.internal.datamgr.language.TestInsertImpl;
import org.teiid.dqp.internal.datamgr.language.TestProcedureImpl;
import org.teiid.dqp.internal.datamgr.language.TestSelectImpl;
import org.teiid.dqp.internal.datamgr.language.TestUpdateImpl;
import org.teiid.dqp.internal.datamgr.language.TstLanguageBridgeFactory;
-import org.teiid.metadata.index.VDBMetadataFactory;
import com.metamatrix.cdk.api.EnvironmentUtility;
-import com.metamatrix.cdk.api.TranslationUtility;
-import com.metamatrix.core.util.UnitTestUtil;
-import com.metamatrix.query.metadata.QueryMetadataInterface;
-import com.metamatrix.query.resolver.QueryResolver;
-import com.metamatrix.query.rewriter.QueryRewriter;
-import com.metamatrix.query.sql.lang.Command;
-import com.metamatrix.query.sql.lang.From;
-import com.metamatrix.query.sql.lang.GroupBy;
-import com.metamatrix.query.sql.lang.Query;
-import com.metamatrix.query.sql.lang.Select;
-import com.metamatrix.query.sql.symbol.Constant;
-import com.metamatrix.query.sql.symbol.ElementSymbol;
-import com.metamatrix.query.sql.symbol.Expression;
-import com.metamatrix.query.sql.symbol.Function;
-import com.metamatrix.query.sql.symbol.GroupSymbol;
/**
*/
@@ -84,28 +65,23 @@
}
public String getTestVDB() {
- return UnitTestUtil.getTestDataPath() + "/partssupplier/PartsSupplier.vdb"; //$NON-NLS-1$
+ return MetadataFactory.PARTS_VDB;
}
- public ICommand helpTranslate(String vdbFileName, String sql) {
- TranslationUtility util = new TranslationUtility(vdbFileName);
- return util.parseCommand(sql);
- }
-
public void helpTestVisitor(String vdb, String input, String expectedOutput) {
helpTestVisitor(vdb, input, expectedOutput, false);
}
- public void helpTestVisitor(String vdb, String input, String expectedOutput, boolean useMetadata) {
- helpTestVisitor(vdb, input, expectedOutput, useMetadata, false);
- }
-
- public void helpTestVisitor(String vdb, String input, String expectedOutput, boolean useMetadata, boolean usePreparedStatement) {
- // Convert from sql to objects
- ICommand obj = helpTranslate(vdb, input);
-
- try {
- helpTestVisitorWithCommand(expectedOutput, obj, useMetadata, usePreparedStatement);
+ public void helpTestVisitor(String vdb, String input, String expectedOutput, boolean usePreparedStatement) {
+ try {
+ Translator trans = new Translator();
+ Properties p = new Properties();
+ if (usePreparedStatement) {
+ p.setProperty(JDBCPropertyNames.USE_BIND_VARIABLES, Boolean.TRUE.toString());
+ }
+ trans.initialize(EnvironmentUtility.createEnvironment(p, false));
+
+ MetadataFactory.helpTestVisitor(vdb, input, expectedOutput, trans);
} catch (ConnectorException e) {
throw new RuntimeException(e);
}
@@ -123,30 +99,6 @@
return visitor.toString();
}
- /**
- * @param expectedOutput
- * @param obj
- * @throws ConnectorException
- * @since 4.2
- */
- private void helpTestVisitorWithCommand(String expectedOutput,
- ICommand obj,
- boolean useMetadata,
- boolean usePreparedStatement) throws ConnectorException {
- // Apply function replacement
- Translator trans = new Translator();
- Properties p = new Properties();
- if (usePreparedStatement) {
- p.setProperty(JDBCPropertyNames.USE_BIND_VARIABLES, Boolean.TRUE.toString());
- }
- trans.initialize(EnvironmentUtility.createEnvironment(p, false));
-
- TranslatedCommand tc = new TranslatedCommand(new FakeExecutionContextImpl(), trans);
- tc.translateCommand(obj);
-
- assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
- }
-
public void testSimple() {
helpTestVisitor(getTestVDB(),
"select part_name from parts", //$NON-NLS-1$
@@ -363,36 +315,10 @@
"UPDATE PARTS SET PART_WEIGHT = 'a' WHERE NULL <> NULL"); //$NON-NLS-1$
}
- public void testGroupByWithFunctions() throws Exception {
- QueryMetadataInterface metadata = VDBMetadataFactory.getVDBMetadata(getTestVDB());
-
- Select select = new Select();
- select.addSymbol(new ElementSymbol("part_name")); //$NON-NLS-1$
- From from = new From();
- from.addGroup(new GroupSymbol("parts")); //$NON-NLS-1$
- GroupBy groupBy = new GroupBy();
- Function function = new Function("concat", new Expression[] {new ElementSymbol("part_id"), new Constant("a")}); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
- groupBy.addSymbol(function);
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
- query.setGroupBy(groupBy);
-
- QueryResolver.resolveCommand(query, metadata);
- Command command = QueryRewriter.rewrite(query, null, metadata, null);
-
- ICommand result = new LanguageBridgeFactory(metadata).translate(command);
-
- helpTestVisitorWithCommand("SELECT PARTS.PART_NAME FROM PARTS GROUP BY concat(PARTS.PART_ID, 'a')", result, //$NON-NLS-1$
- false,
- false);
- }
-
public void testPreparedStatementCreationWithUpdate() {
helpTestVisitor(getTestVDB(),
"update parts set part_weight = 'a' where part_weight < 5", //$NON-NLS-1$
"UPDATE PARTS SET PART_WEIGHT = ? WHERE PARTS.PART_WEIGHT < ?", //$NON-NLS-1$
- false,
true);
}
@@ -400,7 +326,6 @@
helpTestVisitor(getTestVDB(),
"insert into parts (part_weight) values (5)", //$NON-NLS-1$
"INSERT INTO PARTS (PART_WEIGHT) VALUES (?)", //$NON-NLS-1$
- false,
true);
}
@@ -408,7 +333,6 @@
helpTestVisitor(getTestVDB(),
"select part_name from parts where part_id not in ('x', 'y') and part_weight < 6", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE (PARTS.PART_ID NOT IN (?, ?)) AND (PARTS.PART_WEIGHT < ?)", //$NON-NLS-1$
- false,
true);
}
@@ -416,7 +340,6 @@
helpTestVisitor(getTestVDB(),
"select part_name from parts where part_name like '%foo'", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE PARTS.PART_NAME LIKE ?", //$NON-NLS-1$
- false,
true);
}
@@ -428,7 +351,6 @@
helpTestVisitor(getTestVDB(),
"select part_name from parts where 'x' = 'y'", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE 1 = ?", //$NON-NLS-1$
- false,
true);
}
@@ -440,7 +362,6 @@
helpTestVisitor(getTestVDB(),
"select part_name from parts where concat(part_name, 'x') = concat('y', part_weight)", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE concat(PARTS.PART_NAME, 'x') = concat('y', PARTS.PART_WEIGHT)", //$NON-NLS-1$
- false,
true);
}
@@ -448,7 +369,6 @@
helpTestVisitor(getTestVDB(),
"SELECT PARTS.PART_NAME FROM PARTS WHERE PARTS.PART_WEIGHT = CASE WHEN PARTS.PART_NAME='a' THEN 'b' ELSE 'c' END", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE PARTS.PART_WEIGHT = CASE WHEN PARTS.PART_NAME = ? THEN 'b' ELSE 'c' END", //$NON-NLS-1$
- false,
true);
}
@@ -477,5 +397,14 @@
public void testVisitIProcedureWithComment() throws Exception {
String expected = "{ /*teiid sessionid:ConnectionID, requestid:RequestID.PartID*/ call sq3(?,?)}"; //$NON-NLS-1$
assertEquals(expected, getStringWithContext(TestProcedureImpl.example()));
- }
+ }
+
+ public void testTrimStrings() throws Exception {
+ Translator trans = new Translator();
+ Properties p = new Properties();
+ p.setProperty(JDBCPropertyNames.TRIM_STRINGS, Boolean.TRUE.toString());
+ trans.initialize(EnvironmentUtility.createEnvironment(p, false));
+
+ MetadataFactory.helpTestVisitor(MetadataFactory.BQT_VDB, "select stringkey from bqt1.smalla", "SELECT rtrim(SmallA.StringKey) FROM SmallA", trans); //$NON-NLS-1$ //$NON-NLS-2$
+ }
}
Modified: trunk/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/util/TestJDBCExecutionHelper.java
===================================================================
--- trunk/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/util/TestJDBCExecutionHelper.java 2009-10-02 17:47:50 UTC (rev 1519)
+++ trunk/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/util/TestJDBCExecutionHelper.java 2009-10-02 19:08:46 UTC (rev 1520)
@@ -29,7 +29,6 @@
import junit.framework.TestCase;
-import org.teiid.connector.jdbc.JDBCQueryExecution;
import org.teiid.connector.language.IQuery;
import org.teiid.connector.language.ISelect;
import org.teiid.dqp.internal.datamgr.language.LiteralImpl;
@@ -59,30 +58,5 @@
assertEquals( results[0], expectedResults[0]);
assertEquals( results[1], expectedResults[1]);
}
-
- public void helpTestTrimString(String value, String expected) {
- String actual = JDBCQueryExecution.trimString(value);
- assertEquals("Did not get a match, expected=[" + expected + "', actual=[" + actual + "]", expected, actual); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- public void testTrimEmpty() {
- helpTestTrimString("", ""); //$NON-NLS-1$ //$NON-NLS-2$
- }
- public void testTrimNoWhitespace() {
- helpTestTrimString("abc", "abc"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testTrimSome() {
- helpTestTrimString("abc ", "abc"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testDontTrimLeft() {
- helpTestTrimString(" abc ", " abc"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testDontTrimInternal() {
- helpTestTrimString("a b c ", "a b c"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
}
More information about the teiid-commits
mailing list