This is an automated email from the ASF dual-hosted git repository. emkornfield pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push: new 10838a0 ARROW-6710: [Java] Add JDBC adapter test to cover cases which contains some null values 10838a0 is described below commit 10838a0efefb970f53db50a5650cfaee4c5af202 Author: tianchen <niki...@alibaba-inc.com> AuthorDate: Sat Oct 5 17:18:25 2019 -0600 ARROW-6710: [Java] Add JDBC adapter test to cover cases which contains some null values Related to [ARROW-6710](https://issues.apache.org/jira/browse/ARROW-6710). The current JDBC adapter tests only cover the cases that values are all non-null or all null. However, the cases that ResultSet has some null values are not covered (see ARROW-6709). Closes #5521 from tianchen92/ARROW-6710 and squashes the following commits: bc2c4588f <tianchen> fix style e24d1918a <tianchen> small fix 19ebe7344 <tianchen> ARROW-6710: Add JDBC adapter test to cover cases which contains some null values Authored-by: tianchen <niki...@alibaba-inc.com> Signed-off-by: Micah Kornfield <emkornfi...@gmail.com> --- .../adapter/jdbc/AbstractJdbcToArrowTest.java | 19 ++++ .../arrow/adapter/jdbc/JdbcToArrowTestHelper.java | 103 ++++++++++++++++----- .../adapter/jdbc/h2/JdbcToArrowCharSetTest.java | 3 - .../arrow/adapter/jdbc/h2/JdbcToArrowNullTest.java | 84 ++++++++++++++++- .../arrow/adapter/jdbc/h2/JdbcToArrowTest.java | 19 ---- .../test1_all_datatypes_selected_null_rows_h2.yml | 83 +++++++++++++++++ 6 files changed, 264 insertions(+), 47 deletions(-) diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/AbstractJdbcToArrowTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/AbstractJdbcToArrowTest.java index 9fb37ec..44a0604 100644 --- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/AbstractJdbcToArrowTest.java +++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/AbstractJdbcToArrowTest.java @@ -35,6 +35,25 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; * Class to abstract out some common test functionality for testing JDBC to Arrow. */ public abstract class AbstractJdbcToArrowTest { + + protected static final String BIGINT = "BIGINT_FIELD5"; + protected static final String BINARY = "BINARY_FIELD12"; + protected static final String BIT = "BIT_FIELD17"; + protected static final String BLOB = "BLOB_FIELD14"; + protected static final String BOOL = "BOOL_FIELD2"; + protected static final String CHAR = "CHAR_FIELD16"; + protected static final String CLOB = "CLOB_FIELD15"; + protected static final String DATE = "DATE_FIELD10"; + protected static final String DECIMAL = "DECIMAL_FIELD6"; + protected static final String DOUBLE = "DOUBLE_FIELD7"; + protected static final String INT = "INT_FIELD1"; + protected static final String REAL = "REAL_FIELD8"; + protected static final String SMALLINT = "SMALLINT_FIELD4"; + protected static final String TIME = "TIME_FIELD9"; + protected static final String TIMESTAMP = "TIMESTAMP_FIELD11"; + protected static final String TINYINT = "TINYINT_FIELD3"; + protected static final String VARCHAR = "VARCHAR_FIELD13"; + protected Connection conn = null; protected Table table; diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowTestHelper.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowTestHelper.java index 3e1eb09..748cfb5 100644 --- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowTestHelper.java +++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/JdbcToArrowTestHelper.java @@ -56,7 +56,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, intVector.getValueCount()); for (int j = 0; j < intVector.getValueCount(); j++) { - assertEquals(values[j].intValue(), intVector.get(j)); + if (values[j] == null) { + assertTrue(intVector.isNull(j)); + } else { + assertEquals(values[j].intValue(), intVector.get(j)); + } } } @@ -64,7 +68,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, bitVector.getValueCount()); for (int j = 0; j < bitVector.getValueCount(); j++) { - assertEquals(values[j].booleanValue(), bitVector.get(j) == 1); + if (values[j] == null) { + assertTrue(bitVector.isNull(j)); + } else { + assertEquals(values[j].booleanValue(), bitVector.get(j) == 1); + } } } @@ -72,7 +80,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, bitVector.getValueCount()); for (int j = 0; j < bitVector.getValueCount(); j++) { - assertEquals(values[j].intValue(), bitVector.get(j)); + if (values[j] == null) { + assertTrue(bitVector.isNull(j)); + } else { + assertEquals(values[j].intValue(), bitVector.get(j)); + } } } @@ -80,7 +92,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, tinyIntVector.getValueCount()); for (int j = 0; j < tinyIntVector.getValueCount(); j++) { - assertEquals(values[j].intValue(), tinyIntVector.get(j)); + if (values[j] == null) { + assertTrue(tinyIntVector.isNull(j)); + } else { + assertEquals(values[j].intValue(), tinyIntVector.get(j)); + } } } @@ -88,7 +104,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, smallIntVector.getValueCount()); for (int j = 0; j < smallIntVector.getValueCount(); j++) { - assertEquals(values[j].intValue(), smallIntVector.get(j)); + if (values[j] == null) { + assertTrue(smallIntVector.isNull(j)); + } else { + assertEquals(values[j].intValue(), smallIntVector.get(j)); + } } } @@ -96,7 +116,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, bigIntVector.getValueCount()); for (int j = 0; j < bigIntVector.getValueCount(); j++) { - assertEquals(values[j].longValue(), bigIntVector.get(j)); + if (values[j] == null) { + assertTrue(bigIntVector.isNull(j)); + } else { + assertEquals(values[j].longValue(), bigIntVector.get(j)); + } } } @@ -104,8 +128,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, decimalVector.getValueCount()); for (int j = 0; j < decimalVector.getValueCount(); j++) { - assertNotNull(decimalVector.getObject(j)); - assertEquals(values[j].doubleValue(), decimalVector.getObject(j).doubleValue(), 0); + if (values[j] == null) { + assertTrue(decimalVector.isNull(j)); + } else { + assertEquals(values[j].doubleValue(), decimalVector.getObject(j).doubleValue(), 0); + } } } @@ -113,7 +140,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, float8Vector.getValueCount()); for (int j = 0; j < float8Vector.getValueCount(); j++) { - assertEquals(values[j], float8Vector.get(j), 0.01); + if (values[j] == null) { + assertTrue(float8Vector.isNull(j)); + } else { + assertEquals(values[j], float8Vector.get(j), 0.01); + } } } @@ -121,7 +152,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, float4Vector.getValueCount()); for (int j = 0; j < float4Vector.getValueCount(); j++) { - assertEquals(values[j], float4Vector.get(j), 0.01); + if (values[j] == null) { + assertTrue(float4Vector.isNull(j)); + } else { + assertEquals(values[j], float4Vector.get(j), 0.01); + } } } @@ -129,7 +164,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, timeMilliVector.getValueCount()); for (int j = 0; j < timeMilliVector.getValueCount(); j++) { - assertEquals(values[j].longValue(), timeMilliVector.get(j)); + if (values[j] == null) { + assertTrue(timeMilliVector.isNull(j)); + } else { + assertEquals(values[j].longValue(), timeMilliVector.get(j)); + } } } @@ -137,7 +176,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, dateMilliVector.getValueCount()); for (int j = 0; j < dateMilliVector.getValueCount(); j++) { - assertEquals(values[j].longValue(), dateMilliVector.get(j)); + if (values[j] == null) { + assertTrue(dateMilliVector.isNull(j)); + } else { + assertEquals(values[j].longValue(), dateMilliVector.get(j)); + } } } @@ -145,7 +188,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, timeStampVector.getValueCount()); for (int j = 0; j < timeStampVector.getValueCount(); j++) { - assertEquals(values[j].longValue(), timeStampVector.get(j)); + if (values[j] == null) { + assertTrue(timeStampVector.isNull(j)); + } else { + assertEquals(values[j].longValue(), timeStampVector.get(j)); + } } } @@ -153,7 +200,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, varBinaryVector.getValueCount()); for (int j = 0; j < varBinaryVector.getValueCount(); j++) { - assertArrayEquals(values[j], varBinaryVector.get(j)); + if (values[j] == null) { + assertTrue(varBinaryVector.isNull(j)); + } else { + assertArrayEquals(values[j], varBinaryVector.get(j)); + } } } @@ -161,7 +212,11 @@ public class JdbcToArrowTestHelper { assertEquals(rowCount, varCharVector.getValueCount()); for (int j = 0; j < varCharVector.getValueCount(); j++) { - assertArrayEquals(values[j], varCharVector.get(j)); + if (values[j] == null) { + assertTrue(varCharVector.isNull(j)); + } else { + assertArrayEquals(values[j], varCharVector.get(j)); + } } } @@ -223,7 +278,7 @@ public class JdbcToArrowTestHelper { Integer[] valueArr = new Integer[dataArr.length]; int i = 0; for (String data : dataArr) { - valueArr[i++] = Integer.parseInt(data); + valueArr[i++] = "null".equals(data.trim()) ? null : Integer.parseInt(data); } return valueArr; } @@ -233,7 +288,7 @@ public class JdbcToArrowTestHelper { Boolean[] valueArr = new Boolean[dataArr.length]; int i = 0; for (String data : dataArr) { - valueArr[i++] = data.trim().equals("1"); + valueArr[i++] = "null".equals(data.trim()) ? null : data.trim().equals("1"); } return valueArr; } @@ -243,7 +298,7 @@ public class JdbcToArrowTestHelper { BigDecimal[] valueArr = new BigDecimal[dataArr.length]; int i = 0; for (String data : dataArr) { - valueArr[i++] = new BigDecimal(data); + valueArr[i++] = "null".equals(data.trim()) ? null : new BigDecimal(data); } return valueArr; } @@ -253,7 +308,7 @@ public class JdbcToArrowTestHelper { Double[] valueArr = new Double[dataArr.length]; int i = 0; for (String data : dataArr) { - valueArr[i++] = Double.parseDouble(data); + valueArr[i++] = "null".equals(data.trim()) ? null : Double.parseDouble(data); } return valueArr; } @@ -263,7 +318,7 @@ public class JdbcToArrowTestHelper { Float[] valueArr = new Float[dataArr.length]; int i = 0; for (String data : dataArr) { - valueArr[i++] = Float.parseFloat(data); + valueArr[i++] = "null".equals(data.trim()) ? null : Float.parseFloat(data); } return valueArr; } @@ -273,7 +328,7 @@ public class JdbcToArrowTestHelper { Long[] valueArr = new Long[dataArr.length]; int i = 0; for (String data : dataArr) { - valueArr[i++] = Long.parseLong(data); + valueArr[i++] = "null".equals(data.trim()) ? null : Long.parseLong(data); } return valueArr; } @@ -283,7 +338,7 @@ public class JdbcToArrowTestHelper { byte[][] valueArr = new byte[dataArr.length][]; int i = 0; for (String data : dataArr) { - valueArr[i++] = data.trim().getBytes(); + valueArr[i++] = "null".equals(data.trim()) ? null : data.trim().getBytes(); } return valueArr; } @@ -293,7 +348,7 @@ public class JdbcToArrowTestHelper { byte[][] valueArr = new byte[dataArr.length][]; int i = 0; for (String data : dataArr) { - valueArr[i++] = data.trim().getBytes(charSet); + valueArr[i++] = "null".equals(data.trim()) ? null : data.trim().getBytes(charSet); } return valueArr; } @@ -303,7 +358,7 @@ public class JdbcToArrowTestHelper { byte[][] valueArr = new byte[dataArr.length][]; int i = 0; for (String data : dataArr) { - valueArr[i++] = hexStringToByteArray(data.trim()); + valueArr[i++] = "null".equals(data.trim()) ? null : hexStringToByteArray(data.trim()); } return valueArr; } diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowCharSetTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowCharSetTest.java index 3629c4b..f4c78d0 100644 --- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowCharSetTest.java +++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowCharSetTest.java @@ -53,9 +53,6 @@ import org.junit.runners.Parameterized.Parameters; */ @RunWith(Parameterized.class) public class JdbcToArrowCharSetTest extends AbstractJdbcToArrowTest { - private static final String VARCHAR = "VARCHAR_FIELD13"; - private static final String CHAR = "CHAR_FIELD16"; - private static final String CLOB = "CLOB_FIELD15"; private static final String[] testFiles = { "h2/test1_charset_h2.yml", diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowNullTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowNullTest.java index 04916e0..199b821 100644 --- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowNullTest.java +++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowNullTest.java @@ -17,7 +17,29 @@ package org.apache.arrow.adapter.jdbc.h2; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertBigIntVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertBitVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertBooleanVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertDateVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertDecimalVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertFloat4VectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertFloat8VectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertIntVectorValues; import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertNullValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertSmallIntVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertTimeStampVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertTimeVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertTinyIntVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertVarBinaryVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.assertVarcharVectorValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.getBinaryValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.getBooleanValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.getCharArray; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.getDecimalValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.getDoubleValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.getFloatValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.getIntValues; +import static org.apache.arrow.adapter.jdbc.JdbcToArrowTestHelper.getLongValues; import java.io.IOException; import java.sql.ResultSetMetaData; @@ -62,11 +84,13 @@ import org.junit.runners.Parameterized.Parameters; public class JdbcToArrowNullTest extends AbstractJdbcToArrowTest { private static final String NULL = "null"; + private static final String SELECTED_NULL_ROW = "selected_null_row"; private static final String SELECTED_NULL_COLUMN = "selected_null_column"; private static final String[] testFiles = { "h2/test1_all_datatypes_null_h2.yml", - "h2/test1_selected_datatypes_null_h2.yml" + "h2/test1_selected_datatypes_null_h2.yml", + "h2/test1_all_datatypes_selected_null_rows_h2.yml" }; /** @@ -137,12 +161,70 @@ public class JdbcToArrowNullTest extends AbstractJdbcToArrowTest { case SELECTED_NULL_COLUMN: sqlToArrowTestSelectedNullColumnsValues(table.getVectors(), root, table.getRowCount()); break; + case SELECTED_NULL_ROW: + testAllVectorValues(root); + break; default: // do nothing break; } } + private void testAllVectorValues(VectorSchemaRoot root) { + JdbcToArrowTestHelper.assertFieldMetadataIsEmpty(root); + + assertBigIntVectorValues((BigIntVector) root.getVector(BIGINT), table.getRowCount(), + getLongValues(table.getValues(), BIGINT)); + + assertTinyIntVectorValues((TinyIntVector) root.getVector(TINYINT), table.getRowCount(), + getIntValues(table.getValues(), TINYINT)); + + assertSmallIntVectorValues((SmallIntVector) root.getVector(SMALLINT), table.getRowCount(), + getIntValues(table.getValues(), SMALLINT)); + + assertVarBinaryVectorValues((VarBinaryVector) root.getVector(BINARY), table.getRowCount(), + getBinaryValues(table.getValues(), BINARY)); + + assertVarBinaryVectorValues((VarBinaryVector) root.getVector(BLOB), table.getRowCount(), + getBinaryValues(table.getValues(), BLOB)); + + assertVarcharVectorValues((VarCharVector) root.getVector(CLOB), table.getRowCount(), + getCharArray(table.getValues(), CLOB)); + + assertVarcharVectorValues((VarCharVector) root.getVector(VARCHAR), table.getRowCount(), + getCharArray(table.getValues(), VARCHAR)); + + assertVarcharVectorValues((VarCharVector) root.getVector(CHAR), table.getRowCount(), + getCharArray(table.getValues(), CHAR)); + + assertIntVectorValues((IntVector) root.getVector(INT), table.getRowCount(), + getIntValues(table.getValues(), INT)); + + assertBitVectorValues((BitVector) root.getVector(BIT), table.getRowCount(), + getIntValues(table.getValues(), BIT)); + + assertBooleanVectorValues((BitVector) root.getVector(BOOL), table.getRowCount(), + getBooleanValues(table.getValues(), BOOL)); + + assertDateVectorValues((DateMilliVector) root.getVector(DATE), table.getRowCount(), + getLongValues(table.getValues(), DATE)); + + assertTimeVectorValues((TimeMilliVector) root.getVector(TIME), table.getRowCount(), + getLongValues(table.getValues(), TIME)); + + assertTimeStampVectorValues((TimeStampVector) root.getVector(TIMESTAMP), table.getRowCount(), + getLongValues(table.getValues(), TIMESTAMP)); + + assertDecimalVectorValues((DecimalVector) root.getVector(DECIMAL), table.getRowCount(), + getDecimalValues(table.getValues(), DECIMAL)); + + assertFloat8VectorValues((Float8Vector) root.getVector(DOUBLE), table.getRowCount(), + getDoubleValues(table.getValues(), DOUBLE)); + + assertFloat4VectorValues((Float4Vector) root.getVector(REAL), table.getRowCount(), + getFloatValues(table.getValues(), REAL)); + } + /** * This method assert tests null values in vectors for all the datatypes. * diff --git a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java index 1aa961f..4fa289d 100644 --- a/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java +++ b/java/adapter/jdbc/src/test/java/org/apache/arrow/adapter/jdbc/h2/JdbcToArrowTest.java @@ -103,24 +103,6 @@ import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class JdbcToArrowTest extends AbstractJdbcToArrowTest { - protected static final String BIGINT = "BIGINT_FIELD5"; - protected static final String BINARY = "BINARY_FIELD12"; - protected static final String BIT = "BIT_FIELD17"; - protected static final String BLOB = "BLOB_FIELD14"; - protected static final String BOOL = "BOOL_FIELD2"; - protected static final String CHAR = "CHAR_FIELD16"; - protected static final String CLOB = "CLOB_FIELD15"; - protected static final String DATE = "DATE_FIELD10"; - protected static final String DECIMAL = "DECIMAL_FIELD6"; - protected static final String DOUBLE = "DOUBLE_FIELD7"; - protected static final String INT = "INT_FIELD1"; - protected static final String REAL = "REAL_FIELD8"; - protected static final String SMALLINT = "SMALLINT_FIELD4"; - protected static final String TIME = "TIME_FIELD9"; - protected static final String TIMESTAMP = "TIMESTAMP_FIELD11"; - protected static final String TINYINT = "TINYINT_FIELD3"; - protected static final String VARCHAR = "VARCHAR_FIELD13"; - private static final String[] testFiles = {"h2/test1_all_datatypes_h2.yml"}; /** @@ -237,7 +219,6 @@ public class JdbcToArrowTest extends AbstractJdbcToArrowTest { getFloatValues(table.getValues(), REAL)); } - @Test public void runLargeNumberOfRows() throws IOException, SQLException { RootAllocator allocator = new RootAllocator(Integer.MAX_VALUE); diff --git a/java/adapter/jdbc/src/test/resources/h2/test1_all_datatypes_selected_null_rows_h2.yml b/java/adapter/jdbc/src/test/resources/h2/test1_all_datatypes_selected_null_rows_h2.yml new file mode 100644 index 0000000..bb9bfb8 --- /dev/null +++ b/java/adapter/jdbc/src/test/resources/h2/test1_all_datatypes_selected_null_rows_h2.yml @@ -0,0 +1,83 @@ +#Licensed to the Apache Software Foundation (ASF) under one or more contributor +#license agreements. See the NOTICE file distributed with this work for additional +#information regarding copyright ownership. The ASF licenses this file to +#You under the Apache License, Version 2.0 (the "License"); you may not use +#this file except in compliance with the License. You may obtain a copy of +#the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required +#by applicable law or agreed to in writing, software distributed under the +#License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS +#OF ANY KIND, either express or implied. See the License for the specific +#language governing permissions and limitations under the License. + +name: 'table1' + +type: 'selected_null_row' + +vectors: + - 'INT_FIELD1' + - 'BOOL_FIELD2' + - 'TINYINT_FIELD3' + - 'SMALLINT_FIELD4' + - 'BIGINT_FIELD5' + - 'DECIMAL_FIELD6' + - 'DOUBLE_FIELD7' + - 'REAL_FIELD8' + - 'TIME_FIELD9' + - 'DATE_FIELD10' + - 'TIMESTAMP_FIELD11' + - 'BINARY_FIELD12' + - 'VARCHAR_FIELD13' + - 'BLOB_FIELD14' + - 'CLOB_FIELD15' + - 'CHAR_FIELD16' + - 'BIT_FIELD17' + +create: 'CREATE TABLE table1 (int_field1 INT, bool_field2 BOOLEAN, tinyint_field3 TINYINT, smallint_field4 SMALLINT, bigint_field5 BIGINT, + decimal_field6 DECIMAL(20,2), double_field7 DOUBLE, real_field8 REAL, time_field9 TIME, date_field10 DATE, timestamp_field11 TIMESTAMP, + binary_field12 BINARY(100), varchar_field13 VARCHAR(256), blob_field14 BLOB, clob_field15 CLOB, char_field16 CHAR(16), bit_field17 BIT);' + +data: + - 'INSERT INTO table1 VALUES (null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);' + + - 'INSERT INTO table1 VALUES (101, 1, 45, 12000, 92233720, 17345667789.23, 56478356785.345, 56478356785.345, PARSEDATETIME(''12:45:35 GMT'', ''HH:mm:ss z''), + PARSEDATETIME(''2018-02-12 GMT'', ''yyyy-MM-dd z''), PARSEDATETIME(''2018-02-12 12:45:35 GMT'', ''yyyy-MM-dd HH:mm:ss z''), + ''736f6d6520746578742074686174206e6565647320746f20626520636f6e76657274656420746f2062696e617279'', ''some text that needs to be converted to varchar'', + ''736f6d6520746578742074686174206e6565647320746f20626520636f6e76657274656420746f2062696e617279'', ''some text that needs to be converted to clob'', ''some char text'', 1);' + + - 'INSERT INTO table1 VALUES (null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);' + + - 'INSERT INTO table1 VALUES (101, 1, 45, 12000, 92233720, 17345667789.23, 56478356785.345, 56478356785.345, PARSEDATETIME(''12:45:35 GMT'', ''HH:mm:ss z''), + PARSEDATETIME(''2018-02-12 GMT'', ''yyyy-MM-dd z''), PARSEDATETIME(''2018-02-12 12:45:35 GMT'', ''yyyy-MM-dd HH:mm:ss z''), + ''736f6d6520746578742074686174206e6565647320746f20626520636f6e76657274656420746f2062696e617279'', ''some text that needs to be converted to varchar'', + ''736f6d6520746578742074686174206e6565647320746f20626520636f6e76657274656420746f2062696e617279'', ''some text that needs to be converted to clob'', ''some char text'', 1);' + + - 'INSERT INTO table1 VALUES (null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);' + +query: 'select int_field1, bool_field2, tinyint_field3, smallint_field4, bigint_field5, decimal_field6, double_field7, real_field8, + time_field9, date_field10, timestamp_field11, binary_field12, varchar_field13, blob_field14, clob_field15, char_field16, bit_field17 from table1' + +drop: 'DROP table table1;' + +rowCount: '5' + +values: + - 'INT_FIELD1=null,101,null,101,null' + - 'BOOL_FIELD2=null,1,null,1,null' + - 'BIT_FIELD17=null,1,null,1,null' + - 'TINYINT_FIELD3=null,45,null,45,null' + - 'SMALLINT_FIELD4=null,12000,null,12000,null' + - 'BIGINT_FIELD5=null,92233720,null,92233720,null' + - 'REAL_FIELD8=null,56478356785.345f,null,56478356785.345f,null' + - 'DECIMAL_FIELD6=null,17345667789.23,null,17345667789.23,null' + - 'DOUBLE_FIELD7=null,56478356785.345,null,56478356785.345,null' + - 'TIME_FIELD9=null,45935000,null,45935000,null' + - 'DATE_FIELD10=null,1518393600000,null,1518393600000,null' + - 'TIMESTAMP_FIELD11=null,1518439535000,null,1518439535000,null' + - 'CHAR_FIELD16=null,some char text,null,some char text,null' + - 'VARCHAR_FIELD13=null,some text that needs to be converted to varchar,null, + some text that needs to be converted to varchar,null' + - 'BINARY_FIELD12=null,736f6d6520746578742074686174206e6565647320746f20626520636f6e76657274656420746f2062696e617279, + null,736f6d6520746578742074686174206e6565647320746f20626520636f6e76657274656420746f2062696e617279,null' + - 'BLOB_FIELD14=null,736f6d6520746578742074686174206e6565647320746f20626520636f6e76657274656420746f2062696e617279, + null,736f6d6520746578742074686174206e6565647320746f20626520636f6e76657274656420746f2062696e617279,null' + - 'CLOB_FIELD15=null,some text that needs to be converted to clob,null,some text that needs to be converted to clob,null'