Author: shawkins
Date: 2011-06-28 16:41:02 -0400 (Tue, 28 Jun 2011)
New Revision: 3287
Modified:
branches/7.4.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sqlserver/SQLServerExecutionFactory.java
branches/7.4.x/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sqlserver/TestSqlServerConversionVisitor.java
Log:
TEIID-1660 fix for date type being used with SQL Server 2005
Modified:
branches/7.4.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sqlserver/SQLServerExecutionFactory.java
===================================================================
---
branches/7.4.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sqlserver/SQLServerExecutionFactory.java 2011-06-28
20:18:26 UTC (rev 3286)
+++
branches/7.4.x/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/sqlserver/SQLServerExecutionFactory.java 2011-06-28
20:41:02 UTC (rev 3287)
@@ -24,6 +24,8 @@
*/
package org.teiid.translator.jdbc.sqlserver;
+import java.sql.Date;
+import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -203,8 +205,16 @@
}
@Override
+ public String translateLiteralDate(Date dateValue) {
+ if (getDatabaseVersion().compareTo(V_2008) >= 0) {
+ return super.translateLiteralDate(dateValue);
+ }
+ return super.translateLiteralTimestamp(new Timestamp(dateValue.getTime()));
+ }
+
+ @Override
public boolean hasTimeType() {
- return getDatabaseVersion().compareTo(V_2005) >= 0;
+ return getDatabaseVersion().compareTo(V_2008) >= 0;
}
@Override
Modified:
branches/7.4.x/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sqlserver/TestSqlServerConversionVisitor.java
===================================================================
---
branches/7.4.x/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sqlserver/TestSqlServerConversionVisitor.java 2011-06-28
20:18:26 UTC (rev 3286)
+++
branches/7.4.x/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/sqlserver/TestSqlServerConversionVisitor.java 2011-06-28
20:41:02 UTC (rev 3287)
@@ -49,9 +49,13 @@
private static SQLServerExecutionFactory trans = new SQLServerExecutionFactory();
@BeforeClass
- public static void setup() throws TranslatorException {
+ public static void oneTimeSetup() throws TranslatorException {
trans.start();
}
+
+ public void setUp() throws Exception {
+ trans.setDatabaseVersion(SQLServerExecutionFactory.V_2005);
+ }
public String getTestVDB() {
return TranslationHelper.PARTS_VDB;
@@ -143,6 +147,25 @@
output);
}
+ @Test public void testConvertDate() throws Exception {
+ String input = "select stringkey from bqt1.smalla where
BQT1.SmallA.DateValue IN (convert('2000-01-12', date),
convert('2000-02-02', date))"; //$NON-NLS-1$
+ String output = "SELECT SmallA.StringKey FROM SmallA WHERE SmallA.DateValue
IN (CAST('2000-01-12 00:00:00.0' AS DATETIME), CAST('2000-02-02
00:00:00.0' AS DATETIME))"; //$NON-NLS-1$
+
+ helpTestVisitor(getBQTVDB(),
+ input,
+ output);
+ }
+
+ @Test public void testConvertDate2008() throws Exception {
+ trans.setDatabaseVersion(SQLServerExecutionFactory.V_2008);
+ String input = "select stringkey from bqt1.smalla where
BQT1.SmallA.DateValue IN (convert('2000-01-12', date),
convert('2000-02-02', date))"; //$NON-NLS-1$
+ String output = "SELECT SmallA.StringKey FROM SmallA WHERE SmallA.DateValue
IN (CAST('2000-01-12' AS DATE), CAST('2000-02-02' AS DATE))";
//$NON-NLS-1$
+
+ helpTestVisitor(getBQTVDB(),
+ input,
+ output);
+ }
+
@Test public void testUniqueidentifier() throws Exception {
MetadataStore metadataStore = new MetadataStore();
Schema foo = RealMetadataFactory.createPhysicalModel("foo",
metadataStore); //$NON-NLS-1$
Show replies by date