You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by st...@apache.org on 2017/02/22 10:02:27 UTC
[2/6] cassandra git commit: Fix cqlsh COPY for dates before 1900
Fix cqlsh COPY for dates before 1900
patch by Stefania Alborghetti; reviewed by Tyler Hobbs for CASSANDRA-13185
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f0502aa7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f0502aa7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f0502aa7
Branch: refs/heads/cassandra-3.11
Commit: f0502aa791897a30aea371a3032ea5ef679d25cc
Parents: 0eae908
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Tue Feb 21 12:23:17 2017 +0000
Committer: Stefania Alborghetti <st...@datastax.com>
Committed: Wed Feb 22 09:59:08 2017 +0000
----------------------------------------------------------------------
CHANGES.txt | 2 ++
pylib/cqlshlib/formatting.py | 10 +++++++++-
2 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f0502aa7/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index f2419d6..91a6b31 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
3.0.12
+ * Fix cqlsh COPY for dates before 1900 (CASSANDRA-13185)
+
Merged from 2.2
* Fix ColumnCounter::countAll behaviour for reverse queries (CASSANDRA-13222)
* Exceptions encountered calling getSeeds() breaks OTC thread (CASSANDRA-13018)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f0502aa7/pylib/cqlshlib/formatting.py
----------------------------------------------------------------------
diff --git a/pylib/cqlshlib/formatting.py b/pylib/cqlshlib/formatting.py
index dcd08da..097b1a7 100644
--- a/pylib/cqlshlib/formatting.py
+++ b/pylib/cqlshlib/formatting.py
@@ -246,7 +246,15 @@ def strftime(time_format, seconds, timezone=None):
ret_dt = datetime_from_timestamp(seconds).replace(tzinfo=UTC())
if timezone:
ret_dt = ret_dt.astimezone(timezone)
- return ret_dt.strftime(time_format)
+ try:
+ return ret_dt.strftime(time_format)
+ except ValueError:
+ # CASSANDRA-13185: if the date cannot be formatted as a string, return a string with the milliseconds
+ # since the epoch. cqlsh does the exact same thing for values below datetime.MINYEAR (1) or above
+ # datetime.MAXYEAR (9999). Some versions of strftime() also have problems for dates between MIN_YEAR and 1900.
+ # cqlsh COPY assumes milliseconds from the epoch if it fails to parse a datetime string, and so it is
+ # able to correctly import timestamps exported as milliseconds since the epoch.
+ return '%d' % (seconds * 1000.0)
@formatter_for('Date')