@Override public boolean equals(Object obj) { boolean valid = obj != null && obj instanceof CastEval; if (valid) { CastEval another = (CastEval) obj; boolean b1 = child.equals(another.child); boolean b2 = target.equals(another.target); return b1 && b2; } else { return false; } }
public CharDatum(byte val) { super(Char(1)); this.size = 1; bytes = new byte[size]; bytes[0] = val; }
StringBuilder sb = new StringBuilder(type.kind().name()); if (type.isTypeParameterized()) { sb.append("<"); sb.append(StringUtils.join(type.getTypeParameters(), ",", new Function<Type, String>() { @Override public String apply(@Nullable Type type) { if (type.isValueParameterized()) { sb.append("("); sb.append(StringUtils.join(type.getValueParameters(), ",")); sb.append(")"); if (type.isStruct()) { Record record = (Record) type; sb.append("[");
return Char(dataType.getLengthOrPrecision()); } else { return Char(1); return Char(dataType.getLengthOrPrecision()); } else { return Varchar(1); return Array(convertDataType(dataType.getElementType())); } else if (type == TajoDataTypes.Type.RECORD) { return Record(convertTableElementsSchema(dataType.getNestedRecordTypes())); } else if (type == TajoDataTypes.Type.MAP) { return Map(convertDataType(dataType.getKeyType()), convertDataType(dataType.getValueType())); } else if (type == TajoDataTypes.Type.NUMERIC) { if (dataType.hasLengthOrPrecision() && dataType.hasScale()) { return Numeric(dataType.getLengthOrPrecision(), dataType.getScale()); } else if (dataType.hasLengthOrPrecision()) { return Numeric(dataType.getLengthOrPrecision()); } else { return Numeric;
public void pushDummyValue(org.apache.tajo.type.Type type) { TajoDataTypes.Type baseType = type.kind(); if (type.isNull()) { pushNullOfThreeValuedLogic(); } else if (isJVMInternalInt(type) || baseType == DATE) { push(0); } else if (baseType == INT8 || baseType == TIMESTAMP || baseType == TIME) { push(0L); } else if (baseType == FLOAT8) { push(0.0d); } else if (baseType == FLOAT4) { push(0.0f); } else if (baseType == CHAR || baseType == TEXT) { push(""); } else if (baseType == INTERVAL || baseType == PROTOBUF) { invokeStatic(NullDatum.class, "get", NullDatum.class, new Class[]{}); } else { assert false; } }
Assert.assertCondition(valueParams.size() == 1, "Char type requires 1 integer parameters, but it takes (%s).", StringUtils.join(typeParams)); return Char(valueParams.get(0)); return Varchar(valueParams.get(0)); Assert.assertCondition(typeParams.size() == 1, "Array Type requires 1 type parameters, but it takes (%s).", StringUtils.join(typeParams)); return Type.Array(typeParams.get(0)); return Type.Record(fieldParams); "Map Type requires 2 type parameters, but it takes (%s).", StringUtils.join(typeParams)); return Type.Map(typeParams.get(0), typeParams.get(1)); return Null();
public boolean isNull() { return type.isNull(); }
public static Type convert(TajoDataTypes.DataType legacyType) { switch (legacyType.getType()) { case NCHAR: case CHAR: return Char(legacyType.getLength()); case NVARCHAR: case VARCHAR: return Varchar(legacyType.getLength()); case NUMERIC: return Numeric(legacyType.getLength()); case PROTOBUF: return new Protobuf(legacyType.getCode()); default: return TypeFactory.create(legacyType.getType()); } }
private ColumnProto resultToColumnProto(final ResultSet res) throws SQLException { ColumnProto.Builder builder = ColumnProto.newBuilder(); builder.setName(res.getString("column_name").trim()); org.apache.tajo.type.Type type = TypeStringEncoder.decode(res.getString("data_type").trim()); builder.setType(type.getProto()); return builder.build(); }
public boolean isStruct() { return type.isStruct(); }
return Type.Interval; case CHAR: return Type.Char(1); // default len = 1 case TEXT: return Type.Text; return Type.Array(Type.Bool); case INT1_ARRAY: return Type.Array(Type.Int1); case INT2_ARRAY: return Type.Array(Type.Int2); case INT4_ARRAY: return Type.Array(Type.Int4); case INT8_ARRAY: return Type.Array(Type.Int8); case FLOAT4_ARRAY: return Type.Array(Type.Float4); case FLOAT8_ARRAY: return Type.Array(Type.Float8); case TIMESTAMP_ARRAY: return Type.Array(Type.Timestamp); case DATE_ARRAY: return Type.Array(Type.Date); case TIME_ARRAY: return Type.Array(Type.Time); case TEXT_ARRAY: return Type.Array(Type.Text);
public static Field Record(QualifiedIdentifier name, Collection<Field> fields) { return new Field(name, Type.Record(fields)); }
@Override public String getName() { return target.toString(); }
@Override public int compareTo(Datum datum) { if (datum.type().isNull()) { return 0; } else { return 1; } }
private void resultToIndexDescProtoBuilder(final String qualifier, final IndexDescProto.Builder builder, final ResultSet res) throws SQLException { builder.setIndexName(res.getString("index_name")); builder.setIndexMethod(getIndexMethod(res.getString("index_type").trim())); builder.setIndexPath(res.getString("path")); String[] columnNames, dataTypes, orders, nullOrders; columnNames = res.getString("column_names").trim().split(","); dataTypes = res.getString("data_types").trim().split("\\|"); orders = res.getString("orders").trim().split(","); nullOrders = res.getString("null_orders").trim().split(","); int columnNum = columnNames.length; for (int i = 0; i < columnNum; i++) { SortSpecProto.Builder colSpecBuilder = SortSpecProto.newBuilder(); colSpecBuilder.setColumn(ColumnProto.newBuilder().setName(IdentifierUtil.buildFQName(qualifier, columnNames[i])) .setType(TypeStringEncoder.decode(dataTypes[i]).getProto()).build()); colSpecBuilder.setAscending(orders[i].equals("true")); colSpecBuilder.setNullFirst(nullOrders[i].equals("true")); builder.addKeySortSpecs(colSpecBuilder.build()); } builder.setIsUnique(res.getBoolean("is_unique")); builder.setIsClustered(res.getBoolean("is_clustered")); }
public static void prohibitNestedRecordProjection(Projectable projectable) throws TajoException { for (Target t : projectable.getTargets()) { if (t.getEvalTree().getValueType().isStruct()) { throw new NotImplementedException("record field projection"); } } }