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 2015/12/19 00:14:38 UTC
cassandra git commit: (cqlsh) allow setting TTL with COPY
Repository: cassandra
Updated Branches:
refs/heads/trunk 622d1f7c0 -> 99880d22d
(cqlsh) allow setting TTL with COPY
patch by Stefania Alborghetti; reviewed by Adam Holmberg for
CASSANDRA-9494
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/99880d22
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/99880d22
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/99880d22
Branch: refs/heads/trunk
Commit: 99880d22de0023081a6d5829bef991eb96f7c342
Parents: 622d1f7
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Nov 19 14:51:40 2015 +0800
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Fri Dec 18 23:14:15 2015 +0000
----------------------------------------------------------------------
CHANGES.txt | 1 +
bin/cqlsh.py | 3 ++-
pylib/cqlshlib/copyutil.py | 5 +++++
3 files changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/99880d22/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 5cbbb62..47863e9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.2
+ * (cqlsh) allow setting TTL with COPY (CASSANDRA-9494)
* Fix EstimatedHistogram creation in nodetool tablehistograms (CASSANDRA-10859)
* Establish bootstrap stream sessions sequentially (CASSANDRA-6992)
* Sort compactionhistory output by timestamp (CASSANDRA-10464)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/99880d22/bin/cqlsh.py
----------------------------------------------------------------------
diff --git a/bin/cqlsh.py b/bin/cqlsh.py
index 0f6b39c..e48857d 100644
--- a/bin/cqlsh.py
+++ b/bin/cqlsh.py
@@ -460,7 +460,7 @@ def complete_copy_column_names(ctxt, cqlsh):
COPY_COMMON_OPTIONS = ['DELIMITER', 'QUOTE', 'ESCAPE', 'HEADER', 'NULL',
'MAXATTEMPTS', 'REPORTFREQUENCY']
-COPY_FROM_OPTIONS = ['CHUNKSIZE', 'INGESTRATE', 'MAXBATCHSIZE', 'MINBATCHSIZE']
+COPY_FROM_OPTIONS = ['CHUNKSIZE', 'INGESTRATE', 'MAXBATCHSIZE', 'MINBATCHSIZE', 'TTL']
COPY_TO_OPTIONS = ['ENCODING', 'TIMEFORMAT', 'PAGESIZE', 'PAGETIMEOUT', 'MAXREQUESTS']
@@ -1812,6 +1812,7 @@ class Shell(cmd.Cmd):
MAXBATCHSIZE=20 - the maximum size of an import batch (COPY FROM)
MINBATCHSIZE=2 - the minimum size of an import batch (COPY FROM)
REPORTFREQUENCY=0.25 - the frequency with which we display status updates in seconds
+ TTL=3600 - the time to live in seconds, by default data will not expire (COPY FROM)
When entering CSV data on STDIN, you can use the sequence "\."
on a line by itself to end the data input.
http://git-wip-us.apache.org/repos/asf/cassandra/blob/99880d22/pylib/cqlshlib/copyutil.py
----------------------------------------------------------------------
diff --git a/pylib/cqlshlib/copyutil.py b/pylib/cqlshlib/copyutil.py
index a117ec3..d7d7790 100644
--- a/pylib/cqlshlib/copyutil.py
+++ b/pylib/cqlshlib/copyutil.py
@@ -83,6 +83,7 @@ def parse_options(shell, opts):
csv_options['maxbatchsize'] = int(opts.pop('maxbatchsize', 20))
csv_options['minbatchsize'] = int(opts.pop('minbatchsize', 2))
csv_options['reportfrequency'] = float(opts.pop('reportfrequency', 0.25))
+ csv_options['ttl'] = int(opts.pop('ttl', -1))
return csv_options, dialect_options, opts
@@ -1063,6 +1064,7 @@ class ImportProcess(ChildProcess):
self.max_attempts = csv_options['maxattempts']
self.min_batch_size = csv_options['minbatchsize']
self.max_batch_size = csv_options['maxbatchsize']
+ self.ttl = csv_options['ttl']
self._session = None
@property
@@ -1140,6 +1142,9 @@ class ImportProcess(ChildProcess):
protect_name(self.cf),
', '.join(protect_names(self.columns),),
', '.join(['?' for _ in self.columns]))
+ if self.ttl >= 0:
+ query += 'USING TTL %s' % (self.ttl,)
+
query_statement = self.session.prepare(query)
conv = ImportConversion(self, table_meta, query_statement)