blob: ad168e223b6c4915f05a1b69cb2433c99313c2a7 [file] [log] [blame]
package org.apache.sqoop.manager.oracle;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import org.junit.Test;
public class OraOopTypesTest extends OraOopTestCase {
@Test
public void ensureTypesAfterExportMappedAsExpected() throws Exception {
try {
setSqoopTargetDirectory(getSqoopTargetDirectory() + "types_test");
String tempTableName = "ORACLE_DATATYPES_TEMPLATE";
String tableName = "ORACLE_DATATYPES";
createTableFromSQL("create table " + tempTableName + " ("
+ "C1_NUM NUMBER(*,0),"
+ "C2_NUM NUMBER(*,5),"
+ "C3_NUM NUMBER(16,8),"
+ "C4_NUM NUMBER(9,-3),"
+ "C5_FLOAT BINARY_FLOAT,"
+ "C6_DOUBLE BINARY_DOUBLE,"
+ "C7_DATE DATE,"
+ "C8_TIMESTAMP TIMESTAMP,"
+ "C9_TIMESTAMP_WITH_TZ TIMESTAMP WITH TIME ZONE,"
+ "C10_TIMESTAMP_WITH_LTZ TIMESTAMP WITH LOCAL TIME ZONE,"
+ "C11_CHAR CHAR(255),"
+ "C12_VARCHAR VARCHAR(255),"
+ "C13_VARCHAR2 VARCHAR2(255),"
+ "C14_NCHAR NCHAR(255),"
+ "C15_NVARCHAR2 NVARCHAR2(255),"
+ "C16_URITYPE UriType"
+ ")", tempTableName);
Connection conn = getTestEnvConnection();
try (Statement stmt = conn.createStatement()) {
stmt.execute("insert into " + tempTableName + " values ("
+ "123456789101112.123456789101112,"
+ "123456789101112.123456789101112,"
+ "12345678.12345678,"
+ "123456789101.123456789101112,"
+ "123456789101112.123456789101112,"
+ "123456789101112.123456789101112,"
+ "DATE '2015-02-23',"
+ "TIMESTAMP '2015-02-23 13:42:24.123456 -07:00',"
+ "TIMESTAMP '2015-02-23 13:42:24.123456 -08:00',"
+ "TIMESTAMP '2015-02-23 13:42:24.123456 -09:00',"
+ "'ÁRÍZTŰRŐTÜKÖRFÚRÓGÉP',"
+ "'ÁRÍZTŰRŐTÜKÖRFÚRÓGÉP',"
+ "'ÁRÍZTŰRŐTÜKÖRFÚRÓGÉP',"
+ "'ÁRÍZTŰRŐTÜKÖRFÚRÓGÉP',"
+ "'ÁRÍZTŰRŐTÜKÖRFÚRÓGÉP',"
+ "httpuritype.createuri('http://www.oracle.com'))");
}
conn.commit();
runImport(tempTableName, getSqoopConf(), false);
runExportFromTemplateTable(tempTableName, tableName, true);
try (Statement stmt = conn.createStatement()) {
ResultSet rs = stmt.executeQuery(
"select count(*) from ("
+ "select * from (select "
+ "T1.C1_NUM, "
+ "T1.C2_NUM, "
+ "T1.C3_NUM, "
+ "T1.C4_NUM, "
+ "T1.C5_FLOAT, "
+ "T1.C6_DOUBLE, "
+ "T1.C7_DATE, "
+ "T1.C8_TIMESTAMP, "
+ "T1.C9_TIMESTAMP_WITH_TZ, "
+ "T1.C10_TIMESTAMP_WITH_LTZ, "
+ "T1.C11_CHAR, "
+ "T1.C12_VARCHAR, "
+ "T1.C13_VARCHAR2, "
+ "T1.C14_NCHAR, "
+ "T1.C15_NVARCHAR2, "
+ "T1.C16_URITYPE.GETURL() from "
+ tempTableName
+ " T1 "
+ "minus select "
+ "T2.C1_NUM, "
+ "T2.C2_NUM, "
+ "T2.C3_NUM, "
+ "T2.C4_NUM, "
+ "T2.C5_FLOAT, "
+ "T2.C6_DOUBLE, "
+ "T2.C7_DATE, "
+ "T2.C8_TIMESTAMP, "
+ "T2.C9_TIMESTAMP_WITH_TZ, "
+ "T2.C10_TIMESTAMP_WITH_LTZ, "
+ "T2.C11_CHAR, "
+ "T2.C12_VARCHAR, "
+ "T2.C13_VARCHAR2, "
+ "T2.C14_NCHAR, "
+ "T2.C15_NVARCHAR2, "
+ "T2.C16_URITYPE.GETURL() from "+tableName+" T2) "
+ "union all select * from (select "
+ "T1.C1_NUM, "
+ "T1.C2_NUM, "
+ "T1.C3_NUM, "
+ "T1.C4_NUM, "
+ "T1.C5_FLOAT, "
+ "T1.C6_DOUBLE, "
+ "T1.C7_DATE, "
+ "T1.C8_TIMESTAMP, "
+ "T1.C9_TIMESTAMP_WITH_TZ, "
+ "T1.C10_TIMESTAMP_WITH_LTZ, "
+ "T1.C11_CHAR, "
+ "T1.C12_VARCHAR, "
+ "T1.C13_VARCHAR2, "
+ "T1.C14_NCHAR, "
+ "T1.C15_NVARCHAR2, "
+ "T1.C16_URITYPE.GETURL() from "+tableName+" T1 "
+ "minus select "
+ "T2.C1_NUM, "
+ "T2.C2_NUM, "
+ "T2.C3_NUM, "
+ "T2.C4_NUM, "
+ "T2.C5_FLOAT, "
+ "T2.C6_DOUBLE, "
+ "T2.C7_DATE, "
+ "T2.C8_TIMESTAMP, "
+ "T2.C9_TIMESTAMP_WITH_TZ, "
+ "T2.C10_TIMESTAMP_WITH_LTZ, "
+ "T2.C11_CHAR, "
+ "T2.C12_VARCHAR, "
+ "T2.C13_VARCHAR2, "
+ "T2.C14_NCHAR, "
+ "T2.C15_NVARCHAR2, "
+ "T2.C16_URITYPE.GETURL() from "+tempTableName+" T2))");
rs.next();
assertEquals(0, rs.getInt(1));
}
} finally {
cleanupFolders();
closeTestEnvConnection();
}
}
}