Skip to content

Commit df2a74d

Browse files
author
Bulat Shakirzyanov
committed
add missing fields and fix doc blocks
1 parent fea5557 commit df2a74d

File tree

7 files changed

+135
-8
lines changed

7 files changed

+135
-8
lines changed

ext/doc/Cassandra/DefaultKeyspace.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public function replicationClassName() {}
4040
/**
4141
* {@inheritDoc}
4242
*
43-
* @return array Replication options
43+
* @return Cassandra\Map Replication options
4444
*/
4545
public function replicationOptions() {}
4646

ext/doc/Cassandra/DefaultTable.php

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,41 @@ public function compactionStrategyClassName() {}
110110
/**
111111
* {@inheritDoc}
112112
*
113-
* @return string Compaction strategy options
113+
* @return Cassandra\Map Compaction strategy options
114114
*/
115115
public function compactionStrategyOptions() {}
116116

117117
/**
118118
* {@inheritDoc}
119119
*
120-
* @return string Compression parameters
120+
* @return Cassandra\Map Compression parameters
121121
*/
122122
public function compressionParameters() {}
123123

124+
/**
125+
* {@inheritDoc}
126+
* @return boolean|null Value of `populate_io_cache_on_flush`
127+
*/
128+
public function populateIOCacheOnFlush();
129+
130+
/**
131+
* {@inheritDoc}
132+
* @return boolean|null Value of `replicate_on_write`
133+
*/
134+
public function replicateOnWrite();
135+
136+
/**
137+
* {@inheritDoc}
138+
* @return int|null Value of `max_index_interval`
139+
*/
140+
public function maxIndexInterval();
141+
142+
/**
143+
* {@inheritDoc}
144+
* @return int|null Value of `min_index_interval`
145+
*/
146+
public function minIndexInterval();
147+
124148
/**
125149
* {@inheritDoc}
126150
*

ext/doc/Cassandra/Keyspace.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function replicationClassName();
3737

3838
/**
3939
* Returns replication options
40-
* @return array Replication options
40+
* @return Cassandra\Map Replication options
4141
*/
4242
function replicationOptions();
4343

ext/doc/Cassandra/Table.php

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,16 +97,40 @@ function compactionStrategyClassName();
9797

9898
/**
9999
* Returns compaction strategy options
100-
* @return string Compaction strategy options
100+
* @return Cassandra\Map Compaction strategy options
101101
*/
102102
function compactionStrategyOptions();
103103

104104
/**
105105
* Returns compression parameters
106-
* @return string Compression parameters
106+
* @return Cassandra\Map Compression parameters
107107
*/
108108
function compressionParameters();
109109

