@@ -265,29 +265,33 @@ PHP_METHOD(Collection, lookupIn)
265
265
}
266
266
ZEND_HASH_FOREACH_VAL (spec , val )
267
267
{
268
+ lcb_STATUS rc = LCB_SUCCESS ;
268
269
flags = 0 ;
269
270
if (Z_OBJCE_P (val ) == pcbc_lookup_get_spec_ce ) {
270
271
if (Z_TYPE_P (pcbc_read_property (pcbc_lookup_get_spec_ce , val , ("is_xattr" ), 0 , & tmp )) == IS_TRUE ) {
271
272
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
272
273
}
273
274
prop = pcbc_read_property (pcbc_lookup_get_spec_ce , val , ("path" ), 0 , & tmp );
274
- lcb_subdocspecs_get (operations , idx , flags , Z_STRVAL_P (prop ), Z_STRLEN_P (prop ));
275
+ rc = lcb_subdocspecs_get (operations , idx , flags , Z_STRVAL_P (prop ), Z_STRLEN_P (prop ));
275
276
} else if (Z_OBJCE_P (val ) == pcbc_lookup_count_spec_ce ) {
276
277
if (Z_TYPE_P (pcbc_read_property (pcbc_lookup_count_spec_ce , val , ("is_xattr" ), 0 , & tmp )) == IS_TRUE ) {
277
278
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
278
279
}
279
280
prop = pcbc_read_property (pcbc_lookup_count_spec_ce , val , ("path" ), 0 , & tmp );
280
- lcb_subdocspecs_get_count (operations , idx , flags , Z_STRVAL_P (prop ), Z_STRLEN_P (prop ));
281
+ rc = lcb_subdocspecs_get_count (operations , idx , flags , Z_STRVAL_P (prop ), Z_STRLEN_P (prop ));
281
282
} else if (Z_OBJCE_P (val ) == pcbc_lookup_exists_spec_ce ) {
282
283
if (Z_TYPE_P (pcbc_read_property (pcbc_lookup_exists_spec_ce , val , ("is_xattr" ), 0 , & tmp )) == IS_TRUE ) {
283
284
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
284
285
}
285
286
prop = pcbc_read_property (pcbc_lookup_exists_spec_ce , val , ("path" ), 0 , & tmp );
286
- lcb_subdocspecs_exists (operations , idx , flags , Z_STRVAL_P (prop ), Z_STRLEN_P (prop ));
287
+ rc = lcb_subdocspecs_exists (operations , idx , flags , Z_STRVAL_P (prop ), Z_STRLEN_P (prop ));
287
288
} else {
288
- /* TODO: raise argument exception */
289
+ rc = LCB_ERR_INVALID_ARGUMENT ;
290
+ }
291
+ if (rc != LCB_SUCCESS ) {
289
292
lcb_subdocspecs_destroy (operations );
290
- return ;
293
+ throw_lcb_exception_ex (rc , PCBC_OPCODE_UNSPEC , NULL );
294
+ RETURN_NULL ();
291
295
}
292
296
idx ++ ;
293
297
}
@@ -461,6 +465,7 @@ PHP_METHOD(Collection, mutateIn)
461
465
uint32_t flags ;
462
466
ZEND_HASH_FOREACH_VAL (spec , entry )
463
467
{
468
+ lcb_STATUS rc = LCB_SUCCESS ;
464
469
flags = 0 ;
465
470
if (Z_OBJCE_P (entry ) == pcbc_mutate_insert_spec_ce ) {
466
471
if (Z_TYPE_P (pcbc_read_property (Z_OBJCE_P (entry ), entry , ("is_xattr" ), 0 , & rv1 )) == IS_TRUE ) {
@@ -474,8 +479,8 @@ PHP_METHOD(Collection, mutateIn)
474
479
}
475
480
path = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("path" ), 0 , & rv1 );
476
481
value = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("value" ), 0 , & rv2 );
477
- lcb_subdocspecs_dict_add (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ), Z_STRVAL_P (value ),
478
- Z_STRLEN_P (value ));
482
+ rc = lcb_subdocspecs_dict_add (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ), Z_STRVAL_P (value ),
483
+ Z_STRLEN_P (value ));
479
484
} else if (Z_OBJCE_P (entry ) == pcbc_mutate_upsert_spec_ce ) {
480
485
if (Z_TYPE_P (pcbc_read_property (Z_OBJCE_P (entry ), entry , ("is_xattr" ), 0 , & rv1 )) == IS_TRUE ) {
481
486
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
@@ -488,8 +493,8 @@ PHP_METHOD(Collection, mutateIn)
488
493
}
489
494
path = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("path" ), 0 , & rv1 );
490
495
value = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("value" ), 0 , & rv2 );
491
- lcb_subdocspecs_dict_upsert (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ), Z_STRVAL_P ( value ),
492
- Z_STRLEN_P (value ));
496
+ rc = lcb_subdocspecs_dict_upsert (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ),
497
+ Z_STRVAL_P ( value ), Z_STRLEN_P (value ));
493
498
} else if (Z_OBJCE_P (entry ) == pcbc_mutate_replace_spec_ce ) {
494
499
if (Z_TYPE_P (pcbc_read_property (Z_OBJCE_P (entry ), entry , ("is_xattr" ), 0 , & rv1 )) == IS_TRUE ) {
495
500
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
@@ -499,14 +504,14 @@ PHP_METHOD(Collection, mutateIn)
499
504
}
500
505
path = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("path" ), 0 , & rv1 );
501
506
value = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("value" ), 0 , & rv2 );
502
- lcb_subdocspecs_replace (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ), Z_STRVAL_P (value ),
503
- Z_STRLEN_P (value ));
507
+ rc = lcb_subdocspecs_replace (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ), Z_STRVAL_P (value ),
508
+ Z_STRLEN_P (value ));
504
509
} else if (Z_OBJCE_P (entry ) == pcbc_mutate_remove_spec_ce ) {
505
510
if (Z_TYPE_P (pcbc_read_property (Z_OBJCE_P (entry ), entry , ("is_xattr" ), 0 , & rv1 )) == IS_TRUE ) {
506
511
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
507
512
}
508
513
path = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("path" ), 0 , & rv1 );
509
- lcb_subdocspecs_remove (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ));
514
+ rc = lcb_subdocspecs_remove (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ));
510
515
} else if (Z_OBJCE_P (entry ) == pcbc_mutate_array_append_spec_ce ) {
511
516
if (Z_TYPE_P (pcbc_read_property (Z_OBJCE_P (entry ), entry , ("is_xattr" ), 0 , & rv1 )) == IS_TRUE ) {
512
517
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
@@ -519,8 +524,8 @@ PHP_METHOD(Collection, mutateIn)
519
524
}
520
525
path = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("path" ), 0 , & rv1 );
521
526
value = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("value" ), 0 , & rv2 );
522
- lcb_subdocspecs_array_add_last (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ),
523
- Z_STRVAL_P (value ), Z_STRLEN_P (value ));
527
+ rc = lcb_subdocspecs_array_add_last (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ),
528
+ Z_STRVAL_P (value ), Z_STRLEN_P (value ));
524
529
} else if (Z_OBJCE_P (entry ) == pcbc_mutate_array_prepend_spec_ce ) {
525
530
if (Z_TYPE_P (pcbc_read_property (Z_OBJCE_P (entry ), entry , ("is_xattr" ), 0 , & rv1 )) == IS_TRUE ) {
526
531
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
@@ -533,8 +538,8 @@ PHP_METHOD(Collection, mutateIn)
533
538
}
534
539
path = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("path" ), 0 , & rv1 );
535
540
value = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("value" ), 0 , & rv2 );
536
- lcb_subdocspecs_array_add_first (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ),
537
- Z_STRVAL_P (value ), Z_STRLEN_P (value ));
541
+ rc = lcb_subdocspecs_array_add_first (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ),
542
+ Z_STRVAL_P (value ), Z_STRLEN_P (value ));
538
543
} else if (Z_OBJCE_P (entry ) == pcbc_mutate_array_insert_spec_ce ) {
539
544
if (Z_TYPE_P (pcbc_read_property (Z_OBJCE_P (entry ), entry , ("is_xattr" ), 0 , & rv1 )) == IS_TRUE ) {
540
545
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
@@ -547,8 +552,8 @@ PHP_METHOD(Collection, mutateIn)
547
552
}
548
553
path = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("path" ), 0 , & rv1 );
549
554
value = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("value" ), 0 , & rv2 );
550
- lcb_subdocspecs_array_insert (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ), Z_STRVAL_P ( value ),
551
- Z_STRLEN_P (value ));
555
+ rc = lcb_subdocspecs_array_insert (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ),
556
+ Z_STRVAL_P ( value ), Z_STRLEN_P (value ));
552
557
} else if (Z_OBJCE_P (entry ) == pcbc_mutate_array_add_unique_spec_ce ) {
553
558
if (Z_TYPE_P (pcbc_read_property (Z_OBJCE_P (entry ), entry , ("is_xattr" ), 0 , & rv1 )) == IS_TRUE ) {
554
559
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
@@ -561,8 +566,8 @@ PHP_METHOD(Collection, mutateIn)
561
566
}
562
567
path = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("path" ), 0 , & rv1 );
563
568
value = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("value" ), 0 , & rv2 );
564
- lcb_subdocspecs_array_add_unique (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ),
565
- Z_STRVAL_P (value ), Z_STRLEN_P (value ));
569
+ rc = lcb_subdocspecs_array_add_unique (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ),
570
+ Z_STRVAL_P (value ), Z_STRLEN_P (value ));
566
571
} else if (Z_OBJCE_P (entry ) == pcbc_mutate_counter_spec_ce ) {
567
572
if (Z_TYPE_P (pcbc_read_property (Z_OBJCE_P (entry ), entry , ("is_xattr" ), 0 , & rv1 )) == IS_TRUE ) {
568
573
flags |= LCB_SUBDOCSPECS_F_XATTRPATH ;
@@ -572,11 +577,14 @@ PHP_METHOD(Collection, mutateIn)
572
577
}
573
578
path = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("path" ), 0 , & rv1 );
574
579
value = pcbc_read_property (Z_OBJCE_P (entry ), entry , ("delta" ), 0 , & rv2 );
575
- lcb_subdocspecs_counter (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ), Z_LVAL_P (value ));
580
+ rc = lcb_subdocspecs_counter (operations , idx , flags , Z_STRVAL_P (path ), Z_STRLEN_P (path ), Z_LVAL_P (value ));
576
581
} else {
577
- /* TODO: raise argument exception */
582
+ rc = LCB_ERR_INVALID_ARGUMENT ;
583
+ }
584
+ if (rc != LCB_SUCCESS ) {
578
585
lcb_subdocspecs_destroy (operations );
579
- return ;
586
+ throw_lcb_exception_ex (rc , PCBC_OPCODE_UNSPEC , NULL );
587
+ RETURN_NULL ();
580
588
}
581
589
idx ++ ;
582
590
}
0 commit comments