Details
Description
With GSI
./testrunner -i b/resources/dev-4-nodes-xdcr_n1ql_2i.ini -t 2i.indexscans_2i.SecondaryIndexingScanTests.test_multi_create_query_explain_drop_index,groups=simple,dataset=default,use_gsi_for_primary=True,use_gsi_for_secondary=True,skip_cleanup=True,nodes_init=4,services_init=n1ql:kv-kv-kv:index-index,skip_cleanup=True,doc-per-day=10
With VIEWS
./testrunner -i b/resources/dev-4-nodes-xdcr_n1ql_2i.ini -t 2i.indexscans_2i.SecondaryIndexingScanTests.test_multi_create_query_explain_drop_index,groups=simple,dataset=default,use_gsi_for_primary=True,use_gsi_for_secondary=True,skip_cleanup=True,nodes_init=4,services_init=n1ql:kv-kv-kv:index-index,skip_cleanup=True,doc-per-day=10
Scenario Description with GSI index
1. Create 4 node cluster (1: n1ql,kv 2: kv 3: index 4: index)
2. Create Default bucket with 20160 items for Employee dataset
3. Create PRIMARY INDEX using gsi, Wait till it comes online
4. Create GSI INDEX for field job_title, wait till it comes online
5. Run Query: Query SELECT * FROM bucket0 WHERE job_title == "Sales" or job_title == "Engineer". Verify that index is being used by looking at Explain and then verify result of the query
With GSI
results for query Results are incorrect.Actual num 13323. Expected num: 13440.
EXPLAIN
u'success', u'metrics':
, u'results': [{u'#operator': u'Sequence', u'~children': [{u'#operator': u'UnionScan', u'scans': [{u'index': u'employee15c9ee9cec88437facb24f5c9f7ee5c1job_title', u'namespace': u'default', u'keyspace': u'default', u'#operator': u'IndexScan', u'limit': 9.223372036854776e+18, u'spans': [{u'Range':
{u'High': [u'"Sales\\u0009"'], u'Low': [u'"Sales"'], u'Inclusion': 1}, u'Seek': None}, {u'Range':
{u'High': [u'"Engineer\\u0009"'], u'Low': [u'"Engineer"'], u'Inclusion': 1}, u'Seek': None}], u'using': u'gsi'}]}, {u'#operator': u'Parallel', u'~child': {u'#operator': u'Sequence', u'~children': [
{u'keyspace': u'default', u'#operator': u'Fetch', u'namespace': u'default'},
{u'#operator': u'Filter', u'condition': u'(((`default`.`job_title`) = "Sales") or ((`default`.`job_title`) = "Engineer"))'}, {u'#operator': u'InitialProject', u'result_terms': [
{u'star': True}]},
{u'#operator': u'FinalProject'}]}}]}], u'requestID': u'cd032184-a1cc-4814-8f6a-7d33876d0659', u'signature': u'json'}
Fails even with views. Instead of creating GSI index, create a similar view based index.
With Views
query Results are incorrect.Actual num 13324. Expected num: 13440.
, u'results': [{u'#operator': u'Sequence', u'~children': [{u'#operator': u'UnionScan', u'scans': [{u'index': u'employee305fa39225c849b3a0c747e2522f0de8job_title', u'namespace': u'default', u'keyspace': u'default', u'#operator': u'IndexScan', u'limit': 9.223372036854776e+18, u'spans': [{u'Range':
{u'High': [u'"Sales\\u0009"'], u'Low': [u'"Sales"'], u'Inclusion': 1}, u'Seek': None}, {u'Range':
{u'High': [u'"Engineer\\u0009"'], u'Low': [u'"Engineer"'], u'Inclusion': 1}, u'Seek': None}], u'using': u'view'}]}, {u'#operator': u'Parallel', u'~child': {u'#operator': u'Sequence', u'~children': [
{u'keyspace': u'default', u'#operator': u'Fetch', u'namespace': u'default'},
{u'#operator': u'Filter', u'condition': u'(((`default`.`job_title`) = "Sales") or ((`default`.`job_title`) = "Engineer"))'}, {u'#operator': u'InitialProject', u'result_terms': [
{u'star': True}]},
{u'#operator': u'FinalProject'}]}}]}], u'requestID': u'427786a3-575b-40be-9e61-8f800acdcae7', u'signature': u'json'}
FYI: Fails with different scan_consistency params.