You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/09/18 16:47:13 UTC
[1/8] git commit: revert #5966
Updated Branches:
refs/heads/cassandra-1.2 fc9b3a77b -> 8d6271ddf
refs/heads/cassandra-2.0 a7b32deb9 -> 278f21062
refs/heads/trunk 7d03e28b5 -> 5102e8d74
revert #5966
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d19f802a
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d19f802a
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d19f802a
Branch: refs/heads/cassandra-2.0
Commit: d19f802a296862010f26e09892351d923d31a23c
Parents: 07b4878
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Sep 18 09:39:35 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Sep 18 09:39:35 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 -
.../db/columniterator/SSTableNamesIterator.java | 37 ++++----------------
2 files changed, 7 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d19f802a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index fb4f3f4..47ff752 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,7 +3,6 @@
* (Hadoop) Fix CQLRW for thrift tables (CASSANDRA-6002)
* Fix possible divide-by-zero in HHOM (CASSANDRA-5990)
* Allow local batchlog writes for CL.ANY (CASSANDRA-5967)
- * Optimize name query performance in wide rows (CASSANDRA-5966)
* Upgrade metrics-core to version 2.2.0 (CASSANDRA-5947)
* Add snitch, schema version, cluster, partitioner to JMX (CASSANDRA-5881)
* Fix CqlRecordWriter with composite keys (CASSANDRA-5949)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d19f802a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
index 40934d4..df28c46 100644
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
@@ -153,7 +153,7 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
List<OnDiskAtom> result = new ArrayList<OnDiskAtom>();
if (indexList.isEmpty())
{
- readSimpleColumns(sstable.metadata, file, columns, result);
+ readSimpleColumns(file, columns, result);
}
else
{
@@ -175,37 +175,27 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
iter = result.iterator();
}
- private void readSimpleColumns(CFMetaData metadata,
- FileDataInput file,
- SortedSet<ByteBuffer> columnNames,
- List<OnDiskAtom> result)
- throws IOException
+ private void readSimpleColumns(FileDataInput file, SortedSet<ByteBuffer> columnNames, List<OnDiskAtom> result) throws IOException
{
- AbstractType<?> comparator = metadata.comparator;
OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
- ByteBuffer maximalColumnName = columnNames.last();
int count = file.readInt();
-
+ int n = 0;
for (int i = 0; i < count; i++)
{
OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
- ByteBuffer columnName = column.name();
-
if (column instanceof IColumn)
{
- if (columnNames.contains(columnName))
+ if (columnNames.contains(column.name()))
{
result.add(column);
+ if (++n >= columns.size())
+ break;
}
}
else
{
result.add(column);
}
-
- // Already consumed all of this block that's going to have columns that apply to this query.
- if (comparator.compare(columnName, maximalColumnName) >= 0)
- break;
}
}
@@ -241,12 +231,6 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
{
long positionToSeek = basePosition + indexInfo.offset;
- // SortedSet.subSet() is end-exclusive, so we special-case that
- // if it's one of the columns we're looking for
- ByteBuffer maximalColumnName = columnNames.contains(indexInfo.lastName)
- ? indexInfo.lastName
- : columnNames.subSet(indexInfo.firstName, indexInfo.lastName).last();
-
// With new promoted indexes, our first seek in the data file will happen at that point.
if (file == null)
file = createFileDataInput(positionToSeek);
@@ -254,20 +238,13 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
file.seek(positionToSeek);
FileMark mark = file.mark();
-
// TODO only completely deserialize columns we are interested in
while (file.bytesPastMark(mark) < indexInfo.width)
{
OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
- ByteBuffer columnName = column.name();
-
// we check vs the original Set, not the filtered List, for efficiency
- if (!(column instanceof IColumn) || columnNames.contains(columnName))
+ if (!(column instanceof IColumn) || columnNames.contains(column.name()))
result.add(column);
-
- // Already consumed all of this block that's going to have columns that apply to this query.
- if (comparator.compare(columnName, maximalColumnName) >= 0)
- break;
}
}
}
[2/8] git commit: revert #5966
Posted by jb...@apache.org.
revert #5966
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d19f802a
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d19f802a
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d19f802a
Branch: refs/heads/trunk
Commit: d19f802a296862010f26e09892351d923d31a23c
Parents: 07b4878
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Sep 18 09:39:35 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Sep 18 09:39:35 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 -
.../db/columniterator/SSTableNamesIterator.java | 37 ++++----------------
2 files changed, 7 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d19f802a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index fb4f3f4..47ff752 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,7 +3,6 @@
* (Hadoop) Fix CQLRW for thrift tables (CASSANDRA-6002)
* Fix possible divide-by-zero in HHOM (CASSANDRA-5990)
* Allow local batchlog writes for CL.ANY (CASSANDRA-5967)
- * Optimize name query performance in wide rows (CASSANDRA-5966)
* Upgrade metrics-core to version 2.2.0 (CASSANDRA-5947)
* Add snitch, schema version, cluster, partitioner to JMX (CASSANDRA-5881)
* Fix CqlRecordWriter with composite keys (CASSANDRA-5949)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d19f802a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
index 40934d4..df28c46 100644
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
@@ -153,7 +153,7 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
List<OnDiskAtom> result = new ArrayList<OnDiskAtom>();
if (indexList.isEmpty())
{
- readSimpleColumns(sstable.metadata, file, columns, result);
+ readSimpleColumns(file, columns, result);
}
else
{
@@ -175,37 +175,27 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
iter = result.iterator();
}
- private void readSimpleColumns(CFMetaData metadata,
- FileDataInput file,
- SortedSet<ByteBuffer> columnNames,
- List<OnDiskAtom> result)
- throws IOException
+ private void readSimpleColumns(FileDataInput file, SortedSet<ByteBuffer> columnNames, List<OnDiskAtom> result) throws IOException
{
- AbstractType<?> comparator = metadata.comparator;
OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
- ByteBuffer maximalColumnName = columnNames.last();
int count = file.readInt();
-
+ int n = 0;
for (int i = 0; i < count; i++)
{
OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
- ByteBuffer columnName = column.name();
-
if (column instanceof IColumn)
{
- if (columnNames.contains(columnName))
+ if (columnNames.contains(column.name()))
{
result.add(column);
+ if (++n >= columns.size())
+ break;
}
}
else
{
result.add(column);
}
-
- // Already consumed all of this block that's going to have columns that apply to this query.
- if (comparator.compare(columnName, maximalColumnName) >= 0)
- break;
}
}
@@ -241,12 +231,6 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
{
long positionToSeek = basePosition + indexInfo.offset;
- // SortedSet.subSet() is end-exclusive, so we special-case that
- // if it's one of the columns we're looking for
- ByteBuffer maximalColumnName = columnNames.contains(indexInfo.lastName)
- ? indexInfo.lastName
- : columnNames.subSet(indexInfo.firstName, indexInfo.lastName).last();
-
// With new promoted indexes, our first seek in the data file will happen at that point.
if (file == null)
file = createFileDataInput(positionToSeek);
@@ -254,20 +238,13 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
file.seek(positionToSeek);
FileMark mark = file.mark();
-
// TODO only completely deserialize columns we are interested in
while (file.bytesPastMark(mark) < indexInfo.width)
{
OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
- ByteBuffer columnName = column.name();
-
// we check vs the original Set, not the filtered List, for efficiency
- if (!(column instanceof IColumn) || columnNames.contains(columnName))
+ if (!(column instanceof IColumn) || columnNames.contains(column.name()))
result.add(column);
-
- // Already consumed all of this block that's going to have columns that apply to this query.
- if (comparator.compare(columnName, maximalColumnName) >= 0)
- break;
}
}
}
[3/8] git commit: merge from 1.2
Posted by jb...@apache.org.
merge from 1.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8ccd2413
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8ccd2413
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8ccd2413
Branch: refs/heads/trunk
Commit: 8ccd24135233b72f6dd08f6b0eff8e1c414fb373
Parents: 88e3977 d19f802
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Sep 18 09:42:51 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Sep 18 09:42:51 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 -
.../db/columniterator/SSTableNamesIterator.java | 34 ++++----------------
2 files changed, 7 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8ccd2413/CHANGES.txt
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8ccd2413/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
index bae43a0,df28c46..3467244
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
@@@ -140,8 -153,7 +140,8 @@@ public class SSTableNamesIterator exten
List<OnDiskAtom> result = new ArrayList<OnDiskAtom>();
if (indexList.isEmpty())
{
- readSimpleColumns(file, columns, result);
+ int columnCount = sstable.descriptor.version.hasRowSizeAndColumnCount ? file.readInt() : Integer.MAX_VALUE;
- readSimpleColumns(sstable.metadata, file, columns, result, columnCount);
++ readSimpleColumns(file, columns, result, columnCount);
}
else
{
@@@ -152,24 -175,21 +152,20 @@@
iter = result.iterator();
}
- private void readSimpleColumns(CFMetaData metadata,
- FileDataInput file,
- SortedSet<ByteBuffer> columnNames,
- List<OnDiskAtom> result,
- int columnCount)
- private void readSimpleColumns(FileDataInput file, SortedSet<ByteBuffer> columnNames, List<OnDiskAtom> result) throws IOException
++ private void readSimpleColumns(FileDataInput file, SortedSet<ByteBuffer> columnNames, List<OnDiskAtom> result, int columnCount)
{
- AbstractType<?> comparator = metadata.comparator;
- OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
- int count = file.readInt();
+ Iterator<OnDiskAtom> atomIterator = cf.metadata().getOnDiskIterator(file, columnCount, sstable.descriptor.version);
- ByteBuffer maximalColumnName = columnNames.last();
+ int n = 0;
- for (int i = 0; i < count; i++)
+ while (atomIterator.hasNext())
{
- OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
- if (column instanceof IColumn)
+ OnDiskAtom column = atomIterator.next();
- ByteBuffer columnName = column.name();
+ if (column instanceof Column)
{
- if (columnNames.contains(columnName))
+ if (columnNames.contains(column.name()))
{
result.add(column);
+ if (++n >= columns.size())
+ break;
}
}
else
@@@ -225,23 -235,16 +211,17 @@@
if (file == null)
file = createFileDataInput(positionToSeek);
- OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
+ // We'll read as much atom as there is in the index block, so provide a bogus atom count
+ Iterator<OnDiskAtom> atomIterator = cf.metadata().getOnDiskIterator(file, Integer.MAX_VALUE, sstable.descriptor.version);
file.seek(positionToSeek);
FileMark mark = file.mark();
// TODO only completely deserialize columns we are interested in
while (file.bytesPastMark(mark) < indexInfo.width)
{
- OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
+ OnDiskAtom column = atomIterator.next();
- ByteBuffer columnName = column.name();
// we check vs the original Set, not the filtered List, for efficiency
- if (!(column instanceof Column) || columnNames.contains(columnName))
- if (!(column instanceof IColumn) || columnNames.contains(column.name()))
++ if (!(column instanceof Column) || columnNames.contains(column.name()))
result.add(column);
-
- // Already consumed all of this block that's going to have columns that apply to this query.
- if (comparator.compare(columnName, maximalColumnName) >= 0)
- break;
}
}
}
[8/8] git commit: Merge branch 'cassandra-2.0' into trunk
Posted by jb...@apache.org.
Merge branch 'cassandra-2.0' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5102e8d7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5102e8d7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5102e8d7
Branch: refs/heads/trunk
Commit: 5102e8d748289876964305292d75f5eba28a40dd
Parents: 7d03e28 278f210
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Sep 18 09:46:01 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Sep 18 09:46:01 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 -
.../db/columniterator/SSTableNamesIterator.java | 34 ++++----------------
2 files changed, 7 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5102e8d7/CHANGES.txt
----------------------------------------------------------------------
[7/8] git commit: Merge remote-tracking branch 'origin/cassandra-2.0'
into cassandra-2.0
Posted by jb...@apache.org.
Merge remote-tracking branch 'origin/cassandra-2.0' into cassandra-2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/278f2106
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/278f2106
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/278f2106
Branch: refs/heads/trunk
Commit: 278f21062d760aae708b6727058607b555f16291
Parents: 8ccd241 a7b32de
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Sep 18 09:45:52 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Sep 18 09:45:52 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 3 +++
.../org/apache/cassandra/cql3/CQL3Type.java | 2 +-
.../org/apache/cassandra/db/SystemKeyspace.java | 27 ++++++++++++++++++++
.../service/pager/AbstractQueryPager.java | 2 +-
4 files changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/278f2106/CHANGES.txt
----------------------------------------------------------------------
[5/8] git commit: revert #5966
Posted by jb...@apache.org.
revert #5966
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8d6271dd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8d6271dd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8d6271dd
Branch: refs/heads/cassandra-1.2
Commit: 8d6271ddf22115da4032247f1fabbcea1b9a9d07
Parents: fc9b3a7
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Sep 18 09:39:35 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Sep 18 09:45:37 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 -
.../db/columniterator/SSTableNamesIterator.java | 37 ++++----------------
2 files changed, 7 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8d6271dd/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index fb4f3f4..47ff752 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,7 +3,6 @@
* (Hadoop) Fix CQLRW for thrift tables (CASSANDRA-6002)
* Fix possible divide-by-zero in HHOM (CASSANDRA-5990)
* Allow local batchlog writes for CL.ANY (CASSANDRA-5967)
- * Optimize name query performance in wide rows (CASSANDRA-5966)
* Upgrade metrics-core to version 2.2.0 (CASSANDRA-5947)
* Add snitch, schema version, cluster, partitioner to JMX (CASSANDRA-5881)
* Fix CqlRecordWriter with composite keys (CASSANDRA-5949)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8d6271dd/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
index 40934d4..df28c46 100644
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
@@ -153,7 +153,7 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
List<OnDiskAtom> result = new ArrayList<OnDiskAtom>();
if (indexList.isEmpty())
{
- readSimpleColumns(sstable.metadata, file, columns, result);
+ readSimpleColumns(file, columns, result);
}
else
{
@@ -175,37 +175,27 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
iter = result.iterator();
}
- private void readSimpleColumns(CFMetaData metadata,
- FileDataInput file,
- SortedSet<ByteBuffer> columnNames,
- List<OnDiskAtom> result)
- throws IOException
+ private void readSimpleColumns(FileDataInput file, SortedSet<ByteBuffer> columnNames, List<OnDiskAtom> result) throws IOException
{
- AbstractType<?> comparator = metadata.comparator;
OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
- ByteBuffer maximalColumnName = columnNames.last();
int count = file.readInt();
-
+ int n = 0;
for (int i = 0; i < count; i++)
{
OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
- ByteBuffer columnName = column.name();
-
if (column instanceof IColumn)
{
- if (columnNames.contains(columnName))
+ if (columnNames.contains(column.name()))
{
result.add(column);
+ if (++n >= columns.size())
+ break;
}
}
else
{
result.add(column);
}
-
- // Already consumed all of this block that's going to have columns that apply to this query.
- if (comparator.compare(columnName, maximalColumnName) >= 0)
- break;
}
}
@@ -241,12 +231,6 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
{
long positionToSeek = basePosition + indexInfo.offset;
- // SortedSet.subSet() is end-exclusive, so we special-case that
- // if it's one of the columns we're looking for
- ByteBuffer maximalColumnName = columnNames.contains(indexInfo.lastName)
- ? indexInfo.lastName
- : columnNames.subSet(indexInfo.firstName, indexInfo.lastName).last();
-
// With new promoted indexes, our first seek in the data file will happen at that point.
if (file == null)
file = createFileDataInput(positionToSeek);
@@ -254,20 +238,13 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
file.seek(positionToSeek);
FileMark mark = file.mark();
-
// TODO only completely deserialize columns we are interested in
while (file.bytesPastMark(mark) < indexInfo.width)
{
OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
- ByteBuffer columnName = column.name();
-
// we check vs the original Set, not the filtered List, for efficiency
- if (!(column instanceof IColumn) || columnNames.contains(columnName))
+ if (!(column instanceof IColumn) || columnNames.contains(column.name()))
result.add(column);
-
- // Already consumed all of this block that's going to have columns that apply to this query.
- if (comparator.compare(columnName, maximalColumnName) >= 0)
- break;
}
}
}
[6/8] git commit: Merge remote-tracking branch 'origin/cassandra-2.0'
into cassandra-2.0
Posted by jb...@apache.org.
Merge remote-tracking branch 'origin/cassandra-2.0' into cassandra-2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/278f2106
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/278f2106
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/278f2106
Branch: refs/heads/cassandra-2.0
Commit: 278f21062d760aae708b6727058607b555f16291
Parents: 8ccd241 a7b32de
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Sep 18 09:45:52 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Sep 18 09:45:52 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 3 +++
.../org/apache/cassandra/cql3/CQL3Type.java | 2 +-
.../org/apache/cassandra/db/SystemKeyspace.java | 27 ++++++++++++++++++++
.../service/pager/AbstractQueryPager.java | 2 +-
4 files changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/278f2106/CHANGES.txt
----------------------------------------------------------------------
[4/8] git commit: merge from 1.2
Posted by jb...@apache.org.
merge from 1.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8ccd2413
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8ccd2413
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8ccd2413
Branch: refs/heads/cassandra-2.0
Commit: 8ccd24135233b72f6dd08f6b0eff8e1c414fb373
Parents: 88e3977 d19f802
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Sep 18 09:42:51 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Sep 18 09:42:51 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 -
.../db/columniterator/SSTableNamesIterator.java | 34 ++++----------------
2 files changed, 7 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8ccd2413/CHANGES.txt
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8ccd2413/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
index bae43a0,df28c46..3467244
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
@@@ -140,8 -153,7 +140,8 @@@ public class SSTableNamesIterator exten
List<OnDiskAtom> result = new ArrayList<OnDiskAtom>();
if (indexList.isEmpty())
{
- readSimpleColumns(file, columns, result);
+ int columnCount = sstable.descriptor.version.hasRowSizeAndColumnCount ? file.readInt() : Integer.MAX_VALUE;
- readSimpleColumns(sstable.metadata, file, columns, result, columnCount);
++ readSimpleColumns(file, columns, result, columnCount);
}
else
{
@@@ -152,24 -175,21 +152,20 @@@
iter = result.iterator();
}
- private void readSimpleColumns(CFMetaData metadata,
- FileDataInput file,
- SortedSet<ByteBuffer> columnNames,
- List<OnDiskAtom> result,
- int columnCount)
- private void readSimpleColumns(FileDataInput file, SortedSet<ByteBuffer> columnNames, List<OnDiskAtom> result) throws IOException
++ private void readSimpleColumns(FileDataInput file, SortedSet<ByteBuffer> columnNames, List<OnDiskAtom> result, int columnCount)
{
- AbstractType<?> comparator = metadata.comparator;
- OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
- int count = file.readInt();
+ Iterator<OnDiskAtom> atomIterator = cf.metadata().getOnDiskIterator(file, columnCount, sstable.descriptor.version);
- ByteBuffer maximalColumnName = columnNames.last();
+ int n = 0;
- for (int i = 0; i < count; i++)
+ while (atomIterator.hasNext())
{
- OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
- if (column instanceof IColumn)
+ OnDiskAtom column = atomIterator.next();
- ByteBuffer columnName = column.name();
+ if (column instanceof Column)
{
- if (columnNames.contains(columnName))
+ if (columnNames.contains(column.name()))
{
result.add(column);
+ if (++n >= columns.size())
+ break;
}
}
else
@@@ -225,23 -235,16 +211,17 @@@
if (file == null)
file = createFileDataInput(positionToSeek);
- OnDiskAtom.Serializer atomSerializer = cf.getOnDiskSerializer();
+ // We'll read as much atom as there is in the index block, so provide a bogus atom count
+ Iterator<OnDiskAtom> atomIterator = cf.metadata().getOnDiskIterator(file, Integer.MAX_VALUE, sstable.descriptor.version);
file.seek(positionToSeek);
FileMark mark = file.mark();
// TODO only completely deserialize columns we are interested in
while (file.bytesPastMark(mark) < indexInfo.width)
{
- OnDiskAtom column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version);
+ OnDiskAtom column = atomIterator.next();
- ByteBuffer columnName = column.name();
// we check vs the original Set, not the filtered List, for efficiency
- if (!(column instanceof Column) || columnNames.contains(columnName))
- if (!(column instanceof IColumn) || columnNames.contains(column.name()))
++ if (!(column instanceof Column) || columnNames.contains(column.name()))
result.add(column);
-
- // Already consumed all of this block that's going to have columns that apply to this query.
- if (comparator.compare(columnName, maximalColumnName) >= 0)
- break;
}
}
}