Return-Path: X-Original-To: apmail-cassandra-dev-archive@www.apache.org Delivered-To: apmail-cassandra-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9B0DCE11F for ; Mon, 17 Dec 2012 15:39:07 +0000 (UTC) Received: (qmail 21964 invoked by uid 500); 17 Dec 2012 15:39:05 -0000 Delivered-To: apmail-cassandra-dev-archive@cassandra.apache.org Received: (qmail 21589 invoked by uid 500); 17 Dec 2012 15:39:04 -0000 Mailing-List: contact dev-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 dev@cassandra.apache.org Received: (qmail 19171 invoked by uid 99); 17 Dec 2012 15:37:14 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Dec 2012 15:37:14 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of jbellis@gmail.com designates 209.85.160.44 as permitted sender) Received: from [209.85.160.44] (HELO mail-pb0-f44.google.com) (209.85.160.44) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Dec 2012 15:36:58 +0000 Received: by mail-pb0-f44.google.com with SMTP id uo1so3707945pbc.31 for ; Mon, 17 Dec 2012 07:36:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=fw4oOBXbTfpH+x3ZCZwPd2C7UaGKqvLiaKpySLIY7fU=; b=PDPgmCVT0VxmXq5QF9MztwyIoOUmzUehCHWzcmTNri0sLrVpbJNjPbWy250UZKLzGA kYpaPXysCw6pygCO/UiHDBWdapC9a8hlSbf4sD376nqZ1IFfJrfEA66FgvRFC5adbFVj jKgzISR1i8tNXM07ip90aGRPnvgLf/cuK+XrguS2zQtD5vacWgZoaqCBPPZiSbmY27KK H96IJkIn7sPPirz34u8BuWYlylI/sbpaz6rF/XWEdQMSs63s+N8FViN0Dd2OdTWWnpgB sg8fTdjhHx78xyal9aN9R3OEK2DEqg1WITplYbeueF187k3k+TVcKeYZez57VPDWeph/ pBWA== Received: by 10.68.192.74 with SMTP id he10mr22652058pbc.147.1355758598585; Mon, 17 Dec 2012 07:36:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.66.20.162 with HTTP; Mon, 17 Dec 2012 07:36:18 -0800 (PST) In-Reply-To: References: <1349749102.77304.YahooMailNeo@web32504.mail.mud.yahoo.com> <1349765897.29752.YahooMailNeo@web32505.mail.mud.yahoo.com> <1355755947.97528.YahooMailNeo@web162401.mail.bf1.yahoo.com> From: Jonathan Ellis Date: Mon, 17 Dec 2012 09:36:18 -0600 Message-ID: Subject: Re: Compund/Composite column names To: dev@cassandra.apache.org Content-Type: text/plain; charset=ISO-8859-1 X-Virus-Checked: Checked by ClamAV on apache.org You are confusing client-side and server-side validation. The server should validate thrift inserts against cql3 table to prevent egregiously malformed data, per the discussion on [1]. (Of course even on the server we're limited to "this bunch of bytes here could probably be an int" but that should be enough to prevent AIOBE.) So if rc1 has validation problems, we should be able to fix that. (An example with the cli would be easiest to address.) [1] https://issues.apache.org/jira/browse/CASSANDRA-4377?focusedCommentId=13446499&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13446499 On Mon, Dec 17, 2012 at 9:11 AM, Edward Capriolo wrote: > This was discussed in one of the tickets. The problem is that CQL3's sparse > tables is it has different metadata that has NOT been added to thrift's > CFMetaData. Thus thrift is unaware of exactly how to verify the insert. > > Originally it was made impossible for thrift to see a sparse table (but > that restriction has been lifted) it seems. It is probably a bad idea to > thrift insert into a sparse table until Cassandra does not have two > distinct sources of meta information. > > > > > > On Mon, Dec 17, 2012 at 9:52 AM, Vivek Mishra wrote: > >> Looks like Thrift API is not working as expected? >> >> -Vivek >> >> >> >> >> ________________________________ >> From: Brian O'Neill >> To: dev@cassandra.apache.org >> Cc: Vivek Mishra >> Sent: Monday, December 17, 2012 8:12 PM >> Subject: Re: Compund/Composite column names >> >> FYI -- I'm still seeing this on 1.2-beta1. >> >> If you create a table via CQL, then insert into it (via Java API) with >> an incorrect number of components. The insert works, but select * >> from CQL results in a TSocket read error. >> >> I showed this in the webinar last week, just in case people ran into >> it. It would be great to translate the ArrayIndexOutofBoundsException >> from the server side into something meaningful in cqlsh to help people >> diagnose the problem. (a regular user probably doesn't have access to >> the server-side logs) >> >> You can see it at minute 41 in the video from the webinar: >> http://www.youtube.com/watch?v=AdfugJxfd0o&feature=youtu.be >> >> -brian >> >> >> On Tue, Oct 9, 2012 at 9:39 AM, Jonathan Ellis wrote: >> > Sounds like you're running into the keyspace drop bug. It's "mostly" >> fixed >> > in 1.1.5 but you might need the latest from 1.1 branch. 1.1.6 will be >> > released soon with the final fix. >> > On Oct 9, 2012 1:58 AM, "Vivek Mishra" wrote: >> > >> >> >> >> >> >> Ok. I am able to understand the problem now. Issue is: >> >> >> >> If i create a column family altercations as: >> >> >> >> >> >> >> **********************************************************************************************************8 >> >> CREATE TABLE altercations ( >> >> instigator text, >> >> started_at timestamp, >> >> ships_destroyed int, >> >> energy_used float, >> >> alliance_involvement boolean, >> >> PRIMARY KEY (instigator,started_at,ships_destroyed) >> >> ); >> >> / >> >> INSERT INTO altercations (instigator, started_at, ships_destroyed, >> >> energy_used, alliance_involvement) >> >> VALUES ('Jayne Cobb', '2012-07-23', 2, 4.6, >> 'false'); >> >> >> >> >> ********************************************************************************************************************* >> >> >> >> It works! >> >> >> >> But if i create a column family with compound primary key with 2 >> composite >> >> column as: >> >> >> >> >> >> >> ********************************************************************************************************************* >> >> CREATE TABLE altercations ( >> >> instigator text, >> >> started_at timestamp, >> >> ships_destroyed int, >> >> energy_used float, >> >> alliance_involvement boolean, >> >> PRIMARY KEY (instigator,started_at) >> >> ); >> >> >> >> >> >> >> ********************************************************************************************************************* >> >> and Then drop this column family: >> >> >> >> >> >> >> ********************************************************************************************************************* >> >> drop columnfamily altercations; >> >> >> >> >> ********************************************************************************************************************* >> >> >> >> and then try to create same one with primary compound key with 3 >> composite >> >> column: >> >> >> >> >> >> >> ********************************************************************************************************************* >> >> >> >> CREATE TABLE altercations ( >> >> instigator text, >> >> started_at timestamp, >> >> ships_destroyed int, >> >> energy_used float, >> >> alliance_involvement boolean, >> >> PRIMARY KEY (instigator,started_at,ships_destroyed) >> >> ); >> >> >> >> >> ********************************************************************************************************************* >> >> >> >> it gives me error: "TSocket read 0 bytes" >> >> >> >> Rest, as no column family is created, so nothing onwards will work. >> >> >> >> Is this an issue? >> >> >> >> -Vivek >> >> >> >> >> >> ________________________________ >> >> From: Jonathan Ellis >> >> To: dev@cassandra.apache.org; Vivek Mishra >> >> Sent: Tuesday, October 9, 2012 9:08 AM >> >> Subject: Re: Compund/Composite column names >> >> >> >> Works for me on latest 1.1 in cql3 mode. cql2 mode gives a parse error. >> >> >> >> On Mon, Oct 8, 2012 at 9:18 PM, Vivek Mishra >> >> wrote: >> >> > Hi All, >> >> > >> >> > I am trying to use compound primary key column name and i am referring >> >> to: >> >> > http://www.datastax.com/dev/blog/whats-new-in-cql-3-0 >> >> > >> >> > >> >> > As mentioned on this example, i tried to create a column family >> >> containing compound primary key (one or more) as: >> >> > >> >> > CREATE TABLE altercations ( >> >> > instigator text, >> >> > started_at timestamp, >> >> > ships_destroyed int, >> >> > energy_used float, >> >> > alliance_involvement boolean, >> >> > PRIMARY KEY (instigator,started_at,ships_destroyed) >> >> > ); >> >> > >> >> > And i am getting: >> >> > >> >> > >> >> > ********************************************************************** >> >> > TSocket read 0 bytes >> >> > cqlsh:testcomp> >> >> > ********************************************************************** >> >> > >> >> > >> >> > Then followed by insert and select statements giving me following >> errors: >> >> > >> >> > >> >> >> ******************************************************************************************************************************************** >> >> > >> >> > cqlsh:testcomp> INSERT INTO altercations (instigator, started_at, >> >> ships_destroyed, >> >> > ... energy_used, >> >> alliance_involvement) >> >> > ... VALUES ('Jayne Cobb', >> '2012-07-23', >> >> 2, 4.6, 'false'); >> >> > TSocket read 0 bytes >> >> > >> >> > cqlsh:testcomp> select * from altercations; >> >> > Traceback (most recent call last): >> >> > File "bin/cqlsh", line 1008, in perform_statement >> >> > self.cursor.execute(statement, decoder=decoder) >> >> > File >> >> "bin/../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cursor.py", line >> >> 117, in execute >> >> > response = self.handle_cql_execution_errors(doquery, prepared_q, >> >> compress) >> >> > File >> >> "bin/../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cursor.py", line >> >> 132, in handle_cql_execution_errors >> >> > return executor(*args, **kwargs) >> >> > File >> >> >> "bin/../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cassandra/Cassandra.py", >> >> line 1583, in execute_cql_query >> >> > self.send_execute_cql_query(query, compression) >> >> > File >> >> >> "bin/../lib/cql-internal-only-1.0.10.zip/cql-1.0.10/cql/cassandra/Cassandra.py", >> >> line 1593, in send_execute_cql_query >> >> > self._oprot.trans.flush() >> >> > File >> >> >> "bin/../lib/thrift-python-internal-only-0.7.0.zip/thrift/transport/TTransport.py", >> >> line 293, in flush >> >> > self.__trans.write(buf) >> >> > File >> >> >> "bin/../lib/thrift-python-internal-only-0.7.0.zip/thrift/transport/TSocket.py", >> >> line 117, in write >> >> > plus = self.handle.send(buff) >> >> > error: [Errno 32] Broken pipe >> >> > >> >> > cqlsh:testcomp> >> >> > >> >> > >> >> >> ******************************************************************************************************************************************** >> >> > >> >> > >> >> > >> >> > Any idea? >> >> > >> >> > >> >> > -Vivek >> >> >> >> >> >> >> >> -- >> >> Jonathan Ellis >> >> Project Chair, Apache Cassandra >> >> co-founder of DataStax, the source for professional Cassandra support >> >> http://www.datastax.com >> >> >> >> -- >> Brian ONeill >> Lead Architect, Health Market Science (http://healthmarketscience.com) >> >> mobile:215.588.6024 >> blog: http://brianoneill.blogspot.com/ >> twitter: @boneill42 -- Jonathan Ellis Project Chair, Apache Cassandra co-founder, http://www.datastax.com @spyced