2626
2727zend_class_entry * cassandra_default_materialized_view_ce = NULL ;
2828
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+
2961php5to7_zval
3062php_cassandra_create_materialized_view (cassandra_ref * schema ,
3163 const CassMaterializedViewMeta * meta TSRMLS_DC )
@@ -398,7 +430,7 @@ PHP_METHOD(DefaultMaterializedView, columns)
398430 cass_iterator_free (iterator );
399431}
400432
401- PHP_METHOD (DefaultMaterializedView , primaryKey )
433+ PHP_METHOD (DefaultMaterializedView , partitionKey )
402434{
403435 cassandra_materialized_view * self ;
404436
@@ -407,25 +439,32 @@ PHP_METHOD(DefaultMaterializedView, primaryKey)
407439
408440 self = PHP_CASSANDRA_GET_MATERIALIZED_VIEW (getThis ());
409441 if (PHP5TO7_ZVAL_IS_UNDEF (self -> partition_key )) {
410- size_t i , count = cass_materialized_view_meta_partition_key_count (self -> meta );
411442 PHP5TO7_ZVAL_MAYBE_MAKE (self -> partition_key );
412443 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 );
424445 }
425446
426447 RETURN_ZVAL (PHP5TO7_ZVAL_MAYBE_P (self -> partition_key ), 1 , 0 );
427448}
428449
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+
429468PHP_METHOD (DefaultMaterializedView , clusteringKey )
430469{
431470 cassandra_materialized_view * self ;
@@ -435,20 +474,9 @@ PHP_METHOD(DefaultMaterializedView, clusteringKey)
435474
436475 self = PHP_CASSANDRA_GET_MATERIALIZED_VIEW (getThis ());
437476 if (PHP5TO7_ZVAL_IS_UNDEF (self -> clustering_key )) {
438- size_t i , count = cass_materialized_view_meta_clustering_key_count (self -> meta );
439477 PHP5TO7_ZVAL_MAYBE_MAKE (self -> clustering_key );
440478 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 );
452480 }
453481
454482 RETURN_ZVAL (PHP5TO7_ZVAL_MAYBE_P (self -> clustering_key ), 1 , 0 );
@@ -538,6 +566,7 @@ static zend_function_entry cassandra_default_materialized_view_methods[] = {
538566 PHP_ME (DefaultMaterializedView , minIndexInterval , arginfo_none , ZEND_ACC_PUBLIC )
539567 PHP_ME (DefaultMaterializedView , column , arginfo_name , ZEND_ACC_PUBLIC )
540568 PHP_ME (DefaultMaterializedView , columns , arginfo_none , ZEND_ACC_PUBLIC )
569+ PHP_ME (DefaultMaterializedView , partitionKey , arginfo_none , ZEND_ACC_PUBLIC )
541570 PHP_ME (DefaultMaterializedView , primaryKey , arginfo_none , ZEND_ACC_PUBLIC )
542571 PHP_ME (DefaultMaterializedView , clusteringKey , arginfo_none , ZEND_ACC_PUBLIC )
543572 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
580609 PHP5TO7_ZVAL_MAYBE_DESTROY (self -> name );
581610 PHP5TO7_ZVAL_MAYBE_DESTROY (self -> options );
582611 PHP5TO7_ZVAL_MAYBE_DESTROY (self -> partition_key );
612+ PHP5TO7_ZVAL_MAYBE_DESTROY (self -> primary_key );
583613 PHP5TO7_ZVAL_MAYBE_DESTROY (self -> clustering_key );
584614 PHP5TO7_ZVAL_MAYBE_DESTROY (self -> clustering_order );
585615 PHP5TO7_ZVAL_MAYBE_DESTROY (self -> base_table );
@@ -603,6 +633,7 @@ php_cassandra_default_materialized_view_new(zend_class_entry *ce TSRMLS_DC)
603633 PHP5TO7_ZVAL_UNDEF (self -> name );
604634 PHP5TO7_ZVAL_UNDEF (self -> options );
605635 PHP5TO7_ZVAL_UNDEF (self -> partition_key );
636+ PHP5TO7_ZVAL_UNDEF (self -> primary_key );
606637 PHP5TO7_ZVAL_UNDEF (self -> clustering_key );
607638 PHP5TO7_ZVAL_UNDEF (self -> clustering_order );
608639 PHP5TO7_ZVAL_UNDEF (self -> base_table );
0 commit comments