You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by nd...@apache.org on 2014/12/18 01:11:55 UTC
[17/22] phoenix git commit: PHOENIX-1514 Break up PDataType Enum
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
index 4c57d09..6b236e8 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
@@ -45,6 +45,7 @@ import java.sql.Struct;
import java.text.Format;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -67,14 +68,21 @@ import org.apache.phoenix.query.MetaDataMutated;
import org.apache.phoenix.query.QueryConstants;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.query.QueryServicesOptions;
-import org.apache.phoenix.schema.PArrayDataType;
+import org.apache.phoenix.schema.types.PDate;
+import org.apache.phoenix.schema.types.PDecimal;
+import org.apache.phoenix.schema.types.PArrayDataType;
import org.apache.phoenix.schema.PColumn;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.schema.PMetaData;
import org.apache.phoenix.schema.PMetaData.Pruner;
import org.apache.phoenix.schema.PName;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.schema.PTableType;
+import org.apache.phoenix.schema.types.PTime;
+import org.apache.phoenix.schema.types.PTimestamp;
+import org.apache.phoenix.schema.types.PUnsignedDate;
+import org.apache.phoenix.schema.types.PUnsignedTime;
+import org.apache.phoenix.schema.types.PUnsignedTimestamp;
import org.apache.phoenix.trace.util.Tracing;
import org.apache.phoenix.util.DateUtil;
import org.apache.phoenix.util.JDBCUtil;
@@ -112,7 +120,7 @@ public class PhoenixConnection implements Connection, org.apache.phoenix.jdbc.Jd
private final ConnectionQueryServices services;
private final Properties info;
private List<SQLCloseable> statements = new ArrayList<SQLCloseable>();
- private final Format[] formatters = new Format[PDataType.values().length];
+ private final Map<PDataType<?>, Format> formatters = new HashMap<>();
private final MutationState mutationState;
private final int mutateBatchSize;
private final Long scn;
@@ -194,13 +202,13 @@ public class PhoenixConnection implements Connection, org.apache.phoenix.jdbc.Jd
String numberPattern = this.services.getProps().get(QueryServices.NUMBER_FORMAT_ATTRIB, NumberUtil.DEFAULT_NUMBER_FORMAT);
int maxSize = this.services.getProps().getInt(QueryServices.MAX_MUTATION_SIZE_ATTRIB,QueryServicesOptions.DEFAULT_MAX_MUTATION_SIZE);
Format dateTimeFormat = DateUtil.getDateFormatter(datePattern);
- formatters[PDataType.DATE.ordinal()] = dateTimeFormat;
- formatters[PDataType.TIME.ordinal()] = dateTimeFormat;
- formatters[PDataType.TIMESTAMP.ordinal()] = dateTimeFormat;
- formatters[PDataType.UNSIGNED_DATE.ordinal()] = dateTimeFormat;
- formatters[PDataType.UNSIGNED_TIME.ordinal()] = dateTimeFormat;
- formatters[PDataType.UNSIGNED_TIMESTAMP.ordinal()] = dateTimeFormat;
- formatters[PDataType.DECIMAL.ordinal()] = FunctionArgumentType.NUMERIC.getFormatter(numberPattern);
+ formatters.put(PDate.INSTANCE, dateTimeFormat);
+ formatters.put(PTime.INSTANCE, dateTimeFormat);
+ formatters.put(PTimestamp.INSTANCE, dateTimeFormat);
+ formatters.put(PUnsignedDate.INSTANCE, dateTimeFormat);
+ formatters.put(PUnsignedTime.INSTANCE, dateTimeFormat);
+ formatters.put(PUnsignedTimestamp.INSTANCE, dateTimeFormat);
+ formatters.put(PDecimal.INSTANCE, FunctionArgumentType.NUMERIC.getFormatter(numberPattern));
// We do not limit the metaData on a connection less than the global one,
// as there's not much that will be cached here.
this.metaData = metaData.pruneTables(new Pruner() {
@@ -351,7 +359,7 @@ public class PhoenixConnection implements Connection, org.apache.phoenix.jdbc.Jd
}
public Format getFormatter(PDataType type) {
- return formatters[type.ordinal()];
+ return formatters.get(type);
}
public String getURL() {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java
index 433de72..ce27dfb 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java
@@ -52,11 +52,12 @@ import org.apache.phoenix.iterate.DelegateResultIterator;
import org.apache.phoenix.iterate.MaterializedResultIterator;
import org.apache.phoenix.iterate.ResultIterator;
import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.schema.PDatum;
import org.apache.phoenix.schema.PName;
import org.apache.phoenix.schema.PTable.LinkType;
import org.apache.phoenix.schema.PTableType;
+import org.apache.phoenix.schema.types.PVarchar;
import org.apache.phoenix.schema.RowKeyValueAccessor;
import org.apache.phoenix.schema.SortOrder;
import org.apache.phoenix.schema.tuple.ResultTuple;
@@ -944,7 +945,7 @@ public class PhoenixDatabaseMetaData implements DatabaseMetaData, org.apache.pho
}
@Override
public PDataType getDataType() {
- return PDataType.VARCHAR;
+ return PVarchar.INSTANCE;
}
@Override
public Integer getMaxLength() {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixParameterMetaData.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixParameterMetaData.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixParameterMetaData.java
index 9fd753f..53ca8e1 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixParameterMetaData.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixParameterMetaData.java
@@ -24,7 +24,7 @@ import java.sql.SQLException;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.exception.SQLExceptionInfo;
import org.apache.phoenix.parse.BindParseNode;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.schema.PDatum;
import org.apache.phoenix.schema.SortOrder;
import org.apache.phoenix.schema.TypeMismatchException;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixPreparedStatement.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixPreparedStatement.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixPreparedStatement.java
index 985bffb..25be8c0 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixPreparedStatement.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixPreparedStatement.java
@@ -54,7 +54,7 @@ import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.exception.SQLExceptionInfo;
import org.apache.phoenix.schema.ExecuteQueryNotApplicableException;
import org.apache.phoenix.schema.ExecuteUpdateNotApplicableException;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.schema.Sequence;
import org.apache.phoenix.util.DateUtil;
import org.apache.phoenix.util.SQLCloseable;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSet.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSet.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSet.java
index 8c3c863..1630dbd 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSet.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSet.java
@@ -49,7 +49,20 @@ import org.apache.phoenix.compile.RowProjector;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.exception.SQLExceptionInfo;
import org.apache.phoenix.iterate.ResultIterator;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDecimal;
+import org.apache.phoenix.schema.types.PBoolean;
+import org.apache.phoenix.schema.types.PDate;
+import org.apache.phoenix.schema.types.PDouble;
+import org.apache.phoenix.schema.types.PFloat;
+import org.apache.phoenix.schema.types.PInteger;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PLong;
+import org.apache.phoenix.schema.types.PSmallint;
+import org.apache.phoenix.schema.types.PTime;
+import org.apache.phoenix.schema.types.PTimestamp;
+import org.apache.phoenix.schema.types.PTinyint;
+import org.apache.phoenix.schema.types.PVarbinary;
+import org.apache.phoenix.schema.types.PVarchar;
import org.apache.phoenix.schema.tuple.ResultTuple;
import org.apache.phoenix.schema.tuple.Tuple;
import org.apache.phoenix.util.DateUtil;
@@ -204,7 +217,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
checkCursorState();
- BigDecimal value = (BigDecimal)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.DECIMAL, ptr);
+ BigDecimal value = (BigDecimal)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PDecimal.INSTANCE, ptr);
wasNull = (value == null);
return value;
}
@@ -255,18 +269,17 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
if (value == null) {
return false;
}
- switch(type) {
- case BOOLEAN:
- return Boolean.TRUE.equals(value);
- case VARCHAR:
- return !STRING_FALSE.equals(value);
- case INTEGER:
- return !INTEGER_FALSE.equals(value);
- case DECIMAL:
- return !BIG_DECIMAL_FALSE.equals(value);
- default:
- throw new SQLExceptionInfo.Builder(SQLExceptionCode.CANNOT_CALL_METHOD_ON_TYPE)
- .setMessage("Method: getBoolean; Type:" + type).build().buildException();
+ if (type == PBoolean.INSTANCE) {
+ return Boolean.TRUE.equals(value);
+ } else if (type == PVarchar.INSTANCE) {
+ return !STRING_FALSE.equals(value);
+ } else if (type == PInteger.INSTANCE) {
+ return !INTEGER_FALSE.equals(value);
+ } else if (type == PDecimal.INSTANCE) {
+ return !BIG_DECIMAL_FALSE.equals(value);
+ } else {
+ throw new SQLExceptionInfo.Builder(SQLExceptionCode.CANNOT_CALL_METHOD_ON_TYPE)
+ .setMessage("Method: getBoolean; Type:" + type).build().buildException();
}
}
@@ -278,7 +291,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public byte[] getBytes(int columnIndex) throws SQLException {
checkCursorState();
- byte[] value = (byte[])rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.VARBINARY, ptr);
+ byte[] value = (byte[])rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PVarbinary.INSTANCE, ptr);
wasNull = (value == null);
return value;
}
@@ -292,7 +306,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
public byte getByte(int columnIndex) throws SQLException {
// throw new SQLFeatureNotSupportedException();
checkCursorState();
- Byte value = (Byte)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.TINYINT, ptr);
+ Byte value = (Byte)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PTinyint.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return 0;
@@ -338,7 +353,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public Date getDate(int columnIndex) throws SQLException {
checkCursorState();
- Date value = (Date)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.DATE, ptr);
+ Date value = (Date)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PDate.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return null;
@@ -354,7 +370,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public Date getDate(int columnIndex, Calendar cal) throws SQLException {
checkCursorState();
- Date value = (Date)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.DATE, ptr);
+ Date value = (Date)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PDate.INSTANCE, ptr);
cal.setTime(value);
return new Date(cal.getTimeInMillis());
}
@@ -367,7 +384,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public double getDouble(int columnIndex) throws SQLException {
checkCursorState();
- Double value = (Double)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.DOUBLE, ptr);
+ Double value = (Double)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PDouble.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return 0;
@@ -393,7 +411,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public float getFloat(int columnIndex) throws SQLException {
checkCursorState();
- Float value = (Float)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.FLOAT, ptr);
+ Float value = (Float)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PFloat.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return 0;
@@ -414,7 +433,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public int getInt(int columnIndex) throws SQLException {
checkCursorState();
- Integer value = (Integer)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.INTEGER, ptr);
+ Integer value = (Integer)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PInteger.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return 0;
@@ -430,7 +450,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public long getLong(int columnIndex) throws SQLException {
checkCursorState();
- Long value = (Long)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.LONG, ptr);
+ Long value = (Long)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PLong.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return 0;
@@ -541,7 +562,7 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public short getShort(int columnIndex) throws SQLException {
checkCursorState();
- Short value = (Short)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.SMALLINT, ptr);
+ Short value = (Short)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PSmallint.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return 0;
@@ -585,7 +606,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public Time getTime(int columnIndex) throws SQLException {
checkCursorState();
- Time value = (Time)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.TIME, ptr);
+ Time value = (Time)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PTime.INSTANCE, ptr);
wasNull = (value == null);
return value;
}
@@ -598,7 +620,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public Time getTime(int columnIndex, Calendar cal) throws SQLException {
checkCursorState();
- Time value = (Time)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.TIME, ptr);
+ Time value = (Time)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PTime.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return null;
@@ -616,7 +639,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public Timestamp getTimestamp(int columnIndex) throws SQLException {
checkCursorState();
- Timestamp value = (Timestamp)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.TIMESTAMP, ptr);
+ Timestamp value = (Timestamp)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PTimestamp.INSTANCE, ptr);
wasNull = (value == null);
return value;
}
@@ -629,7 +653,8 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public Timestamp getTimestamp(int columnIndex, Calendar cal) throws SQLException {
checkCursorState();
- Timestamp value = (Timestamp)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.TIMESTAMP, ptr);
+ Timestamp value = (Timestamp)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow,
+ PTimestamp.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return null;
@@ -651,7 +676,7 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
@Override
public URL getURL(int columnIndex) throws SQLException {
checkCursorState();
- String value = (String)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PDataType.VARCHAR, ptr);
+ String value = (String)rowProjector.getColumnProjector(columnIndex-1).getValue(currentRow, PVarchar.INSTANCE, ptr);
wasNull = (value == null);
if (value == null) {
return null;
@@ -1237,4 +1262,4 @@ public class PhoenixResultSet implements ResultSet, SQLCloseable, org.apache.pho
public <T> T getObject(String columnLabel, Class<T> type) throws SQLException {
return (T) getObject(columnLabel); // Just ignore type since we only support built-in types
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSetMetaData.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSetMetaData.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSetMetaData.java
index 30e9862..8ecb52c 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSetMetaData.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixResultSetMetaData.java
@@ -26,8 +26,9 @@ import org.apache.phoenix.compile.RowProjector;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.exception.SQLExceptionInfo;
import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.schema.PDataType;
-
+import org.apache.phoenix.schema.types.PDate;
+import org.apache.phoenix.schema.types.PDecimal;
+import org.apache.phoenix.schema.types.PDataType;
/**
*
@@ -87,7 +88,7 @@ public class PhoenixResultSetMetaData implements ResultSetMetaData {
if (type == null) {
return QueryConstants.NULL_DISPLAY_TEXT.length();
}
- if (type.isCoercibleTo(PDataType.DATE)) {
+ if (type.isCoercibleTo(PDate.INSTANCE)) {
return connection.getDatePattern().length();
}
if (projector.getExpression().getMaxLength() != null) {
@@ -182,7 +183,7 @@ public class PhoenixResultSetMetaData implements ResultSetMetaData {
if (type == null) {
return false;
}
- return type.isCoercibleTo(PDataType.DECIMAL);
+ return type.isCoercibleTo(PDecimal.INSTANCE);
}
@Override
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java
index 1eae037..01fefdd 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java
@@ -102,11 +102,12 @@ import org.apache.phoenix.query.QueryServicesOptions;
import org.apache.phoenix.schema.ExecuteQueryNotApplicableException;
import org.apache.phoenix.schema.ExecuteUpdateNotApplicableException;
import org.apache.phoenix.schema.MetaDataClient;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.schema.PDatum;
import org.apache.phoenix.schema.PIndexState;
import org.apache.phoenix.schema.PTable.IndexType;
import org.apache.phoenix.schema.PTableType;
+import org.apache.phoenix.schema.types.PVarchar;
import org.apache.phoenix.schema.RowKeyValueAccessor;
import org.apache.phoenix.schema.Sequence;
import org.apache.phoenix.schema.SortOrder;
@@ -326,7 +327,7 @@ public class PhoenixStatement implements Statement, SQLCloseable, org.apache.pho
}
private static final byte[] EXPLAIN_PLAN_FAMILY = QueryConstants.SINGLE_COLUMN_FAMILY;
- private static final byte[] EXPLAIN_PLAN_COLUMN = PDataType.VARCHAR.toBytes("Plan");
+ private static final byte[] EXPLAIN_PLAN_COLUMN = PVarchar.INSTANCE.toBytes("Plan");
private static final String EXPLAIN_PLAN_ALIAS = "PLAN";
private static final String EXPLAIN_PLAN_TABLE_NAME = "PLAN_TABLE";
private static final PDatum EXPLAIN_PLAN_DATUM = new PDatum() {
@@ -336,7 +337,7 @@ public class PhoenixStatement implements Statement, SQLCloseable, org.apache.pho
}
@Override
public PDataType getDataType() {
- return PDataType.VARCHAR;
+ return PVarchar.INSTANCE;
}
@Override
public Integer getMaxLength() {
@@ -381,7 +382,7 @@ public class PhoenixStatement implements Statement, SQLCloseable, org.apache.pho
List<String> planSteps = plan.getExplainPlan().getPlanSteps();
List<Tuple> tuples = Lists.newArrayListWithExpectedSize(planSteps.size());
for (String planStep : planSteps) {
- Tuple tuple = new SingleKeyValueTuple(KeyValueUtil.newKeyValue(PDataType.VARCHAR.toBytes(planStep), EXPLAIN_PLAN_FAMILY, EXPLAIN_PLAN_COLUMN, MetaDataProtocol.MIN_TABLE_TIMESTAMP, ByteUtil.EMPTY_BYTE_ARRAY));
+ Tuple tuple = new SingleKeyValueTuple(KeyValueUtil.newKeyValue(PVarchar.INSTANCE.toBytes(planStep), EXPLAIN_PLAN_FAMILY, EXPLAIN_PLAN_COLUMN, MetaDataProtocol.MIN_TABLE_TIMESTAMP, ByteUtil.EMPTY_BYTE_ARRAY));
tuples.add(tuple);
}
final ResultIterator iterator = new MaterializedResultIterator(tuples);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/CastParseNode.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/CastParseNode.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/CastParseNode.java
index a5c5c03..ea4e587 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/CastParseNode.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/CastParseNode.java
@@ -24,7 +24,12 @@ import java.util.List;
import org.apache.phoenix.expression.Expression;
import org.apache.phoenix.expression.function.RoundDecimalExpression;
import org.apache.phoenix.expression.function.RoundTimestampExpression;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDate;
+import org.apache.phoenix.schema.types.PDecimal;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PLong;
+import org.apache.phoenix.schema.types.PTimestamp;
+import org.apache.phoenix.schema.types.PUnsignedTimestamp;
import org.apache.phoenix.schema.TypeMismatchException;
import org.apache.phoenix.util.SchemaUtil;
@@ -87,9 +92,11 @@ public class CastParseNode extends UnaryParseNode {
// return firstChildExpr;
// } else if(fromDataType.isCoercibleTo(PDataType.LONG) && (targetDataType == PDataType.DATE || targetDataType == PDataType.UNSIGNED_DATE)) {
// return firstChildExpr;
- } else if((fromDataType == PDataType.DECIMAL || fromDataType == PDataType.TIMESTAMP || fromDataType == PDataType.UNSIGNED_TIMESTAMP) && targetDataType.isCoercibleTo(PDataType.LONG)) {
+ } else if((fromDataType == PDecimal.INSTANCE || fromDataType == PTimestamp.INSTANCE || fromDataType == PUnsignedTimestamp.INSTANCE) && targetDataType.isCoercibleTo(
+ PLong.INSTANCE)) {
return RoundDecimalExpression.create(expressions);
- } else if((fromDataType == PDataType.DECIMAL || fromDataType == PDataType.TIMESTAMP || fromDataType == PDataType.UNSIGNED_TIMESTAMP) && targetDataType.isCoercibleTo(PDataType.DATE)) {
+ } else if((fromDataType == PDecimal.INSTANCE || fromDataType == PTimestamp.INSTANCE || fromDataType == PUnsignedTimestamp.INSTANCE) && targetDataType.isCoercibleTo(
+ PDate.INSTANCE)) {
return RoundTimestampExpression.create(expressions);
} else if(fromDataType.isCastableTo(targetDataType)) {
return firstChildExpr;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/CeilParseNode.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/CeilParseNode.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/CeilParseNode.java
index 08d7feb..b5f6669 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/CeilParseNode.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/CeilParseNode.java
@@ -26,7 +26,11 @@ import org.apache.phoenix.expression.function.CeilDateExpression;
import org.apache.phoenix.expression.function.CeilDecimalExpression;
import org.apache.phoenix.expression.function.CeilFunction;
import org.apache.phoenix.expression.function.CeilTimestampExpression;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDate;
+import org.apache.phoenix.schema.types.PDecimal;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PTimestamp;
+import org.apache.phoenix.schema.types.PUnsignedTimestamp;
import org.apache.phoenix.schema.TypeMismatchException;
/**
@@ -52,11 +56,11 @@ public class CeilParseNode extends FunctionParseNode {
public static Expression getCeilExpression(List<Expression> children) throws SQLException {
final Expression firstChild = children.get(0);
final PDataType firstChildDataType = firstChild.getDataType();
- if(firstChildDataType.isCoercibleTo(PDataType.DATE)) {
+ if(firstChildDataType.isCoercibleTo(PDate.INSTANCE)) {
return CeilDateExpression.create(children);
- } else if (firstChildDataType == PDataType.TIMESTAMP || firstChildDataType == PDataType.UNSIGNED_TIMESTAMP) {
+ } else if (firstChildDataType == PTimestamp.INSTANCE || firstChildDataType == PUnsignedTimestamp.INSTANCE) {
return CeilTimestampExpression.create(children);
- } else if(firstChildDataType.isCoercibleTo(PDataType.DECIMAL)) {
+ } else if(firstChildDataType.isCoercibleTo(PDecimal.INSTANCE)) {
return CeilDecimalExpression.create(children);
} else {
throw TypeMismatchException.newException(firstChildDataType, "1");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnDef.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnDef.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnDef.java
index e9da47c..169754c 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnDef.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnDef.java
@@ -21,7 +21,12 @@ import java.sql.SQLException;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.exception.SQLExceptionInfo;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PBinary;
+import org.apache.phoenix.schema.types.PChar;
+import org.apache.phoenix.schema.types.PDecimal;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PVarbinary;
+import org.apache.phoenix.schema.types.PVarchar;
import org.apache.phoenix.schema.SortOrder;
import org.apache.phoenix.util.SchemaUtil;
@@ -61,7 +66,7 @@ public class ColumnDef {
localType = sqlTypeName == null ? null : PDataType.fromTypeId(PDataType.sqlArrayType(SchemaUtil.normalizeIdentifier(sqlTypeName)));
this.dataType = sqlTypeName == null ? null : PDataType.fromSqlTypeName(SchemaUtil.normalizeIdentifier(sqlTypeName));
this.arrSize = arrSize; // Can only be non negative based on parsing
- if (this.dataType == PDataType.VARBINARY) {
+ if (this.dataType == PVarbinary.INSTANCE) {
throw new SQLExceptionInfo.Builder(SQLExceptionCode.VARBINARY_ARRAY_NOT_SUPPORTED)
.setColumnName(columnDefName.getColumnName()).build().buildException();
}
@@ -71,7 +76,7 @@ public class ColumnDef {
}
this.isNull = isNull;
- if (this.dataType == PDataType.CHAR) {
+ if (this.dataType == PChar.INSTANCE) {
if (maxLength == null) {
throw new SQLExceptionInfo.Builder(SQLExceptionCode.MISSING_CHAR_LENGTH)
.setColumnName(columnDefName.getColumnName()).build().buildException();
@@ -81,13 +86,13 @@ public class ColumnDef {
.setColumnName(columnDefName.getColumnName()).build().buildException();
}
scale = null;
- } else if (this.dataType == PDataType.VARCHAR) {
+ } else if (this.dataType == PVarchar.INSTANCE) {
if (maxLength != null && maxLength < 1) {
throw new SQLExceptionInfo.Builder(SQLExceptionCode.NONPOSITIVE_CHAR_LENGTH)
.setColumnName(columnDefName.getColumnName()).build().buildException();
}
scale = null;
- } else if (this.dataType == PDataType.DECIMAL) {
+ } else if (this.dataType == PDecimal.INSTANCE) {
// for deciaml, 1 <= maxLength <= PDataType.MAX_PRECISION;
if (maxLength != null) {
if (maxLength < 1 || maxLength > PDataType.MAX_PRECISION) {
@@ -106,7 +111,7 @@ public class ColumnDef {
// ignored. All decimal are stored with as much decimal points as possible.
scale = scale == null ? PDataType.DEFAULT_SCALE : scale > maxLength ? maxLength : scale;
}
- } else if (this.dataType == PDataType.BINARY) {
+ } else if (this.dataType == PBinary.INSTANCE) {
if (maxLength == null) {
throw new SQLExceptionInfo.Builder(SQLExceptionCode.MISSING_BINARY_LENGTH)
.setColumnName(columnDefName.getColumnName()).build().buildException();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/FloorParseNode.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/FloorParseNode.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/FloorParseNode.java
index 8da17ba..136d2a7 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/FloorParseNode.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/FloorParseNode.java
@@ -25,7 +25,9 @@ import org.apache.phoenix.expression.Expression;
import org.apache.phoenix.expression.function.FloorDateExpression;
import org.apache.phoenix.expression.function.FloorDecimalExpression;
import org.apache.phoenix.expression.function.FloorFunction;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDecimal;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PTimestamp;
import org.apache.phoenix.schema.TypeMismatchException;
/**
@@ -54,9 +56,9 @@ public class FloorParseNode extends FunctionParseNode {
//FLOOR on timestamp doesn't really care about the nanos part i.e. it just sets it to zero.
//Which is exactly what FloorDateExpression does too.
- if(firstChildDataType.isCoercibleTo(PDataType.TIMESTAMP)) {
+ if(firstChildDataType.isCoercibleTo(PTimestamp.INSTANCE)) {
return FloorDateExpression.create(children);
- } else if(firstChildDataType.isCoercibleTo(PDataType.DECIMAL)) {
+ } else if(firstChildDataType.isCoercibleTo(PDecimal.INSTANCE)) {
return FloorDecimalExpression.create(children);
} else {
throw TypeMismatchException.newException(firstChildDataType, "1");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/FunctionParseNode.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/FunctionParseNode.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/FunctionParseNode.java
index 59f7d3c..e6ce6d1 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/FunctionParseNode.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/FunctionParseNode.java
@@ -41,7 +41,9 @@ import org.apache.phoenix.expression.LiteralExpression;
import org.apache.phoenix.expression.function.AggregateFunction;
import org.apache.phoenix.expression.function.FunctionExpression;
import org.apache.phoenix.schema.ArgumentTypeMismatchException;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PDataTypeFactory;
+import org.apache.phoenix.schema.types.PVarchar;
import org.apache.phoenix.schema.ValueRangeExcpetion;
import org.apache.phoenix.util.SchemaUtil;
@@ -139,14 +141,15 @@ public class FunctionParseNode extends CompoundParseNode {
if (args.length > children.size()) {
List<Expression> moreChildren = new ArrayList<Expression>(children);
for (int i = children.size(); i < info.getArgs().length; i++) {
- moreChildren.add(LiteralExpression.newConstant(null, args[i].allowedTypes.length == 0 ? null : args[i].allowedTypes[0], Determinism.ALWAYS));
+ moreChildren.add(LiteralExpression.newConstant(null, args[i].allowedTypes.length == 0 ? null :
+ PDataTypeFactory.getInstance().instanceFromClass(args[i].allowedTypes[0]), Determinism.ALWAYS));
}
children = moreChildren;
}
List<ParseNode> nodeChildren = this.getChildren();
for (int i = 0; i < children.size(); i++) {
BindParseNode bindNode = null;
- PDataType[] allowedTypes = args[i].getAllowedTypes();
+ Class<? extends PDataType>[] allowedTypes = args[i].getAllowedTypes();
// Check if the node is a bind parameter, and set the parameter
// metadata based on the function argument annotation. Check to
// make sure we're not looking past the end of the list of
@@ -176,7 +179,8 @@ public class FunctionParseNode extends CompoundParseNode {
// based on the function argument annonation set the parameter meta data.
if (child.getDataType() == null) {
if (allowedTypes.length > 0) {
- context.getBindManager().addParamMetaData(bindNode, LiteralExpression.newConstant(null, allowedTypes[0], Determinism.ALWAYS));
+ context.getBindManager().addParamMetaData(bindNode, LiteralExpression.newConstant(null, PDataTypeFactory.getInstance().instanceFromClass(
+ allowedTypes[0]), Determinism.ALWAYS));
}
} else { // Use expression as is, since we already have the data type set
context.getBindManager().addParamMetaData(bindNode, child);
@@ -185,15 +189,16 @@ public class FunctionParseNode extends CompoundParseNode {
} else {
if (allowedTypes.length > 0) {
boolean isCoercible = false;
- for (PDataType type : allowedTypes) {
- if (child.getDataType().isCoercibleTo(type)) {
+ for (Class<? extends PDataType> type : allowedTypes) {
+ if (child.getDataType().isCoercibleTo(
+ PDataTypeFactory.getInstance().instanceFromClass(type))) {
isCoercible = true;
break;
}
}
if (!isCoercible) {
- throw new ArgumentTypeMismatchException(Arrays.toString(args[i].getAllowedTypes()),
- child.getDataType().toString(), info.getName() + " argument " + (i + 1));
+ throw new ArgumentTypeMismatchException(args[i].getAllowedTypes(),
+ child.getDataType(), info.getName() + " argument " + (i + 1));
}
if (child instanceof LiteralExpression) {
LiteralExpression valueExp = (LiteralExpression) child;
@@ -262,7 +267,7 @@ public class FunctionParseNode extends CompoundParseNode {
@Target(ElementType.TYPE)
public
@interface Argument {
- PDataType[] allowedTypes() default {};
+ Class<? extends PDataType>[] allowedTypes() default {};
boolean isConstant() default false;
String defaultValue() default "";
String enumeration() default "";
@@ -325,8 +330,8 @@ public class FunctionParseNode extends CompoundParseNode {
@Immutable
public static class BuiltInFunctionArgInfo {
- private static final PDataType[] ENUMERATION_TYPES = new PDataType[] {PDataType.VARCHAR};
- private final PDataType[] allowedTypes;
+ private static final Class<? extends PDataType>[] ENUMERATION_TYPES = new Class[] { PVarchar.class };
+ private final Class<? extends PDataType>[] allowedTypes;
private final boolean isConstant;
private final Set<String> allowedValues; // Enumeration of possible values
private final LiteralExpression defaultValue;
@@ -378,11 +383,16 @@ public class FunctionParseNode extends CompoundParseNode {
SQLParser parser = new SQLParser(strValue);
try {
LiteralParseNode node = parser.parseLiteral();
- LiteralExpression defaultValue = LiteralExpression.newConstant(node.getValue(), this.allowedTypes[0], Determinism.ALWAYS);
+ LiteralExpression defaultValue = LiteralExpression.newConstant(node.getValue(), PDataTypeFactory.getInstance().instanceFromClass(
+ allowedTypes[0]), Determinism.ALWAYS);
if (this.getAllowedTypes().length > 0) {
- for (PDataType type : this.getAllowedTypes()) {
- if (defaultValue.getDataType() == null || defaultValue.getDataType().isCoercibleTo(type, node.getValue())) {
- return LiteralExpression.newConstant(node.getValue(), type, Determinism.ALWAYS);
+ for (Class<? extends PDataType> type : this.getAllowedTypes()) {
+ if (defaultValue.getDataType() == null || defaultValue.getDataType().isCoercibleTo(
+ PDataTypeFactory.getInstance().instanceFromClass(type),
+ node.getValue())) {
+ return LiteralExpression.newConstant(node.getValue(),
+ PDataTypeFactory.getInstance().instanceFromClass(type),
+ Determinism.ALWAYS);
}
}
throw new IllegalStateException("Unable to coerce default value " + strValue + " to any of the allowed types of " + Arrays.toString(this.getAllowedTypes()));
@@ -410,8 +420,7 @@ public class FunctionParseNode extends CompoundParseNode {
public LiteralExpression getMaxValue() {
return maxValue;
}
-
- public PDataType[] getAllowedTypes() {
+ public Class<? extends PDataType>[] getAllowedTypes() {
return allowedTypes;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/LiteralParseNode.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/LiteralParseNode.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/LiteralParseNode.java
index f9bbea1..b83ce23 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/LiteralParseNode.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/LiteralParseNode.java
@@ -21,9 +21,8 @@ import java.sql.SQLException;
import java.util.Collections;
import java.util.List;
-import org.apache.phoenix.schema.PDataType;
-
-
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PVarchar;
/**
*
@@ -79,6 +78,6 @@ public class LiteralParseNode extends TerminalParseNode {
@Override
public String toString() {
- return type == PDataType.VARCHAR ? ("'" + value.toString() + "'") : value == null ? "null" : value.toString();
+ return type == PVarchar.INSTANCE ? ("'" + value.toString() + "'") : value == null ? "null" : value.toString();
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java
index 6d3123f..0329ef4 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/ParseNodeFactory.java
@@ -41,7 +41,7 @@ import org.apache.phoenix.parse.FunctionParseNode.BuiltInFunction;
import org.apache.phoenix.parse.FunctionParseNode.BuiltInFunctionInfo;
import org.apache.phoenix.parse.JoinTableNode.JoinType;
import org.apache.phoenix.parse.LikeParseNode.LikeType;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.schema.PIndexState;
import org.apache.phoenix.schema.PTable.IndexType;
import org.apache.phoenix.schema.PTableType;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/RoundParseNode.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/RoundParseNode.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/RoundParseNode.java
index 5260f88..9bf4e70 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/RoundParseNode.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/RoundParseNode.java
@@ -26,7 +26,10 @@ import org.apache.phoenix.expression.function.RoundDateExpression;
import org.apache.phoenix.expression.function.RoundDecimalExpression;
import org.apache.phoenix.expression.function.RoundFunction;
import org.apache.phoenix.expression.function.RoundTimestampExpression;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDate;
+import org.apache.phoenix.schema.types.PDecimal;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PTimestamp;
import org.apache.phoenix.schema.TypeMismatchException;
/**
@@ -54,11 +57,11 @@ public class RoundParseNode extends FunctionParseNode {
final Expression firstChild = children.get(0);
final PDataType firstChildDataType = firstChild.getDataType();
- if(firstChildDataType.isCoercibleTo(PDataType.DATE)) {
+ if(firstChildDataType.isCoercibleTo(PDate.INSTANCE)) {
return RoundDateExpression.create(children);
- } else if (firstChildDataType.isCoercibleTo(PDataType.TIMESTAMP)) {
+ } else if (firstChildDataType.isCoercibleTo(PTimestamp.INSTANCE)) {
return RoundTimestampExpression.create(children);
- } else if(firstChildDataType.isCoercibleTo(PDataType.DECIMAL)) {
+ } else if(firstChildDataType.isCoercibleTo(PDecimal.INSTANCE)) {
return RoundDecimalExpression.create(children);
} else {
throw TypeMismatchException.newException(firstChildDataType, "1");
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/ToCharParseNode.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/ToCharParseNode.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/ToCharParseNode.java
index b6c8ac6..0234df4 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/ToCharParseNode.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/ToCharParseNode.java
@@ -27,8 +27,9 @@ import org.apache.phoenix.expression.LiteralExpression;
import org.apache.phoenix.expression.function.FunctionArgumentType;
import org.apache.phoenix.expression.function.FunctionExpression;
import org.apache.phoenix.expression.function.ToCharFunction;
-import org.apache.phoenix.schema.PDataType;
-
+import org.apache.phoenix.schema.types.PDecimal;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PTimestamp;
public class ToCharParseNode extends FunctionParseNode {
@@ -42,7 +43,7 @@ public class ToCharParseNode extends FunctionParseNode {
String formatString = (String)((LiteralExpression)children.get(1)).getValue(); // either date or number format string
Format formatter;
FunctionArgumentType type;
- if (dataType.isCoercibleTo(PDataType.TIMESTAMP)) {
+ if (dataType.isCoercibleTo(PTimestamp.INSTANCE)) {
if (formatString == null) {
formatString = context.getDateFormat();
formatter = context.getDateFormatter();
@@ -51,7 +52,7 @@ public class ToCharParseNode extends FunctionParseNode {
}
type = FunctionArgumentType.TEMPORAL;
}
- else if (dataType.isCoercibleTo(PDataType.DECIMAL)) {
+ else if (dataType.isCoercibleTo(PDecimal.INSTANCE)) {
if (formatString == null)
formatString = context.getNumberFormat();
formatter = FunctionArgumentType.NUMERIC.getFormatter(formatString);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/parse/ToNumberParseNode.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/ToNumberParseNode.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/ToNumberParseNode.java
index 4def24c..9a1b80f 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/ToNumberParseNode.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/ToNumberParseNode.java
@@ -28,7 +28,9 @@ import org.apache.phoenix.expression.LiteralExpression;
import org.apache.phoenix.expression.function.FunctionArgumentType;
import org.apache.phoenix.expression.function.FunctionExpression;
import org.apache.phoenix.expression.function.ToNumberFunction;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PChar;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PTimestamp;
public class ToNumberParseNode extends FunctionParseNode {
@@ -44,7 +46,7 @@ public class ToNumberParseNode extends FunctionParseNode {
Format formatter = null;
FunctionArgumentType type;
- if (dataType.isCoercibleTo(PDataType.TIMESTAMP)) {
+ if (dataType.isCoercibleTo(PTimestamp.INSTANCE)) {
if (formatString == null) {
formatString = context.getDateFormat();
formatter = context.getDateFormatter();
@@ -53,7 +55,7 @@ public class ToNumberParseNode extends FunctionParseNode {
}
type = FunctionArgumentType.TEMPORAL;
}
- else if (dataType.isCoercibleTo(PDataType.CHAR)) {
+ else if (dataType.isCoercibleTo(PChar.INSTANCE)) {
if (formatString != null) {
formatter = FunctionArgumentType.CHAR.getFormatter(formatString);
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
index 0732cff..4475dd1 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
@@ -110,9 +110,10 @@ import org.apache.phoenix.protobuf.ProtobufUtil;
import org.apache.phoenix.schema.EmptySequenceCacheException;
import org.apache.phoenix.schema.MetaDataSplitPolicy;
import org.apache.phoenix.schema.NewerTableAlreadyExistsException;
+import org.apache.phoenix.schema.types.PBoolean;
import org.apache.phoenix.schema.PColumn;
import org.apache.phoenix.schema.PColumnFamily;
-import org.apache.phoenix.schema.PDataType;
+import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.schema.PMetaData;
import org.apache.phoenix.schema.PMetaDataImpl;
import org.apache.phoenix.schema.PName;
@@ -644,7 +645,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
}
if (descriptor.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES) != null
- && Boolean.TRUE.equals(PDataType.BOOLEAN.toObject(descriptor
+ && Boolean.TRUE.equals(PBoolean.INSTANCE.toObject(descriptor
.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES)))) {
if (!descriptor.hasCoprocessor(IndexHalfStoreFileReaderGenerator.class.getName())) {
descriptor.addCoprocessor(IndexHalfStoreFileReaderGenerator.class.getName(),
@@ -860,7 +861,6 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
* @param tableName
* @param splits
* @param modifyExistingMetaData TODO
- * @param familyNames
* @return true if table was created and false if it already exists
* @throws SQLException
*/
@@ -889,7 +889,8 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
HTableDescriptor newDesc = generateTableDescriptor(tableName, existingDesc, tableType , props, families, splits);
if (!tableExist) {
- if (newDesc.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES) != null && Boolean.TRUE.equals(PDataType.BOOLEAN.toObject(newDesc.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES)))) {
+ if (newDesc.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES) != null && Boolean.TRUE.equals(
+ PBoolean.INSTANCE.toObject(newDesc.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES)))) {
newDesc.setValue(HTableDescriptor.SPLIT_POLICY, IndexRegionSplitPolicy.class.getName());
}
// Remove the splitPolicy attribute to prevent HBASE-12570
@@ -1116,7 +1117,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
tableProps.put(MetaDataUtil.IS_VIEW_INDEX_TABLE_PROP_NAME, TRUE_BYTES_AS_STRING);
HTableDescriptor desc = ensureTableCreated(physicalIndexName, PTableType.TABLE, tableProps, families, splits, false);
if (desc != null) {
- if (!Boolean.TRUE.equals(PDataType.BOOLEAN.toObject(desc.getValue(MetaDataUtil.IS_VIEW_INDEX_TABLE_PROP_BYTES)))) {
+ if (!Boolean.TRUE.equals(PBoolean.INSTANCE.toObject(desc.getValue(MetaDataUtil.IS_VIEW_INDEX_TABLE_PROP_BYTES)))) {
String fullTableName = Bytes.toString(physicalIndexName);
throw new TableAlreadyExistsException(
"Unable to create shared physical table for indexes on views.",
@@ -1155,7 +1156,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
tableProps.put(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_NAME, TRUE_BYTES_AS_STRING);
HTableDescriptor desc = ensureTableCreated(physicalTableName, PTableType.TABLE, tableProps, families, splits, true);
if (desc != null) {
- if (!Boolean.TRUE.equals(PDataType.BOOLEAN.toObject(desc.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES)))) {
+ if (!Boolean.TRUE.equals(PBoolean.INSTANCE.toObject(desc.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES)))) {
String fullTableName = Bytes.toString(physicalTableName);
throw new TableAlreadyExistsException(
"Unable to create shared physical table for local indexes.",
@@ -1174,7 +1175,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
admin = new HBaseAdmin(config);
try {
desc = admin.getTableDescriptor(physicalIndexName);
- if (Boolean.TRUE.equals(PDataType.BOOLEAN.toObject(desc.getValue(MetaDataUtil.IS_VIEW_INDEX_TABLE_PROP_BYTES)))) {
+ if (Boolean.TRUE.equals(PBoolean.INSTANCE.toObject(desc.getValue(MetaDataUtil.IS_VIEW_INDEX_TABLE_PROP_BYTES)))) {
this.tableStatsCache.invalidate(new ImmutableBytesPtr(physicalIndexName));
final ReadOnlyProps props = this.getProps();
final boolean dropMetadata = props.getBoolean(DROP_METADATA_ATTRIB, DEFAULT_DROP_METADATA);
@@ -1209,7 +1210,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
admin = new HBaseAdmin(config);
try {
desc = admin.getTableDescriptor(physicalIndexName);
- if (Boolean.TRUE.equals(PDataType.BOOLEAN.toObject(desc.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES)))) {
+ if (Boolean.TRUE.equals(PBoolean.INSTANCE.toObject(desc.getValue(MetaDataUtil.IS_LOCAL_INDEX_TABLE_PROP_BYTES)))) {
this.tableStatsCache.invalidate(new ImmutableBytesPtr(physicalIndexName));
final ReadOnlyProps props = this.getProps();
final boolean dropMetadata = props.getBoolean(DROP_METADATA_ATTRIB, DEFAULT_DROP_METADATA);
@@ -1548,7 +1549,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
if (result.getMutationCode() == MutationCode.COLUMN_NOT_FOUND) { // Success
// Flush the table if transitioning DISABLE_WAL from TRUE to FALSE
if ( MetaDataUtil.getMutationValue(m,PhoenixDatabaseMetaData.DISABLE_WAL_BYTES, kvBuilder, ptr)
- && Boolean.FALSE.equals(PDataType.BOOLEAN.toObject(ptr))) {
+ && Boolean.FALSE.equals(PBoolean.INSTANCE.toObject(ptr))) {
flushTable(table.getPhysicalName().getBytes());
}
@@ -1556,7 +1557,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
// If we're changing MULTI_TENANT to true or false, create or drop the view index table
if (MetaDataUtil.getMutationValue(m, PhoenixDatabaseMetaData.MULTI_TENANT_BYTES, kvBuilder, ptr)){
long timestamp = MetaDataUtil.getClientTimeStamp(m);
- if (Boolean.TRUE.equals(PDataType.BOOLEAN.toObject(ptr.get(), ptr.getOffset(), ptr.getLength()))) {
+ if (Boolean.TRUE.equals(PBoolean.INSTANCE.toObject(ptr.get(), ptr.getOffset(), ptr.getLength()))) {
this.ensureViewIndexTableCreated(table, timestamp);
} else {
this.ensureViewIndexTableDropped(table.getPhysicalName().getBytes(), timestamp);
@@ -1926,9 +1927,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
/**
* Gets the current sequence value
- * @param tenantId
- * @param sequence
- * @throws SQLException if cached sequence cannot be found
+ * @throws SQLException if cached sequence cannot be found
*/
@Override
public long currentSequenceValue(SequenceKey sequenceKey, long timestamp) throws SQLException {
@@ -1962,9 +1961,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
* Increment any of the set of sequences that need more values. These are the sequences
* that are asking for the next value within a given statement. The returned sequences
* are the ones that were not found because they were deleted by another client.
- * @param tenantId
* @param sequenceKeys sorted list of sequence kyes
- * @param batchSize
* @param timestamp
* @throws SQLException if any of the sequences cannot be found
*
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/schema/ArgumentTypeMismatchException.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/ArgumentTypeMismatchException.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/ArgumentTypeMismatchException.java
index 7a7d223..b6102fc 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/ArgumentTypeMismatchException.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/ArgumentTypeMismatchException.java
@@ -18,9 +18,16 @@
package org.apache.phoenix.schema;
import java.sql.SQLException;
+import java.util.Arrays;
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.exception.SQLExceptionInfo;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PDataTypeFactory;
+
+import javax.annotation.Nullable;
/**
* Exception thrown when we try to use use an argument that has the wrong type.
@@ -36,6 +43,16 @@ public class ArgumentTypeMismatchException extends SQLException {
super(new SQLExceptionInfo.Builder(code).setMessage("expected: " + expected + " but was: " + actual + " at " + location).build().toString(), code.getSQLState(), code.getErrorCode());
}
+ public ArgumentTypeMismatchException(Class<? extends PDataType>[] expecteds, PDataType actual, String location) {
+ this(Arrays.toString(Collections2.transform(Arrays.asList(expecteds),
+ new Function<Class<? extends PDataType>, PDataType>() {
+ @Nullable @Override
+ public PDataType apply(@Nullable Class<? extends PDataType> input) {
+ return PDataTypeFactory.getInstance().instanceFromClass(input);
+ }
+ }).toArray()), actual.toString(), location);
+ }
+
public ArgumentTypeMismatchException(String expected, String actual, String location) {
super(new SQLExceptionInfo.Builder(code).setMessage("expected: " + expected + " but was: " + actual + " at " + location).build().toString(), code.getSQLState(), code.getErrorCode());
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/schema/DelegateDatum.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/DelegateDatum.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/DelegateDatum.java
index 89e6c78..6e18cc5 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/DelegateDatum.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/DelegateDatum.java
@@ -17,6 +17,8 @@
*/
package org.apache.phoenix.schema;
+import org.apache.phoenix.schema.types.PDataType;
+
public class DelegateDatum implements PDatum {
private final PDatum delegate;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/schema/KeyValueSchema.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/KeyValueSchema.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/KeyValueSchema.java
index d6c36c0..595103f 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/KeyValueSchema.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/KeyValueSchema.java
@@ -24,12 +24,13 @@ import org.apache.hadoop.io.WritableUtils;
import org.apache.http.annotation.Immutable;
import org.apache.phoenix.expression.Expression;
import org.apache.phoenix.schema.tuple.Tuple;
+import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.util.ByteUtil;
/**
*
- * Simple flat schema over a byte array where fields may be any of {@link PDataType}.
+ * Simple flat schema over a byte array where fields may be any of {@link org.apache.phoenix.schema.types.PDataType}.
* Optimized for positional access by index.
*
*
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java
index 16fe1a5..362d59f 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java
@@ -1,3 +1,20 @@
+/*
+ * 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.
+ */
package org.apache.phoenix.schema;
import java.sql.SQLException;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/04ef859b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
index ea333ac..5b1315f 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
@@ -61,7 +61,6 @@ import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_STATEMENT;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_TYPE;
import static org.apache.phoenix.query.QueryServices.DROP_METADATA_ATTRIB;
import static org.apache.phoenix.query.QueryServicesOptions.DEFAULT_DROP_METADATA;
-import static org.apache.phoenix.schema.PDataType.VARCHAR;
import java.io.IOException;
import java.sql.Connection;
@@ -141,6 +140,10 @@ import org.apache.phoenix.schema.PTable.IndexType;
import org.apache.phoenix.schema.PTable.LinkType;
import org.apache.phoenix.schema.PTable.ViewType;
import org.apache.phoenix.schema.stats.PTableStats;
+import org.apache.phoenix.schema.types.PDataType;
+import org.apache.phoenix.schema.types.PLong;
+import org.apache.phoenix.schema.types.PVarbinary;
+import org.apache.phoenix.schema.types.PVarchar;
import org.apache.phoenix.util.ByteUtil;
import org.apache.phoenix.util.IndexUtil;
import org.apache.phoenix.util.LogUtil;
@@ -197,7 +200,7 @@ public class MetaDataClient {
TABLE_NAME + "," +
COLUMN_FAMILY + "," +
LINK_TYPE + "," +
- PARENT_TENANT_ID + " " + PDataType.VARCHAR.getSqlTypeName() + // Dynamic column for now to prevent schema change
+ PARENT_TENANT_ID + " " + PVarchar.INSTANCE.getSqlTypeName() + // Dynamic column for now to prevent schema change
") VALUES (?, ?, ?, ?, ?, ?)";
private static final String INCREMENT_SEQ_NUM =
"UPSERT INTO " + SYSTEM_CATALOG_SCHEMA + ".\"" + SYSTEM_CATALOG_TABLE + "\"( " +
@@ -347,8 +350,8 @@ public class MetaDataClient {
MetaDataMutationResult result;
do {
- final byte[] schemaBytes = PDataType.VARCHAR.toBytes(schemaName);
- final byte[] tableBytes = PDataType.VARCHAR.toBytes(tableName);
+ final byte[] schemaBytes = PVarchar.INSTANCE.toBytes(schemaName);
+ final byte[] tableBytes = PVarchar.INSTANCE.toBytes(tableName);
result = connection.getQueryServices().getTable(tenantId, schemaBytes, tableBytes, tableTimestamp, clientTimeStamp);
if (SYSTEM_CATALOG_SCHEMA.equals(schemaName)) {
@@ -809,7 +812,7 @@ public class MetaDataClient {
Cell kv = plan.iterator().next().getValue(0);
ImmutableBytesWritable tmpPtr = new ImmutableBytesWritable(kv.getValueArray(), kv.getValueOffset(), kv.getValueLength());
// A single Cell will be returned with the count(*) - we decode that here
- long rowCount = PDataType.LONG.getCodec().decodeLong(tmpPtr, SortOrder.getDefault());
+ long rowCount = PLong.INSTANCE.getCodec().decodeLong(tmpPtr, SortOrder.getDefault());
// The contract is to return a MutationState that contains the number of rows modified. In this
// case, it's the number of rows in the data table which corresponds to the number of index
// rows that were added.
@@ -1008,7 +1011,7 @@ public class MetaDataClient {
// Don't re-allocate indexId on ConcurrentTableMutationException,
// as there's no need to burn another sequence value.
- if (allocateIndexId && indexId == null) {
+ if (allocateIndexId && indexId == null) {
Long scn = connection.getSCN();
long timestamp = scn == null ? HConstants.LATEST_TIMESTAMP : scn;
PName tenantId = connection.getTenantId();
@@ -1382,7 +1385,7 @@ public class MetaDataClient {
throw new ColumnAlreadyExistsException(schemaName, tableName, column.getName().getString());
}
columns.add(column);
- if ((colDef.getDataType() == PDataType.VARBINARY || colDef.getDataType().isArrayType())
+ if ((colDef.getDataType() == PVarbinary.INSTANCE || colDef.getDataType().isArrayType())
&& SchemaUtil.isPKColumn(column)
&& pkColumnsIterator.hasNext()) {
throw new SQLExceptionInfo.Builder(SQLExceptionCode.VARBINARY_IN_ROW_KEY)
@@ -1688,7 +1691,7 @@ public class MetaDataClient {
// NOT NULL is a requirement, since otherwise the table key would conflict
// potentially with the global table definition.
PColumn tenantIdCol = iterator.next();
- if (!tenantIdCol.getDataType().isCoercibleTo(VARCHAR) || tenantIdCol.isNullable()) {
+ if (!tenantIdCol.getDataType().isCoercibleTo(PVarchar.INSTANCE) || tenantIdCol.isNullable()) {
throw new SQLExceptionInfo.Builder(INSUFFICIENT_MULTI_TENANT_COLUMNS).setSchemaName(schemaName).setTableName(tableName).build().buildException();
}
}
@@ -1967,7 +1970,7 @@ public class MetaDataClient {
List<PColumn> currentPKs = table.getPKColumns();
PColumn lastPK = currentPKs.get(currentPKs.size()-1);
// Disallow adding columns if the last column is VARBIANRY.
- if (lastPK.getDataType() == PDataType.VARBINARY || lastPK.getDataType().isArrayType()) {
+ if (lastPK.getDataType() == PVarbinary.INSTANCE || lastPK.getDataType().isArrayType()) {
throw new SQLExceptionInfo.Builder(SQLExceptionCode.VARBINARY_LAST_PK)
.setColumnName(lastPK.getName().getString()).build().buildException();
}
@@ -1976,7 +1979,7 @@ public class MetaDataClient {
throw new SQLExceptionInfo.Builder(SQLExceptionCode.NULLABLE_FIXED_WIDTH_LAST_PK)
.setColumnName(lastPK.getName().getString()).build().buildException();
}
-
+
Boolean isImmutableRows = null;
if (isImmutableRowsProp != null) {
if (isImmutableRowsProp.booleanValue() != table.isImmutableRows()) {