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

Stefan Miklosovic updated CASSANDRA-19560:
------------------------------------------
    Change Category: Operability
         Complexity: Normal
      Fix Version/s: 5.x
             Status: Open  (was: Triage Needed)

> Implement support for virtual types
> -----------------------------------
>
>                 Key: CASSANDRA-19560
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-19560
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Feature/Virtual Tables
>            Reporter: Stefan Miklosovic
>            Assignee: Stefan Miklosovic
>            Priority: Normal
>             Fix For: 5.x
>
>
> We can not use user types in virtual tables. While it might look strange at 
> first to ask for the support of this, currently we can not do something like 
> this:
> {code}
> cqlsh> select * from system_guardrails.thresholds ;
>  name                          | value
> -------------------------------+----------------------
>                collection_size |   {warn: 0, fail: 0}
>              column_value_size | {warn: -1, fail: -1}
>              columns_per_table | {warn: -1, fail: -1}
> ...
> {code}
> {code}
> VIRTUAL TABLE system_guardrails.thresholds (
>     name text PRIMARY KEY,
>     value settings
> ) WITH comment = 'Guardrails configuration table for thresholds';
> {code}
> because "settings" is a UDT 
> {code}
> cqlsh> DESCRIBE type system_guardrails.settings ;
> CREATE TYPE system_guardrails.settings (
>     warn bigint,
>     fail bigint
> );
> {code}
> While this is not absolutely necessary to implement and it might be worked 
> around by a simple tuple, it feels sad that user experience suffers. 
> Supporting custom types for vtables is indeed possible so we should just do 
> that.
> There is additional work needed to do this, because virtual types are not 
> supported in python-driver, I had to do this:
> https://github.com/smiklosovic/python-driver/commit/14b236bb471bc4a7e251a9f6b694de7885b339de
> python-driver reads system_schema.types in order to show the correct output 
> in cqlsh, as it has not recognized virtual types, it was alwasy displaying 
> the results like
> {code}
> settings(warn=-1, fail -1)
> {code}
> because it could not evaluate it differently. 
> With the patch for python-driver, it will fetch it from 
> system_virtual_schema.types, where it is like:
> {code}
> cqlsh> select * from system_virtual_schema.types ;
>  keyspace_name     | type_name | field_names      | field_types
> -------------------+-----------+------------------+----------------------
>  system_guardrails |  settings | ['warn', 'fail'] | ['bigint', 'bigint']
> (1 rows)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to