Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 4748B200C5C for ; Thu, 20 Apr 2017 15:49:01 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 46042160BB5; Thu, 20 Apr 2017 13:49:01 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 8BF74160B91 for ; Thu, 20 Apr 2017 15:49:00 +0200 (CEST) Received: (qmail 88854 invoked by uid 500); 20 Apr 2017 13:48:59 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 88841 invoked by uid 99); 20 Apr 2017 13:48:59 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Apr 2017 13:48:59 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 87C3DE10FF; Thu, 20 Apr 2017 13:48:59 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: paulo@apache.org To: commits@cassandra.apache.org Date: Thu, 20 Apr 2017 13:48:59 -0000 Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: [1/9] cassandra git commit: Fix SSTableLoader fail when the loaded table contains dropped columns (CASSANDRA-13276) archived-at: Thu, 20 Apr 2017 13:49:01 -0000 Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 175e4f8ce -> f5b36f12d refs/heads/cassandra-3.11 42904c653 -> 4d24958dd refs/heads/trunk b687641f7 -> 50ba850be Fix SSTableLoader fail when the loaded table contains dropped columns (CASSANDRA-13276) Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/175e4f8c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/175e4f8c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/175e4f8c Branch: refs/heads/cassandra-3.11 Commit: 175e4f8ce868ea04a5e11a8d5212d8c397ea0d12 Parents: b063b38 Author: adelapena Authored: Thu Apr 20 13:16:15 2017 +0100 Committer: adelapena Committed: Thu Apr 20 13:16:15 2017 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../utils/NativeSSTableLoaderClient.java | 43 +++++++++++++++----- 2 files changed, 34 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/175e4f8c/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 81d5b06..6a1e486 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.14 + * Fix SSTableLoader fail when the loaded table contains dropped columns (CASSANDRA-13276) * Avoid name clashes in CassandraIndexTest (CASSANDRA-13427) * Handling partially written hint files (CASSANDRA-12728) * Interrupt replaying hints on decommission (CASSANDRA-13308) http://git-wip-us.apache.org/repos/asf/cassandra/blob/175e4f8c/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java index 4c6b12e..97237d0 100644 --- a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java +++ b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java @@ -18,7 +18,9 @@ package org.apache.cassandra.utils; import java.net.InetAddress; +import java.nio.ByteBuffer; import java.util.*; +import java.util.concurrent.TimeUnit; import com.datastax.driver.core.*; @@ -184,16 +186,29 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client for (Row colRow : session.execute(columnsQuery, keyspace, name)) defs.add(createDefinitionFromRow(colRow, keyspace, name, types)); - return CFMetaData.create(keyspace, - name, - id, - isDense, - isCompound, - isSuper, - isCounter, - isView, - defs, - partitioner); + CFMetaData metadata = CFMetaData.create(keyspace, + name, + id, + isDense, + isCompound, + isSuper, + isCounter, + isView, + defs, + partitioner); + + String droppedColumnsQuery = String.format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?", + SchemaKeyspace.NAME, + SchemaKeyspace.DROPPED_COLUMNS); + Map droppedColumns = new HashMap<>(); + for (Row colRow : session.execute(droppedColumnsQuery, keyspace, name)) + { + CFMetaData.DroppedColumn droppedColumn = createDroppedColumnFromRow(colRow, keyspace); + droppedColumns.put(UTF8Type.instance.decompose(droppedColumn.name), droppedColumn); + } + metadata.droppedColumns(droppedColumns); + + return metadata; } private static ColumnDefinition createDefinitionFromRow(Row row, String keyspace, String table, Types types) @@ -211,4 +226,12 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client ColumnDefinition.Kind kind = ColumnDefinition.Kind.valueOf(row.getString("kind").toUpperCase()); return new ColumnDefinition(keyspace, table, name, type, position, kind); } + + private static CFMetaData.DroppedColumn createDroppedColumnFromRow(Row row, String keyspace) + { + String name = row.getString("column_name"); + AbstractType type = CQLTypeParser.parse(keyspace, row.getString("type"), Types.none()); + long droppedTime = TimeUnit.MILLISECONDS.toMicros(row.getTimestamp("dropped_time").getTime()); + return new CFMetaData.DroppedColumn(name, type, droppedTime); + } }