(cqlsh) parse_for_table_meta errors out on queries with undefined grammars
patch by Philip Thompson; reviewed by Mikhail Stepura for CASSANDRA-8262
diff --git a/CHANGES.txt b/CHANGES.txt
index ee18be0..2e60f3a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
2.1.2
+ * (cqlsh) parse_for_table_meta errors out on queries with undefined
+ grammars (CASSANDRA-8262)
* (cqlsh) Fix SELECT ... TOKEN() function broken in C* 2.1.1 (CASSANDRA-8258)
* Fix Cassandra crash when running on JDK8 update 40 (CASSANDRA-8209)
* Optimize partitioner tokens (CASSANDRA-8230)
diff --git a/bin/cqlsh b/bin/cqlsh
index 763a828..6ace914 100755
--- a/bin/cqlsh
+++ b/bin/cqlsh
@@ -943,7 +943,10 @@
return result
def parse_for_table_meta(self, query_string):
- parsed = cqlruleset.cql_parse(query_string)[1]
+ try:
+ parsed = cqlruleset.cql_parse(query_string)[1]
+ except IndexError:
+ return None
ks = self.cql_unprotect_name(parsed.get_binding('ksname', None))
cf = self.cql_unprotect_name(parsed.get_binding('cfname'))
return self.get_table_meta(ks, cf)
@@ -1010,6 +1013,8 @@
def print_static_result(self, rows, table_meta):
if not rows:
+ if not table_meta:
+ return
# print header only
colnames = table_meta.columns.keys() # full header
formatted_names = [self.myformat_colname(name, table_meta) for name in colnames]