Skip to content

Commit

Permalink
TEIIDDES-2672 Added test for FK use-case
Browse files Browse the repository at this point in the history
 * Fixed issue with 0 precision value, so exported value is (20)
  • Loading branch information
blafond committed Sep 30, 2015
1 parent 34853bc commit 0dcb8a8
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 1 deletion.
Expand Up @@ -117,6 +117,12 @@ public String id() {
return this.id;
}
}

/**
* see <code>org.teiid.core.types.JDBCSQLTypeInfo.java</code> for details
* FLOAT, DOUBLE, BIG_DECIMAL all show 20 as the default precision
*/
int DEFAULT_PRECISION = 20;

/**
* Get the teiid instance specific name of the data source type
Expand Down
Expand Up @@ -43,6 +43,7 @@
import org.teiid.designer.relational.RelationalConstants;
import org.teiid.designer.transformation.TransformationPlugin;
import org.teiid.designer.transformation.util.TransformationHelper;
import org.teiid.designer.type.IDataTypeManagerService;
import org.teiid.designer.type.IDataTypeManagerService.DataTypeName;
//import org.teiid.query.ui.sqleditor.component.QueryDisplayFormatter;

Expand Down Expand Up @@ -150,7 +151,8 @@ private String getColumnDatatypeDdl(String name, int length, int precision, int
if( length > 0 ) {
sb.append(OPEN_BRACKET).append(length).append(CLOSE_BRACKET);
}
} else if( isPrecisionType && precision > 0 ) {
} else if( isPrecisionType ) {
if( precision == 0 ) precision = IDataTypeManagerService.DEFAULT_PRECISION;
sb.append(OPEN_BRACKET).append(precision);
if( isScaleType && scale > 0 ) {
sb.append(COMMA).append(SPACE).append(scale).append(CLOSE_BRACKET);
Expand Down
Expand Up @@ -665,4 +665,36 @@ public void testDdl_TYPE_VARCHAR_10() throws Exception {
String generatedDdl = roundTrip(ddl, false);
assertEquals(expectedDdl, generatedDdl);
}

@Test
public void testFKUseCase() throws Exception {
String ddl = "CREATE FOREIGN TABLE STATUS (" +
"\n\tSTATUS_ID bigdecimal NOT NULL OPTIONS(NAMEINSOURCE '\"STATUS_ID\"', NATIVE_TYPE 'NUMBER', FIXED_LENGTH 'TRUE')," +
"\n\tSTATUS_NAME string(30) OPTIONS(NAMEINSOURCE '\"STATUS_NAME\"', NATIVE_TYPE 'VARCHAR2')," +
"\n\tCONSTRAINT PK_STATUS PRIMARY KEY(STATUS_ID)" +
") OPTIONS(NAMEINSOURCE '\"PARTSSUPPLIER\".\"STATUS\"')" +
"\n" +
"\nCREATE FOREIGN TABLE SUPPLIER (" +
"\n\tSUPPLIER_ID string(10) NOT NULL OPTIONS(NAMEINSOURCE '\"SUPPLIER_ID\"', NATIVE_TYPE 'VARCHAR2')," +
"\n\tSUPPLIER_NAME string(30) OPTIONS(NAMEINSOURCE '\"SUPPLIER_NAME\"', NATIVE_TYPE 'VARCHAR2')," +
"\n\tSUPPLIER_STATUS bigdecimal OPTIONS(NAMEINSOURCE '\"SUPPLIER_STATUS\"', NATIVE_TYPE 'NUMBER', FIXED_LENGTH 'TRUE')," +
"\n\tSUPPLIER_CITY string(30) OPTIONS(NAMEINSOURCE '\"SUPPLIER_CITY\"', NATIVE_TYPE 'VARCHAR2')," +
"\n\tSUPPLIER_STATE string(2) OPTIONS(NAMEINSOURCE '\"SUPPLIER_STATE\"', NATIVE_TYPE 'VARCHAR2')," +
"\n\tCONSTRAINT PK_SUPPLIER PRIMARY KEY(SUPPLIER_ID)," +
"\n\tCONSTRAINT FK_SPLIER_STATS FOREIGN KEY(SUPPLIER_STATUS) REFERENCES STATUS(STATUS_ID)" +
"\n) OPTIONS(NAMEINSOURCE '\"PARTSSUPPLIER\".\"SUPPLIER\"')";
String expectedDdl = "CREATE FOREIGN TABLE STATUS (STATUS_ID bigdecimal(20) NOT NULL OPTIONS(NAMEINSOURCE '\"STATUS_ID\"', NATIVE_TYPE 'NUMBER', FIXED_LENGTH 'TRUE'), "
+ "STATUS_NAME string(30) OPTIONS(NAMEINSOURCE '\"STATUS_NAME\"', NATIVE_TYPE 'VARCHAR2', FIXED_LENGTH 'TRUE'), "
+ "CONSTRAINT PK_STATUS PRIMARY KEY(STATUS_ID)) OPTIONS(NAMEINSOURCE '\"PARTSSUPPLIER\".\"STATUS\"') "
+ "CREATE FOREIGN TABLE SUPPLIER (SUPPLIER_ID string(10) NOT NULL OPTIONS(NAMEINSOURCE '\"SUPPLIER_ID\"', NATIVE_TYPE 'VARCHAR2', FIXED_LENGTH 'TRUE'), "
+ "SUPPLIER_NAME string(30) OPTIONS(NAMEINSOURCE '\"SUPPLIER_NAME\"', NATIVE_TYPE 'VARCHAR2', FIXED_LENGTH 'TRUE'), "
+ "SUPPLIER_STATUS bigdecimal(20) OPTIONS(NAMEINSOURCE '\"SUPPLIER_STATUS\"', NATIVE_TYPE 'NUMBER', FIXED_LENGTH 'TRUE'), "
+ "SUPPLIER_CITY string(30) OPTIONS(NAMEINSOURCE '\"SUPPLIER_CITY\"', NATIVE_TYPE 'VARCHAR2', FIXED_LENGTH 'TRUE'), "
+ "SUPPLIER_STATE string(2) OPTIONS(NAMEINSOURCE '\"SUPPLIER_STATE\"', NATIVE_TYPE 'VARCHAR2', FIXED_LENGTH 'TRUE'), "
+ "CONSTRAINT PK_SUPPLIER PRIMARY KEY(SUPPLIER_ID), "
+ "CONSTRAINT FK_SPLIER_STATS FOREIGN KEY(SUPPLIER_STATUS) REFERENCES STATUS(STATUS_ID)) OPTIONS(NAMEINSOURCE '\"PARTSSUPPLIER\".\"SUPPLIER\"')";

String generatedDdl = roundTrip(ddl, false);
assertEquals(expectedDdl, generatedDdl);
}
}

0 comments on commit 0dcb8a8

Please sign in to comment.