data created before index is not returned in where query --------------------------------------------------------
Key: CASSANDRA-3367 URL: https://issues.apache.org/jira/browse/CASSANDRA-3367 Project: Cassandra Issue Type: Bug Components: Core Affects Versions: 1.0.0 Reporter: Cathy Daw *CQL version of bug* {code} // CREATE KS AND CF CREATE KEYSPACE ks1 with strategy_class = 'org.apache.cassandra.locator.SimpleStrategy' and strategy_options:replication_factor=1; use ks1; DROP COLUMNFAMILY users; CREATE COLUMNFAMILY users ( KEY varchar PRIMARY KEY, password varchar, gender varchar, session_token varchar, state varchar, birth_year bigint); // INSERT DATA INSERT INTO users (KEY, password, gender, state, birth_year) VALUES ('user1', 'ch@ngem3a', 'f', 'TX', '1968'); INSERT INTO users (KEY, password, gender, state, birth_year) VALUES ('user2', 'ch@ngem3b', 'm', 'CA', '1971'); // CREATE INDEX CREATE INDEX gender_key ON users (gender); CREATE INDEX state_key ON users (state); CREATE INDEX birth_year_key ON users (birth_year); // INSERT DATA INSERT INTO users (KEY, password, gender, state, birth_year) VALUES ('user3', 'ch@ngem3c', 'f', 'FL', '1978'); INSERT INTO users (KEY, password, gender, state, birth_year) VALUES ('user4', 'ch@ngem3d', 'm', 'TX', '1974'); // VERIFY DATA cqlsh> select * from users; KEY | birth_year | gender | password | state | user1 | 1968 | f | ch@ngem3a | TX | user4 | 1974 | m | ch@ngem3d | TX | user3 | 1978 | f | ch@ngem3c | FL | user2 | 1971 | m | ch@ngem3b | CA | //BUG : missing row from user1, created before index was added cqlsh> select * from users where state='TX'; KEY | birth_year | gender | password | state | user4 | 1974 | m | ch@ngem3d | TX | //BUG : missing row from user2, created before index was added cqlsh> select * from users where state='CA'; {code} *CLI version of bug* {code} // CREATE KS AND CF CREATE keyspace ks1 with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy' and strategy_options = [{replication_factor:1}]; use ks1; drop column family users; create column family users with comparator = UTF8Type and key_validation_class = UTF8Type and default_validation_class = UTF8Type and column_metadata = [{column_name: password, validation_class:UTF8Type} {column_name: gender, validation_class: UTF8Type}, {column_name: session_token, validation_class: UTF8Type}, {column_name: state, validation_class: UTF8Type}, {column_name: birth_year, validation_class: LongType}]; // INSERT DATA set users['user1']['password']='ch@ngem3a'; set users['user1']['gender']='f'; set users['user1']['state']='TX'; set users['user1']['birth_year']='1968'; set users['user2']['password']='ch@ngem3b'; set users['user2']['gender']='m'; set users['user2']['state']='CA'; set users['user2']['birth_year']='1971'; // ADD INDEX update column family users with comparator = UTF8Type and key_validation_class = UTF8Type and default_validation_class = UTF8Type and column_metadata = [{column_name: password, validation_class:UTF8Type} {column_name: gender, validation_class: UTF8Type, index_type: KEYS}, {column_name: session_token, validation_class: UTF8Type}, {column_name: state, validation_class: UTF8Type, index_type: KEYS}, {column_name: birth_year, validation_class: LongType, index_type: KEYS}]; // INSERT DATA set users['user3']['password']='ch@ngem3b'; set users['user3']['gender']='f'; set users['user3']['state']='FL'; set users['user3']['birth_year']='1978'; set users['user4']['password']='ch@ngem3c'; set users['user4']['gender']='m'; set users['user4']['state']='TX'; set users['user4']['birth_year']='1974'; // VERIFY DATA [default@cqldb] list users; Using default limit of 100 ------------------- RowKey: user1 => (column=birth_year, value=1968, timestamp=1318714655921000) => (column=gender, value=f, timestamp=1318714655917000) => (column=password, value=ch@ngem3a, timestamp=1318714655908000) => (column=state, value=TX, timestamp=1318714655919000) ------------------- RowKey: user4 => (column=birth_year, value=1974, timestamp=1318714671608000) => (column=gender, value=m, timestamp=1318714670666000) => (column=password, value=ch@ngem3c, timestamp=1318714670665000) => (column=state, value=TX, timestamp=1318714670668000) ------------------- RowKey: user3 => (column=birth_year, value=1978, timestamp=1318714670662000) => (column=gender, value=f, timestamp=1318714670657000) => (column=password, value=ch@ngem3b, timestamp=1318714670654000) => (column=state, value=FL, timestamp=1318714670660000) ------------------- RowKey: user2 => (column=birth_year, value=1971, timestamp=1318714657353000) => (column=gender, value=m, timestamp=1318714655924000) => (column=password, value=ch@ngem3b, timestamp=1318714655923000) => (column=state, value=CA, timestamp=1318714655926000) 4 Rows Returned. //BUG : missing row from user1, created before index was added [default@cqldb] get users where state='TX'; ------------------- RowKey: user4 => (column=birth_year, value=1974, timestamp=1318714671608000) => (column=gender, value=m, timestamp=1318714670666000) => (column=password, value=ch@ngem3c, timestamp=1318714670665000) => (column=state, value=TX, timestamp=1318714670668000) //BUG : missing row from user2, created before index was added [default@cqldb] get users where state='CA'; 0 Row Returned. {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira