For C* 3.0+
| 2474 | |
| 2475 | |
| 2476 | class SchemaParserV3(SchemaParserV22): |
| 2477 | """ |
| 2478 | For C* 3.0+ |
| 2479 | """ |
| 2480 | _SELECT_KEYSPACES = "SELECT * FROM system_schema.keyspaces" |
| 2481 | _SELECT_TABLES = "SELECT * FROM system_schema.tables" |
| 2482 | _SELECT_COLUMNS = "SELECT * FROM system_schema.columns" |
| 2483 | _SELECT_INDEXES = "SELECT * FROM system_schema.indexes" |
| 2484 | _SELECT_TRIGGERS = "SELECT * FROM system_schema.triggers" |
| 2485 | _SELECT_TYPES = "SELECT * FROM system_schema.types" |
| 2486 | _SELECT_FUNCTIONS = "SELECT * FROM system_schema.functions" |
| 2487 | _SELECT_AGGREGATES = "SELECT * FROM system_schema.aggregates" |
| 2488 | _SELECT_VIEWS = "SELECT * FROM system_schema.views" |
| 2489 | |
| 2490 | _table_name_col = 'table_name' |
| 2491 | |
| 2492 | _function_agg_arument_type_col = 'argument_types' |
| 2493 | |
| 2494 | _table_metadata_class = TableMetadataV3 |
| 2495 | |
| 2496 | recognized_table_options = ( |
| 2497 | 'bloom_filter_fp_chance', |
| 2498 | 'caching', |
| 2499 | 'cdc', |
| 2500 | 'comment', |
| 2501 | 'compaction', |
| 2502 | 'compression', |
| 2503 | 'crc_check_chance', |
| 2504 | 'dclocal_read_repair_chance', |
| 2505 | 'default_time_to_live', |
| 2506 | 'gc_grace_seconds', |
| 2507 | 'max_index_interval', |
| 2508 | 'memtable_flush_period_in_ms', |
| 2509 | 'min_index_interval', |
| 2510 | 'read_repair_chance', |
| 2511 | 'speculative_retry') |
| 2512 | |
| 2513 | def __init__(self, connection, timeout): |
| 2514 | super(SchemaParserV3, self).__init__(connection, timeout) |
| 2515 | self.indexes_result = [] |
| 2516 | self.keyspace_table_index_rows = defaultdict(lambda: defaultdict(list)) |
| 2517 | self.keyspace_view_rows = defaultdict(list) |
| 2518 | |
| 2519 | def get_all_keyspaces(self): |
| 2520 | for keyspace_meta in super(SchemaParserV3, self).get_all_keyspaces(): |
| 2521 | for row in self.keyspace_view_rows[keyspace_meta.name]: |
| 2522 | view_meta = self._build_view_metadata(row) |
| 2523 | keyspace_meta._add_view_metadata(view_meta) |
| 2524 | yield keyspace_meta |
| 2525 | |
| 2526 | def get_table(self, keyspaces, keyspace, table): |
| 2527 | cl = ConsistencyLevel.ONE |
| 2528 | where_clause = bind_params(" WHERE keyspace_name = %%s AND %s = %%s" % (self._table_name_col), (keyspace, table), _encoder) |
| 2529 | cf_query = QueryMessage(query=self._SELECT_TABLES + where_clause, consistency_level=cl) |
| 2530 | col_query = QueryMessage(query=self._SELECT_COLUMNS + where_clause, consistency_level=cl) |
| 2531 | indexes_query = QueryMessage(query=self._SELECT_INDEXES + where_clause, consistency_level=cl) |
| 2532 | triggers_query = QueryMessage(query=self._SELECT_TRIGGERS + where_clause, consistency_level=cl) |
| 2533 |