[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