[ 
https://issues.apache.org/jira/browse/CASSANDRA-10491?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Penick updated CASSANDRA-10491:
---------------------------------------
    Description: 
A single component partition key starts off with a -1 position.

{code}
cqlsh> CREATE TABLE test.table1 (key1 text, value1 text, value2 text, PRIMARY 
KEY(key1));
cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table1' ;

 keyspace_name | table_name | column_name | kind          | position
---------------+------------+-------------+---------------+----------
          test |     table1 |        key1 | partition_key |       -1
          test |     table1 |      value1 |       regular |       -1
          test |     table1 |      value2 |       regular |       -1
{code}

A single component clustering key starts off with a 0 position.

{code}
cqlsh> CREATE TABLE test.table2 (key1 text, value1 text, value2 text, PRIMARY 
KEY(key1, value1));
cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table2' ;

 keyspace_name | table_name | column_name | kind          | position
---------------+------------+-------------+---------------+----------
          test |     table2 |        key1 | partition_key |       -1
          test |     table2 |      value1 |    clustering |        0
          test |     table2 |      value2 |       regular |       -1
{code}

When another component is added to the partition key it starts at 0.

{code}
cqlsh> CREATE TABLE test.table3 (key1 text, value1 text, value2 text, PRIMARY 
KEY((key1, value1)));
cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table3' ;

 keyspace_name | table_name | column_name | kind          | position
---------------+------------+-------------+---------------+----------
          test |     table3 |        key1 | partition_key |        0
          test |     table3 |      value1 | partition_key |        1
          test |     table3 |      value2 |       regular |       -1
{code}

which is the same as a multiple component clustering key.

{code}
cqlsh> CREATE TABLE test.table4 (key1 text, value1 text, value2 text, PRIMARY 
KEY(key1, value1, value2));
cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table4' ;

 keyspace_name | table_name | column_name | kind          | position
---------------+------------+-------------+---------------+----------
          test |     table4 |        key1 | partition_key |       -1
          test |     table4 |      value1 |    clustering |        0
          test |     table4 |      value2 |    clustering |        1
{code}

Shouldn't a single component partition key start off with a position of 0?

  was:
A single component primary key starts off with a -1 position.

{code}
cqlsh> CREATE TABLE test.table1 (key1 text, value1 text, value2 text, PRIMARY 
KEY(key1));
cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table1' ;

 keyspace_name | table_name | column_name | kind          | position
---------------+------------+-------------+---------------+----------
          test |     table1 |        key1 | partition_key |       -1
          test |     table1 |      value1 |       regular |       -1
          test |     table1 |      value2 |       regular |       -1
{code}

A single component clustering key starts off with a 0 position.

{code}
cqlsh> CREATE TABLE test.table2 (key1 text, value1 text, value2 text, PRIMARY 
KEY(key1, value1));
cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table2' ;

 keyspace_name | table_name | column_name | kind          | position
---------------+------------+-------------+---------------+----------
          test |     table2 |        key1 | partition_key |       -1
          test |     table2 |      value1 |    clustering |        0
          test |     table2 |      value2 |       regular |       -1
{code}

When another component is added to the primary key it starts at 0.

{code}
cqlsh> CREATE TABLE test.table3 (key1 text, value1 text, value2 text, PRIMARY 
KEY((key1, value1)));
cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table3' ;

 keyspace_name | table_name | column_name | kind          | position
---------------+------------+-------------+---------------+----------
          test |     table3 |        key1 | partition_key |        0
          test |     table3 |      value1 | partition_key |        1
          test |     table3 |      value2 |       regular |       -1
{code}

which is the same as a multiple component clustering key.

{code}
cqlsh> CREATE TABLE test.table4 (key1 text, value1 text, value2 text, PRIMARY 
KEY(key1, value1, value2));
cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table4' ;

 keyspace_name | table_name | column_name | kind          | position
---------------+------------+-------------+---------------+----------
          test |     table4 |        key1 | partition_key |       -1
          test |     table4 |      value1 |    clustering |        0
          test |     table4 |      value2 |    clustering |        1
{code}

Shouldn't a single component primary key start off with a position of 0?


> Inconsistent "position" numbering for keys in "system_schema.columns"
> ---------------------------------------------------------------------
>
>                 Key: CASSANDRA-10491
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10491
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Michael Penick
>            Assignee: Aleksey Yeschenko
>            Priority: Minor
>              Labels: client-impacting
>
> A single component partition key starts off with a -1 position.
> {code}
> cqlsh> CREATE TABLE test.table1 (key1 text, value1 text, value2 text, PRIMARY 
> KEY(key1));
> cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
> system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table1' 
> ;
>  keyspace_name | table_name | column_name | kind          | position
> ---------------+------------+-------------+---------------+----------
>           test |     table1 |        key1 | partition_key |       -1
>           test |     table1 |      value1 |       regular |       -1
>           test |     table1 |      value2 |       regular |       -1
> {code}
> A single component clustering key starts off with a 0 position.
> {code}
> cqlsh> CREATE TABLE test.table2 (key1 text, value1 text, value2 text, PRIMARY 
> KEY(key1, value1));
> cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
> system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table2' 
> ;
>  keyspace_name | table_name | column_name | kind          | position
> ---------------+------------+-------------+---------------+----------
>           test |     table2 |        key1 | partition_key |       -1
>           test |     table2 |      value1 |    clustering |        0
>           test |     table2 |      value2 |       regular |       -1
> {code}
> When another component is added to the partition key it starts at 0.
> {code}
> cqlsh> CREATE TABLE test.table3 (key1 text, value1 text, value2 text, PRIMARY 
> KEY((key1, value1)));
> cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
> system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table3' 
> ;
>  keyspace_name | table_name | column_name | kind          | position
> ---------------+------------+-------------+---------------+----------
>           test |     table3 |        key1 | partition_key |        0
>           test |     table3 |      value1 | partition_key |        1
>           test |     table3 |      value2 |       regular |       -1
> {code}
> which is the same as a multiple component clustering key.
> {code}
> cqlsh> CREATE TABLE test.table4 (key1 text, value1 text, value2 text, PRIMARY 
> KEY(key1, value1, value2));
> cqlsh> SELECT keyspace_name, table_name, column_name, kind, position FROM 
> system_schema.columns WHERE keyspace_name = 'test' and  table_name = 'table4' 
> ;
>  keyspace_name | table_name | column_name | kind          | position
> ---------------+------------+-------------+---------------+----------
>           test |     table4 |        key1 | partition_key |       -1
>           test |     table4 |      value1 |    clustering |        0
>           test |     table4 |      value2 |    clustering |        1
> {code}
> Shouldn't a single component partition key start off with a position of 0?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to