@@ -212,3 +212,61 @@ fn parameters() {
212
212
assert_eq ! ( query. execute( ) . unwrap( ) . count( ) , 1 ) ;
213
213
} ) ;
214
214
}
215
+
216
+ #[ test]
217
+ fn guillaume ( ) {
218
+ utils:: with_db ( |db| {
219
+ assert ! ( db
220
+ . create_index(
221
+ "good_index" ,
222
+ & ValueIndexConfiguration :: new(
223
+ QueryLanguage :: JSON ,
224
+ r#"[[".type"],[".session_id"]]"#
225
+ ) ,
226
+ )
227
+ . unwrap( ) ) ;
228
+
229
+ assert ! ( db
230
+ . create_index(
231
+ "bad_index" ,
232
+ & ValueIndexConfiguration :: new( QueryLanguage :: JSON , r#"[[".type"]]"# ) ,
233
+ )
234
+ . unwrap( ) ) ;
235
+
236
+ let mut doc = Document :: new_with_id ( "id1" ) ;
237
+ let mut props = doc. mutable_properties ( ) ;
238
+ props. at ( "type" ) . put_string ( "HardcodedType" ) ;
239
+ props. at ( "session_id" ) . put_string ( "session1" ) ;
240
+ db. save_document_with_concurency_control ( & mut doc, ConcurrencyControl :: FailOnConflict )
241
+ . expect ( "save" ) ;
242
+
243
+ let query = Query :: new (
244
+ db,
245
+ QueryLanguage :: N1QL ,
246
+ "SELECT _.* FROM _ \
247
+ WHERE _.type = 'HardcodedType' \
248
+ AND ARRAY_CONTAINS($sessionIds, _.session_id)",
249
+ )
250
+ . expect ( "create query" ) ;
251
+
252
+ let mut params = MutableDict :: new ( ) ;
253
+ let mut session_ids = MutableArray :: new ( ) ;
254
+ session_ids. append ( ) . put_string ( "session1" ) ;
255
+ session_ids. append ( ) . put_string ( "session2" ) ;
256
+ params. at ( "sessionIds" ) . put_value ( & session_ids) ;
257
+ query. set_parameters ( & params) ;
258
+
259
+ let params = query. parameters ( ) ;
260
+ assert_eq ! (
261
+ params. get( "sessionIds" ) . as_array( ) . get( 0 ) . as_string( ) ,
262
+ Some ( "session1" )
263
+ ) ;
264
+ assert_eq ! (
265
+ params. get( "sessionIds" ) . as_array( ) . get( 1 ) . as_string( ) ,
266
+ Some ( "session2" )
267
+ ) ;
268
+
269
+ println ! ( "Explain: {:?}" , query. explain( ) ) ;
270
+ assert_eq ! ( query. execute( ) . unwrap( ) . count( ) , 1 ) ;
271
+ } ) ;
272
+ }
0 commit comments