[2/3] phoenix git commit: PHOENIX-2734 Literal expressions for UNSIGNED_DATE/UNSIGNED_TIME/etc (Sergey Soldatov)
PHOENIX-2734 Literal expressions for UNSIGNED_DATE/UNSIGNED_TIME/etc (Sergey Soldatov) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/c636504e Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/c636504e Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/c636504e Branch: refs/heads/4.x-HBase-1.0 Commit: c636504ed53f24a4aa2bef9def14d6fd439d66d1 Parents: 308e282 Author: James TaylorAuthored: Mon Mar 28 08:22:37 2016 -0700 Committer: James Taylor Committed: Mon Mar 28 09:56:57 2016 -0700 -- .../org/apache/phoenix/end2end/DateTimeIT.java | 20 .../phoenix/expression/LiteralExpression.java | 12 2 files changed, 24 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/c636504e/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java index e87d8d4..af8f0c1 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java @@ -513,6 +513,26 @@ public class DateTimeIT extends BaseHBaseManagedTimeIT { } @Test +public void testUnsignedTimeDateWithLiteral() throws Exception { +String ddl = +"CREATE TABLE IF NOT EXISTS UT (k1 INTEGER NOT NULL," + +"unsignedDates UNSIGNED_DATE, unsignedTimestamps UNSIGNED_TIMESTAMP, unsignedTimes UNSIGNED_TIME CONSTRAINT pk PRIMARY KEY (k1))"; +conn.createStatement().execute(ddl); +String dml = "UPSERT INTO UT VALUES (1, " + +"'2010-06-20 12:00:00', '2012-07-28 12:00:00', '2015-12-25 12:00:00')"; +conn.createStatement().execute(dml); +conn.commit(); + +ResultSet rs = conn.createStatement().executeQuery("SELECT k1, unsignedDates, " + +"unsignedTimestamps, unsignedTimes FROM UT where k1 = 1"); +assertTrue(rs.next()); +assertEquals(DateUtil.parseDate("2010-06-20 12:00:00"), rs.getDate(2)); +assertEquals(DateUtil.parseTimestamp("2012-07-28 12:00:00"), rs.getTimestamp(3)); +assertEquals(DateUtil.parseTime("2015-12-25 12:00:00"), rs.getTime(4)); +assertFalse(rs.next()); +} + +@Test public void testSecondFuncAgainstColumns() throws Exception { String ddl = "CREATE TABLE IF NOT EXISTS T1 (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME, " + http://git-wip-us.apache.org/repos/asf/phoenix/blob/c636504e/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java index ad1c7c0..90882a2 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java @@ -25,6 +25,7 @@ import java.sql.SQLException; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.io.WritableUtils; import org.apache.phoenix.expression.visitor.ExpressionVisitor; +import org.apache.phoenix.schema.IllegalDataException; import org.apache.phoenix.schema.SortOrder; import org.apache.phoenix.schema.TypeMismatchException; import org.apache.phoenix.schema.tuple.Tuple; @@ -182,16 +183,11 @@ public class LiteralExpression extends BaseTerminalExpression { return getBooleanLiteralExpression((Boolean)value, determinism); } PDataType actualType = PDataType.fromLiteral(value); -// For array we should check individual element in it? -// It would be costly though! -// UpsertStatement can try to cast varchar to date type but PVarchar can't CoercibleTo Date or Timestamp -// otherwise TO_NUMBER like functions will fail -if (!actualType.isCoercibleTo(type, value) && -(!actualType.equals(PVarchar.INSTANCE) || -!(type.equals(PDate.INSTANCE) || type.equals(PTimestamp.INSTANCE) || type.equals(PTime.INSTANCE { +try { +value = type.toObject(value, actualType); +} catch (IllegalDataException e) { throw TypeMismatchException.newException(type, actualType, value.toString()); } -value = type.toObject(value, actualType); byte[] b = type.isArrayType() ?
[2/3] phoenix git commit: PHOENIX-2734 Literal expressions for UNSIGNED_DATE/UNSIGNED_TIME/etc (Sergey Soldatov)
PHOENIX-2734 Literal expressions for UNSIGNED_DATE/UNSIGNED_TIME/etc (Sergey Soldatov) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/338436b6 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/338436b6 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/338436b6 Branch: refs/heads/4.x-HBase-0.98 Commit: 338436b6dbca88038fdd25b14fcd90c06b13d1d3 Parents: a62cde7 Author: James TaylorAuthored: Mon Mar 28 08:22:37 2016 -0700 Committer: James Taylor Committed: Mon Mar 28 09:05:14 2016 -0700 -- .../org/apache/phoenix/end2end/DateTimeIT.java | 20 .../phoenix/expression/LiteralExpression.java | 12 2 files changed, 24 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/338436b6/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java index e87d8d4..af8f0c1 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java @@ -513,6 +513,26 @@ public class DateTimeIT extends BaseHBaseManagedTimeIT { } @Test +public void testUnsignedTimeDateWithLiteral() throws Exception { +String ddl = +"CREATE TABLE IF NOT EXISTS UT (k1 INTEGER NOT NULL," + +"unsignedDates UNSIGNED_DATE, unsignedTimestamps UNSIGNED_TIMESTAMP, unsignedTimes UNSIGNED_TIME CONSTRAINT pk PRIMARY KEY (k1))"; +conn.createStatement().execute(ddl); +String dml = "UPSERT INTO UT VALUES (1, " + +"'2010-06-20 12:00:00', '2012-07-28 12:00:00', '2015-12-25 12:00:00')"; +conn.createStatement().execute(dml); +conn.commit(); + +ResultSet rs = conn.createStatement().executeQuery("SELECT k1, unsignedDates, " + +"unsignedTimestamps, unsignedTimes FROM UT where k1 = 1"); +assertTrue(rs.next()); +assertEquals(DateUtil.parseDate("2010-06-20 12:00:00"), rs.getDate(2)); +assertEquals(DateUtil.parseTimestamp("2012-07-28 12:00:00"), rs.getTimestamp(3)); +assertEquals(DateUtil.parseTime("2015-12-25 12:00:00"), rs.getTime(4)); +assertFalse(rs.next()); +} + +@Test public void testSecondFuncAgainstColumns() throws Exception { String ddl = "CREATE TABLE IF NOT EXISTS T1 (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME, " + http://git-wip-us.apache.org/repos/asf/phoenix/blob/338436b6/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java index ad1c7c0..90882a2 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java @@ -25,6 +25,7 @@ import java.sql.SQLException; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.io.WritableUtils; import org.apache.phoenix.expression.visitor.ExpressionVisitor; +import org.apache.phoenix.schema.IllegalDataException; import org.apache.phoenix.schema.SortOrder; import org.apache.phoenix.schema.TypeMismatchException; import org.apache.phoenix.schema.tuple.Tuple; @@ -182,16 +183,11 @@ public class LiteralExpression extends BaseTerminalExpression { return getBooleanLiteralExpression((Boolean)value, determinism); } PDataType actualType = PDataType.fromLiteral(value); -// For array we should check individual element in it? -// It would be costly though! -// UpsertStatement can try to cast varchar to date type but PVarchar can't CoercibleTo Date or Timestamp -// otherwise TO_NUMBER like functions will fail -if (!actualType.isCoercibleTo(type, value) && -(!actualType.equals(PVarchar.INSTANCE) || -!(type.equals(PDate.INSTANCE) || type.equals(PTimestamp.INSTANCE) || type.equals(PTime.INSTANCE { +try { +value = type.toObject(value, actualType); +} catch (IllegalDataException e) { throw TypeMismatchException.newException(type, actualType, value.toString()); } -value = type.toObject(value, actualType); byte[] b = type.isArrayType() ?
[2/3] phoenix git commit: PHOENIX-2734 Literal expressions for UNSIGNED_DATE/UNSIGNED_TIME/etc (Sergey Soldatov)
PHOENIX-2734 Literal expressions for UNSIGNED_DATE/UNSIGNED_TIME/etc (Sergey Soldatov) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/d4d973c7 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/d4d973c7 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/d4d973c7 Branch: refs/heads/master Commit: d4d973c7b9fd5bb6bd206c9082c4c6d53e54c59b Parents: bea110c Author: James TaylorAuthored: Mon Mar 28 08:22:37 2016 -0700 Committer: James Taylor Committed: Mon Mar 28 08:22:37 2016 -0700 -- .../org/apache/phoenix/end2end/DateTimeIT.java | 20 .../phoenix/expression/LiteralExpression.java | 12 2 files changed, 24 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/d4d973c7/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java index e87d8d4..af8f0c1 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DateTimeIT.java @@ -513,6 +513,26 @@ public class DateTimeIT extends BaseHBaseManagedTimeIT { } @Test +public void testUnsignedTimeDateWithLiteral() throws Exception { +String ddl = +"CREATE TABLE IF NOT EXISTS UT (k1 INTEGER NOT NULL," + +"unsignedDates UNSIGNED_DATE, unsignedTimestamps UNSIGNED_TIMESTAMP, unsignedTimes UNSIGNED_TIME CONSTRAINT pk PRIMARY KEY (k1))"; +conn.createStatement().execute(ddl); +String dml = "UPSERT INTO UT VALUES (1, " + +"'2010-06-20 12:00:00', '2012-07-28 12:00:00', '2015-12-25 12:00:00')"; +conn.createStatement().execute(dml); +conn.commit(); + +ResultSet rs = conn.createStatement().executeQuery("SELECT k1, unsignedDates, " + +"unsignedTimestamps, unsignedTimes FROM UT where k1 = 1"); +assertTrue(rs.next()); +assertEquals(DateUtil.parseDate("2010-06-20 12:00:00"), rs.getDate(2)); +assertEquals(DateUtil.parseTimestamp("2012-07-28 12:00:00"), rs.getTimestamp(3)); +assertEquals(DateUtil.parseTime("2015-12-25 12:00:00"), rs.getTime(4)); +assertFalse(rs.next()); +} + +@Test public void testSecondFuncAgainstColumns() throws Exception { String ddl = "CREATE TABLE IF NOT EXISTS T1 (k1 INTEGER NOT NULL, dates DATE, timestamps TIMESTAMP, times TIME, " + http://git-wip-us.apache.org/repos/asf/phoenix/blob/d4d973c7/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java index ad1c7c0..90882a2 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java @@ -25,6 +25,7 @@ import java.sql.SQLException; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.io.WritableUtils; import org.apache.phoenix.expression.visitor.ExpressionVisitor; +import org.apache.phoenix.schema.IllegalDataException; import org.apache.phoenix.schema.SortOrder; import org.apache.phoenix.schema.TypeMismatchException; import org.apache.phoenix.schema.tuple.Tuple; @@ -182,16 +183,11 @@ public class LiteralExpression extends BaseTerminalExpression { return getBooleanLiteralExpression((Boolean)value, determinism); } PDataType actualType = PDataType.fromLiteral(value); -// For array we should check individual element in it? -// It would be costly though! -// UpsertStatement can try to cast varchar to date type but PVarchar can't CoercibleTo Date or Timestamp -// otherwise TO_NUMBER like functions will fail -if (!actualType.isCoercibleTo(type, value) && -(!actualType.equals(PVarchar.INSTANCE) || -!(type.equals(PDate.INSTANCE) || type.equals(PTimestamp.INSTANCE) || type.equals(PTime.INSTANCE { +try { +value = type.toObject(value, actualType); +} catch (IllegalDataException e) { throw TypeMismatchException.newException(type, actualType, value.toString()); } -value = type.toObject(value, actualType); byte[] b = type.isArrayType() ?