public Column(String name, TypeSignature signature) { this(name, signature.toString(), new ClientTypeSignature(signature)); }
private static TypeSignature toTypeSignature(ClientTypeSignature signature) { List<TypeSignatureParameter> parameters = signature.getArguments().stream() .map(ClientTypeSignature::legacyClientTypeSignatureParameterToTypeSignatureParameter) .collect(toList()); return new TypeSignature(signature.getRawType(), parameters); }
@Override public String toString() { if (rawType.equals(StandardTypes.ROW)) { return rowToString(); } else { StringBuilder typeName = new StringBuilder(rawType); if (!arguments.isEmpty()) { typeName.append("("); boolean first = true; for (ClientTypeSignatureParameter argument : arguments) { if (!first) { typeName.append(","); } first = false; typeName.append(argument.toString()); } typeName.append(")"); } return typeName.toString(); } }
convertedArguments.add(new ClientTypeSignatureParameter(TypeSignatureParameter.of(new NamedTypeSignature( Optional.of(new RowFieldName((String) value, false)), toTypeSignature(typeArguments.get(i))))));
private static TypeSignatureParameter legacyClientTypeSignatureParameterToTypeSignatureParameter(ClientTypeSignatureParameter parameter) { switch (parameter.getKind()) { case LONG: throw new UnsupportedOperationException("Unexpected long type literal returned by legacy server"); case TYPE: return TypeSignatureParameter.of(toTypeSignature(parameter.getTypeSignature())); case NAMED_TYPE: return TypeSignatureParameter.of(parameter.getNamedTypeSignature()); default: throw new UnsupportedOperationException("Unknown parameter kind " + parameter.getKind()); } }
/** * This field is deprecated and clients should switch to {@link #getArguments()} */ @Deprecated @JsonProperty public List<ClientTypeSignature> getTypeArguments() { List<ClientTypeSignature> result = new ArrayList<>(); for (ClientTypeSignatureParameter argument : arguments) { switch (argument.getKind()) { case TYPE: result.add(argument.getTypeSignature()); break; case NAMED_TYPE: result.add(new ClientTypeSignature(argument.getNamedTypeSignature().getTypeSignature())); break; default: return new ArrayList<>(); } } return result; }
columns = queryStatusInfo.getColumns().stream() .map(c -> { List<ClientTypeSignatureParameter> arguments = c.getTypeSignature().getArguments(); return new SchemaField(c.getName(), fromPrestoType(c.getTypeSignature().getRawType(), arguments.stream() .filter(argument -> argument.getKind() == com.facebook.presto.spi.type.ParameterKind.TYPE) .map(argument -> argument.getTypeSignature().getRawType()).iterator())); }) .collect(Collectors.toList()); String type = queryStatusInfo.getColumns().get(i).getTypeSignature().getRawType(); Object value = objects.get(i); if (value != null) {
Object value = literalArguments.get(i); checkArgument(value instanceof String, "Expected literalArgument %d in %s to be a string", i, literalArguments); convertedArguments.add(new ClientTypeSignatureParameter(TypeSignatureParameter.of(new NamedTypeSignature((String) value, toTypeSignature(typeArguments.get(i))))));
@Override public String toString() { if (rawType.equals(StandardTypes.ROW)) { return rowToString(); } else { StringBuilder typeName = new StringBuilder(rawType); if (!arguments.isEmpty()) { typeName.append("("); boolean first = true; for (ClientTypeSignatureParameter argument : arguments) { if (!first) { typeName.append(","); } first = false; typeName.append(argument.toString()); } typeName.append(")"); } return typeName.toString(); } }
public ClientTypeSignatureParameter(TypeSignatureParameter typeParameterSignature) { this.kind = typeParameterSignature.getKind(); switch (kind) { case TYPE: value = new ClientTypeSignature(typeParameterSignature.getTypeSignature()); break; case LONG: value = typeParameterSignature.getLongLiteral(); break; case NAMED_TYPE: value = typeParameterSignature.getNamedTypeSignature(); break; default: throw new UnsupportedOperationException(format("Unknown kind [%s]", kind)); } }
private static TypeSignature toTypeSignature(ClientTypeSignature signature) { List<TypeSignatureParameter> parameters = signature.getArguments().stream() .map(ClientTypeSignature::legacyClientTypeSignatureParameterToTypeSignatureParameter) .collect(toList()); return new TypeSignature(signature.getRawType(), parameters); }
private static TypeSignatureParameter legacyClientTypeSignatureParameterToTypeSignatureParameter(ClientTypeSignatureParameter parameter) { switch (parameter.getKind()) { case LONG: throw new UnsupportedOperationException("Unexpected long type literal returned by legacy server"); case TYPE: return TypeSignatureParameter.of(toTypeSignature(parameter.getTypeSignature())); case NAMED_TYPE: return TypeSignatureParameter.of(parameter.getNamedTypeSignature()); default: throw new UnsupportedOperationException("Unknown parameter kind " + parameter.getKind()); } }
@Test public void testBackwardsCompatible() { ClientTypeSignature signature = new ClientTypeSignature(StandardTypes.ARRAY, ImmutableList.of(new ClientTypeSignatureParameter(TypeSignatureParameter.of(BIGINT.getTypeSignature())))); ClientTypeSignature legacy = CLIENT_TYPE_SIGNATURE_CODEC.fromJson("{\"rawType\":\"array\",\"literalArguments\":[],\"typeArguments\":[{\"rawType\":\"bigint\",\"literalArguments\":[],\"typeArguments\":[]}]}"); assertEquals(legacy, signature); }
@Test public void testJsonRoundTrip() { TypeSignature bigint = BIGINT.getTypeSignature(); assertJsonRoundTrip(new ClientTypeSignature(bigint)); assertJsonRoundTrip(new ClientTypeSignature( "array", ImmutableList.of(new ClientTypeSignatureParameter(TypeSignatureParameter.of(bigint))))); assertJsonRoundTrip(new ClientTypeSignature( "foo", ImmutableList.of(new ClientTypeSignatureParameter(TypeSignatureParameter.of(42))))); assertJsonRoundTrip(new ClientTypeSignature( "row", ImmutableList.of( new ClientTypeSignatureParameter(TypeSignatureParameter.of(new NamedTypeSignature(Optional.of(new RowFieldName("foo", false)), bigint))), new ClientTypeSignatureParameter(TypeSignatureParameter.of(new NamedTypeSignature(Optional.of(new RowFieldName("bar", false)), bigint)))))); }
private static List<Column> createColumnsList(QueryInfo queryInfo) { requireNonNull(queryInfo, "queryInfo is null"); StageInfo outputStage = queryInfo.getOutputStage(); requireNonNull(outputStage, "outputStage is null"); List<String> names = queryInfo.getFieldNames(); List<Type> types = outputStage.getTypes(); checkArgument(names.size() == types.size(), "names and types size mismatch"); ImmutableList.Builder<Column> list = ImmutableList.builder(); for (int i = 0; i < names.size(); i++) { String name = names.get(i); TypeSignature typeSignature = types.get(i).getTypeSignature(); String type = typeSignature.toString(); list.add(new Column(name, type, new ClientTypeSignature(typeSignature))); } return list.build(); }
/** * This field is deprecated and clients should switch to {@link #getArguments()} */ @Deprecated @JsonProperty public List<ClientTypeSignature> getTypeArguments() { List<ClientTypeSignature> result = new ArrayList<>(); for (ClientTypeSignatureParameter argument : arguments) { switch (argument.getKind()) { case TYPE: result.add(argument.getTypeSignature()); break; case NAMED_TYPE: result.add(new ClientTypeSignature(argument.getNamedTypeSignature().getTypeSignature())); break; default: return new ArrayList<>(); } } return result; }
public ClientTypeSignatureParameter(TypeSignatureParameter typeParameterSignature) { this.kind = typeParameterSignature.getKind(); switch (kind) { case TYPE: value = new ClientTypeSignature(typeParameterSignature.getTypeSignature()); break; case LONG: value = typeParameterSignature.getLongLiteral(); break; case NAMED_TYPE: value = typeParameterSignature.getNamedTypeSignature(); break; default: throw new UnsupportedOperationException(format("Unknown kind [%s]", kind)); } }
@Test public void testBackwardsCompatible() { ClientTypeSignature signature = new ClientTypeSignature(StandardTypes.ARRAY, ImmutableList.of(new ClientTypeSignatureParameter(TypeSignatureParameter.of(BIGINT.getTypeSignature())))); ClientTypeSignature legacy = CLIENT_TYPE_SIGNATURE_CODEC.fromJson("{\"rawType\":\"array\",\"literalArguments\":[],\"typeArguments\":[{\"rawType\":\"bigint\",\"literalArguments\":[],\"typeArguments\":[]}]}"); assertEquals(legacy, signature); }
columns = ImmutableList.of(new Column("result", "boolean", new ClientTypeSignature(StandardTypes.BOOLEAN, ImmutableList.of()))); data = ImmutableSet.<List<Object>>of(ImmutableList.<Object>of(true));
@Test public void testJsonRoundTrip() { TypeSignature bigint = BIGINT.getTypeSignature(); assertJsonRoundTrip(new ClientTypeSignature(bigint)); assertJsonRoundTrip(new ClientTypeSignature( "array", ImmutableList.of(new ClientTypeSignatureParameter(TypeSignatureParameter.of(bigint))))); assertJsonRoundTrip(new ClientTypeSignature( "foo", ImmutableList.of(new ClientTypeSignatureParameter(TypeSignatureParameter.of(42))))); assertJsonRoundTrip(new ClientTypeSignature( "row", ImmutableList.of( new ClientTypeSignatureParameter(TypeSignatureParameter.of(new NamedTypeSignature(Optional.of(new RowFieldName("foo", false)), bigint))), new ClientTypeSignatureParameter(TypeSignatureParameter.of(new NamedTypeSignature(Optional.of(new RowFieldName("bar", false)), bigint)))))); }