You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Benjamin Lerer (Jira)" <ji...@apache.org> on 2021/12/03 17:35:00 UTC
[jira] [Updated] (CASSANDRA-17184) Add += and -= syntax to ALTER TABLE WITH
[ 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: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org