110+
/**
111+
* Returns whether or not the `populate_io_cache_on_flush` is true
112+
* @return boolean|null Value of `populate_io_cache_on_flush`
113+
*/
114+
function populateIOCacheOnFlush();
115+
116+
/**
117+
* Returns whether or not the `replicate_on_write` is true
118+
* @return boolean|null Value of `replicate_on_write`
119+
*/
120+
function replicateOnWrite();
121+
122+
/**
123+
* Returns the value of `max_index_interval`
124+
* @return int|null Value of `max_index_interval`
125+
*/
126+
function maxIndexInterval();
127+
128+
/**
129+
* Returns the value of `min_index_interval`
130+
* @return int|null Value of `min_index_interval`
131+
*/
132+
function minIndexInterval();
133+
110134
/**
111135
* Returns column by name
112136
* @param string $name Name of the column

ext/src/Cassandra/DefaultTable.c

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,61 @@ PHP_METHOD(DefaultTable, columns)
310310
cass_iterator_free(iterator);
311311
}
312312

313+
PHP_METHOD(DefaultTable, populateIOCacheOnFlush)
314+
{
315+
cassandra_table* self;
316+
zval* value;
317+
318+
if (zend_parse_parameters_none() == FAILURE)
319+
return;
320+
321+
self = (cassandra_table*) zend_object_store_get_object(getThis() TSRMLS_CC);
322+
323+
php_cassandra_get_schema_field(self->meta, "populate_io_cache_on_flush", &value TSRMLS_CC);
324+
RETURN_ZVAL(value, 0, 1);
325+
}
326+
327+
PHP_METHOD(DefaultTable, replicateOnWrite)
328+
{
329+
cassandra_table* self;
330+
zval* value;
331+
332+
if (zend_parse_parameters_none() == FAILURE)
333+
return;
334+
335+
self = (cassandra_table*) zend_object_store_get_object(getThis() TSRMLS_CC);
336+
337+
php_cassandra_get_schema_field(self->meta, "replicate_on_write", &value TSRMLS_CC);
338+
RETURN_ZVAL(value, 0, 1);
339+
}
340+
341+
PHP_METHOD(DefaultTable, maxIndexInterval)
342+
{
343+
cassandra_table* self;
344+
zval* value;
345+
346+
if (zend_parse_parameters_none() == FAILURE)
347+
return;
348+
349+
self = (cassandra_table*) zend_object_store_get_object(getThis() TSRMLS_CC);
350+
351+
php_cassandra_get_schema_field(self->meta, "max_index_interval", &value TSRMLS_CC);
352+
RETURN_ZVAL(value, 0, 1);
353+
}
354+
355+
PHP_METHOD(DefaultTable, minIndexInterval)
356+
{
357+
cassandra_table* self;
358+
zval* value;
359+
360+
if (zend_parse_parameters_none() == FAILURE)
361+
return;
362+
363+
self = (cassandra_table*) zend_object_store_get_object(getThis() TSRMLS_CC);
364+
365+
php_cassandra_get_schema_field(self->meta, "min_index_interval", &value TSRMLS_CC);
366+
RETURN_ZVAL(value, 0, 1);
367+
}
313368

314369
ZEND_BEGIN_ARG_INFO_EX(arginfo_name, 0, ZEND_RETURN_VALUE, 1)
315370
ZEND_ARG_INFO(0, name)
@@ -333,6 +388,10 @@ static zend_function_entry cassandra_default_table_methods[] = {
333388
PHP_ME(DefaultTable, compactionStrategyClassName, arginfo_none, ZEND_ACC_PUBLIC)
334389
PHP_ME(DefaultTable, compactionStrategyOptions, arginfo_none, ZEND_ACC_PUBLIC)
335390
PHP_ME(DefaultTable, compressionParameters, arginfo_none, ZEND_ACC_PUBLIC)
391+
PHP_ME(DefaultTable, populateIOCacheOnFlush, arginfo_none, ZEND_ACC_PUBLIC)
392+
PHP_ME(DefaultTable, replicateOnWrite, arginfo_none, ZEND_ACC_PUBLIC)
393+
PHP_ME(DefaultTable, maxIndexInterval, arginfo_none, ZEND_ACC_PUBLIC)
394+
PHP_ME(DefaultTable, minIndexInterval, arginfo_none, ZEND_ACC_PUBLIC)
336395
PHP_ME(DefaultTable, column, arginfo_name, ZEND_ACC_PUBLIC)
337396
PHP_ME(DefaultTable, columns, arginfo_none, ZEND_ACC_PUBLIC)
338397
PHP_FE_END

ext/src/Cassandra/Table.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ static zend_function_entry cassandra_table_methods[] = {
2424
PHP_ABSTRACT_ME(Table, compactionStrategyClassName, arginfo_none)
2525
PHP_ABSTRACT_ME(Table, compactionStrategyOptions, arginfo_none)
2626
PHP_ABSTRACT_ME(Table, compressionParameters, arginfo_none)
27+
PHP_ABSTRACT_ME(Table, populateIOCacheOnFlush, arginfo_none)
28+
PHP_ABSTRACT_ME(Table, replicateOnWrite, arginfo_none)
29+
PHP_ABSTRACT_ME(Table, maxIndexInterval, arginfo_none)
30+
PHP_ABSTRACT_ME(Table, minIndexInterval, arginfo_none)
2731
PHP_ABSTRACT_ME(Table, column, arginfo_name)
2832
PHP_ABSTRACT_ME(Table, columns, arginfo_none)
2933
PHP_FE_END

ext/util/result.c

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,24 @@ php_cassandra_value(const CassValue* value, CassValueType type, zval** out TSRML
236236
int
237237
php_cassandra_get_schema_field(const CassSchemaMeta* metadata, const char* field_name, zval** out TSRMLS_DC)
238238
{
239-
const CassSchemaMetaField* field = cass_schema_meta_get_field(metadata, field_name);
240-
const CassValue* value = cass_schema_meta_field_value(field);
239+
const CassSchemaMetaField* field;
240+
const CassValue* value;
241+
242+
field = cass_schema_meta_get_field(metadata, field_name);
243+
244+
if (field == NULL) {
245+
MAKE_STD_ZVAL(*out);
246+
ZVAL_NULL(*out);
247+
return SUCCESS;
248+
}
249+
250+
value = cass_schema_meta_field_value(field);
251+
252+
if (value == NULL) {
253+
MAKE_STD_ZVAL(*out);
254+
ZVAL_NULL(*out);
255+
return SUCCESS;
256+
}
241257

242258
return php_cassandra_value(value, cass_value_type(value), out TSRMLS_CC);
243259
}

0 commit comments

Comments
 (0)