26
26
27
27
zend_class_entry * cassandra_default_materialized_view_ce = NULL ;
28
28
29
+ static void
30
+ populate_partition_key (cassandra_materialized_view * view , zval * result TSRMLS_DC )
31
+ {
32
+ size_t i , count = cass_materialized_view_meta_partition_key_count (view -> meta );
33
+ for (i = 0 ; i < count ; ++ i ) {
34
+ const CassColumnMeta * column =
35
+ cass_materialized_view_meta_partition_key (view -> meta , i );
36
+ if (column ) {
37
+ php5to7_zval zcolumn = php_cassandra_create_column (view -> schema , column TSRMLS_CC );
38
+ if (!PHP5TO7_ZVAL_IS_UNDEF (zcolumn )) {
39
+ add_next_index_zval (result , PHP5TO7_ZVAL_MAYBE_P (zcolumn ));
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ static void
46
+ populate_clustering_key (cassandra_materialized_view * view , zval * result TSRMLS_DC )
47
+ {
48
+ size_t i , count = cass_materialized_view_meta_clustering_key_count (view -> meta );
49
+ for (i = 0 ; i < count ; ++ i ) {
50
+ const CassColumnMeta * column =
51
+ cass_materialized_view_meta_clustering_key (view -> meta , i );
52
+ if (column ) {
53
+ php5to7_zval zcolumn = php_cassandra_create_column (view -> schema , column TSRMLS_CC );
54
+ if (!PHP5TO7_ZVAL_IS_UNDEF (zcolumn )) {
55
+ add_next_index_zval (result , PHP5TO7_ZVAL_MAYBE_P (zcolumn ));
56
+ }
57
+ }
58
+ }
59
+ }
60
+
29
61
php5to7_zval
30
62
php_cassandra_create_materialized_view (cassandra_ref * schema ,
31
63
const CassMaterializedViewMeta * meta TSRMLS_DC )
@@ -398,7 +430,7 @@ PHP_METHOD(DefaultMaterializedView, columns)
398
430
cass_iterator_free (iterator );
399
431
}
400
432
401
- PHP_METHOD (DefaultMaterializedView , primaryKey )
433
+ PHP_METHOD (DefaultMaterializedView , partitionKey )
402
434
{
403
435
cassandra_materialized_view * self ;
404
436
@@ -407,25 +439,32 @@ PHP_METHOD(DefaultMaterializedView, primaryKey)
407
439
408
440
self = PHP_CASSANDRA_GET_MATERIALIZED_VIEW (getThis ());
409
441
if (PHP5TO7_ZVAL_IS_UNDEF (self -> partition_key )) {
410
- size_t i , count = cass_materialized_view_meta_partition_key_count (self -> meta );
411
442
PHP5TO7_ZVAL_MAYBE_MAKE (self -> partition_key );
412
443
array_init (PHP5TO7_ZVAL_MAYBE_P (self -> partition_key ));
413
- for (i = 0 ; i < count ; ++ i ) {
414
- const CassColumnMeta * column =
415
- cass_materialized_view_meta_partition_key (self -> meta , i );
416
- if (column ) {
417
- php5to7_zval zcolumn = php_cassandra_create_column (self -> schema , column TSRMLS_CC );
418
- if (!PHP5TO7_ZVAL_IS_UNDEF (zcolumn )) {
419
- add_next_index_zval (PHP5TO7_ZVAL_MAYBE_P (self -> partition_key ),
420
- PHP5TO7_ZVAL_MAYBE_P (zcolumn ));
421
- }
422
- }
423
- }
444
+ populate_partition_key (self , PHP5TO7_ZVAL_MAYBE_P (self -> partition_key ) TSRMLS_CC );
424
445
}
425
446
426
447
RETURN_ZVAL (PHP5TO7_ZVAL_MAYBE_P (self -> partition_key ), 1 , 0 );
427
448
}
428
449
450
+ PHP_METHOD (DefaultMaterializedView , primaryKey )
451
+ {
452
+ cassandra_materialized_view * self ;
453
+
454
+ if (zend_parse_parameters_none () == FAILURE )
455
+ return ;
456
+
457
+ self = PHP_CASSANDRA_GET_MATERIALIZED_VIEW (getThis ());
458
+ if (PHP5TO7_ZVAL_IS_UNDEF (self -> primary_key )) {
459
+ PHP5TO7_ZVAL_MAYBE_MAKE (self -> primary_key );
460
+ array_init (PHP5TO7_ZVAL_MAYBE_P (self -> primary_key ));
461
+ populate_partition_key (self , PHP5TO7_ZVAL_MAYBE_P (self -> primary_key ) TSRMLS_CC );
462
+ populate_clustering_key (self , PHP5TO7_ZVAL_MAYBE_P (self -> primary_key ) TSRMLS_CC );
463
+ }
464
+
465
+ RETURN_ZVAL (PHP5TO7_ZVAL_MAYBE_P (self -> primary_key ), 1 , 0 );
466
+ }
467
+
429
468
PHP_METHOD (DefaultMaterializedView , clusteringKey )
430
469
{
431
470
cassandra_materialized_view * self ;
@@ -435,20 +474,9 @@ PHP_METHOD(DefaultMaterializedView, clusteringKey)
435
474
436
475
self = PHP_CASSANDRA_GET_MATERIALIZED_VIEW (getThis ());
437
476
if (PHP5TO7_ZVAL_IS_UNDEF (self -> clustering_key )) {
438
- size_t i , count = cass_materialized_view_meta_clustering_key_count (self -> meta );
439
477
PHP5TO7_ZVAL_MAYBE_MAKE (self -> clustering_key );
440
478
array_init (PHP5TO7_ZVAL_MAYBE_P (self -> clustering_key ));
441
- for (i = 0 ; i < count ; ++ i ) {
442
- const CassColumnMeta * column =
443
- cass_materialized_view_meta_clustering_key (self -> meta , i );
444
- if (column ) {
445
- php5to7_zval zcolumn = php_cassandra_create_column (self -> schema , column TSRMLS_CC );
446
- if (!PHP5TO7_ZVAL_IS_UNDEF (zcolumn )) {
447
- add_next_index_zval (PHP5TO7_ZVAL_MAYBE_P (self -> clustering_key ),
448
- PHP5TO7_ZVAL_MAYBE_P (zcolumn ));
449
- }
450
- }
451
- }
479
+ populate_clustering_key (self , PHP5TO7_ZVAL_MAYBE_P (self -> clustering_key ) TSRMLS_CC );
452
480
}
453
481
454
482
RETURN_ZVAL (PHP5TO7_ZVAL_MAYBE_P (self -> clustering_key ), 1 , 0 );
@@ -538,6 +566,7 @@ static zend_function_entry cassandra_default_materialized_view_methods[] = {
538
566
PHP_ME (DefaultMaterializedView , minIndexInterval , arginfo_none , ZEND_ACC_PUBLIC )
539
567
PHP_ME (DefaultMaterializedView , column , arginfo_name , ZEND_ACC_PUBLIC )
540
568
PHP_ME (DefaultMaterializedView , columns , arginfo_none , ZEND_ACC_PUBLIC )
569
+ PHP_ME (DefaultMaterializedView , partitionKey , arginfo_none , ZEND_ACC_PUBLIC )
541
570
PHP_ME (DefaultMaterializedView , primaryKey , arginfo_none , ZEND_ACC_PUBLIC )
542
571
PHP_ME (DefaultMaterializedView , clusteringKey , arginfo_none , ZEND_ACC_PUBLIC )
543
572
PHP_ME (DefaultMaterializedView , clusteringOrder , arginfo_none , ZEND_ACC_PUBLIC )
@@ -580,6 +609,7 @@ php_cassandra_default_materialized_view_free(php5to7_zend_object_free *object TS
580
609
PHP5TO7_ZVAL_MAYBE_DESTROY (self -> name );
581
610
PHP5TO7_ZVAL_MAYBE_DESTROY (self -> options );
582
611
PHP5TO7_ZVAL_MAYBE_DESTROY (self -> partition_key );
612
+ PHP5TO7_ZVAL_MAYBE_DESTROY (self -> primary_key );
583
613
PHP5TO7_ZVAL_MAYBE_DESTROY (self -> clustering_key );
584
614
PHP5TO7_ZVAL_MAYBE_DESTROY (self -> clustering_order );
585
615
PHP5TO7_ZVAL_MAYBE_DESTROY (self -> base_table );
@@ -603,6 +633,7 @@ php_cassandra_default_materialized_view_new(zend_class_entry *ce TSRMLS_DC)
603
633
PHP5TO7_ZVAL_UNDEF (self -> name );
604
634
PHP5TO7_ZVAL_UNDEF (self -> options );
605
635
PHP5TO7_ZVAL_UNDEF (self -> partition_key );
636
+ PHP5TO7_ZVAL_UNDEF (self -> primary_key );
606
637
PHP5TO7_ZVAL_UNDEF (self -> clustering_key );
607
638
PHP5TO7_ZVAL_UNDEF (self -> clustering_order );
608
639
PHP5TO7_ZVAL_UNDEF (self -> base_table );
0 commit comments