Hi,
when trying to retrieve an empty value get() returns a result similair to key not found instead of an empty string (as was the case in the library v1).
Sample code to reproduce :
$cluster = new CouchbaseCluster('....','test','');
$bucket = $cluster->openBucket('test');
$bucket->insert('empty','');
var_dump($bucket->get('empty'));
Result :
object(CouchbaseMetaDoc)#4 (4) { ["error"]=> NULL ["value"]=> NULL ["flags"]=> int(67108864) ["cas"]=> resource(5) of type (CouchbaseCAS) }
Expected result : having “value” containing “” (empty string) instead of null.
The decoder function is not called.
My guess is that the code in transcoding.c, in function pcbc_bytes_to_zval :
if (nbytes == 0) {
MAKE_STD_ZVAL(*zvalue);
ZVAL_NULL(*zvalue);
return SUCCESS;
}
short-circuits the standard zval creation process.
In the previous library version (1.1.2) the library returned an empty string as expected.
Would it be possible to revert to this previous behaviour ?
Tested on the master branch (rev 3b71531b4d7203707067ab8f6bfdfd11bfadb1e5).