[ 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