You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2016/10/11 13:34:44 UTC
[1/3] cassandra git commit: Check for hash conflicts in prepared
statements.
Repository: cassandra
Updated Branches:
refs/heads/cassandra-3.X 830954304 -> c7fb95c98
refs/heads/trunk dffe27077 -> 231a93706
Check for hash conflicts in prepared statements.
Patch by Jeremiah Jordan; reviewed by Alex Petrov for CASSANDRA-12733
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c7fb95c9
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c7fb95c9
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c7fb95c9
Branch: refs/heads/cassandra-3.X
Commit: c7fb95c98d2c370fcdb8e0389528ce6668f3a58c
Parents: 8309543
Author: Jeremiah D Jordan <je...@datastax.com>
Authored: Thu Sep 29 13:55:17 2016 -0500
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Tue Oct 11 14:33:05 2016 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/cql3/QueryProcessor.java | 16 ++++++++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7fb95c9/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2f517e0..5907c74 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.10
+ * Check for hash conflicts in prepared statements (CASSANDRA-12733)
* Exit query parsing upon first error (CASSANDRA-12598)
* Fix cassandra-stress to use single seed in UUID generation (CASSANDRA-12729)
* CQLSSTableWriter does not allow Update statement (CASSANDRA-12450)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7fb95c9/src/java/org/apache/cassandra/cql3/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
index 5313a1a..1d5a024 100644
--- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
@@ -57,6 +57,8 @@ import org.apache.cassandra.transport.Server;
import org.apache.cassandra.transport.messages.ResultMessage;
import org.apache.cassandra.utils.*;
+import static org.apache.cassandra.cql3.statements.RequestValidations.checkTrue;
+
public class QueryProcessor implements QueryHandler
{
public static final CassandraVersion CQL_VERSION = new CassandraVersion("3.4.3");
@@ -437,13 +439,23 @@ public class QueryProcessor implements QueryHandler
{
Integer thriftStatementId = computeThriftId(queryString, keyspace);
ParsedStatement.Prepared existing = thriftPreparedStatements.get(thriftStatementId);
- return existing == null ? null : ResultMessage.Prepared.forThrift(thriftStatementId, existing.boundNames);
+ if (existing == null)
+ return null;
+
+ checkTrue(queryString.equals(existing.rawCQLStatement),
+ String.format("MD5 hash collision: query with the same MD5 hash was already prepared. \n Existing: '%s'", existing.rawCQLStatement));
+ return ResultMessage.Prepared.forThrift(thriftStatementId, existing.boundNames);
}
else
{
MD5Digest statementId = computeId(queryString, keyspace);
ParsedStatement.Prepared existing = preparedStatements.get(statementId);
- return existing == null ? null : new ResultMessage.Prepared(statementId, existing);
+ if (existing == null)
+ return null;
+
+ checkTrue(queryString.equals(existing.rawCQLStatement),
+ String.format("MD5 hash collision: query with the same MD5 hash was already prepared. \n Existing: '%s'", existing.rawCQLStatement));
+ return new ResultMessage.Prepared(statementId, existing);
}
}
[3/3] cassandra git commit: Merge branch 'cassandra-3.X' into trunk
Posted by al...@apache.org.
Merge branch 'cassandra-3.X' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/231a9370
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/231a9370
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/231a9370
Branch: refs/heads/trunk
Commit: 231a9370619c86a0661ee421572750ea0ab197bf
Parents: dffe270 c7fb95c
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Tue Oct 11 14:33:55 2016 +0100
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Tue Oct 11 14:33:55 2016 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/cql3/QueryProcessor.java | 16 ++++++++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/231a9370/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 1310795,5907c74..7f5b7cb
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,10 -1,5 +1,11 @@@
+4.0
+ * Add (automate) Nodetool Documentation (CASSANDRA-12672)
+ * Update bundled cqlsh python driver to 3.7.0 (CASSANDRA-12736)
+ * Reject invalid replication settings when creating or altering a keyspace (CASSANDRA-12681)
+
+
3.10
+ * Check for hash conflicts in prepared statements (CASSANDRA-12733)
* Exit query parsing upon first error (CASSANDRA-12598)
* Fix cassandra-stress to use single seed in UUID generation (CASSANDRA-12729)
* CQLSSTableWriter does not allow Update statement (CASSANDRA-12450)
[2/3] cassandra git commit: Check for hash conflicts in prepared
statements.
Posted by al...@apache.org.
Check for hash conflicts in prepared statements.
Patch by Jeremiah Jordan; reviewed by Alex Petrov for CASSANDRA-12733
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c7fb95c9
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c7fb95c9
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c7fb95c9
Branch: refs/heads/trunk
Commit: c7fb95c98d2c370fcdb8e0389528ce6668f3a58c
Parents: 8309543
Author: Jeremiah D Jordan <je...@datastax.com>
Authored: Thu Sep 29 13:55:17 2016 -0500
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Tue Oct 11 14:33:05 2016 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/cql3/QueryProcessor.java | 16 ++++++++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7fb95c9/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2f517e0..5907c74 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.10
+ * Check for hash conflicts in prepared statements (CASSANDRA-12733)
* Exit query parsing upon first error (CASSANDRA-12598)
* Fix cassandra-stress to use single seed in UUID generation (CASSANDRA-12729)
* CQLSSTableWriter does not allow Update statement (CASSANDRA-12450)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7fb95c9/src/java/org/apache/cassandra/cql3/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
index 5313a1a..1d5a024 100644
--- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
@@ -57,6 +57,8 @@ import org.apache.cassandra.transport.Server;
import org.apache.cassandra.transport.messages.ResultMessage;
import org.apache.cassandra.utils.*;
+import static org.apache.cassandra.cql3.statements.RequestValidations.checkTrue;
+
public class QueryProcessor implements QueryHandler
{
public static final CassandraVersion CQL_VERSION = new CassandraVersion("3.4.3");
@@ -437,13 +439,23 @@ public class QueryProcessor implements QueryHandler
{
Integer thriftStatementId = computeThriftId(queryString, keyspace);
ParsedStatement.Prepared existing = thriftPreparedStatements.get(thriftStatementId);
- return existing == null ? null : ResultMessage.Prepared.forThrift(thriftStatementId, existing.boundNames);
+ if (existing == null)
+ return null;
+
+ checkTrue(queryString.equals(existing.rawCQLStatement),
+ String.format("MD5 hash collision: query with the same MD5 hash was already prepared. \n Existing: '%s'", existing.rawCQLStatement));
+ return ResultMessage.Prepared.forThrift(thriftStatementId, existing.boundNames);
}
else
{
MD5Digest statementId = computeId(queryString, keyspace);
ParsedStatement.Prepared existing = preparedStatements.get(statementId);
- return existing == null ? null : new ResultMessage.Prepared(statementId, existing);
+ if (existing == null)
+ return null;
+
+ checkTrue(queryString.equals(existing.rawCQLStatement),
+ String.format("MD5 hash collision: query with the same MD5 hash was already prepared. \n Existing: '%s'", existing.rawCQLStatement));
+ return new ResultMessage.Prepared(statementId, existing);
}
}