You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ad...@apache.org on 2020/05/11 10:46:58 UTC
[cassandra] branch cassandra-3.11 updated: Fix CQL formatting of
read command restrictions for slow query log
This is an automated email from the ASF dual-hosted git repository.
adelapena pushed a commit to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-3.11 by this push:
new 406a859 Fix CQL formatting of read command restrictions for slow query log
406a859 is described below
commit 406a8596eb7ad18079df20121521b1c659063ef4
Author: Andrés de la Peña <a....@gmail.com>
AuthorDate: Mon May 11 11:14:54 2020 +0100
Fix CQL formatting of read command restrictions for slow query log
patch by Andres de la Peña; reviewed by Berenguer Blasi for CASSANDRA-15503
---
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/DataRange.java | 11 +++++++----
src/java/org/apache/cassandra/db/Slices.java | 16 ++++++++++++++--
.../cassandra/db/filter/ClusteringIndexNamesFilter.java | 4 ++--
4 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index c326801..46625b3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.11.7
+ * Fix CQL formatting of read command restrictions for slow query log (CASSANDRA-15503)
* Allow sstableloader to use SSL on the native port (CASSANDRA-14904)
Merged from 3.0:
* liveDiskSpaceUsed and totalDiskSpaceUsed get corrupted if IndexSummaryRedistribution gets interrupted (CASSANDRA-15674)
diff --git a/src/java/org/apache/cassandra/db/DataRange.java b/src/java/org/apache/cassandra/db/DataRange.java
index d2f9c76..c77d9dc 100644
--- a/src/java/org/apache/cassandra/db/DataRange.java
+++ b/src/java/org/apache/cassandra/db/DataRange.java
@@ -67,7 +67,7 @@ public class DataRange
*/
public static DataRange allData(IPartitioner partitioner)
{
- return forTokenRange(new Range<Token>(partitioner.getMinimumToken(), partitioner.getMinimumToken()));
+ return forTokenRange(new Range<>(partitioner.getMinimumToken(), partitioner.getMinimumToken()));
}
/**
@@ -105,7 +105,7 @@ public class DataRange
*/
public static DataRange allData(IPartitioner partitioner, ClusteringIndexFilter filter)
{
- return new DataRange(Range.makeRowRange(new Range<Token>(partitioner.getMinimumToken(), partitioner.getMinimumToken())), filter);
+ return new DataRange(Range.makeRowRange(new Range<>(partitioner.getMinimumToken(), partitioner.getMinimumToken())), filter);
}
/**
@@ -278,16 +278,19 @@ public class DataRange
{
sb.append("token(");
sb.append(ColumnDefinition.toCQLString(metadata.partitionKeyColumns()));
- sb.append(") ").append(getOperator(isStart, isInclusive)).append(" ");
+ sb.append(") ");
if (pos instanceof DecoratedKey)
{
+ sb.append(getOperator(isStart, isInclusive)).append(" ");
sb.append("token(");
appendKeyString(sb, metadata.getKeyValidator(), ((DecoratedKey)pos).getKey());
sb.append(")");
}
else
{
- sb.append(((Token.KeyBound)pos).getToken());
+ Token.KeyBound keyBound = (Token.KeyBound) pos;
+ sb.append(getOperator(isStart, isStart == keyBound.isMinimumBound)).append(" ");
+ sb.append(keyBound.getToken());
}
}
diff --git a/src/java/org/apache/cassandra/db/Slices.java b/src/java/org/apache/cassandra/db/Slices.java
index b3fd20a..93dcab9 100644
--- a/src/java/org/apache/cassandra/db/Slices.java
+++ b/src/java/org/apache/cassandra/db/Slices.java
@@ -613,6 +613,8 @@ public abstract class Slices implements Iterable<Slice>
}
else
{
+ boolean isReversed = column.isReversedType();
+
// As said above, we assume (without checking) that this means all ComponentOfSlice for this column
// are the same, so we only bother about the first.
if (first.startValue != null)
@@ -620,14 +622,24 @@ public abstract class Slices implements Iterable<Slice>
if (needAnd)
sb.append(" AND ");
needAnd = true;
- sb.append(column.name).append(first.startInclusive ? " >= " : " > ").append(column.type.getString(first.startValue));
+ sb.append(column.name);
+ if (isReversed)
+ sb.append(first.startInclusive ? " <= " : " < ");
+ else
+ sb.append(first.startInclusive ? " >= " : " > ");
+ sb.append(column.type.getString(first.startValue));
}
if (first.endValue != null)
{
if (needAnd)
sb.append(" AND ");
needAnd = true;
- sb.append(column.name).append(first.endInclusive ? " <= " : " < ").append(column.type.getString(first.endValue));
+ sb.append(column.name);
+ if (isReversed)
+ sb.append(first.endInclusive ? " >= " : " > ");
+ else
+ sb.append(first.endInclusive ? " <= " : " < ");
+ sb.append(column.type.getString(first.endValue));
}
}
}
diff --git a/src/java/org/apache/cassandra/db/filter/ClusteringIndexNamesFilter.java b/src/java/org/apache/cassandra/db/filter/ClusteringIndexNamesFilter.java
index cf2e4bc..6c7e14b 100644
--- a/src/java/org/apache/cassandra/db/filter/ClusteringIndexNamesFilter.java
+++ b/src/java/org/apache/cassandra/db/filter/ClusteringIndexNamesFilter.java
@@ -191,7 +191,7 @@ public class ClusteringIndexNamesFilter extends AbstractClusteringIndexFilter
public String toCQLString(CFMetaData metadata)
{
- if (metadata.clusteringColumns().isEmpty() || clusterings.size() <= 1)
+ if (metadata.clusteringColumns().isEmpty() || clusterings.isEmpty())
return "";
StringBuilder sb = new StringBuilder();
@@ -199,7 +199,7 @@ public class ClusteringIndexNamesFilter extends AbstractClusteringIndexFilter
sb.append(clusterings.size() == 1 ? " = " : " IN (");
int i = 0;
for (Clustering clustering : clusterings)
- sb.append(i++ == 0 ? "" : ", ").append("(").append(clustering.toCQLString(metadata)).append(")");
+ sb.append(i++ == 0 ? "" : ", ").append('(').append(clustering.toCQLString(metadata)).append(')');
sb.append(clusterings.size() == 1 ? "" : ")");
appendOrderByToCQLString(metadata, sb);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org