Repository: phoenix Updated Branches: refs/heads/omid2 24ffcf5c8 -> 0ce663c53
Revert "PHOENIX-4874 psql doesn't support date/time with values smaller than milliseconds(Rajeshbabu)" This reverts commit 34b8fe86b40f6cc2a05395640044e9dd7e1a1a8f. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/0ce663c5 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/0ce663c5 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/0ce663c5 Branch: refs/heads/omid2 Commit: 0ce663c53089efa9821a4423fb973b274ef67638 Parents: 24ffcf5 Author: James Taylor <jamestay...@lyft.com> Authored: Mon Oct 15 15:56:20 2018 -0700 Committer: James Taylor <jamestay...@lyft.com> Committed: Mon Oct 15 15:56:20 2018 -0700 ---------------------------------------------------------------------- .../phoenix/util/csv/CsvUpsertExecutor.java | 20 +++----- .../phoenix/util/json/JsonUpsertExecutor.java | 3 -- .../util/AbstractUpsertExecutorTest.java | 51 +++++--------------- 3 files changed, 20 insertions(+), 54 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/0ce663c5/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java b/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java index d2529f7..cd40b44 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java @@ -20,7 +20,6 @@ package org.apache.phoenix.util.csv; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; -import java.sql.Timestamp; import java.sql.Types; import java.util.List; import java.util.Properties; @@ -31,7 +30,6 @@ import org.apache.commons.csv.CSVRecord; import org.apache.hadoop.hbase.util.Base64; import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.expression.function.EncodeFormat; -import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.query.QueryServices; import org.apache.phoenix.query.QueryServicesOptions; import org.apache.phoenix.schema.IllegalDataException; @@ -43,7 +41,6 @@ import org.apache.phoenix.schema.types.PTimestamp; import org.apache.phoenix.schema.types.PVarbinary; import org.apache.phoenix.util.ColumnInfo; import org.apache.phoenix.util.DateUtil; -import org.apache.phoenix.util.ReadOnlyProps; import org.apache.phoenix.util.UpsertExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -128,9 +125,9 @@ public class CsvUpsertExecutor extends UpsertExecutor<CSVRecord, String> { private final String binaryEncoding; SimpleDatatypeConversionFunction(PDataType dataType, Connection conn) { - ReadOnlyProps props; + Properties props; try { - props = conn.unwrap(PhoenixConnection.class).getQueryServices().getProps(); + props = conn.getClientInfo(); } catch (SQLException e) { throw new RuntimeException(e); } @@ -142,23 +139,23 @@ public class CsvUpsertExecutor extends UpsertExecutor<CSVRecord, String> { String dateFormat; int dateSqlType = dataType.getResultSetSqlType(); if (dateSqlType == Types.DATE) { - dateFormat = props.get(QueryServices.DATE_FORMAT_ATTRIB, + dateFormat = props.getProperty(QueryServices.DATE_FORMAT_ATTRIB, DateUtil.DEFAULT_DATE_FORMAT); } else if (dateSqlType == Types.TIME) { - dateFormat = props.get(QueryServices.TIME_FORMAT_ATTRIB, + dateFormat = props.getProperty(QueryServices.TIME_FORMAT_ATTRIB, DateUtil.DEFAULT_TIME_FORMAT); } else { - dateFormat = props.get(QueryServices.TIMESTAMP_FORMAT_ATTRIB, + dateFormat = props.getProperty(QueryServices.TIMESTAMP_FORMAT_ATTRIB, DateUtil.DEFAULT_TIMESTAMP_FORMAT); } - String timeZoneId = props.get(QueryServices.DATE_FORMAT_TIMEZONE_ATTRIB, + String timeZoneId = props.getProperty(QueryServices.DATE_FORMAT_TIMEZONE_ATTRIB, QueryServicesOptions.DEFAULT_DATE_FORMAT_TIMEZONE); this.dateTimeParser = DateUtil.getDateTimeParser(dateFormat, dataType, timeZoneId); } else { this.dateTimeParser = null; } this.codec = codec; - this.binaryEncoding = props.get(QueryServices.UPLOAD_BINARY_DATA_TYPE_ENCODING, + this.binaryEncoding = props.getProperty(QueryServices.UPLOAD_BINARY_DATA_TYPE_ENCODING, QueryServicesOptions.DEFAULT_UPLOAD_BINARY_DATA_TYPE_ENCODING); } @@ -168,9 +165,6 @@ public class CsvUpsertExecutor extends UpsertExecutor<CSVRecord, String> { if (input == null || input.isEmpty()) { return null; } - if (dataType == PTimestamp.INSTANCE) { - return DateUtil.parseTimestamp(input); - } if (dateTimeParser != null) { long epochTime = dateTimeParser.parseDateTime(input); byte[] byteValue = new byte[dataType.getByteSize()]; http://git-wip-us.apache.org/repos/asf/phoenix/blob/0ce663c5/phoenix-core/src/main/java/org/apache/phoenix/util/json/JsonUpsertExecutor.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/json/JsonUpsertExecutor.java b/phoenix-core/src/main/java/org/apache/phoenix/util/json/JsonUpsertExecutor.java index fa14079..ffa797d 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/util/json/JsonUpsertExecutor.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/util/json/JsonUpsertExecutor.java @@ -185,9 +185,6 @@ public class JsonUpsertExecutor extends UpsertExecutor<Map<?, ?>, Object> { if (input == null) { return null; } - if (dataType == PTimestamp.INSTANCE) { - return DateUtil.parseTimestamp(input.toString()); - } if (dateTimeParser != null && input instanceof String) { final String s = (String) input; long epochTime = dateTimeParser.parseDateTime(s); http://git-wip-us.apache.org/repos/asf/phoenix/blob/0ce663c5/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java b/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java index 3ea997b..2b2544d 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java @@ -25,20 +25,13 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import java.io.IOException; import java.sql.Connection; -import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; -import java.sql.Timestamp; import java.sql.Types; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatterBuilder; import java.util.Arrays; import java.util.List; import java.util.Properties; -import java.util.TimeZone; import org.apache.hadoop.hbase.util.Base64; import org.apache.hadoop.hbase.util.Bytes; @@ -48,7 +41,6 @@ import org.apache.phoenix.schema.types.PArrayDataType; import org.apache.phoenix.schema.types.PBinary; import org.apache.phoenix.schema.types.PInteger; import org.apache.phoenix.schema.types.PIntegerArray; -import org.apache.phoenix.schema.types.PTimestamp; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -65,8 +57,6 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles protected abstract UpsertExecutor<R, F> getUpsertExecutor(); protected abstract R createRecord(Object... columnValues) throws IOException; protected abstract UpsertExecutor<R, F> getUpsertExecutor(Connection conn); - - private static String TIMESTAMP_WITH_NANOS = "2006-11-03 00:00:00.001003000"; @Before public void setUp() throws SQLException { @@ -76,14 +66,11 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles new ColumnInfo("AGE", Types.INTEGER), new ColumnInfo("VALUES", PIntegerArray.INSTANCE.getSqlType()), new ColumnInfo("BEARD", Types.BOOLEAN), - new ColumnInfo("PIC", Types.BINARY), - new ColumnInfo("T", Types.TIMESTAMP)); + new ColumnInfo("PIC", Types.BINARY)); preparedStatement = mock(PreparedStatement.class); upsertListener = mock(UpsertExecutor.UpsertListener.class); - Properties properties = new Properties(); - properties.setProperty("phoenix.query.dateFormatTimeZone", DateUtil.DEFAULT_TIME_ZONE_ID); - conn = DriverManager.getConnection(getUrl(), properties); + conn = DriverManager.getConnection(getUrl()); } @After @@ -95,9 +82,8 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles public void testExecute() throws Exception { byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Base64.encodeBytes(binaryData); - getUpsertExecutor().execute( - createRecord(123L, "NameValue", 42, Arrays.asList(1, 2, 3), true, encodedBinaryData, - Timestamp.valueOf(TIMESTAMP_WITH_NANOS))); + getUpsertExecutor().execute(createRecord(123L, "NameValue", 42, + Arrays.asList(1, 2, 3), true, encodedBinaryData)); verify(upsertListener).upsertDone(1L); verifyNoMoreInteractions(upsertListener); @@ -108,7 +94,6 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles verify(preparedStatement).setObject(4, PArrayDataType.instantiatePhoenixArray(PInteger.INSTANCE, new Object[]{1,2,3})); verify(preparedStatement).setObject(5, Boolean.TRUE); verify(preparedStatement).setObject(6, binaryData); - verify(preparedStatement).setObject(7, DateUtil.parseTimestamp(TIMESTAMP_WITH_NANOS)); verify(preparedStatement).execute(); verifyNoMoreInteractions(preparedStatement); } @@ -127,7 +112,7 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Base64.encodeBytes(binaryData); R recordWithTooManyFields = createRecord(123L, "NameValue", 42, Arrays.asList(1, 2, 3), - true, encodedBinaryData, Timestamp.valueOf(TIMESTAMP_WITH_NANOS), "garbage"); + true, encodedBinaryData, "garbage"); getUpsertExecutor().execute(recordWithTooManyFields); verify(upsertListener).upsertDone(1L); @@ -139,7 +124,6 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles verify(preparedStatement).setObject(4, PArrayDataType.instantiatePhoenixArray(PInteger.INSTANCE, new Object[]{1,2,3})); verify(preparedStatement).setObject(5, Boolean.TRUE); verify(preparedStatement).setObject(6, binaryData); - verify(preparedStatement).setObject(7, DateUtil.parseTimestamp(TIMESTAMP_WITH_NANOS)); verify(preparedStatement).execute(); verifyNoMoreInteractions(preparedStatement); } @@ -148,9 +132,8 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles public void testExecute_NullField() throws Exception { byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Base64.encodeBytes(binaryData); - getUpsertExecutor().execute( - createRecord(123L, "NameValue", null, Arrays.asList(1, 2, 3), false, encodedBinaryData, - Timestamp.valueOf(TIMESTAMP_WITH_NANOS))); + getUpsertExecutor().execute(createRecord(123L, "NameValue", null, + Arrays.asList(1, 2, 3), false, encodedBinaryData)); verify(upsertListener).upsertDone(1L); verifyNoMoreInteractions(upsertListener); @@ -161,7 +144,6 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles verify(preparedStatement).setObject(4, PArrayDataType.instantiatePhoenixArray(PInteger.INSTANCE, new Object[]{1,2,3})); verify(preparedStatement).setObject(5, Boolean.FALSE); verify(preparedStatement).setObject(6, binaryData); - verify(preparedStatement).setObject(7, DateUtil.parseTimestamp(TIMESTAMP_WITH_NANOS)); verify(preparedStatement).execute(); verifyNoMoreInteractions(preparedStatement); } @@ -170,9 +152,8 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles public void testExecute_InvalidType() throws Exception { byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Base64.encodeBytes(binaryData); - R recordWithInvalidType = - createRecord(123L, "NameValue", "ThisIsNotANumber", Arrays.asList(1, 2, 3), true, - encodedBinaryData, Timestamp.valueOf(TIMESTAMP_WITH_NANOS)); + R recordWithInvalidType = createRecord(123L, "NameValue", "ThisIsNotANumber", + Arrays.asList(1, 2, 3), true, encodedBinaryData); getUpsertExecutor().execute(recordWithInvalidType); verify(upsertListener).errorOnRecord(eq(recordWithInvalidType), any(Throwable.class)); @@ -183,9 +164,7 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles public void testExecute_InvalidBoolean() throws Exception { byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Base64.encodeBytes(binaryData); - R csvRecordWithInvalidType = - createRecord("123,NameValue,42,1:2:3,NotABoolean," + encodedBinaryData + "," - + TIMESTAMP_WITH_NANOS); + R csvRecordWithInvalidType = createRecord("123,NameValue,42,1:2:3,NotABoolean,"+encodedBinaryData); getUpsertExecutor().execute(csvRecordWithInvalidType); verify(upsertListener).errorOnRecord(eq(csvRecordWithInvalidType), any(Throwable.class)); @@ -194,9 +173,7 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles @Test public void testExecute_InvalidBinary() throws Exception { String notBase64Encoded="#@$df"; - R csvRecordWithInvalidType = - createRecord("123,NameValue,42,1:2:3,true," + notBase64Encoded + "," - + TIMESTAMP_WITH_NANOS); + R csvRecordWithInvalidType = createRecord("123,NameValue,42,1:2:3,true,"+notBase64Encoded); getUpsertExecutor().execute(csvRecordWithInvalidType); verify(upsertListener).errorOnRecord(eq(csvRecordWithInvalidType), any(Throwable.class)); @@ -207,9 +184,8 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles String asciiValue="#@$df"; Properties info=new Properties(); info.setProperty(QueryServices.UPLOAD_BINARY_DATA_TYPE_ENCODING,"ASCII"); - getUpsertExecutor(DriverManager.getConnection(getUrl(), info)).execute( - createRecord(123L, "NameValue", 42, Arrays.asList(1, 2, 3), true, asciiValue, - Timestamp.valueOf(TIMESTAMP_WITH_NANOS))); + getUpsertExecutor(DriverManager.getConnection(getUrl(),info)).execute(createRecord(123L, "NameValue", 42, + Arrays.asList(1, 2, 3), true, asciiValue)); verify(upsertListener).upsertDone(1L); verifyNoMoreInteractions(upsertListener); @@ -220,7 +196,6 @@ public abstract class AbstractUpsertExecutorTest<R, F> extends BaseConnectionles verify(preparedStatement).setObject(4, PArrayDataType.instantiatePhoenixArray(PInteger.INSTANCE, new Object[]{1,2,3})); verify(preparedStatement).setObject(5, Boolean.TRUE); verify(preparedStatement).setObject(6, Bytes.toBytes(asciiValue)); - verify(preparedStatement).setObject(7, DateUtil.parseTimestamp(TIMESTAMP_WITH_NANOS)); verify(preparedStatement).execute(); verifyNoMoreInteractions(preparedStatement); }