use of org.pentaho.di.core.row.value.ValueMetaString in project pentaho-kettle by pentaho.
the class VariablesTest method testFieldSubstitution.
@Test
public void testFieldSubstitution() throws KettleValueException {
Object[] rowData = new Object[] { "DataOne", "DataTwo" };
RowMeta rm = new RowMeta();
rm.addValueMeta(new ValueMetaString("FieldOne"));
rm.addValueMeta(new ValueMetaString("FieldTwo"));
Variables vars = new Variables();
assertNull(vars.fieldSubstitute(null, rm, rowData));
assertEquals("", vars.fieldSubstitute("", rm, rowData));
assertEquals("DataOne", vars.fieldSubstitute("?{FieldOne}", rm, rowData));
assertEquals("TheDataOne", vars.fieldSubstitute("The?{FieldOne}", rm, rowData));
}
use of org.pentaho.di.core.row.value.ValueMetaString in project pentaho-kettle by pentaho.
the class MSSQLServerDatabaseMetaTest method testSQLStatements.
@Test
public void testSQLStatements() {
assertEquals("SELECT TOP 1 * FROM FOO", nativeMeta.getSQLQueryFields("FOO"));
String lineSep = System.getProperty("line.separator");
assertEquals("SELECT top 0 * FROM FOO WITH (UPDLOCK, HOLDLOCK);" + lineSep + "SELECT top 0 * FROM BAR WITH (UPDLOCK, HOLDLOCK);" + lineSep, nativeMeta.getSQLLockTables(new String[] { "FOO", "BAR" }));
assertEquals("ALTER TABLE FOO ADD BAR DATETIME", nativeMeta.getAddColumnStatement("FOO", new ValueMetaDate("BAR"), "", false, "", false));
assertEquals("ALTER TABLE FOO ADD BAR DATETIME", nativeMeta.getAddColumnStatement("FOO", new ValueMetaTimestamp("BAR"), "", false, "", false));
assertEquals("ALTER TABLE FOO DROP COLUMN BAR" + lineSep, nativeMeta.getDropColumnStatement("FOO", new ValueMetaString("BAR", 15, 0), "", false, "", true));
assertEquals("ALTER TABLE FOO ALTER COLUMN BAR VARCHAR(15)", nativeMeta.getModifyColumnStatement("FOO", new ValueMetaString("BAR", 15, 0), "", false, "", true));
assertEquals("ALTER TABLE FOO ALTER COLUMN BAR VARCHAR(100)", nativeMeta.getModifyColumnStatement("FOO", new ValueMetaString("BAR"), "", false, "", true));
// some subclass of the MSSQL meta probably ...
odbcMeta.setSupportsBooleanDataType(true);
assertEquals("ALTER TABLE FOO ADD BAR BIT", odbcMeta.getAddColumnStatement("FOO", new ValueMetaBoolean("BAR"), "", false, "", false));
odbcMeta.setSupportsBooleanDataType(false);
assertEquals("select o.name from sysobjects o, sysusers u where xtype in ( 'FN', 'P' ) and o.uid = u.uid order by o.name", nativeMeta.getSQLListOfProcedures("FOO"));
assertEquals("select name from sys.schemas", nativeMeta.getSQLListOfSchemas());
assertEquals("insert into FOO(FOOVERSION) values (1)", nativeMeta.getSQLInsertAutoIncUnknownDimensionRow("FOO", "FOOKEY", "FOOVERSION"));
assertEquals("SELECT NEXT VALUE FOR FOO", nativeMeta.getSQLNextSequenceValue("FOO"));
assertEquals("SELECT current_value FROM sys.sequences WHERE name = 'FOO'", nativeMeta.getSQLCurrentSequenceValue("FOO"));
assertEquals("SELECT 1 FROM sys.sequences WHERE name = 'FOO'", nativeMeta.getSQLSequenceExists("FOO"));
assertEquals("SELECT name FROM sys.sequences", nativeMeta.getSQLListOfSequences());
}
use of org.pentaho.di.core.row.value.ValueMetaString in project pentaho-kettle by pentaho.
the class NeoviewDatabaseMetaTest method testSQLStatements.
@Test
public void testSQLStatements() {
String lineSep = System.getProperty("line.separator");
assertEquals("SELECT [FIRST 1] * FROM FOO", nativeMeta.getSQLQueryFields("FOO"));
assertEquals("SELECT [FIRST 1] * FROM FOO", nativeMeta.getSQLTableExists("FOO"));
assertEquals("SELECT [FIRST 1] FOO FROM BAR", nativeMeta.getSQLQueryColumnFields("FOO", "BAR"));
assertEquals("SELECT [FIRST 1] FOO FROM BAR", nativeMeta.getSQLColumnExists("FOO", "BAR"));
assertEquals("DELETE FROM FOO", nativeMeta.getTruncateTableStatement("FOO"));
assertEquals("ALTER TABLE FOO ADD ( BAR VARCHAR(15) ) ", nativeMeta.getAddColumnStatement("FOO", new ValueMetaString("BAR", 15, 0), "", false, "", false));
assertEquals("ALTER TABLE FOO DROP ( BAR ) " + lineSep, nativeMeta.getDropColumnStatement("FOO", new ValueMetaString("BAR", 15, 0), "", false, "", false));
assertEquals("ALTER TABLE FOO MODIFY BAR VARCHAR(15)", // if all the others require parens, this is likely a bug
nativeMeta.getModifyColumnStatement("FOO", new ValueMetaString("BAR", 15, 0), "", false, "", false));
assertEquals("insert into FOO(FOOKEY, FOOVERSION) values (0, 1)", nativeMeta.getSQLInsertAutoIncUnknownDimensionRow("FOO", "FOOKEY", "FOOVERSION"));
assertEquals("LOCK TABLE FOO IN EXCLUSIVE MODE;" + lineSep + "LOCK TABLE BAR IN EXCLUSIVE MODE;" + lineSep, nativeMeta.getSQLLockTables(new String[] { "FOO", "BAR" }));
assertNull(nativeMeta.getSQLUnlockTables(new String[] { "FOO", "BAR" }));
}
use of org.pentaho.di.core.row.value.ValueMetaString in project pentaho-kettle by pentaho.
the class NeoviewDatabaseMetaTest method testGetValueFromResultSet.
@Test
public void testGetValueFromResultSet() throws Exception {
Object rtn = null;
ResultSet resultSet = Mockito.mock(ResultSet.class);
ResultSetMetaData metaData = Mockito.mock(ResultSetMetaData.class);
Mockito.when(resultSet.getMetaData()).thenReturn(metaData);
Mockito.when(resultSet.getTimestamp(1)).thenReturn(new java.sql.Timestamp(65535));
Mockito.when(resultSet.getTime(2)).thenReturn(new java.sql.Time(1000));
// ValueMetaDate -> Timestamp
Mockito.when(resultSet.getTimestamp(3)).thenReturn(new java.sql.Timestamp(65535));
ValueMetaTimestamp ts = new ValueMetaTimestamp("FOO");
ts.setOriginalColumnType(java.sql.Types.TIMESTAMP);
ValueMetaDate tm = new ValueMetaDate("BAR");
tm.setOriginalColumnType(java.sql.Types.TIME);
ValueMetaDate dt = new ValueMetaDate("WIBBLE");
dt.setOriginalColumnType(java.sql.Types.DATE);
rtn = nativeMeta.getValueFromResultSet(resultSet, ts, 0);
assertNotNull(rtn);
assertEquals("java.sql.Timestamp", rtn.getClass().getName());
rtn = nativeMeta.getValueFromResultSet(resultSet, tm, 1);
assertNotNull(rtn);
assertEquals("java.sql.Time", rtn.getClass().getName());
rtn = nativeMeta.getValueFromResultSet(resultSet, dt, 2);
assertNotNull(rtn);
assertEquals("java.sql.Timestamp", rtn.getClass().getName());
Mockito.when(resultSet.wasNull()).thenReturn(true);
rtn = nativeMeta.getValueFromResultSet(resultSet, new ValueMetaString("WOBBLE"), 3);
assertNull(rtn);
// Verify that getDate is not called, getTime is called once, and getTimestamp was called 2 times (once for TimeStamp, once for Date)
Mockito.verify(resultSet, Mockito.times(0)).getDate(Mockito.anyInt());
Mockito.verify(resultSet, Mockito.times(1)).getTime(Mockito.anyInt());
Mockito.verify(resultSet, Mockito.times(2)).getTimestamp(Mockito.anyInt());
// Now that the date stuff is done, validate the behaviors of other aspects of getValueFromResultSet
Mockito.when(resultSet.wasNull()).thenReturn(false);
Mockito.when(resultSet.getBoolean(1)).thenReturn(new Boolean(true));
Mockito.when(resultSet.getDouble(1)).thenReturn(new Double(15));
Mockito.when(resultSet.getBigDecimal(1)).thenReturn(new BigDecimal("15"));
Mockito.when(resultSet.getLong(1)).thenReturn(new Long("15"));
Mockito.when(resultSet.getString(1)).thenReturn("ASTRING");
Mockito.when(resultSet.getBytes(1)).thenReturn("ASTRING".getBytes());
Blob mockBlob = Mockito.mock(Blob.class);
byte[] bytes = "FOO".getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
Mockito.when(mockBlob.getBinaryStream()).thenReturn(bais);
Mockito.when(mockBlob.length()).thenReturn(new Long(bytes.length));
Mockito.when(mockBlob.getBytes(Mockito.anyLong(), Mockito.anyInt())).thenReturn(bytes);
Mockito.when(resultSet.getBlob(1)).thenReturn(mockBlob);
rtn = nativeMeta.getValueFromResultSet(resultSet, new ValueMetaBoolean("FOO"), 0);
assertNotNull(rtn);
assertTrue(rtn instanceof Boolean);
rtn = nativeMeta.getValueFromResultSet(resultSet, new ValueMetaNumber("FOO", 15, 5), 0);
assertNotNull(rtn);
assertTrue(rtn instanceof Double);
rtn = nativeMeta.getValueFromResultSet(resultSet, new ValueMetaBigNumber("FOO", 15, 5), 0);
assertNotNull(rtn);
assertTrue(rtn instanceof BigDecimal);
rtn = nativeMeta.getValueFromResultSet(resultSet, new ValueMetaInteger("FOO", 5, 0), 0);
assertNotNull(rtn);
assertTrue(rtn instanceof Long);
rtn = nativeMeta.getValueFromResultSet(resultSet, new ValueMetaString("FOO", 25, 0), 0);
assertNotNull(rtn);
assertTrue(rtn instanceof String);
ValueMetaString binStr = new ValueMetaString("FOO");
binStr.setStorageType(ValueMetaString.STORAGE_TYPE_BINARY_STRING);
rtn = nativeMeta.getValueFromResultSet(resultSet, binStr, 0);
assertNotNull(rtn);
assertTrue(rtn instanceof byte[]);
rtn = nativeMeta.getValueFromResultSet(resultSet, new ValueMetaBinary("FOO", 150, 0), 0);
assertNotNull(rtn);
assertTrue(rtn instanceof byte[]);
try {
Mockito.when(resultSet.getBoolean(15)).thenThrow(new SQLException("Expected Exception Here"));
rtn = nativeMeta.getValueFromResultSet(resultSet, new ValueMetaBoolean("FOO"), 14);
fail("Should not get here");
} catch (Exception someException) {
assertTrue(someException instanceof KettleDatabaseException);
}
}
use of org.pentaho.di.core.row.value.ValueMetaString in project pentaho-kettle by pentaho.
the class NetezzaDatabaseMetaTest method testGetFieldDefinition.
@Test
public void testGetFieldDefinition() {
assertEquals("FOO date", nativeMeta.getFieldDefinition(new ValueMetaDate("FOO"), null, null, false, true, false));
assertEquals("boolean", nativeMeta.getFieldDefinition(new ValueMetaBoolean("FOO"), null, null, false, false, false));
assertEquals("", nativeMeta.getFieldDefinition(new ValueMetaInteger("FOO", 0, 0), null, null, false, false, false));
assertEquals("byteint", nativeMeta.getFieldDefinition(new ValueMetaNumber("FOO", 1, 0), null, null, false, false, false));
assertEquals("byteint", nativeMeta.getFieldDefinition(new ValueMetaBigNumber("FOO", 2, 0), null, null, false, false, false));
assertEquals("smallint", nativeMeta.getFieldDefinition(new ValueMetaInteger("FOO", 3, 0), null, null, false, false, false));
assertEquals("smallint", nativeMeta.getFieldDefinition(new ValueMetaInteger("FOO", 4, 0), null, null, false, false, false));
for (int i = 5; i < 10; i++) {
assertEquals("integer", nativeMeta.getFieldDefinition(new ValueMetaInteger("FOO", i, 0), null, null, false, false, false));
}
assertEquals("bigint", nativeMeta.getFieldDefinition(new ValueMetaInteger("FOO", 10, 0), null, null, false, false, false));
assertEquals("", nativeMeta.getFieldDefinition(new ValueMetaNumber("FOO", -22, 3), null, null, false, false, false));
assertEquals("", nativeMeta.getFieldDefinition(new ValueMetaNumber("FOO", 0, 3), null, null, false, false, false));
assertEquals("real", // pretty sure this is a bug ...
nativeMeta.getFieldDefinition(new ValueMetaNumber("FOO", 1, 3), null, null, false, false, false));
assertEquals("real", // pretty sure this is a bug ...
nativeMeta.getFieldDefinition(new ValueMetaNumber("FOO", 2, 3), null, null, false, false, false));
for (int i = 3; i < 9; i++) {
assertEquals("real", nativeMeta.getFieldDefinition(new ValueMetaNumber("FOO", i, 3), null, null, false, false, false));
}
for (int i = 10; i < 18; i++) {
assertEquals("double", nativeMeta.getFieldDefinition(new ValueMetaNumber("FOO", i, 3), null, null, false, false, false));
}
assertEquals("numeric(18, 3)", nativeMeta.getFieldDefinition(new ValueMetaNumber("FOO", 18, 3), null, null, false, false, false));
assertEquals("numeric(19)", nativeMeta.getFieldDefinition(new ValueMetaNumber("FOO", 19, -12), null, null, false, false, false));
assertEquals("varchar(32767)", nativeMeta.getFieldDefinition(new ValueMetaString("FOO", (NetezzaDatabaseMeta.MAX_CHAR_LEN + 2), 0), null, null, false, false, false));
assertEquals("varchar(10)", nativeMeta.getFieldDefinition(new ValueMetaString("FOO", 10, 0), null, null, false, false, false));
assertEquals(" UNKNOWN", nativeMeta.getFieldDefinition(new ValueMetaBinary("FOO", 10, 0), null, null, false, false, false));
String lineSep = System.getProperty("line.separator");
assertEquals(" UNKNOWN" + lineSep, nativeMeta.getFieldDefinition(new ValueMetaBinary("FOO", 10, 0), null, null, false, false, true));
}
Aggregations