Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9ED5C17AB1 for ; Wed, 1 Apr 2015 17:42:54 +0000 (UTC) Received: (qmail 80468 invoked by uid 500); 1 Apr 2015 17:42:45 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 80199 invoked by uid 500); 1 Apr 2015 17:42:45 -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 79898 invoked by uid 99); 1 Apr 2015 17:42:44 -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; Wed, 01 Apr 2015 17:42:44 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 788BFE179F; Wed, 1 Apr 2015 17:42:44 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: tylerhobbs@apache.org To: commits@cassandra.apache.org Date: Wed, 01 Apr 2015 17:42:46 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [3/3] cassandra git commit: Add SELECT/INSERT JSON support, toJson(), fromJson() Add SELECT/INSERT JSON support, toJson(), fromJson() Patch by Tyler Hobbs; reviewed by Sylvain Lebresne and Robert Stupp for CASSANDRA-7970 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c7b02d1a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c7b02d1a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c7b02d1a Branch: refs/heads/trunk Commit: c7b02d1a6d11dc4436340a5cbeb0f377e8ac8605 Parents: 61e063b Author: Tyler Hobbs Authored: Wed Apr 1 12:42:01 2015 -0500 Committer: Tyler Hobbs Committed: Wed Apr 1 12:42:01 2015 -0500 ---------------------------------------------------------------------- CHANGES.txt | 2 + doc/cql3/CQL.textile | 77 +- pylib/cqlshlib/cql3handling.py | 9 +- .../apache/cassandra/cql3/AbstractMarker.java | 2 +- .../apache/cassandra/cql3/ColumnCondition.java | 31 +- .../org/apache/cassandra/cql3/Constants.java | 34 +- src/java/org/apache/cassandra/cql3/Cql.g | 64 +- src/java/org/apache/cassandra/cql3/Json.java | 329 +++++++ src/java/org/apache/cassandra/cql3/Lists.java | 28 +- src/java/org/apache/cassandra/cql3/Maps.java | 28 +- .../org/apache/cassandra/cql3/QueryOptions.java | 5 + .../org/apache/cassandra/cql3/ResultSet.java | 1 - src/java/org/apache/cassandra/cql3/Sets.java | 24 +- src/java/org/apache/cassandra/cql3/Term.java | 13 +- src/java/org/apache/cassandra/cql3/Tuples.java | 4 +- .../apache/cassandra/cql3/UntypedResultSet.java | 4 +- .../cassandra/cql3/functions/FromJsonFct.java | 78 ++ .../cassandra/cql3/functions/FunctionCall.java | 28 +- .../cassandra/cql3/functions/FunctionName.java | 11 +- .../cassandra/cql3/functions/Functions.java | 33 +- .../cassandra/cql3/functions/ToJsonFct.java | 67 ++ .../cassandra/cql3/selection/Selectable.java | 11 +- .../cassandra/cql3/selection/Selection.java | 113 ++- .../cql3/selection/SelectorFactories.java | 17 + .../cql3/statements/ModificationStatement.java | 2 +- .../cql3/statements/SelectStatement.java | 18 +- .../cql3/statements/UpdateStatement.java | 76 +- .../db/marshal/AbstractCompositeType.java | 13 + .../cassandra/db/marshal/AbstractType.java | 13 + .../apache/cassandra/db/marshal/AsciiType.java | 31 + .../cassandra/db/marshal/BooleanType.java | 22 +- .../apache/cassandra/db/marshal/BytesType.java | 25 + .../db/marshal/ColumnToCollectionType.java | 13 + .../cassandra/db/marshal/CounterColumnType.java | 13 + .../apache/cassandra/db/marshal/DateType.java | 26 + .../cassandra/db/marshal/DecimalType.java | 21 + .../apache/cassandra/db/marshal/DoubleType.java | 27 +- .../db/marshal/DynamicCompositeType.java | 13 + .../apache/cassandra/db/marshal/EmptyType.java | 13 + .../apache/cassandra/db/marshal/FloatType.java | 27 +- .../apache/cassandra/db/marshal/FrozenType.java | 11 + .../cassandra/db/marshal/InetAddressType.java | 24 +- .../apache/cassandra/db/marshal/Int32Type.java | 31 +- .../cassandra/db/marshal/IntegerType.java | 22 + .../cassandra/db/marshal/LexicalUUIDType.java | 16 + .../apache/cassandra/db/marshal/ListType.java | 43 + .../db/marshal/LocalByPartionerType.java | 13 + .../apache/cassandra/db/marshal/LongType.java | 31 +- .../apache/cassandra/db/marshal/MapType.java | 42 + .../cassandra/db/marshal/ReversedType.java | 14 + .../apache/cassandra/db/marshal/SetType.java | 29 + .../cassandra/db/marshal/SimpleDateType.java | 23 + .../apache/cassandra/db/marshal/TimeType.java | 22 + .../cassandra/db/marshal/TimeUUIDType.java | 15 + .../cassandra/db/marshal/TimestampType.java | 26 + .../apache/cassandra/db/marshal/TupleType.java | 56 ++ .../apache/cassandra/db/marshal/UTF8Type.java | 35 + .../apache/cassandra/db/marshal/UUIDType.java | 21 +- .../apache/cassandra/db/marshal/UserType.java | 93 +- .../hadoop/pig/AbstractCassandraStorage.java | 5 +- .../serializers/CollectionSerializer.java | 4 +- .../cassandra/serializers/ListSerializer.java | 14 + .../cassandra/serializers/MapSerializer.java | 15 + .../cassandra/serializers/SetSerializer.java | 13 + .../serializers/TimestampSerializer.java | 10 +- .../org/apache/cassandra/cql3/CQLTester.java | 22 +- .../org/apache/cassandra/cql3/JsonTest.java | 860 +++++++++++++++++++ 67 files changed, 2634 insertions(+), 242 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7b02d1a/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 9178fb3..3f7dc9e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,6 @@ 3.0 + * Add support for SELECT JSON, INSERT JSON syntax and new toJson(), fromJson() + functions (CASSANDRA-7970) * Optimise max purgeable timestamp calculation in compaction (CASSANDRA-8920) * Constrain internode message buffer sizes, and improve IO class hierarchy (CASSANDRA-8670) * New tool added to validate all sstables in a node (CASSANDRA-5791) http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7b02d1a/doc/cql3/CQL.textile ---------------------------------------------------------------------- diff --git a/doc/cql3/CQL.textile b/doc/cql3/CQL.textile index 7ebda61..8a227fb 100644 --- a/doc/cql3/CQL.textile +++ b/doc/cql3/CQL.textile @@ -120,7 +120,7 @@ p. A @@ can be either anonymous (a question mark (@?@)) or named (an i p. The @@ production is use by statement that create and alter keyspaces and tables. Each @@ is either a _simple_ one, in which case it just has a value, or a _map_ one, in which case it's value is a map grouping sub-options. The following will refer to one or the other as the _kind_ (_simple_ or _map_) of the property. -p. A @@ will be used to identify a table. This is an identifier representing the table name that can be preceded by a keyspace name. The keyspace name, if provided, allow to identify a table in another keyspace than the currently active one (the currently active keyspace is set through the USE statement). +p. A @@ will be used to identify a table. This is an identifier representing the table name that can be preceded by a keyspace name. The keyspace name, if provided, allow to identify a table in another keyspace than the currently active one (the currently active keyspace is set through the USE statement). p. For supported @@, see the section on "functions":#functions. @@ -743,11 +743,15 @@ __Syntax:__ bc(syntax).. ::= INSERT INTO - '(' ( ',' )* ')' - VALUES '(' ( ',' )* ')' + ( ( VALUES ) + | ( JSON )) ( IF NOT EXISTS )? ( USING