Skip to content

Commit 7190454

Browse files
author
Vanshikaa Gupta
committed
provide XML support for oracle plugin
1 parent 085e485 commit 7190454

4 files changed

Lines changed: 32 additions & 0 deletions

File tree

oracle-plugin/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@
120120
<version>21.1.0.0</version>
121121
<scope>test</scope>
122122
</dependency>
123+
<dependency>
124+
<groupId>com.oracle.database.xml</groupId>
125+
<artifactId>xdb</artifactId>
126+
<version>21.1.0.0</version>
127+
</dependency>
128+
<dependency>
129+
<groupId>com.oracle.database.xml</groupId>
130+
<artifactId>xmlparserv2</artifactId>
131+
<version>21.1.0.0</version>
132+
</dependency>
123133
<dependency>
124134
<groupId>org.mockito</groupId>
125135
<artifactId>mockito-core</artifactId>

oracle-plugin/src/main/java/io/cdap/plugin/oracle/OracleSourceDBRecord.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ private void handleOracleSpecificType(ResultSet resultSet, StructuredRecord.Buil
265265
switch (sqlType) {
266266
case OracleSourceSchemaReader.INTERVAL_YM:
267267
case OracleSourceSchemaReader.INTERVAL_DS:
268+
case OracleSourceSchemaReader.XML:
268269
case OracleSourceSchemaReader.LONG:
269270
case Types.NCLOB:
270271
recordBuilder.set(field.getName(), resultSet.getString(columnIndex));

oracle-plugin/src/main/java/io/cdap/plugin/oracle/OracleSourceSchemaReader.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public class OracleSourceSchemaReader extends CommonSchemaReader {
4444
public static final int BINARY_DOUBLE = 101;
4545
public static final int BFILE = -13;
4646
public static final int LONG = -1;
47+
public static final int XML = 2009;
4748
public static final int LONG_RAW = -4;
4849

4950
/**
@@ -61,6 +62,7 @@ public class OracleSourceSchemaReader extends CommonSchemaReader {
6162
BINARY_DOUBLE,
6263
BFILE,
6364
LONG,
65+
XML,
6466
LONG_RAW,
6567
Types.NUMERIC,
6668
Types.DECIMAL
@@ -102,6 +104,7 @@ public Schema getSchema(ResultSetMetaData metadata, int index) throws SQLExcepti
102104
return Schema.of(Schema.Type.BYTES);
103105
case INTERVAL_DS:
104106
case INTERVAL_YM:
107+
case XML:
105108
case LONG:
106109
return Schema.of(Schema.Type.STRING);
107110
case Types.NUMERIC:

oracle-plugin/src/test/java/io/cdap/plugin/oracle/OracleSchemaReaderTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,22 @@ public void getSchema_timestampLTZFieldFalse_returnDatetime() throws SQLExceptio
9191
Assert.assertEquals(expectedSchemaFields.get(1).getName(), actualSchemaFields.get(1).getName());
9292
Assert.assertEquals(expectedSchemaFields.get(1).getSchema(), actualSchemaFields.get(1).getSchema());
9393
}
94+
95+
@Test
96+
public void getSchema_xmlField_returnString() throws SQLException {
97+
OracleSourceSchemaReader schemaReader = new OracleSourceSchemaReader(null, false, false, false);
98+
ResultSet resultSet = Mockito.mock(ResultSet.class);
99+
ResultSetMetaData metadata = Mockito.mock(ResultSetMetaData.class);
100+
Mockito.when(resultSet.getMetaData()).thenReturn(metadata);
101+
Mockito.when(metadata.getColumnCount()).thenReturn(1);
102+
Mockito.when(metadata.getColumnType(1)).thenReturn(OracleSourceSchemaReader.XML);
103+
Mockito.when(metadata.getColumnName(1)).thenReturn("xmlData");
104+
105+
List<Schema.Field> actualSchemaFields = schemaReader.getSchemaFields(resultSet);
106+
107+
List<Schema.Field> expectedSchemaFields = Lists.newArrayList();
108+
expectedSchemaFields.add(Schema.Field.of("xmlData", Schema.of(Schema.Type.STRING)));
109+
Assert.assertEquals(expectedSchemaFields.get(0).getName(), actualSchemaFields.get(0).getName());
110+
Assert.assertEquals(expectedSchemaFields.get(0).getSchema(), actualSchemaFields.get(0).getSchema());
111+
}
94112
}

0 commit comments

Comments
 (0)