[ 
https://issues.apache.org/jira/browse/CASSANDRA-17184?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benjamin Lerer updated CASSANDRA-17184:
---------------------------------------
    Description: 
We have 2 types of table properties in CQL: simple ones (comment, 
gc_grace_seconds, ...), which are basically of type text (even if, we 
historically allow constants of any type) and complex ones (compaction, 
caching...), which are basically map<text, text>.

The only syntax that {{ALTER TABLE WITH}} supports is of setting a property, 
and so for the later kind, we basically always have to provide the new full map 
for the option. To take an example, say you have a table with compaction and 
want to enable compaction logging you will have to provide the all map.

In order to avoid that problem we can add support for the {{+=}} (and {{-=}} 
ideally) syntax that already exists for maps otherwise, and support:
{{ALTER TABLE t WITH compaction+= \{ 'log_all' : 'true' \}}}

+Additional info for newcomers:+

In order to implement this change you will need to change the Parser.g ANTLR 
file located in the src/antlr directory and the java classes corresponding to 
the different alter statements located in the 
{{org.apache.cassandra.cql3.statements.schema}} package. 
The unit test for the CQL logic are located under 
{{org.apache.cassandra.cql3.validation}}

  was:
We have 2 types of table properties in CQL: simple ones (comment, 
gc_grace_seconds, ...), which are basically of type text (even if, we 
historically allow constants of any type) and complex ones (compaction, 
caching...), which are basically map<text, text>.

The only syntax that {{ALTER TABLE WITH}} supports is of setting a property, 
and so for the later kind, we basically always have to provide the new full map 
for the option. To take an example, say you have a table with compaction and 
want to enable compaction logging you will have to provide the all map.

+Additional info for newcomers:+

In order to implement this change you will need to change the Parser.g ANTLR 
file located in the src/antlr directory and the java classes corresponding to 
the different alter statements located in the 
{{org.apache.cassandra.cql3.statements.schema}} package. 
The unit test for the CQL logic are located under 
{{org.apache.cassandra.cql3.validation}}

In order to avoid that problem we can add support for the {{+=}} (and {{-=}} 
ideally) syntax that already exists for maps otherwise, and support:
{{ALTER TABLE t WITH compaction+= \{ 'log_all' : 'true' \}}}


> Add += and -= syntax to ALTER TABLE WITH
> ----------------------------------------
>
>                 Key: CASSANDRA-17184
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17184
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: CQL/Syntax
>            Reporter: Benjamin Lerer
>            Priority: Normal
>
> We have 2 types of table properties in CQL: simple ones (comment, 
> gc_grace_seconds, ...), which are basically of type text (even if, we 
> historically allow constants of any type) and complex ones (compaction, 
> caching...), which are basically map<text, text>.
> The only syntax that {{ALTER TABLE WITH}} supports is of setting a property, 
> and so for the later kind, we basically always have to provide the new full 
> map for the option. To take an example, say you have a table with compaction 
> and want to enable compaction logging you will have to provide the all map.
> In order to avoid that problem we can add support for the {{+=}} (and {{-=}} 
> ideally) syntax that already exists for maps otherwise, and support:
> {{ALTER TABLE t WITH compaction+= \{ 'log_all' : 'true' \}}}
> +Additional info for newcomers:+
> In order to implement this change you will need to change the Parser.g ANTLR 
> file located in the src/antlr directory and the java classes corresponding to 
> the different alter statements located in the 
> {{org.apache.cassandra.cql3.statements.schema}} package. 
> The unit test for the CQL logic are located under 
> {{org.apache.cassandra.cql3.validation}}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to