@@ -202,11 +202,24 @@ func TestQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) {
202
202
jsonValue9 := "{\" asset_name\" : \" marble9\" ,\" color\" : \" green\" ,\" size\" : 9,\" owner\" : \" fred\" }"
203
203
batch .Put ("ns1" , "key9" , []byte (jsonValue9 ), version .NewHeight (1 , 9 ))
204
204
jsonValue10 := "{\" asset_name\" : \" marble10\" ,\" color\" : \" green\" ,\" size\" : 10,\" owner\" : \" mary\" }"
205
- batch .Put ("ns1" , "key10" , []byte (jsonValue10 ), version .NewHeight (1 , 12 ))
206
- savePoint := version .NewHeight (2 , 12 )
205
+ batch .Put ("ns1" , "key10" , []byte (jsonValue10 ), version .NewHeight (1 , 10 ))
206
+
207
+ //add keys for a separate namespace
208
+ batch .Put ("ns2" , "key1" , []byte (jsonValue1 ), version .NewHeight (1 , 11 ))
209
+ batch .Put ("ns2" , "key2" , []byte (jsonValue2 ), version .NewHeight (1 , 12 ))
210
+ batch .Put ("ns2" , "key3" , []byte (jsonValue3 ), version .NewHeight (1 , 13 ))
211
+ batch .Put ("ns2" , "key4" , []byte (jsonValue4 ), version .NewHeight (1 , 14 ))
212
+ batch .Put ("ns2" , "key5" , []byte (jsonValue5 ), version .NewHeight (1 , 15 ))
213
+ batch .Put ("ns2" , "key6" , []byte (jsonValue6 ), version .NewHeight (1 , 16 ))
214
+ batch .Put ("ns2" , "key7" , []byte (jsonValue7 ), version .NewHeight (1 , 17 ))
215
+ batch .Put ("ns2" , "key8" , []byte (jsonValue8 ), version .NewHeight (1 , 18 ))
216
+ batch .Put ("ns2" , "key9" , []byte (jsonValue9 ), version .NewHeight (1 , 19 ))
217
+ batch .Put ("ns2" , "key10" , []byte (jsonValue10 ), version .NewHeight (1 , 20 ))
218
+
219
+ savePoint := version .NewHeight (2 , 21 )
207
220
db .ApplyUpdates (batch , savePoint )
208
221
209
- // query for owner=jerry
222
+ // query for owner=jerry, use namespace "ns1"
210
223
itr , err := db .ExecuteQuery ("ns1" , "{\" selector\" :{\" owner\" :\" jerry\" }}" )
211
224
testutil .AssertNoError (t , err , "" )
212
225
@@ -224,6 +237,33 @@ func TestQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) {
224
237
testutil .AssertNoError (t , err , "" )
225
238
testutil .AssertNil (t , queryResult2 )
226
239
240
+ // query for owner=jerry, use namespace "ns2"
241
+ itr , err = db .ExecuteQuery ("ns2" , "{\" selector\" :{\" owner\" :\" jerry\" }}" )
242
+ testutil .AssertNoError (t , err , "" )
243
+
244
+ // verify one jerry result
245
+ queryResult1 , err = itr .Next ()
246
+ testutil .AssertNoError (t , err , "" )
247
+ testutil .AssertNotNil (t , queryResult1 )
248
+ versionedQueryRecord = queryResult1 .(* statedb.VersionedQueryRecord )
249
+ stringRecord = string (versionedQueryRecord .Record )
250
+ bFoundRecord = strings .Contains (stringRecord , "jerry" )
251
+ testutil .AssertEquals (t , bFoundRecord , true )
252
+
253
+ // verify no more results
254
+ queryResult2 , err = itr .Next ()
255
+ testutil .AssertNoError (t , err , "" )
256
+ testutil .AssertNil (t , queryResult2 )
257
+
258
+ // query for owner=jerry, use namespace "ns3"
259
+ itr , err = db .ExecuteQuery ("ns3" , "{\" selector\" :{\" owner\" :\" jerry\" }}" )
260
+ testutil .AssertNoError (t , err , "" )
261
+
262
+ // verify results - should be no records
263
+ queryResult1 , err = itr .Next ()
264
+ testutil .AssertNoError (t , err , "" )
265
+ testutil .AssertNil (t , queryResult1 )
266
+
227
267
// query using bad query string
228
268
itr , err = db .ExecuteQuery ("ns1" , "this is an invalid query string" )
229
269
testutil .AssertError (t , err , "Should have received an error for invalid query string" )
@@ -237,7 +277,7 @@ func TestQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) {
237
277
testutil .AssertNoError (t , err , "" )
238
278
testutil .AssertNil (t , queryResult3 )
239
279
240
- // query with fields
280
+ // query with fields, namespace "ns1"
241
281
itr , err = db .ExecuteQuery ("ns1" , "{\" selector\" :{\" owner\" :\" jerry\" },\" fields\" : [\" owner\" , \" asset_name\" , \" color\" , \" size\" ]}" )
242
282
testutil .AssertNoError (t , err , "" )
243
283
@@ -255,7 +295,34 @@ func TestQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) {
255
295
testutil .AssertNoError (t , err , "" )
256
296
testutil .AssertNil (t , queryResult2 )
257
297
258
- // query with complex selector
298
+ // query with fields, namespace "ns2"
299
+ itr , err = db .ExecuteQuery ("ns2" , "{\" selector\" :{\" owner\" :\" jerry\" },\" fields\" : [\" owner\" , \" asset_name\" , \" color\" , \" size\" ]}" )
300
+ testutil .AssertNoError (t , err , "" )
301
+
302
+ // verify one jerry result
303
+ queryResult1 , err = itr .Next ()
304
+ testutil .AssertNoError (t , err , "" )
305
+ testutil .AssertNotNil (t , queryResult1 )
306
+ versionedQueryRecord = queryResult1 .(* statedb.VersionedQueryRecord )
307
+ stringRecord = string (versionedQueryRecord .Record )
308
+ bFoundRecord = strings .Contains (stringRecord , "jerry" )
309
+ testutil .AssertEquals (t , bFoundRecord , true )
310
+
311
+ // verify no more results
312
+ queryResult2 , err = itr .Next ()
313
+ testutil .AssertNoError (t , err , "" )
314
+ testutil .AssertNil (t , queryResult2 )
315
+
316
+ // query with fields, namespace "ns3"
317
+ itr , err = db .ExecuteQuery ("ns3" , "{\" selector\" :{\" owner\" :\" jerry\" },\" fields\" : [\" owner\" , \" asset_name\" , \" color\" , \" size\" ]}" )
318
+ testutil .AssertNoError (t , err , "" )
319
+
320
+ // verify no results
321
+ queryResult1 , err = itr .Next ()
322
+ testutil .AssertNoError (t , err , "" )
323
+ testutil .AssertNil (t , queryResult1 )
324
+
325
+ // query with complex selector, namespace "ns1"
259
326
itr , err = db .ExecuteQuery ("ns1" , "{\" selector\" :{\" $and\" :[{\" size\" :{\" $gt\" : 5}},{\" size\" :{\" $lt\" :8}},{\" $not\" :{\" size\" :6}}]}}" )
260
327
testutil .AssertNoError (t , err , "" )
261
328
@@ -273,7 +340,34 @@ func TestQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) {
273
340
testutil .AssertNoError (t , err , "" )
274
341
testutil .AssertNil (t , queryResult2 )
275
342
276
- // query with embedded implicit "AND" and explicit "OR"
343
+ // query with complex selector, namespace "ns2"
344
+ itr , err = db .ExecuteQuery ("ns2" , "{\" selector\" :{\" $and\" :[{\" size\" :{\" $gt\" : 5}},{\" size\" :{\" $lt\" :8}},{\" $not\" :{\" size\" :6}}]}}" )
345
+ testutil .AssertNoError (t , err , "" )
346
+
347
+ // verify one fred result
348
+ queryResult1 , err = itr .Next ()
349
+ testutil .AssertNoError (t , err , "" )
350
+ testutil .AssertNotNil (t , queryResult1 )
351
+ versionedQueryRecord = queryResult1 .(* statedb.VersionedQueryRecord )
352
+ stringRecord = string (versionedQueryRecord .Record )
353
+ bFoundRecord = strings .Contains (stringRecord , "fred" )
354
+ testutil .AssertEquals (t , bFoundRecord , true )
355
+
356
+ // verify no more results
357
+ queryResult2 , err = itr .Next ()
358
+ testutil .AssertNoError (t , err , "" )
359
+ testutil .AssertNil (t , queryResult2 )
360
+
361
+ // query with complex selector, namespace "ns3"
362
+ itr , err = db .ExecuteQuery ("ns3" , "{\" selector\" :{\" $and\" :[{\" size\" :{\" $gt\" : 5}},{\" size\" :{\" $lt\" :8}},{\" $not\" :{\" size\" :6}}]}}" )
363
+ testutil .AssertNoError (t , err , "" )
364
+
365
+ // verify no more results
366
+ queryResult1 , err = itr .Next ()
367
+ testutil .AssertNoError (t , err , "" )
368
+ testutil .AssertNil (t , queryResult1 )
369
+
370
+ // query with embedded implicit "AND" and explicit "OR", namespace "ns1"
277
371
itr , err = db .ExecuteQuery ("ns1" , "{\" selector\" :{\" color\" :\" green\" ,\" $or\" :[{\" owner\" :\" fred\" },{\" owner\" :\" mary\" }]}}" )
278
372
testutil .AssertNoError (t , err , "" )
279
373
@@ -300,4 +394,40 @@ func TestQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) {
300
394
testutil .AssertNoError (t , err , "" )
301
395
testutil .AssertNil (t , queryResult3 )
302
396
397
+ // query with embedded implicit "AND" and explicit "OR", namespace "ns2"
398
+ itr , err = db .ExecuteQuery ("ns2" , "{\" selector\" :{\" color\" :\" green\" ,\" $or\" :[{\" owner\" :\" fred\" },{\" owner\" :\" mary\" }]}}" )
399
+ testutil .AssertNoError (t , err , "" )
400
+
401
+ // verify one green result
402
+ queryResult1 , err = itr .Next ()
403
+ testutil .AssertNoError (t , err , "" )
404
+ testutil .AssertNotNil (t , queryResult1 )
405
+ versionedQueryRecord = queryResult1 .(* statedb.VersionedQueryRecord )
406
+ stringRecord = string (versionedQueryRecord .Record )
407
+ bFoundRecord = strings .Contains (stringRecord , "green" )
408
+ testutil .AssertEquals (t , bFoundRecord , true )
409
+
410
+ // verify another green result
411
+ queryResult2 , err = itr .Next ()
412
+ testutil .AssertNoError (t , err , "" )
413
+ testutil .AssertNotNil (t , queryResult2 )
414
+ versionedQueryRecord = queryResult2 .(* statedb.VersionedQueryRecord )
415
+ stringRecord = string (versionedQueryRecord .Record )
416
+ bFoundRecord = strings .Contains (stringRecord , "green" )
417
+ testutil .AssertEquals (t , bFoundRecord , true )
418
+
419
+ // verify no more results
420
+ queryResult3 , err = itr .Next ()
421
+ testutil .AssertNoError (t , err , "" )
422
+ testutil .AssertNil (t , queryResult3 )
423
+
424
+ // query with embedded implicit "AND" and explicit "OR", namespace "ns3"
425
+ itr , err = db .ExecuteQuery ("ns3" , "{\" selector\" :{\" color\" :\" green\" ,\" $or\" :[{\" owner\" :\" fred\" },{\" owner\" :\" mary\" }]}}" )
426
+ testutil .AssertNoError (t , err , "" )
427
+
428
+ // verify no results
429
+ queryResult1 , err = itr .Next ()
430
+ testutil .AssertNoError (t , err , "" )
431
+ testutil .AssertNil (t , queryResult1 )
432
+
303
433
}
0 commit comments