| 2757 | |
| 2758 | |
| 2759 | class SchemaParserV4(SchemaParserV3): |
| 2760 | |
| 2761 | recognized_table_options = ( |
| 2762 | 'additional_write_policy', |
| 2763 | 'bloom_filter_fp_chance', |
| 2764 | 'caching', |
| 2765 | 'cdc', |
| 2766 | 'comment', |
| 2767 | 'compaction', |
| 2768 | 'compression', |
| 2769 | 'crc_check_chance', |
| 2770 | 'default_time_to_live', |
| 2771 | 'gc_grace_seconds', |
| 2772 | 'max_index_interval', |
| 2773 | 'memtable_flush_period_in_ms', |
| 2774 | 'min_index_interval', |
| 2775 | 'read_repair', |
| 2776 | 'speculative_retry') |
| 2777 | |
| 2778 | _SELECT_VIRTUAL_KEYSPACES = 'SELECT * from system_virtual_schema.keyspaces' |
| 2779 | _SELECT_VIRTUAL_TABLES = 'SELECT * from system_virtual_schema.tables' |
| 2780 | _SELECT_VIRTUAL_COLUMNS = 'SELECT * from system_virtual_schema.columns' |
| 2781 | |
| 2782 | def __init__(self, connection, timeout): |
| 2783 | super(SchemaParserV4, self).__init__(connection, timeout) |
| 2784 | self.virtual_keyspaces_rows = defaultdict(list) |
| 2785 | self.virtual_tables_rows = defaultdict(list) |
| 2786 | self.virtual_columns_rows = defaultdict(lambda: defaultdict(list)) |
| 2787 | |
| 2788 | def _query_all(self): |
| 2789 | cl = ConsistencyLevel.ONE |
| 2790 | # todo: this duplicates V3; we should find a way for _query_all methods |
| 2791 | # to extend each other. |
| 2792 | queries = [ |
| 2793 | # copied from V3 |
| 2794 | QueryMessage(query=self._SELECT_KEYSPACES, consistency_level=cl), |
| 2795 | QueryMessage(query=self._SELECT_TABLES, consistency_level=cl), |
| 2796 | QueryMessage(query=self._SELECT_COLUMNS, consistency_level=cl), |
| 2797 | QueryMessage(query=self._SELECT_TYPES, consistency_level=cl), |
| 2798 | QueryMessage(query=self._SELECT_FUNCTIONS, consistency_level=cl), |
| 2799 | QueryMessage(query=self._SELECT_AGGREGATES, consistency_level=cl), |
| 2800 | QueryMessage(query=self._SELECT_TRIGGERS, consistency_level=cl), |
| 2801 | QueryMessage(query=self._SELECT_INDEXES, consistency_level=cl), |
| 2802 | QueryMessage(query=self._SELECT_VIEWS, consistency_level=cl), |
| 2803 | # V4-only queries |
| 2804 | QueryMessage(query=self._SELECT_VIRTUAL_KEYSPACES, consistency_level=cl), |
| 2805 | QueryMessage(query=self._SELECT_VIRTUAL_TABLES, consistency_level=cl), |
| 2806 | QueryMessage(query=self._SELECT_VIRTUAL_COLUMNS, consistency_level=cl) |
| 2807 | ] |
| 2808 | |
| 2809 | responses = self.connection.wait_for_responses( |
| 2810 | *queries, timeout=self.timeout, fail_on_error=False) |
| 2811 | ( |
| 2812 | # copied from V3 |
| 2813 | (ks_success, ks_result), |
| 2814 | (table_success, table_result), |
| 2815 | (col_success, col_result), |
| 2816 | (types_success, types_result), |