diff --git a/.build/build-cqlsh.xml b/.build/build-cqlsh.xml
new file mode 100644
index 0000000000..45e0e46a49
--- /dev/null
+++ b/.build/build-cqlsh.xml
@@ -0,0 +1,24 @@
+
+
+
+
+ version = "${base.version}"${line.separator}
+
+
diff --git a/CHANGES.txt b/CHANGES.txt
index 435fcea0fa..d089352cdb 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -186,6 +186,7 @@ Merged from 4.0:
* Partial compaction can resurrect deleted data (CASSANDRA-18507)
Merged from 3.11:
Merged from 3.0:
+ * CQLSH emits a warning when the server version doesn't match (CASSANDRA-18745)
* Fix missing speculative retries in tablestats (CASSANDRA-18767)
* Fix Requires for Java for RPM package (CASSANDRA-18751)
* Fix CQLSH online help topic link (CASSANDRA-17534)
diff --git a/build.xml b/build.xml
index 243667d451..84272b1368 100644
--- a/build.xml
+++ b/build.xml
@@ -456,7 +456,7 @@
-
+
@@ -2073,4 +2073,5 @@
+
diff --git a/pylib/cqlshlib/cqlshmain.py b/pylib/cqlshlib/cqlshmain.py
index de00c1c7dd..b5536084a9 100755
--- a/pylib/cqlshlib/cqlshmain.py
+++ b/pylib/cqlshlib/cqlshmain.py
@@ -80,9 +80,8 @@ from cqlshlib.formatting import (DEFAULT_DATE_FORMAT, DEFAULT_NANOTIME_FORMAT,
DEFAULT_TIMESTAMP_FORMAT, CqlType, DateTimeFormat,
format_by_type)
from cqlshlib.tracing import print_trace, print_trace_session
-from cqlshlib.util import get_file_encoding_bomsize
-from cqlshlib.util import is_file_secure
-
+from cqlshlib.util import get_file_encoding_bomsize, is_file_secure
+from cqlshlib.serverversion import version as build_version
DEFAULT_HOST = '127.0.0.1'
DEFAULT_PORT = 9042
@@ -431,6 +430,8 @@ class Shell(cmd.Cmd):
if stdin is None:
stdin = sys.stdin
+ self.check_build_versions()
+
if tty:
self.reset_prompt()
self.report_connection()
@@ -447,6 +448,14 @@ class Shell(cmd.Cmd):
self.single_statement = single_statement
self.is_subshell = is_subshell
+ def check_build_versions(self):
+ baseversion = self.connection_versions['build']
+ extra = baseversion.rfind('-')
+ if extra:
+ baseversion = baseversion[0:extra]
+ if baseversion != build_version:
+ print("WARNING: cqlsh was built against {}, but this server is {}. All features may not work!".format(baseversion, build_version))
+
@property
def batch_mode(self):
return not self.tty