@@ -108,6 +108,12 @@ php_driver_validate_object(zval *object, zval *ztype TSRMLS_DC)
108
108
EXPECTING_VALUE ("an instance of " PHP_DRIVER_NAMESPACE "\\Decimal" );
109
109
}
110
110
111
+ return 1 ;
112
+ case CASS_VALUE_TYPE_DURATION :
113
+ if (!INSTANCE_OF (php_driver_duration_ce )) {
114
+ EXPECTING_VALUE ("an instance of " PHP_DRIVER_NAMESPACE "\\Duration" );
115
+ }
116
+
111
117
return 1 ;
112
118
case CASS_VALUE_TYPE_TIMESTAMP :
113
119
if (!INSTANCE_OF (php_driver_timestamp_ce )) {
@@ -237,6 +243,8 @@ php_driver_value_type(char *type, CassValueType *value_type TSRMLS_DC)
237
243
* value_type = CASS_VALUE_TYPE_COUNTER ;
238
244
} else if (strcmp ("decimal" , type ) == 0 ) {
239
245
* value_type = CASS_VALUE_TYPE_DECIMAL ;
246
+ } else if (strcmp ("duration" , type ) == 0 ) {
247
+ * value_type = CASS_VALUE_TYPE_DURATION ;
240
248
} else if (strcmp ("double" , type ) == 0 ) {
241
249
* value_type = CASS_VALUE_TYPE_DOUBLE ;
242
250
} else if (strcmp ("float" , type ) == 0 ) {
@@ -281,6 +289,7 @@ php_driver_collection_append(CassCollection *collection, zval *value, CassValueT
281
289
php_driver_time * time ;
282
290
php_driver_uuid * uuid ;
283
291
php_driver_inet * inet ;
292
+ php_driver_duration * duration ;
284
293
size_t size ;
285
294
cass_byte_t * data ;
286
295
php_driver_collection * coll ;
@@ -361,6 +370,10 @@ php_driver_collection_append(CassCollection *collection, zval *value, CassValueT
361
370
CHECK_ERROR (cass_collection_append_decimal (collection , data , size , numeric -> data .decimal .scale ));
362
371
free (data );
363
372
break ;
373
+ case CASS_VALUE_TYPE_DURATION :
374
+ duration = PHP_DRIVER_GET_DURATION (value );
375
+ CHECK_ERROR (cass_collection_append_duration (collection , duration -> months , duration -> days , duration -> nanos ));
376
+ break ;
364
377
case CASS_VALUE_TYPE_INET :
365
378
inet = PHP_DRIVER_GET_INET (value );
366
379
CHECK_ERROR (cass_collection_append_inet (collection , inet -> inet ));
@@ -414,6 +427,7 @@ php_driver_tuple_set(CassTuple *tuple, php5to7_ulong index, zval *value, CassVal
414
427
php_driver_time * time ;
415
428
php_driver_uuid * uuid ;
416
429
php_driver_inet * inet ;
430
+ php_driver_duration * duration ;
417
431
size_t size ;
418
432
cass_byte_t * data ;
419
433
php_driver_collection * coll ;
@@ -499,6 +513,10 @@ php_driver_tuple_set(CassTuple *tuple, php5to7_ulong index, zval *value, CassVal
499
513
CHECK_ERROR (cass_tuple_set_decimal (tuple , index , data , size , numeric -> data .decimal .scale ));
500
514
free (data );
501
515
break ;
516
+ case CASS_VALUE_TYPE_DURATION :
517
+ duration = PHP_DRIVER_GET_DURATION (value );
518
+ CHECK_ERROR (cass_tuple_set_duration (tuple , index , duration -> months , duration -> days , duration -> nanos ));
519
+ break ;
502
520
case CASS_VALUE_TYPE_INET :
503
521
inet = PHP_DRIVER_GET_INET (value );
504
522
CHECK_ERROR (cass_tuple_set_inet (tuple , index , inet -> inet ));
@@ -554,6 +572,7 @@ php_driver_user_type_set(CassUserType *ut,
554
572
php_driver_time * time ;
555
573
php_driver_uuid * uuid ;
556
574
php_driver_inet * inet ;
575
+ php_driver_duration * duration ;
557
576
size_t size ;
558
577
cass_byte_t * data ;
559
578
php_driver_collection * coll ;
@@ -639,6 +658,10 @@ php_driver_user_type_set(CassUserType *ut,
639
658
CHECK_ERROR (cass_user_type_set_decimal_by_name (ut , name , data , size , numeric -> data .decimal .scale ));
640
659
free (data );
641
660
break ;
661
+ case CASS_VALUE_TYPE_DURATION :
662
+ duration = PHP_DRIVER_GET_DURATION (value );
663
+ CHECK_ERROR (cass_user_type_set_duration_by_name (ut , name , duration -> months , duration -> days , duration -> nanos ));
664
+ break ;
642
665
case CASS_VALUE_TYPE_INET :
643
666
inet = PHP_DRIVER_GET_INET (value );
644
667
CHECK_ERROR (cass_user_type_set_inet_by_name (ut , name , inet -> inet ));
0 commit comments