@Override public void toJSONString(JSONStringer stringer) throws JSONException { super.toJSONString(stringer); stringer.keySymbolValuePair(Members.COLUMN_IDX, m_columnIndex); if (m_tableIdx > 0) { stringer.keySymbolValuePair(Members.TABLE_IDX, m_tableIdx); } }
@Override public void toJSONString(JSONStringer stringer) throws JSONException { super.toJSONString(stringer); stringer.key(Members.COLUMN_IDX.name()).value(m_columnIndex); stringer.key(Members.TABLE_NAME.name()).value(m_tableName); stringer.key(Members.COLUMN_NAME.name()).value(m_columnName); stringer.key(Members.COLUMN_ALIAS.name()).value(m_columnAlias); }
@Override public void toJSONString(JSONStringer stringer) throws JSONException { super.toJSONString(stringer); stringer.key(Members.COLUMN_IDX.name()).value(m_columnIndex); stringer.key(Members.TABLE_NAME.name()).value(m_tableName); // Column name is not required in the EE but testing showed that it is // needed to support type resolution of indexed expressions in the planner // after they get round-tripped through the catalog's index definition. stringer.key(Members.COLUMN_NAME.name()).value(m_columnName); }
@Override public void validate() throws Exception { super.validate(); if ((m_right != null) || (m_left != null)) throw new Exception("ERROR: A value expression has child expressions for '" + this + "'"); // Column Index if (m_columnIndex < 0) { throw new Exception("ERROR: Invalid column index '" + m_columnIndex + "' for '" + this + "'"); } }
@Override public void validate() throws Exception { super.validate(); // Make sure our value is not null if (m_value == null && !m_isNull) { throw new Exception("ERROR: The constant value for '" + this + "' is inconsistently null"); // Make sure the value type is something we support here } else if (m_valueType == VoltType.NULL || m_valueType == VoltType.VOLTTABLE) { throw new Exception( "ERROR: Invalid constant value type '" + m_valueType + "' for '" + this + "'"); } }
@Override public void toJSONString(JSONStringer stringer) throws JSONException { super.toJSONString(stringer); stringer.key(Members.ISNULL.name()); stringer.value(m_isNull); stringer.key(Members.VALUE.name()); if (m_isNull) { stringer.value("NULL"); } else { switch (m_valueType) { case INVALID: throw new JSONException( "ConstantValueExpression.toJSONString(): value_type should never be VoltType.INVALID"); case NULL: stringer.value("null"); break; case TINYINT: stringer.value(Long.valueOf(m_value)); break; case SMALLINT: stringer.value(Long.valueOf(m_value)); break; case INTEGER: stringer.value(Long.valueOf(m_value)); break; case BIGINT: stringer.value(Long.valueOf(m_value)); break; case FLOAT: stringer.value(Double.valueOf(m_value)); break; case STRING: stringer.value(m_value); break; case VARBINARY: stringer.value(m_value); break; case TIMESTAMP: stringer.value(Long.valueOf(m_value)); break; case DECIMAL: stringer.value(m_value); break; default: throw new JSONException( "ConstantValueExpression.toJSONString(): Unrecognized value_type " + m_valueType); } } }