Skip to content

Commit d835a18

Browse files
committed
Add rawParam for N1QL query object
Change-Id: I0e6cee8749ae10af5e0760a2b9857fad802a3532 Reviewed-on: http://review.couchbase.org/99884 Tested-by: Build Bot <[email protected]> Reviewed-by: Sergey Avseyev <[email protected]>
1 parent 53973cf commit d835a18

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

api/couchbase.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1993,6 +1993,20 @@ public function positionalParams($params) {}
19931993
*/
19941994
public function namedParams($params) {}
19951995

1996+
/**
1997+
* Specify custom parameter for query
1998+
*
1999+
* This function exists as escape hatch for cases when the Server has
2000+
* implemented some new query feature, while the SDK hasn't yet exposed
2001+
* the API on query object yet. The key must be a string, and param is
2002+
* JSON-serializable object.
2003+
*
2004+
* @param string $key
2005+
* @param mixed $param
2006+
* @return AnalyticsQuery
2007+
*/
2008+
public function rawParam($key, $value) {}
2009+
19962010
/**
19972011
* Specifies the consistency level for this query
19982012
*

src/couchbase/n1ql_query.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,26 @@ PHP_METHOD(N1qlQuery, namedParams)
124124
RETURN_ZVAL(getThis(), 1, 0);
125125
} /* }}} */
126126

127+
PHP_METHOD(N1qlQuery, rawParam)
128+
{
129+
zval *value;
130+
zval *options;
131+
char *name = NULL;
132+
pcbc_str_arg_size name_len = 0;
133+
int rv;
134+
135+
rv = zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &name, &name_len, &value);
136+
if (rv == FAILURE) {
137+
RETURN_NULL();
138+
}
139+
140+
PCBC_READ_PROPERTY(options, pcbc_n1ql_query_ce, getThis(), "options", 0);
141+
PCBC_ADDREF_P(value);
142+
add_assoc_zval_ex(options, name, name_len, value);
143+
144+
RETURN_ZVAL(getThis(), 1, 0);
145+
}
146+
127147
/* {{{ proto \Couchbase\N1qlQuery N1qlQuery::adhoc(boolean $adhoc) */
128148
PHP_METHOD(N1qlQuery, adhoc)
129149
{
@@ -390,6 +410,11 @@ ZEND_BEGIN_ARG_INFO_EX(ai_N1qlQuery_readonly, 0, 0, 1)
390410
ZEND_ARG_INFO(0, readonly)
391411
ZEND_END_ARG_INFO()
392412

413+
ZEND_BEGIN_ARG_INFO_EX(ai_N1qlQuery_rawParam, 0, 0, 2)
414+
ZEND_ARG_INFO(0, key)
415+
ZEND_ARG_INFO(0, value)
416+
ZEND_END_ARG_INFO()
417+
393418
// clang-format off
394419
zend_function_entry n1ql_query_methods[] = {
395420
PHP_ME(N1qlQuery, __construct, ai_N1qlQuery_none, ZEND_ACC_PRIVATE | ZEND_ACC_FINAL | ZEND_ACC_CTOR)
@@ -406,6 +431,7 @@ zend_function_entry n1ql_query_methods[] = {
406431
PHP_ME(N1qlQuery, pipelineCap, ai_N1qlQuery_pipelineCap, ZEND_ACC_PUBLIC)
407432
PHP_ME(N1qlQuery, maxParallelism, ai_N1qlQuery_maxParallelism, ZEND_ACC_PUBLIC)
408433
PHP_ME(N1qlQuery, readonly, ai_N1qlQuery_readonly, ZEND_ACC_PUBLIC)
434+
PHP_ME(N1qlQuery, rawParam, ai_N1qlQuery_rawParam, ZEND_ACC_PUBLIC)
409435
PHP_FE_END
410436
};
411437
// clang-format on

0 commit comments

Comments
 (0)