You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Tyler Hobbs (JIRA)" <ji...@apache.org> on 2015/02/11 18:51:12 UTC
[jira] [Commented] (CASSANDRA-8779) Able to unintentionally nest
tuples during insert
[ https://issues.apache.org/jira/browse/CASSANDRA-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14316625#comment-14316625 ]
Tyler Hobbs commented on CASSANDRA-8779:
----------------------------------------
I'm not having any luck reproducing (with the python driver) against 2.1.2 or cassandra-2.1 head. This should be equivalent to what the Ruby/Java drivers are producing, correct?
{noformat}
session.execute("INSERT INTO ks1.test (a, b) VALUES (0, (('foo', 123, true)))")
{noformat}
I get the correct error when executing that:
{noformat}
cassandra.InvalidRequest: code=2200 [Invalid query] message="Invalid tuple literal for b: component 0 is not of type ascii"
{noformat}
> Able to unintentionally nest tuples during insert
> -------------------------------------------------
>
> Key: CASSANDRA-8779
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8779
> Project: Cassandra
> Issue Type: Bug
> Environment: Linux Mint 64-bit | ruby-driver 2.1 | java-driver 2.1 | C* 2.1.2
> Reporter: Kishan Karunaratne
> Assignee: Tyler Hobbs
>
> If I insert a tuple using an extra pair of ()'s, C* will let me do the insert, but (incorrectly) creates a nested tuple as the first tuple value. Upon doing a select statement, the result is jumbled and has weird binary in it (which I wasn't able to copy into here).
> Example using ruby-driver:
> {noformat}
> session.execute("CREATE TABLE mytable (a int PRIMARY KEY, b frozen<tuple<ascii, bigint, boolean>>)")
> complete = Cassandra::Tuple.new('foo', 123, true)
> session.execute("INSERT INTO mytable (a, b) VALUES (0, (?))", arguments: [complete]) # extra ()'s here
> result = session.execute("SELECT b FROM mytable WHERE a=0").first
> p result['b']
> {noformat}
> Output:
> {noformat}
> #<Cassandra::Tuple:0x97b328 (fo{, , )>
> {noformat}
> Bug also confirmed using java-driver.
> Example using java-driver:
> {noformat}
> session.execute("CREATE TABLE mytable (a int PRIMARY KEY, b frozen<tuple<ascii, int, boolean>>)");
> TupleType t = TupleType.of(DataType.ascii(), DataType.cint(), DataType.cboolean());
> TupleValue complete = t.newValue("foo", 123, true);
> session.execute("INSERT INTO mytable (a, b) VALUES (0, (?))", complete); // extra ()'s here
> TupleValue r = session.execute("SELECT b FROM mytable WHERE a=0").one().getTupleValue("b");
> System.out.println(r);
> {noformat}
> Output:
> {noformat}
> ('foo{', null, null)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)