cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aleksey Yeschenko (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-10624) Support UDT in CQLSSTableWriter
Date Mon, 11 Apr 2016 17:48:25 GMT


Aleksey Yeschenko commented on CASSANDRA-10624:

While skimming quickly before commit, I realised that this won't work with multiple types
that depend on each other, unless you are really careful with the order you define them (and
if you aren't, it'll fail with a cryptic error).

Ideally we should delay type parsing and resolution until {{build()}} call (and by necessity
do the same for table parsing).

Also, is there a good reason to slap {{synchronized}} there?

> Support UDT in CQLSSTableWriter
> -------------------------------
>                 Key: CASSANDRA-10624
>                 URL:
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: CQL
>            Reporter: Sylvain Lebresne
>            Assignee: Alex Petrov
>             Fix For: 3.x
>         Attachments: 0001-Add-support-for-UDTs-to-CQLSStableWriter.patch, 0001-Support-UDTs-in-CQLSStableWriterV2.patch
> As far as I can tell, there is not way to use a UDT with {{CQLSSTableWriter}} since there
is no way to declare it and thus {{CQLSSTableWriter.Builder}} knows of no UDT when parsing
the {{CREATE TABLE}} statement passed.
> In terms of API, I think the simplest would be to allow to pass types to the builder
in the same way we pass the table definition. So something like:
> {noformat}
> String type = "CREATE TYPE myKs.vertex (x int, y int, z int)";
> String schema = "CREATE TABLE myKs.myTable ("
>               + "  k int PRIMARY KEY,"
>               + "  s set<vertex>"
>               + ")";
> String insert = ...;
> CQLSSTableWriter writer = CQLSSTableWriter.builder()
>                                           .inDirectory("path/to/directory")
>                                           .withType(type)
>                                           .forTable(schema)
>                                           .using(insert).build();
> {noformat}
> I'll note that implementation wise, this might be a bit simpler after the changes of
CASSANDRA-10365 (as it makes it easy to passe specific types during the preparation of the
create statement).

This message was sent by Atlassian JIRA

View raw message