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 673371856B for ; Mon, 8 Feb 2016 12:35:40 +0000 (UTC) Received: (qmail 72591 invoked by uid 500); 8 Feb 2016 12:35:40 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 72520 invoked by uid 500); 8 Feb 2016 12:35:40 -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 72432 invoked by uid 99); 8 Feb 2016 12:35:40 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Feb 2016 12:35:40 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id E4B4E2C1F58 for ; Mon, 8 Feb 2016 12:35:39 +0000 (UTC) Date: Mon, 8 Feb 2016 12:35:39 +0000 (UTC) From: "Aleksey Yeschenko (JIRA)" To: commits@cassandra.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (CASSANDRA-11118) Consider removing support for custom types MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CASSANDRA-11118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15136889#comment-15136889 ] Aleksey Yeschenko commented on CASSANDRA-11118: ----------------------------------------------- Don't have much to add to Sylvain's arguments, just throwing in my -1 to the idea of removing support for them. There is one thing that we care about when it comes to custom types - and that is the ability to mandate them being byte order compatible in the future. But we already decided to do so (see CASSANDRA-9901 and CASSANDRA-6936 discussions). Closing the issue as Not A Problem. > Consider removing support for custom types > ------------------------------------------ > > Key: CASSANDRA-11118 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11118 > Project: Cassandra > Issue Type: Wish > Reporter: Robert Stupp > Priority: Minor > > Custom types (and maybe all types that extend AbstractType but have no CQL3 counterpart) become difficult to be properly supported. > There are a couple of reasons: > * Custom types and even composite types need to be expressed using 'blob syntax' as in CASSANDRA-11064 to provide full end-to-end support (C* nodes and all drivers). > * Custom-type implementations become more difficult to maintain (by their developers) as we add more functionality (e.g. JSON or CQL literal generation) and contracts (like the different comparison modes and implementations) to AbstractType > * Operational support for custom types (installing and upgrading C* releases) is more difficult (provide the correct custom-type implementations for the specific C* release; not a new reason, of course) > * We still maintain two type hierarchies for the "same thing" (column types): one starting at CQL3Type and one at AbstractType (plus serializers), which are closely related and coupled. > * There is "no need" to maintain AbstractType as a client protocol requirement starting with 4.x as Thrift will be removed. In reality, the support of drivers for composite types or even custom types is fairly rudimentary, if existent. > * I'm also a bit concerned that there might be hidden issues related to this _old and rarely used and even least thought-of stuff_. I mean, we (at least I) don't always think about these old types. Like CASSANDRA-11064 that has the potential to bring down a cluster. > I would not propose to remove custom types in 4.x but officially deprecate the functionality in the near future and communicate an "official" date (version number) when it will be removed. > In the mean time there might be a configuration option like {{enable_custom_types}} or {{allow_non_cql3_types}} which defaults to {{false}} and either issues warnings (in the log and via native protocol) when those types are used in DDL statements or completely prevents that (returning an error, prevent startup, whatever). We can also convert all non-CQL3 types to BLOB in the schema tables as the "implementation to remove custom types". > TBH, I have absolutely no idea how many people really use composite types or even custom types. But I assume that "only a handful" of applications really use non-CQL3 types with C* 4.x (so without Thrift). -- This message was sent by Atlassian JIRA (v6.3.4#6332)