MCPcopy Index your code
hub / github.com/apache/cassandra-python-driver / SchemaParserDSE68

Class SchemaParserDSE68

cassandra/metadata.py:2906–3095  ·  view source on GitHub ↗

For DSE 6.8+

Source from the content-addressed store, hash-verified

2904
2905
2906class SchemaParserDSE68(SchemaParserDSE67):
2907 """
2908 For DSE 6.8+
2909 """
2910
2911 _SELECT_VERTICES = "SELECT * FROM system_schema.vertices"
2912 _SELECT_EDGES = "SELECT * FROM system_schema.edges"
2913
2914 _table_metadata_class = TableMetadataDSE68
2915
2916 def __init__(self, connection, timeout):
2917 super(SchemaParserDSE68, self).__init__(connection, timeout)
2918 self.keyspace_table_vertex_rows = defaultdict(lambda: defaultdict(list))
2919 self.keyspace_table_edge_rows = defaultdict(lambda: defaultdict(list))
2920
2921 def get_all_keyspaces(self):
2922 for keyspace_meta in super(SchemaParserDSE68, self).get_all_keyspaces():
2923 self._build_graph_metadata(keyspace_meta)
2924 yield keyspace_meta
2925
2926 def get_table(self, keyspaces, keyspace, table):
2927 table_meta = super(SchemaParserDSE68, self).get_table(keyspaces, keyspace, table)
2928 cl = ConsistencyLevel.ONE
2929 where_clause = bind_params(" WHERE keyspace_name = %%s AND %s = %%s" % (self._table_name_col), (keyspace, table), _encoder)
2930 vertices_query = QueryMessage(query=self._SELECT_VERTICES + where_clause, consistency_level=cl)
2931 edges_query = QueryMessage(query=self._SELECT_EDGES + where_clause, consistency_level=cl)
2932
2933 (vertices_success, vertices_result), (edges_success, edges_result) \
2934 = self.connection.wait_for_responses(vertices_query, edges_query, timeout=self.timeout, fail_on_error=False)
2935 vertices_result = self._handle_results(vertices_success, vertices_result)
2936 edges_result = self._handle_results(edges_success, edges_result)
2937
2938 try:
2939 if vertices_result:
2940 table_meta.vertex = self._build_table_vertex_metadata(vertices_result[0])
2941 elif edges_result:
2942 table_meta.edge = self._build_table_edge_metadata(keyspaces[keyspace], edges_result[0])
2943 except Exception:
2944 table_meta.vertex = None
2945 table_meta.edge = None
2946 table_meta._exc_info = sys.exc_info()
2947 log.exception("Error while parsing graph metadata for table %s.%s.", keyspace, table)
2948
2949 return table_meta
2950
2951 @staticmethod
2952 def _build_keyspace_metadata_internal(row):
2953 name = row["keyspace_name"]
2954 durable_writes = row.get("durable_writes", None)
2955 replication = dict(row.get("replication")) if 'replication' in row else {}
2956 replication_class = replication.pop("class") if 'class' in replication else None
2957 graph_engine = row.get("graph_engine", None)
2958 return KeyspaceMetadata(name, durable_writes, replication_class, replication, graph_engine)
2959
2960 def _build_graph_metadata(self, keyspace_meta):
2961
2962 def _build_table_graph_metadata(table_meta):
2963 for row in self.keyspace_table_vertex_rows[keyspace_meta.name][table_meta.name]:

Callers 1

get_schema_parserFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected