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 EF3B67ABE for ; Fri, 22 Jul 2011 23:10:22 +0000 (UTC) Received: (qmail 32116 invoked by uid 500); 22 Jul 2011 23:10:22 -0000 Delivered-To: apmail-cassandra-dev-archive@cassandra.apache.org Received: (qmail 32071 invoked by uid 500); 22 Jul 2011 23:10:21 -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 32062 invoked by uid 99); 22 Jul 2011 23:10:21 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jul 2011 23:10:21 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [67.192.241.131] (HELO smtp131.dfw.emailsrvr.com) (67.192.241.131) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jul 2011 23:10:14 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp23.relay.dfw1a.emailsrvr.com (SMTP Server) with ESMTP id 22F6D2F8301 for ; Fri, 22 Jul 2011 19:09:53 -0400 (EDT) X-Virus-Scanned: OK Received: by smtp23.relay.dfw1a.emailsrvr.com (Authenticated sender: eevans-AT-racklabs.com) with ESMTPSA id 01C6D2F82C5 for ; Fri, 22 Jul 2011 19:09:52 -0400 (EDT) Subject: Backward incompatible CQL changes 0.8.0 -> 0.8.1 From: Eric Evans To: dev@cassandra.apache.org Content-Type: text/plain; charset="UTF-8" Date: Fri, 22 Jul 2011 18:10:06 -0500 Message-ID: <1311376206.5719.147.camel@erebus.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org I just ran into an issue where CQL queries that were written at the time of 0.8.0 no longer work against 0.8.1. This was caused by r1130200 (CASSANDRA-1709) which introduced ALTER support. The queries in question made use of unquoted terms for one of the newly added keywords ("type" in this case though any one of "alter", "table" or "add" would have caused the same problem). This case never occurred to me, but it is fairly serious since it breaks the expectation that code will remain backward compatible. The options I see are: 1. Bump the major of the language version when new keywords are added. 2. Set the expectation that unquoted terms could collide with future keywords. 3. Disallow the unquoted term variant (would require bumping the major once). #1 sucks because building out new features that would otherwise be backward compatible will result in a major bump. Looking at the roadmap and trying to reserve everything now that we'll need for the foreseeable future might make this less of an issue though. I have a feeling that #2 is easier said than done. So long as we're allowing the unquoted form, people will use it and be surprised when bit. Aside from that it seems OK. #3 is probably the most technically correct solution, but would make hand-crafted queries entered into interactive interpreters less friendly. Thoughts? -- Eric Evans eevans@rackspace.com