mirror of https://github.com/apache/nifi.git
NIFI-972: Added additional unit test; deleted lines that were commented out
This commit is contained in:
parent
a9e5325047
commit
bd506b1e10
|
@ -19,6 +19,7 @@ package org.apache.nifi.processors.standard.util;
|
|||
import static java.sql.Types.ARRAY;
|
||||
import static java.sql.Types.BIGINT;
|
||||
import static java.sql.Types.BINARY;
|
||||
import static java.sql.Types.BIT;
|
||||
import static java.sql.Types.BLOB;
|
||||
import static java.sql.Types.BOOLEAN;
|
||||
import static java.sql.Types.CHAR;
|
||||
|
@ -83,7 +84,7 @@ public class JdbcCommon {
|
|||
if (value == null) {
|
||||
rec.put(i - 1, null);
|
||||
|
||||
} else if (javaSqlType==BINARY || javaSqlType==VARBINARY || javaSqlType==LONGVARBINARY || javaSqlType==ARRAY || javaSqlType==BLOB || javaSqlType==CLOB) {
|
||||
} else if (javaSqlType == BINARY || javaSqlType == VARBINARY || javaSqlType == LONGVARBINARY || javaSqlType == ARRAY || javaSqlType == BLOB || javaSqlType == CLOB) {
|
||||
// bytes requires little bit different handling
|
||||
byte[] bytes = rs.getBytes(i);
|
||||
ByteBuffer bb = ByteBuffer.wrap(bytes);
|
||||
|
@ -104,7 +105,7 @@ public class JdbcCommon {
|
|||
// The different types that we support are numbers (int, long, double, float),
|
||||
// as well as boolean values and Strings. Since Avro doesn't provide
|
||||
// timestamp types, we want to convert those to Strings. So we will cast anything other
|
||||
// than numbers or booleans to strings by using to toString() method.
|
||||
// than numbers or booleans to strings by using the toString() method.
|
||||
rec.put(i - 1, value.toString());
|
||||
}
|
||||
}
|
||||
|
@ -137,6 +138,7 @@ public class JdbcCommon {
|
|||
builder.name(meta.getColumnName(i)).type().unionOf().nullBuilder().endNull().and().stringType().endUnion().noDefault();
|
||||
break;
|
||||
|
||||
case BIT:
|
||||
case BOOLEAN:
|
||||
builder.name(meta.getColumnName(i)).type().unionOf().nullBuilder().endNull().and().booleanType().endUnion().noDefault();
|
||||
break;
|
||||
|
|
|
@ -24,19 +24,26 @@ import java.io.ByteArrayOutputStream;
|
|||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.lang.reflect.Field;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.sql.Types;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.avro.Schema;
|
||||
import org.apache.avro.file.DataFileStream;
|
||||
import org.apache.avro.generic.GenericDatumReader;
|
||||
import org.apache.avro.generic.GenericRecord;
|
||||
import org.apache.avro.io.DatumReader;
|
||||
import org.junit.Assert;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
public class TestJdbcCommon {
|
||||
|
||||
|
@ -138,6 +145,41 @@ public class TestJdbcCommon {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testCreateSchemaTypes() throws SQLException, IllegalArgumentException, IllegalAccessException {
|
||||
final Set<Integer> fieldsToIgnore = new HashSet<>();
|
||||
fieldsToIgnore.add(Types.NULL);
|
||||
fieldsToIgnore.add(Types.OTHER);
|
||||
|
||||
final Field[] fieldTypes = Types.class.getFields();
|
||||
for (final Field field : fieldTypes) {
|
||||
final Object fieldObject = field.get(null);
|
||||
final int type = (int) fieldObject;
|
||||
|
||||
if (fieldsToIgnore.contains(Types.NULL)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
final ResultSetMetaData metadata = Mockito.mock(ResultSetMetaData.class);
|
||||
Mockito.when(metadata.getColumnCount()).thenReturn(1);
|
||||
Mockito.when(metadata.getColumnType(1)).thenReturn(type);
|
||||
Mockito.when(metadata.getColumnName(1)).thenReturn(field.getName());
|
||||
Mockito.when(metadata.getTableName(1)).thenReturn("table");
|
||||
|
||||
final ResultSet rs = Mockito.mock(ResultSet.class);
|
||||
Mockito.when(rs.getMetaData()).thenReturn(metadata);
|
||||
|
||||
try {
|
||||
JdbcCommon.createSchema(rs);
|
||||
} catch (final IllegalArgumentException | SQLException sqle) {
|
||||
sqle.printStackTrace();
|
||||
Assert.fail("Failed when using type " + field.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// many test use Derby as database, so ensure driver is available
|
||||
@Test
|
||||
public void testDriverLoad() throws ClassNotFoundException {
|
||||
|
|
|
@ -64,10 +64,6 @@ public class TestJdbcTypesDerby {
|
|||
+ " active tinyint NOT NULL DEFAULT 0, "
|
||||
+ " home_module_id int DEFAULT NULL, "
|
||||
+ " PRIMARY KEY (id) ) " ;
|
||||
// + " UNIQUE email ) " ;
|
||||
// + " KEY home_module_id (home_module_id) ) " ;
|
||||
// + " CONSTRAINT users_ibfk_1 FOREIGN KEY (home_module_id) REFERENCES "
|
||||
// + " modules (id) ON DELETE SET NULL " ;
|
||||
|
||||
String dropTable = "drop table users";
|
||||
|
||||
|
|
Loading…
Reference in New Issue