You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by rv...@apache.org on 2015/09/19 02:36:24 UTC
[41/51] [partial] incubator-hawq git commit: SGA import
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8b26974c/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/HAWQRecord.java
----------------------------------------------------------------------
diff --git a/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/HAWQRecord.java b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/HAWQRecord.java
new file mode 100644
index 0000000..27a975a
--- /dev/null
+++ b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/HAWQRecord.java
@@ -0,0 +1,1802 @@
+package com.pivotal.hawq.mapreduce;
+
+import com.pivotal.hawq.mapreduce.datatype.*;
+import com.pivotal.hawq.mapreduce.schema.HAWQField;
+import com.pivotal.hawq.mapreduce.schema.HAWQPrimitiveField;
+import com.pivotal.hawq.mapreduce.schema.HAWQSchema;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.sql.Array;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+
+/**
+ * Store schema and values for a record in database.
+ * <p/>
+ * User can use getXXX method in input format.
+ */
+public class HAWQRecord {
+
+ protected HAWQSchema schema;
+ protected Object[] values;
+
+ public HAWQRecord(HAWQSchema schema) {
+ this.schema = schema;
+ this.values = new Object[schema.getFieldCount()];
+ }
+
+ protected void checkFieldIndex(int fieldIndex) throws HAWQException {
+ if (fieldIndex < 1 || fieldIndex > values.length)
+ throw new HAWQException(String.format("index out of range [%d, %d]", 1, values.length));
+ }
+
+ /**
+ * Get schema of this record
+ *
+ * @return the schema in this record
+ */
+ public HAWQSchema getSchema() {
+ return schema;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * boolean in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>false</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public boolean getBoolean(String fieldName) throws HAWQException {
+ return getBoolean(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * boolean in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>false</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public boolean getBoolean(int fieldIndex) throws HAWQException {
+ return toBoolean(getString(fieldIndex));
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBoolean(String fieldName, boolean newvalue)
+ throws HAWQException {
+ setBoolean(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBoolean(int fieldIndex, boolean newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * byte in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public byte getByte(String fieldName) throws HAWQException {
+ return getByte(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * byte in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public byte getByte(int fieldIndex) throws HAWQException {
+ return toByte(getString(fieldIndex));
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setByte(String fieldName, byte newvalue) throws HAWQException {
+ setByte(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setByte(int fieldIndex, byte newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * byte[] in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public byte[] getBytes(String fieldName) throws HAWQException {
+ return getBytes(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * byte[] in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public byte[] getBytes(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (byte[]) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBytes(String fieldName, byte[] newvalue)
+ throws HAWQException {
+ setBytes(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBytes(int fieldIndex, byte[] newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * double in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public double getDouble(String fieldName) throws HAWQException {
+ return getDouble(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * double in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public double getDouble(int fieldIndex) throws HAWQException {
+ return toDouble(getString(fieldIndex));
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setDouble(String fieldName, double newvalue)
+ throws HAWQException {
+ setDouble(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setDouble(int fieldIndex, double newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * float in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public float getFloat(String fieldName) throws HAWQException {
+ return getFloat(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * float in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public float getFloat(int fieldIndex) throws HAWQException {
+ return toFloat(getString(fieldIndex));
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setFloat(String fieldName, float newvalue) throws HAWQException {
+ setFloat(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setFloat(int fieldIndex, float newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * int in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public int getInt(String fieldName) throws HAWQException {
+ return getInt(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * int in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public int getInt(int fieldIndex) throws HAWQException {
+ return toInt(getString(fieldIndex));
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setInt(String fieldName, int newvalue) throws HAWQException {
+ setInt(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setInt(int fieldIndex, int newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * long in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public long getLong(String fieldName) throws HAWQException {
+ return getLong(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * long in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public long getLong(int fieldIndex) throws HAWQException {
+ return toLong(getString(fieldIndex));
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setLong(String fieldName, long newvalue) throws HAWQException {
+ setLong(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setLong(int fieldIndex, long newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * short in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public short getShort(String fieldName) throws HAWQException {
+ return getShort(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * short in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public short getShort(int fieldIndex) throws HAWQException {
+ return toShort(getString(fieldIndex));
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setShort(String fieldName, short newvalue) throws HAWQException {
+ setShort(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setShort(int fieldIndex, short newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * String in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public String getString(String fieldName) throws HAWQException {
+ return getString(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * String in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public String getString(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = this.values[fieldIndex - 1];
+ return val == null ? null : val.toString();
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setString(String fieldName, String newvalue)
+ throws HAWQException {
+ setString(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setString(int fieldIndex, String newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * char in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public char getChar(String fieldName) throws HAWQException {
+ return getChar(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * char in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>0</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public char getChar(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ HAWQField field = schema.getField(fieldIndex);
+
+ if (!field.isPrimitive())
+ throw new HAWQException("cannot use of getChar on group field: " + field.getName());
+
+ HAWQPrimitiveField.PrimitiveType fieldType = field.asPrimitive().getType();
+ if (fieldType != HAWQPrimitiveField.PrimitiveType.BPCHAR
+ && fieldType != HAWQPrimitiveField.PrimitiveType.VARCHAR
+ && fieldType != HAWQPrimitiveField.PrimitiveType.TEXT) {
+ throw new HAWQException("cannot use of getChar on field type: " + fieldType);
+ }
+
+ String s = getString(fieldIndex);
+ if (s == null) return 0;
+ if (s.length() == 1) return s.charAt(0);
+ throw new HAWQException("Bad value for type char : " + s);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setChar(String fieldName, char newvalue) throws HAWQException {
+ setChar(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setChar(int fieldIndex, char newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = String.valueOf(newvalue); // convert char to string
+ }
+
+ /**
+ * Retrieves whether the value of the designated column in the current
+ * record is null.
+ *
+ * @param fieldName the name of the field
+ * @return whether the value is null
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public boolean isNull(String fieldName) throws HAWQException {
+ return isNull(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves whether the value of the designated column in the current
+ * record is null.
+ *
+ * @param fieldIndex the index of the field
+ * @return whether the value is null
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public boolean isNull(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ return values[fieldIndex - 1] == null;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to null.
+ *
+ * @param fieldName the name of the field
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setNull(String fieldName) throws HAWQException {
+ setNull(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Set the value of the designated column in the current record to null.
+ *
+ * @param fieldIndex the index of the field
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setNull(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = null;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * java.sql.Timestamp in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public Timestamp getTimestamp(String fieldName) throws HAWQException {
+ return getTimestamp(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * java.sql.Timestamp in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public Timestamp getTimestamp(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (Timestamp) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setTimestamp(String fieldName, Timestamp newvalue)
+ throws HAWQException {
+ setTimestamp(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setTimestamp(int fieldIndex, Timestamp newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * java.sql.Time in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public Time getTime(String fieldName) throws HAWQException {
+ return getTime(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * java.sql.Time in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public Time getTime(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (Time) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setTime(String fieldName, Time newvalue) throws HAWQException {
+ setTime(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setTime(int fieldIndex, Time newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * java.sql.Date in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public Date getDate(String fieldName) throws HAWQException {
+ return getDate(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * java.sql.Date in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public Date getDate(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (Date) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setDate(String fieldName, Date newvalue) throws HAWQException {
+ setDate(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setDate(int fieldIndex, Date newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * BigDecimal in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public BigDecimal getBigDecimal(String fieldName) throws HAWQException {
+ return getBigDecimal(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * BigDecimal in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public BigDecimal getBigDecimal(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (BigDecimal) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBigDecimal(String fieldName, BigDecimal newvalue)
+ throws HAWQException {
+ setBigDecimal(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBigDecimal(int fieldIndex, BigDecimal newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * Array in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public Array getArray(String fieldName) throws HAWQException {
+ return getArray(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * Array in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public Array getArray(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQArray) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setArray(String fieldName, Array newvalue) throws HAWQException {
+ setArray(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setArray(int fieldIndex, Array newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ if (!(newvalue instanceof HAWQArray)) {
+ throw new HAWQException("only support HAWQArray instance");
+ }
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQRecord in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQRecord getField(String fieldName) throws HAWQException {
+ return getField(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQRecord in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQRecord getField(int fieldIndex) throws HAWQException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setField(String fieldName, HAWQRecord newvalue)
+ throws HAWQException {
+ setField(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setField(int fieldIndex, HAWQRecord newvalue)
+ throws HAWQException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQBox in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQBox getBox(String fieldName) throws HAWQException {
+ return getBox(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQBox in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQBox getBox(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQBox) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBox(String fieldName, HAWQBox newvalue) throws HAWQException {
+ setBox(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBox(int fieldIndex, HAWQBox newvalue) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQCircle in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQCircle getCircle(String fieldName) throws HAWQException {
+ return getCircle(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQCircle in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQCircle getCircle(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQCircle) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setCircle(String fieldName, HAWQCircle newvalue)
+ throws HAWQException {
+ setCircle(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setCircle(int fieldIndex, HAWQCircle newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQInterval in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQInterval getInterval(String fieldName) throws HAWQException {
+ return getInterval(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQInterval in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQInterval getInterval(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQInterval) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setInterval(String fieldName, HAWQInterval newvalue)
+ throws HAWQException {
+ setInterval(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setInterval(int fieldIndex, HAWQInterval newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQLseg in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQLseg getLseg(String fieldName) throws HAWQException {
+ return getLseg(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQLseg in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQLseg getLseg(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQLseg) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setLseg(String fieldName, HAWQLseg newvalue)
+ throws HAWQException {
+ setLseg(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setLseg(int fieldIndex, HAWQLseg newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQPath in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQPath getPath(String fieldName) throws HAWQException {
+ return getPath(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQPath in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQPath getPath(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQPath) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setPath(String fieldName, HAWQPath newvalue)
+ throws HAWQException {
+ setPath(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setPath(int fieldIndex, HAWQPath newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQPoint in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQPoint getPoint(String fieldName) throws HAWQException {
+ return getPoint(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQPoint in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQPoint getPoint(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQPoint) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setPoint(String fieldName, HAWQPoint newvalue)
+ throws HAWQException {
+ setPoint(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setPoint(int fieldIndex, HAWQPoint newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQPolygon in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQPolygon getPolygon(String fieldName) throws HAWQException {
+ return getPolygon(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQPolygon in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQPolygon getPolygon(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQPolygon) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setPolygon(String fieldName, HAWQPolygon newvalue)
+ throws HAWQException {
+ setPolygon(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setPolygon(int fieldIndex, HAWQPolygon newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQMacaddr in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQMacaddr getMacaddr(String fieldName) throws HAWQException {
+ return getMacaddr(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQMacaddr in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQMacaddr getMacaddr(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQMacaddr) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setMacaddr(String fieldName, HAWQMacaddr newvalue)
+ throws HAWQException {
+ setMacaddr(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setMacaddr(int fieldIndex, HAWQMacaddr newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQInet in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQInet getInet(String fieldName) throws HAWQException {
+ return getInet(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQInet in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQInet getInet(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQInet) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setInet(String fieldName, HAWQInet newvalue)
+ throws HAWQException {
+ setInet(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setInet(int fieldIndex, HAWQInet newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQCidr in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQCidr getCidr(String fieldName) throws HAWQException {
+ return getCidr(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQCidr in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQCidr getCidr(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQCidr) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setCidr(String fieldName, HAWQCidr newvalue)
+ throws HAWQException {
+ setCidr(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setCidr(int fieldIndex, HAWQCidr newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQVarbit in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQVarbit getVarbit(String fieldName) throws HAWQException {
+ return getVarbit(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQVarbit in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQVarbit getVarbit(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ Object val = values[fieldIndex - 1];
+ return val == null ? null : (HAWQVarbit) val;
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setVarbit(String fieldName, HAWQVarbit newvalue)
+ throws HAWQException {
+ setVarbit(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setVarbit(int fieldIndex, HAWQVarbit newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQVarbit in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public HAWQVarbit getBit(String fieldName) throws HAWQException {
+ return getBit(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * HAWQVarbit in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public HAWQVarbit getBit(int fieldIndex) throws HAWQException {
+ return getVarbit(fieldIndex);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldName the name of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBit(String fieldName, HAWQVarbit newvalue)
+ throws HAWQException {
+ setBit(schema.getFieldIndex(fieldName), newvalue);
+ }
+
+ /**
+ * Set the value of the designated column in the current record to new
+ * value.
+ *
+ * @param fieldIndex the index of the field
+ * @param newvalue new value to set
+ * @throws HAWQException if fieldIndex is not valid
+ */
+ public void setBit(int fieldIndex, HAWQVarbit newvalue)
+ throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ this.values[fieldIndex - 1] = newvalue;
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * Object in the Java programming language.
+ *
+ * @param fieldName the name of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldName is not valid; if fail to get value from file
+ */
+ public Object getObject(String fieldName) throws HAWQException {
+ return getObject(schema.getFieldIndex(fieldName));
+ }
+
+ /**
+ * Retrieves the value of the designated column in the current record as a
+ * Object in the Java programming language.
+ *
+ * @param fieldIndex the index of the field
+ * @return the field value; if the value is SQL <code>NULL</code>, the
+ * value returned is <code>null</code>
+ * @throws HAWQException if fieldIndex is not valid; if fail to get value from file
+ */
+ public Object getObject(int fieldIndex) throws HAWQException {
+ this.checkFieldIndex(fieldIndex);
+ return values[fieldIndex - 1];
+ }
+
+ /**
+ * Reset the record to initial state
+ */
+ public void reset() {
+ for (int i = 0; i < values.length; i++) {
+ values[i] = null;
+ }
+ }
+
+ //----------------- Formatting Methods -------------------
+ protected static boolean toBoolean(String s) {
+ if (s != null) {
+ s = s.trim();
+
+ if (s.equalsIgnoreCase("t") || s.equalsIgnoreCase("true") || s.equals("1"))
+ return true;
+
+ if (s.equalsIgnoreCase("f") || s.equalsIgnoreCase("false") || s.equals("0"))
+ return false;
+
+ try {
+ if (Double.valueOf(s).doubleValue() == 1)
+ return true;
+ } catch (NumberFormatException e) {
+ }
+ }
+ return false; // SQL NULL
+ }
+
+ private static final BigInteger BYTEMAX = new BigInteger(Byte.toString(Byte.MAX_VALUE));
+ private static final BigInteger BYTEMIN = new BigInteger(Byte.toString(Byte.MIN_VALUE));
+
+ protected static byte toByte(String s) throws HAWQException {
+ if (s != null) {
+ s = s.trim();
+ if (s.length() == 0)
+ return 0;
+ try {
+ // try the optimal parse
+ return Byte.parseByte(s);
+ } catch (NumberFormatException e) {
+ // didn't work, assume the column is not a byte
+ try {
+ BigDecimal n = new BigDecimal(s);
+ BigInteger i = n.toBigInteger();
+
+ int gt = i.compareTo(BYTEMAX);
+ int lt = i.compareTo(BYTEMIN);
+
+ if (gt > 0 || lt < 0) {
+ throw new HAWQException("Bad value for type byte : " + s);
+ }
+ return i.byteValue();
+ } catch (NumberFormatException ex) {
+ throw new HAWQException("Bad value for type byte : " + s);
+ }
+ }
+ }
+ return 0; // SQL NULL
+ }
+
+ private static final BigInteger SHORTMAX = new BigInteger(Short.toString(Short.MAX_VALUE));
+ private static final BigInteger SHORTMIN = new BigInteger(Short.toString(Short.MIN_VALUE));
+
+ protected static short toShort(String s) throws HAWQException {
+ if (s != null) {
+ s = s.trim();
+ try {
+ return Short.parseShort(s);
+ } catch (NumberFormatException e) {
+ try {
+ BigDecimal n = new BigDecimal(s);
+ BigInteger i = n.toBigInteger();
+ int gt = i.compareTo(SHORTMAX);
+ int lt = i.compareTo(SHORTMIN);
+
+ if (gt > 0 || lt < 0) {
+ throw new HAWQException("Bad value for type short : " + s);
+ }
+ return i.shortValue();
+
+ } catch (NumberFormatException ne) {
+ throw new HAWQException("Bad value for type short : " + s);
+ }
+ }
+ }
+ return 0; // SQL NULL
+ }
+
+ private static final BigInteger INTMAX = new BigInteger(Integer.toString(Integer.MAX_VALUE));
+ private static final BigInteger INTMIN = new BigInteger(Integer.toString(Integer.MIN_VALUE));
+
+ protected static int toInt(String s) throws HAWQException {
+ if (s != null) {
+ try {
+ s = s.trim();
+ return Integer.parseInt(s);
+ } catch (NumberFormatException e) {
+ try {
+ BigDecimal n = new BigDecimal(s);
+ BigInteger i = n.toBigInteger();
+
+ int gt = i.compareTo(INTMAX);
+ int lt = i.compareTo(INTMIN);
+
+ if (gt > 0 || lt < 0) {
+ throw new HAWQException("Bad value for type int : " + s);
+ }
+ return i.intValue();
+
+ } catch (NumberFormatException ne) {
+ throw new HAWQException("Bad value for type int : " + s);
+ }
+ }
+ }
+ return 0; // SQL NULL
+ }
+
+ private final static BigInteger LONGMAX = new BigInteger(Long.toString(Long.MAX_VALUE));
+ private final static BigInteger LONGMIN = new BigInteger(Long.toString(Long.MIN_VALUE));
+
+ protected static long toLong(String s) throws HAWQException {
+ if (s != null) {
+ try {
+ s = s.trim();
+ return Long.parseLong(s);
+ } catch (NumberFormatException e) {
+ try {
+ BigDecimal n = new BigDecimal(s);
+ BigInteger i = n.toBigInteger();
+ int gt = i.compareTo(LONGMAX);
+ int lt = i.compareTo(LONGMIN);
+
+ if (gt > 0 || lt < 0) {
+ throw new HAWQException("Bad value for type long : " + s);
+ }
+ return i.longValue();
+ } catch (NumberFormatException ne) {
+ throw new HAWQException("Bad value for type long : " + s);
+ }
+ }
+ }
+ return 0; // SQL NULL
+ }
+
+ protected static float toFloat(String s) throws HAWQException {
+ if (s != null) {
+ try {
+ s = s.trim();
+ return Float.parseFloat(s);
+ } catch (NumberFormatException e) {
+ throw new HAWQException("Bad value for type float : " + s);
+ }
+ }
+ return 0; // SQL NULL
+ }
+
+ protected static double toDouble(String s) throws HAWQException {
+ if (s != null) {
+ try {
+ s = s.trim();
+ return Double.parseDouble(s);
+ } catch (NumberFormatException e) {
+ throw new HAWQException("Bad value for type double : " + s);
+ }
+ }
+ return 0; // SQL NULL
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8b26974c/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/conf/HAWQConfiguration.java
----------------------------------------------------------------------
diff --git a/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/conf/HAWQConfiguration.java b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/conf/HAWQConfiguration.java
new file mode 100644
index 0000000..6b517c6
--- /dev/null
+++ b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/conf/HAWQConfiguration.java
@@ -0,0 +1,101 @@
+package com.pivotal.hawq.mapreduce.conf;
+
+import com.pivotal.hawq.mapreduce.schema.HAWQSchema;
+import org.apache.hadoop.conf.Configuration;
+
+/**
+ * A container for configuration property names for jobs with HAWQ input/output.
+ * <p/>
+ * The job can be configured using the static methods in this class.
+ * Alternatively, the properties can be set in the configuration with proper
+ * values.
+ */
+public final class HAWQConfiguration {
+
+ /**
+ * The schema of the table
+ */
+ public static final String TABLE_SCHEMA_PROPERTY = "mapreduce.hawq.table.schema";
+
+ /**
+ * The encoding of the table
+ */
+ public static final String TABLE_ENCODING_PROPERTY = "mapreduce.hawq.table.encoding";
+
+ /*
+ * GOSQL-1047
+ *
+ * Save version of database
+ */
+ /**
+ * The version of the database
+ */
+ public static final String DATABASE_VERSION_PROPERTY = "mapreduce.hawq.database.version";
+
+ /**
+ * Get the schema of the table from configuration
+ *
+ * @param conf the configuration
+ * @return schema of the table
+ */
+ public static HAWQSchema getInputTableSchema(Configuration conf) {
+ return HAWQSchema.fromString(conf.get(TABLE_SCHEMA_PROPERTY, null));
+ }
+
+ /**
+ * Set the schema of the table into configuration
+ *
+ * @param conf the configuration
+ * @param schema schema of the table
+ */
+ public static void setInputTableSchema(Configuration conf, HAWQSchema schema) {
+ conf.setStrings(TABLE_SCHEMA_PROPERTY, schema.toString());
+ }
+
+ /**
+ * Get the encoding of the table from configuration
+ *
+ * @param conf the configuration
+ * @return encoding of the table
+ */
+ public static String getInputTableEncoding(Configuration conf) {
+ return conf.get(TABLE_ENCODING_PROPERTY, "UTF8");
+ }
+
+ /**
+ * Set the encoding of the table into configuration
+ *
+ * @param conf the configuration
+ * @param encoding encoding of the table
+ */
+ public static void setInputTableEncoding(Configuration conf, String encoding) {
+ conf.set(TABLE_ENCODING_PROPERTY, encoding);
+ }
+
+ /*
+ * GOSQL-1047
+ *
+ * Two functions below supply get/set method for version of database
+ */
+
+ /**
+ * Get version of database from configuration
+ *
+ * @param conf The configuration
+ * @return version of database
+ */
+ public static String getDatabaseVersion(Configuration conf) {
+ return conf.get(HAWQConfiguration.DATABASE_VERSION_PROPERTY);
+ }
+
+ /**
+ * Set version of database into configuration
+ *
+ * @param conf the configuration
+ * @param version version of database
+ */
+ public static void setDatabaseVersion(Configuration conf, String version) {
+ conf.set(HAWQConfiguration.DATABASE_VERSION_PROPERTY, version);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8b26974c/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQArray.java
----------------------------------------------------------------------
diff --git a/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQArray.java b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQArray.java
new file mode 100644
index 0000000..51fa714
--- /dev/null
+++ b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQArray.java
@@ -0,0 +1,200 @@
+package com.pivotal.hawq.mapreduce.datatype;
+
+import java.sql.Array;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Map;
+
+import com.pivotal.hawq.mapreduce.schema.HAWQPrimitiveField;
+
+/**
+ * Store value of array (_int2, _int4, etc.) in database
+ */
+public final class HAWQArray implements Array
+{
+
+ StringBuffer buffer = new StringBuffer();
+ private int baseType = -1;
+ private String baseTypeName = "";
+ private Object array = null;
+
+ /**
+ * @param baseType
+ * type oid, e.g. 23 means int4
+ * @param baseTypeName
+ * type name, e.g. int4
+ * @param startOfEachDime
+ * @param numOfEachDime
+ * @param datas
+ */
+ public HAWQArray(int baseType,
+ HAWQPrimitiveField.PrimitiveType baseTypeName,
+ int[] startOfEachDime, int[] numOfEachDime, Object datas)
+ {
+ String separator = ",";
+ if (baseTypeName == HAWQPrimitiveField.PrimitiveType.BOX)
+ separator = ";";
+
+ boolean startAllOne = true;
+ for (int i = 0; i < startOfEachDime.length; ++i)
+ {
+ if (startOfEachDime[i] != 1)
+ {
+ startAllOne = false;
+ break;
+ }
+ }
+ if (!startAllOne)
+ {
+ for (int j = 0; j < startOfEachDime.length; ++j)
+ {
+ buffer.append('[').append(startOfEachDime[j]).append(':')
+ .append((startOfEachDime[j] + numOfEachDime[j] - 1))
+ .append(']');
+ }
+ buffer.append('=');
+ }
+
+ Object allDatas[] = null;
+ switch (startOfEachDime.length)
+ {
+ case 1:
+ this.array = datas;
+ buffer.append('{');
+ allDatas = (Object[]) datas;
+ for (int i = 0; i < allDatas.length; ++i)
+ {
+ buffer.append(allDatas[i]);
+ if (i != allDatas.length - 1)
+ buffer.append(separator);
+ else
+ buffer.append('}');
+ }
+ break;
+ case 2:
+ Object newDatas2[][] = new Object[numOfEachDime[0]][numOfEachDime[1]];
+ buffer.append('{');
+ allDatas = (Object[]) datas;
+ for (int i = 0; i < newDatas2.length; ++i)
+ {
+ buffer.append('{');
+ for (int j = 0; j < newDatas2[i].length; ++j)
+ {
+ newDatas2[i][j] = allDatas[i * newDatas2[i].length + j];
+ buffer.append(newDatas2[i][j]);
+ if (j != newDatas2[i].length - 1)
+ buffer.append(separator);
+ else
+ buffer.append('}');
+ }
+ if (i != newDatas2.length - 1)
+ buffer.append(',');
+ else
+ buffer.append('}');
+ }
+ array = newDatas2;
+ break;
+ case 3:
+ Object newDatas3[][][] = new Object[numOfEachDime[0]][numOfEachDime[1]][numOfEachDime[2]];
+ buffer.append('{');
+ allDatas = (Object[]) datas;
+ for (int i = 0; i < newDatas3.length; ++i)
+ {
+ buffer.append('{');
+ for (int j = 0; j < newDatas3[i].length; ++j)
+ {
+ buffer.append('{');
+ for (int k = 0; k < newDatas3[i][j].length; ++k)
+ {
+ newDatas3[i][j][k] = allDatas[i * newDatas3[i].length
+ * newDatas3[i][j].length + j
+ * newDatas3[i][j].length + k];
+ buffer.append(newDatas3[i][j][k]);
+ if (k != newDatas3[i][j].length - 1)
+ buffer.append(separator);
+ else
+ buffer.append('}');
+ }
+ if (j != newDatas3[i].length - 1)
+ buffer.append(',');
+ else
+ buffer.append('}');
+ }
+ if (i != newDatas3.length - 1)
+ buffer.append(',');
+ else
+ buffer.append('}');
+ }
+ array = newDatas3;
+ break;
+ }
+
+ this.baseType = baseType;
+ this.baseTypeName = baseTypeName.toString().toLowerCase();
+ }
+
+ @Override
+ public String toString()
+ {
+ return buffer.toString();
+ }
+
+ public void free() throws SQLException
+ {
+ array = null;
+ }
+
+ public Object getArray() throws SQLException
+ {
+ return array;
+ }
+
+ public Object getArray(Map<String, Class<?>> arg0) throws SQLException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public Object getArray(long arg0, int arg1) throws SQLException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public Object getArray(long arg0, int arg1, Map<String, Class<?>> arg2)
+ throws SQLException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public int getBaseType() throws SQLException
+ {
+ return baseType;
+ }
+
+ public String getBaseTypeName() throws SQLException
+ {
+ return baseTypeName;
+ }
+
+ public ResultSet getResultSet() throws SQLException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public ResultSet getResultSet(Map<String, Class<?>> arg0)
+ throws SQLException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public ResultSet getResultSet(long arg0, int arg1) throws SQLException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public ResultSet getResultSet(long arg0, int arg1,
+ Map<String, Class<?>> arg2) throws SQLException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8b26974c/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQBox.java
----------------------------------------------------------------------
diff --git a/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQBox.java b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQBox.java
new file mode 100644
index 0000000..aac4d61
--- /dev/null
+++ b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQBox.java
@@ -0,0 +1,116 @@
+package com.pivotal.hawq.mapreduce.datatype;
+
+import com.pivotal.hawq.mapreduce.HAWQException;
+
+/**
+ * Store value of box in database
+ */
+public class HAWQBox
+{
+ private HAWQPoint point1;
+ private HAWQPoint point2;
+
+ /**
+ * Initialize a box from string
+ *
+ * @param value
+ * the value that varbit init from. Should be like this:
+ * (1.2,1.3),(2.2,2.3)
+ * @throws HAWQException
+ */
+ public HAWQBox(String value) throws HAWQException
+ {
+ String[] pointStrs = value.split(",");
+
+ if (pointStrs.length != 4)
+ throw new HAWQException("Cannot convert " + value + " to HAWQBox");
+
+ String pointStr1 = pointStrs[0] + "," + pointStrs[1];
+ String pointStr2 = pointStrs[2] + "," + pointStrs[3];
+
+ try
+ {
+ init(new HAWQPoint(pointStr1), new HAWQPoint(pointStr2));
+ }
+ catch (HAWQException e)
+ {
+ throw new HAWQException("Cannot convert " + value + " to HAWQBox");
+ }
+ }
+
+ /**
+ * Initialize a box by coordinates
+ *
+ * @param x1
+ * abscissa of first vertex on same diagonal
+ * @param y1
+ * ordinate of first vertex on same diagonal
+ * @param x2
+ * abscissa of second vertex on same diagonal
+ * @param y2
+ * ordinate of second vertex on same diagonal
+ */
+ public HAWQBox(double x1, double y1, double x2, double y2)
+ {
+ init(new HAWQPoint(x1, y1), new HAWQPoint(x2, y2));
+ }
+
+ /**
+ * Initialize a box by vertexes
+ *
+ * @param point1
+ * first vertex on same diagonal
+ * @param point2
+ * second vertex on same diagonal
+ */
+ public HAWQBox(HAWQPoint point1, HAWQPoint point2)
+ {
+ init(point1, point2);
+ }
+
+ private void init(HAWQPoint point1, HAWQPoint point2)
+ {
+ this.point1 = point1;
+ this.point2 = point2;
+ }
+
+ /**
+ * Get first vertex
+ *
+ * @return first vertex
+ */
+ public HAWQPoint getPoint1()
+ {
+ return point1;
+ }
+
+ /**
+ * Get second vertex
+ *
+ * @return second vertex
+ */
+ public HAWQPoint getPoint2()
+ {
+ return point2;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof HAWQBox)
+ {
+ HAWQBox other = (HAWQBox) obj;
+ return point1.equals(other.getPoint1())
+ && point2.equals(other.getPoint2());
+ }
+ return false;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(point1.toString()).append(',').append(point2.toString());
+ return buffer.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8b26974c/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQCidr.java
----------------------------------------------------------------------
diff --git a/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQCidr.java b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQCidr.java
new file mode 100644
index 0000000..c6fcda5
--- /dev/null
+++ b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQCidr.java
@@ -0,0 +1,74 @@
+package com.pivotal.hawq.mapreduce.datatype;
+
+import com.pivotal.hawq.mapreduce.HAWQException;
+
+/**
+ * Store value of cidr in database
+ */
+public class HAWQCidr extends HAWQInet
+{
+ /**
+ * Initialize an cidr from byte array
+ *
+ * @param inetType
+ * ipv4 or ipv6
+ * @param bytes
+ * byte array that cidr init from
+ * @param mask
+ * net mask
+ * @throws HAWQException
+ * length of bytes is not enough to init cidr or inetType is
+ * invalid
+ */
+ public HAWQCidr(InetType inetType, byte[] bytes, short mask)
+ throws HAWQException
+ {
+ this(inetType, bytes, 0, mask);
+ }
+
+ /**
+ * Initialize an cidr from byte array
+ *
+ * @param inetType
+ * ipv4 or ipv6
+ * @param bytes
+ * byte array that cidr init from
+ * @param offset
+ * offset in byte array
+ * @param mask
+ * net mask
+ * @throws HAWQException
+ * length of bytes is not enough to init cidr or inetType is
+ * invalid
+ */
+ public HAWQCidr(InetType inetType, byte[] bytes, int offset, short mask)
+ throws HAWQException
+ {
+ super(inetType, bytes, offset, mask);
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof HAWQCidr)
+ {
+ HAWQInet other = (HAWQInet) obj;
+ return super.equals(other);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString()
+ {
+ String temp = super.toString();
+ if (temp.indexOf('/') == -1)
+ {
+ if (getInetType() == InetType.IPV4)
+ return temp + "/32";
+ else
+ return temp + "/128";
+ }
+ return temp;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8b26974c/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQCircle.java
----------------------------------------------------------------------
diff --git a/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQCircle.java b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQCircle.java
new file mode 100644
index 0000000..918ee0e
--- /dev/null
+++ b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQCircle.java
@@ -0,0 +1,131 @@
+package com.pivotal.hawq.mapreduce.datatype;
+
+import com.pivotal.hawq.mapreduce.HAWQException;
+
+/**
+ * Store value of circle in database
+ */
+public class HAWQCircle
+{
+ private HAWQPoint center;
+ private double radius;
+
+ /**
+ * Initialize a circle from string
+ *
+ * @param value
+ * the value that circle init from. Should be like this:
+ * <(1.2,1.3),2.2>
+ * @throws HAWQException
+ * when this value is not correct for circle
+ */
+ public HAWQCircle(String value) throws HAWQException
+ {
+ if (value.startsWith("<") && value.endsWith(">"))
+ {
+ String[] pointStrs = value.substring(1, value.length() - 1).split(
+ ",");
+
+ if (pointStrs.length != 3)
+ throw new HAWQException("Cannot convert " + value
+ + " to HAWQCircle");
+
+ String pointStr = pointStrs[0] + "," + pointStrs[1];
+
+ try
+ {
+ init(new HAWQPoint(pointStr), Double.parseDouble(pointStrs[2]));
+ }
+ catch (Exception e)
+ {
+ throw new HAWQException("Cannot convert " + value
+ + " to HAWQCircle");
+ }
+ }
+ else
+ {
+ throw new HAWQException("Cannot convert " + value
+ + " to HAWQCircle");
+ }
+ }
+
+ /**
+ * Initialize a box by coordinates
+ *
+ * @param centerX
+ * abscissa of center
+ * @param centerY
+ * ordinate of center
+ * @param radius
+ * radius of this circle
+ */
+ public HAWQCircle(double centerX, double centerY, double radius)
+ {
+ init(new HAWQPoint(centerX, centerY), radius);
+ }
+
+ /**
+ * Initialize a box by center point and radius
+ *
+ * @param center
+ * center point of this circle
+ * @param radius
+ * radius of this circle
+ */
+ public HAWQCircle(HAWQPoint center, double radius)
+ {
+ init(center, radius);
+ }
+
+ private void init(HAWQPoint center, double radius)
+ {
+ this.center = center;
+ this.radius = radius;
+ }
+
+ /**
+ * Get center of this circle
+ *
+ * @return circle center
+ */
+ public HAWQPoint getCenter()
+ {
+ return center;
+ }
+
+ /**
+ * Get radius of this circle
+ *
+ * @return circle radius
+ */
+ public double getRadius()
+ {
+ return radius;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof HAWQCircle)
+ {
+ HAWQCircle other = (HAWQCircle) obj;
+ return radius == other.getRadius()
+ && center.equals(other.getCenter());
+ }
+ return false;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append('<').append(center).append(',').append(radius)
+ .append('>');
+ /*
+ * GPSQL-936
+ *
+ * Remove useless ".0" for float/double
+ */
+ return buffer.toString().replace(".0", "");
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8b26974c/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQInet.java
----------------------------------------------------------------------
diff --git a/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQInet.java b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQInet.java
new file mode 100644
index 0000000..12cac26
--- /dev/null
+++ b/contrib/hawq-hadoop/hawq-mapreduce-common/src/main/java/com/pivotal/hawq/mapreduce/datatype/HAWQInet.java
@@ -0,0 +1,287 @@
+package com.pivotal.hawq.mapreduce.datatype;
+
+import com.pivotal.hawq.mapreduce.HAWQException;
+
+/**
+ * Store value of inet in database
+ */
+public class HAWQInet
+{
+ public static enum InetType
+ {
+ IPV4, IPV6
+ }
+
+ private short mask;
+ private int[] ipv6_value;
+ private int[] ipv4_value;
+ private InetType inetType;
+ private String value = null;
+
+ /**
+ * Initialize an inet from string
+ *
+ * @param value
+ * the value that inet init from
+ * @throws HAWQException
+ * when this value is not correct for inet
+ */
+ public HAWQInet(String value) throws HAWQException
+ {
+ try
+ {
+ int offset = value.indexOf('.');
+ int maskOffset = value.indexOf('/');
+ String valueWithoutMask = value;
+ if (maskOffset != -1)
+ {
+ mask = Short.parseShort(value.substring(maskOffset + 1));
+ valueWithoutMask = value.substring(0, maskOffset);
+ }
+
+ if (offset != -1)
+ {
+ if (maskOffset == -1)
+ mask = 32;
+ inetType = InetType.IPV4;
+ ipv4_value = new int[4];
+ int dot1 = valueWithoutMask.indexOf('.');
+ int dot2 = valueWithoutMask.indexOf('.', dot1 + 1);
+ int dot3 = valueWithoutMask.indexOf('.', dot2 + 1);
+ ipv4_value[0] = Integer.parseInt(valueWithoutMask.substring(0,
+ dot1));
+ ipv4_value[1] = Integer.parseInt(valueWithoutMask.substring(
+ dot1 + 1, dot2));
+ ipv4_value[2] = Integer.parseInt(valueWithoutMask.substring(
+ dot2 + 1, dot3));
+ ipv4_value[3] = Integer.parseInt(valueWithoutMask
+ .substring(dot3 + 1));
+
+ if (mask == 32)
+ this.value = valueWithoutMask;
+ else
+ this.value = value;
+ }
+ else
+ {
+ if (maskOffset == -1)
+ mask = 128;
+ inetType = InetType.IPV6;
+ ipv6_value = new int[8];
+ for (int i = 0; i < 8; ++i)
+ ipv6_value[i] = 0;
+
+ int indexOfMiddleZero = valueWithoutMask.indexOf("::");
+ if (indexOfMiddleZero == -1)
+ {
+ String[] values = valueWithoutMask.split(":");
+ for (int i = 0; i < 8; ++i)
+ ipv6_value[i] = Integer.parseInt(values[i], 16);
+ }
+ else
+ {
+ String[] valueFirstPart = valueWithoutMask.substring(0,
+ indexOfMiddleZero).split(":");
+ String[] valueSecondPart = valueWithoutMask.substring(
+ indexOfMiddleZero + 2).split(":");
+ if (valueFirstPart.length != 1
+ || !valueFirstPart[0].equals(""))
+ for (int i = 0; i < valueFirstPart.length; ++i)
+ ipv6_value[i] = Integer.parseInt(valueFirstPart[i],
+ 16);
+ if (valueSecondPart.length != 1
+ || !valueSecondPart[0].equals(""))
+ for (int i = 0; i < valueSecondPart.length; ++i)
+ ipv6_value[7 - i] = Integer.parseInt(
+ valueSecondPart[i], 16);
+ }
+ if (mask == 128)
+ this.value = valueWithoutMask;
+ else
+ this.value = value;
+ }
+ }
+ catch (Exception e)
+ {
+ throw new HAWQException("Cannot convert " + value + " to HAWQInet");
+ }
+ }
+
+ /**
+ * Initialize an inet from byte array
+ *
+ * @param inetType
+ * ipv4 or ipv6
+ * @param bytes
+ * byte array that inet init from
+ * @param mask
+ * net mask
+ * @throws HAWQException
+ * length of bytes is not enough to init inet or inetType is
+ * invalid
+ */
+ public HAWQInet(InetType inetType, byte[] bytes, short mask)
+ throws HAWQException
+ {
+ this(inetType, bytes, 0, mask);
+ }
+
+ /**
+ * Initialize an inet from byte array
+ *
+ * @param inetType
+ * ipv4 or ipv6
+ * @param bytes
+ * byte array that inet init from
+ * @param offset
+ * offset in byte array
+ * @param mask
+ * net mask
+ * @throws HAWQException
+ * length of bytes is not enough to init inet or inetType is
+ * invalid
+ */
+ public HAWQInet(InetType inetType, byte[] bytes, int offset, short mask)
+ throws HAWQException
+ {
+ this.inetType = inetType;
+ this.mask = mask;
+ switch (this.inetType)
+ {
+ case IPV6:
+ ipv6_value = new int[8];
+ try
+ {
+ for (int i = 0; i < 8; ++i)
+ {
+ ipv6_value[i] = (((int) bytes[offset + 2 * i] & 0xFF) << 8)
+ | (((int) bytes[offset + 2 * i + 1]) & 0xFF);
+ }
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ throw new HAWQException("Need at least 16 bytes: offset is "
+ + offset + " while length of bytes is " + bytes.length);
+ }
+ break;
+ case IPV4:
+ ipv4_value = new int[4];
+ try
+ {
+ ipv4_value[0] = (int) bytes[offset] & 0xFF;
+ ipv4_value[1] = (int) bytes[offset + 1] & 0xFF;
+ ipv4_value[2] = (int) bytes[offset + 2] & 0xFF;
+ ipv4_value[3] = (int) bytes[offset + 3] & 0xFF;
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ throw new HAWQException("Need at least 4 bytes: offset is "
+ + offset + " while length of bytes is " + bytes.length);
+ }
+ break;
+ default:
+ throw new HAWQException("Wrong inet type");
+ }
+
+ }
+
+ /**
+ * Get type of this inet(ipv4/ipv6)
+ *
+ * @return type of this inet
+ */
+ public InetType getInetType()
+ {
+ return inetType;
+ }
+
+ /**
+ * Get net mask of this inet
+ *
+ * @return net mask
+ */
+ public short getMask()
+ {
+ return mask;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof HAWQInet)
+ {
+ HAWQInet other = (HAWQInet) obj;
+ if (inetType != other.getInetType())
+ return false;
+ if (mask != other.getMask())
+ return false;
+ if (!toString().equals(other.toString()))
+ return false;
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String toString()
+ {
+ if (value != null)
+ return value;
+
+ StringBuffer buffer = new StringBuffer();
+ switch (inetType)
+ {
+ case IPV6:
+ boolean hasContinuousZero = false;
+ for (int i = 0; i < 8; ++i)
+ {
+ buffer.append(Integer.toHexString(ipv6_value[i]));
+ if (i != 7)
+ {
+ buffer.append(':');
+ if (ipv6_value[i] == 0 && ipv6_value[i + 1] == 0)
+ hasContinuousZero = true;
+ }
+ }
+ if (mask != 128)
+ buffer.append('/').append(mask);
+
+ if (hasContinuousZero)
+ {
+ StringBuffer temp = new StringBuffer();
+ int offset = -1, length = -1;
+ for (int i = 7; i >= 2; --i)
+ {
+ temp.delete(0, buffer.length());
+ for (int j = 0; j < i; ++j)
+ {
+ if (j != 0)
+ temp.append(':');
+ temp.append('0');
+ }
+ offset = buffer.indexOf(temp.toString());
+ if (offset != -1)
+ {
+ length = temp.length();
+ break;
+ }
+ }
+ if (length != 13)
+ buffer.replace(offset, offset + length, "");
+ else
+ buffer.replace(offset, offset + length, ":");
+ }
+ break;
+ case IPV4:
+ buffer.append(ipv4_value[0]).append('.').append(ipv4_value[1])
+ .append('.').append(ipv4_value[2]).append('.')
+ .append(ipv4_value[3]);
+ if (mask != 32)
+ buffer.append('/').append(mask);
+ break;
+ default:
+ return null;
+ }
+ return buffer.toString();
+ }
+}