From 4f0a996934bc6b6b366155cf8a78bd2d4079cf97 Mon Sep 17 00:00:00 2001 From: pranavchaurasia18 Date: Thu, 24 Apr 2025 14:42:37 +0530 Subject: [PATCH] Cassandra-18837 Tab complete datacenter values in cqlsh --- pylib/cqlshlib/cql3handling.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/pylib/cqlshlib/cql3handling.py b/pylib/cqlshlib/cql3handling.py index 5b61331f7b..29694097d1 100644 --- a/pylib/cqlshlib/cql3handling.py +++ b/pylib/cqlshlib/cql3handling.py @@ -461,6 +461,7 @@ def ks_prop_val_completer(ctxt, cass): def ks_prop_val_mapkey_completer(ctxt, cass): + session = cass.session if hasattr(cass, 'session') else cass optname = ctxt.get_binding('propname')[-1] if optname != 'replication': return () @@ -475,7 +476,24 @@ def ks_prop_val_mapkey_completer(ctxt, cass): if repclass == 'SimpleStrategy': opts = {'replication_factor'} elif repclass == 'NetworkTopologyStrategy': - return [Hint('')] + try: + resultLocal = session.execute("SELECT data_center FROM system.local") + row = resultLocal.one() + local_dc = row['data_center'] if row else None + + resultPeer = session.execute("SELECT data_center FROM system.peers") + peer_dc = [row['data_center'] for row in resultPeer if row['data_center']] + + dummy_dcs = ['dc_dummy1', 'dc_dummy2', 'dc_dummy3'] + dc_list = sorted(set([dc for dc in [local_dc] + peer_dc + dummy_dcs if dc])) + +# dc_list = sorted(set([dc for dc in [local_dc] + peer_dc if dc])) + + return list(map(escape_value, dc_list)) if dc_list else [Hint('')] + + except Exception as e: + print(f"Query failed: {e}") + return [Hint('')] return list(map(escape_value, opts.difference(keysseen)))