Skip to content

Commit db4fe3d

Browse files
authored
PHPC-2049: BulkWrite and Query support comment option of any type (#1320)
* PHPC-2049: Bump libmongoc and libmongocrypt submodules libmongoc master (1.22-dev) now depends on libmongocrypt master (1.5-dev). libmongoc's bundled zlib library was updated to 1.2.12. * PHPC-2049: BulkWrite and Query support comment option of any type MongoDB 4.4+ allows a comment option of any type on most commands. Previously, find required a string type and write commands did not support comment at all. The driver does not validate the option and relies on the server to raise an error. * Fix title and variable access in BulkWrite and Query let option tests * Fix grammar in php_phongo_bulkwrite_delete_apply_options comment * Undefine additional Query option macros
1 parent 11ae405 commit db4fe3d

23 files changed

+351
-33
lines changed

bin/prep-release.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ function get_files() {
5454
"src/libmongoc/src/libbson/src/jsonsl/*.{c,h}",
5555
"src/libmongoc/src/libbson/VERSION*",
5656
"src/libmongoc/src/libmongoc/src/mongoc/*.{c,def,defs,h,h.in}",
57-
"src/libmongoc/src/zlib-1.2.11/*.{c,h,h.in}",
57+
"src/libmongoc/src/zlib-1.2.12/*.{c,h,h.in}",
5858
"src/libmongoc/VERSION*",
5959

6060
"src/libmongocrypt-compat/*.{c,h}",

config.m4

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ if test "$PHP_MONGODB" != "no"; then
281281
AC_MSG_CHECKING(for libmongocrypt)
282282

283283
if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libmongocrypt; then
284-
if $PKG_CONFIG libmongocrypt --atleast-version 1.3.2; then
284+
if $PKG_CONFIG libmongocrypt --atleast-version 1.5.0; then
285285
PHP_MONGODB_MONGOCRYPT_CFLAGS=`$PKG_CONFIG libmongocrypt --cflags`
286286
PHP_MONGODB_MONGOCRYPT_LIBS=`$PKG_CONFIG libmongocrypt --libs`
287287
PHP_MONGODB_MONGOCRYPT_VERSION=`$PKG_CONFIG libmongocrypt --modversion`
@@ -292,7 +292,7 @@ if test "$PHP_MONGODB" != "no"; then
292292
PHP_EVAL_LIBLINE($PHP_MONGODB_MONGOCRYPT_LIBS, MONGODB_SHARED_LIBADD)
293293
AC_DEFINE(HAVE_SYSTEM_LIBMONGOCRYPT, 1, [Use system libmongocrypt])
294294
elif test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" = "yes"; then
295-
AC_MSG_ERROR(system libmongocrypt must be upgraded to version >= 1.3.2)
295+
AC_MSG_ERROR(system libmongocrypt must be upgraded to version >= 1.5.0)
296296
else
297297
AC_MSG_RESULT(found an older version, compiling without client-side encryption)
298298
fi
@@ -408,7 +408,7 @@ if test "$PHP_MONGODB" != "no"; then
408408
dnl Generated with: find src/libmongoc/src/libmongoc/src/mongoc -name '*.c' -print0 | cut -sz -d / -f 7- | sort -dz | tr '\000' ' '
409409
PHP_MONGODB_MONGOC_SOURCES="mongoc-aggregate.c mongoc-apm.c mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-change-stream.c mongoc-client.c mongoc-client-pool.c mongoc-client-session.c mongoc-client-side-encryption.c mongoc-cluster-aws.c mongoc-cluster.c mongoc-cluster-cyrus.c mongoc-cluster-sasl.c mongoc-cluster-sspi.c mongoc-cmd.c mongoc-collection.c mongoc-compression.c mongoc-counters.c mongoc-crypt.c mongoc-crypto.c mongoc-crypto-cng.c mongoc-crypto-common-crypto.c mongoc-crypto-openssl.c mongoc-cursor-array.c mongoc-cursor.c mongoc-cursor-change-stream.c mongoc-cursor-cmd.c mongoc-cursor-cmd-deprecated.c mongoc-cursor-find.c mongoc-cursor-find-cmd.c mongoc-cursor-find-opquery.c mongoc-cursor-legacy.c mongoc-cyrus.c mongoc-database.c mongoc-error.c mongoc-find-and-modify.c mongoc-generation-map.c mongoc-gridfs-bucket.c mongoc-gridfs-bucket-file.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-list.c mongoc-gridfs-file-page.c mongoc-handshake.c mongoc-host-list.c mongoc-http.c mongoc-index.c mongoc-init.c mongoc-interrupt.c mongoc-libressl.c mongoc-linux-distro-scanner.c mongoc-list.c mongoc-log.c mongoc-matcher.c mongoc-matcher-op.c mongoc-memcmp.c mongoc-ocsp-cache.c mongoc-openssl.c mongoc-optional.c mongoc-opts.c mongoc-opts-helpers.c mongoc-queue.c mongoc-rand-cng.c mongoc-rand-common-crypto.c mongoc-rand-openssl.c mongoc-read-concern.c mongoc-read-prefs.c mongoc-rpc.c mongoc-sasl.c mongoc-scram.c mongoc-secure-channel.c mongoc-secure-transport.c mongoc-server-api.c mongoc-server-description.c mongoc-server-monitor.c mongoc-server-stream.c mongoc-set.c mongoc-shared.c mongoc-socket.c mongoc-ssl.c mongoc-sspi.c mongoc-stream-buffered.c mongoc-stream.c mongoc-stream-file.c mongoc-stream-gridfs.c mongoc-stream-gridfs-download.c mongoc-stream-gridfs-upload.c mongoc-stream-socket.c mongoc-stream-tls.c mongoc-stream-tls-libressl.c mongoc-stream-tls-openssl-bio.c mongoc-stream-tls-openssl.c mongoc-stream-tls-secure-channel.c mongoc-stream-tls-secure-transport.c mongoc-timeout.c mongoc-topology-background-monitoring.c mongoc-topology.c mongoc-topology-description-apm.c mongoc-topology-description.c mongoc-topology-scanner.c mongoc-ts-pool.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-command-legacy.c mongoc-write-concern.c"
410410

411-
dnl Generated with: find src/libmongoc/src/zlib-1.2.11 -maxdepth 1 -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' '
411+
dnl Generated with: find src/libmongoc/src/zlib-1.2.12 -maxdepth 1 -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' '
412412
PHP_MONGODB_ZLIB_SOURCES="adler32.c compress.c crc32.c deflate.c gzclose.c gzlib.c gzread.c gzwrite.c infback.c inffast.c inflate.c inftrees.c trees.c uncompr.c zutil.c"
413413

414414
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/common/], $PHP_MONGODB_COMMON_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS)
@@ -448,10 +448,10 @@ if test "$PHP_MONGODB" != "no"; then
448448

449449
if test "x$bundled_zlib" = "xyes"; then
450450
PHP_MONGODB_ZLIB_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS $PHP_MONGODB_ZLIB_CFLAGS"
451-
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/zlib-1.2.11/], $PHP_MONGODB_ZLIB_SOURCES, $PHP_MONGODB_ZLIB_CFLAGS)
452-
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/zlib-1.2.11/])
453-
PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/zlib-1.2.11/])
454-
AC_CONFIG_FILES([${ac_config_dir}/src/libmongoc/src/zlib-1.2.11/zconf.h])
451+
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/zlib-1.2.12/], $PHP_MONGODB_ZLIB_SOURCES, $PHP_MONGODB_ZLIB_CFLAGS)
452+
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/zlib-1.2.12/])
453+
PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/zlib-1.2.12/])
454+
AC_CONFIG_FILES([${ac_config_dir}/src/libmongoc/src/zlib-1.2.12/zconf.h])
455455
fi
456456

457457
if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" = "yes"; then
@@ -460,7 +460,7 @@ if test "$PHP_MONGODB" != "no"; then
460460
AC_SUBST(MONGOCRYPT_ENABLE_TRACE, 1)
461461

462462
dnl Generated with: find src/libmongocrypt/src -maxdepth 1 -name '*.c' -print0 | cut -sz -d / -f 4- | sort -dz | tr '\000' ' '
463-
PHP_MONGODB_MONGOCRYPT_SOURCES="mongocrypt-binary.c mongocrypt-buffer.c mongocrypt.c mongocrypt-cache.c mongocrypt-cache-collinfo.c mongocrypt-cache-key.c mongocrypt-cache-oauth.c mongocrypt-ciphertext.c mongocrypt-crypto.c mongocrypt-ctx.c mongocrypt-ctx-datakey.c mongocrypt-ctx-decrypt.c mongocrypt-ctx-encrypt.c mongocrypt-endpoint.c mongocrypt-kek.c mongocrypt-key-broker.c mongocrypt-key.c mongocrypt-kms-ctx.c mongocrypt-log.c mongocrypt-marking.c mongocrypt-opts.c mongocrypt-status.c mongocrypt-traverse-util.c mongocrypt-util.c"
463+
PHP_MONGODB_MONGOCRYPT_SOURCES="mc-efc.c mc-fle2-encryption-placeholder.c mc-fle2-find-equality-payload.c mc-fle2-insert-update-payload.c mc-fle2-payload-ieev.c mc-fle2-payload-uev.c mc-tokens.c mongocrypt-binary.c mongocrypt-buffer.c mongocrypt.c mongocrypt-cache.c mongocrypt-cache-collinfo.c mongocrypt-cache-key.c mongocrypt-cache-oauth.c mongocrypt-ciphertext.c mongocrypt-crypto.c mongocrypt-ctx.c mongocrypt-ctx-datakey.c mongocrypt-ctx-decrypt.c mongocrypt-ctx-encrypt.c mongocrypt-ctx-rewrap-many-datakey.c mongocrypt-endpoint.c mongocrypt-kek.c mongocrypt-key-broker.c mongocrypt-key.c mongocrypt-kms-ctx.c mongocrypt-log.c mongocrypt-marking.c mongocrypt-opts.c mongocrypt-status.c mongocrypt-traverse-util.c mongocrypt-util.c"
464464

465465
dnl Generated with: find src/libmongocrypt/src/crypto -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' '
466466
PHP_MONGODB_MONGOCRYPT_CRYPTO_SOURCES="cng.c commoncrypto.c libcrypto.c none.c"

config.w32

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ if (PHP_MONGODB != "no") {
267267
if (PHP_MONGODB_CLIENT_SIDE_ENCRYPTION != "no" && mongoc_ssl_found) {
268268
mongoc_opts.MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION = 1;
269269

270-
ADD_FLAG("CFLAGS_MONGODB", "/D KMS_MESSAGE_LITTLE_ENDIAN=1 /D MLIB_USER=1");
270+
ADD_FLAG("CFLAGS_MONGODB", "/D KMS_MESSAGE_LITTLE_ENDIAN=1 /D MONGOCRYPT_LITTLE_ENDIAN=1 /D MLIB_USER=1");
271271
ADD_FLAG("CFLAGS_MONGODB", "/I" + configure_module_dirname + "/src/libmongocrypt/src");
272272
ADD_FLAG("CFLAGS_MONGODB", "/I" + configure_module_dirname + "/src/libmongocrypt/kms-message/src");
273273
ADD_FLAG("CFLAGS_MONGODB", "/I" + configure_module_dirname + "/src/libmongocrypt-compat");
@@ -283,7 +283,7 @@ if (PHP_MONGODB != "no") {
283283
};
284284

285285
// Generated with: find src/libmongocrypt/src -maxdepth 1 -name '*.c' -print0 | cut -sz -d / -f 4- | sort -dz | tr '\000' ' '
286-
var PHP_MONGODB_MONGOCRYPT_SOURCES="mongocrypt-binary.c mongocrypt-buffer.c mongocrypt.c mongocrypt-cache.c mongocrypt-cache-collinfo.c mongocrypt-cache-key.c mongocrypt-cache-oauth.c mongocrypt-ciphertext.c mongocrypt-crypto.c mongocrypt-ctx.c mongocrypt-ctx-datakey.c mongocrypt-ctx-decrypt.c mongocrypt-ctx-encrypt.c mongocrypt-endpoint.c mongocrypt-kek.c mongocrypt-key-broker.c mongocrypt-key.c mongocrypt-kms-ctx.c mongocrypt-log.c mongocrypt-marking.c mongocrypt-opts.c mongocrypt-status.c mongocrypt-traverse-util.c mongocrypt-util.c";
286+
var PHP_MONGODB_MONGOCRYPT_SOURCES="mc-efc.c mc-fle2-encryption-placeholder.c mc-fle2-find-equality-payload.c mc-fle2-insert-update-payload.c mc-fle2-payload-ieev.c mc-fle2-payload-uev.c mc-tokens.c mongocrypt-binary.c mongocrypt-buffer.c mongocrypt.c mongocrypt-cache.c mongocrypt-cache-collinfo.c mongocrypt-cache-key.c mongocrypt-cache-oauth.c mongocrypt-ciphertext.c mongocrypt-crypto.c mongocrypt-ctx.c mongocrypt-ctx-datakey.c mongocrypt-ctx-decrypt.c mongocrypt-ctx-encrypt.c mongocrypt-ctx-rewrap-many-datakey.c mongocrypt-endpoint.c mongocrypt-kek.c mongocrypt-key-broker.c mongocrypt-key.c mongocrypt-kms-ctx.c mongocrypt-log.c mongocrypt-marking.c mongocrypt-opts.c mongocrypt-status.c mongocrypt-traverse-util.c mongocrypt-util.c";
287287

288288
// Generated with: find src/libmongocrypt/src/crypto -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' '
289289
var PHP_MONGODB_MONGOCRYPT_CRYPTO_SOURCES="cng.c commoncrypto.c libcrypto.c none.c";
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
AC_C_BIGENDIAN
22
if test "x$ac_cv_c_bigendian" = "xyes"; then
3-
PHP_MONGODB_BUNDLED_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS -DKMS_MESSAGE_BIG_ENDIAN=1"
3+
PHP_MONGODB_BUNDLED_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS -DKMS_MESSAGE_BIG_ENDIAN=1 -DMONGOCRYPT_BIG_ENDIAN=1"
44
else
5-
PHP_MONGODB_BUNDLED_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS -DKMS_MESSAGE_LITTLE_ENDIAN=1"
5+
PHP_MONGODB_BUNDLED_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS -DKMS_MESSAGE_LITTLE_ENDIAN=1 -DMONGOCRYPT_LITTLE_ENDIAN=1"
66
fi

scripts/update-submodule-sources.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
'PHP_MONGODB_BSON_SOURCES' => 'src/libmongoc/src/libbson/src/bson',
99
'PHP_MONGODB_JSONSL_SOURCES' => 'src/libmongoc/src/libbson/src/jsonsl',
1010
'PHP_MONGODB_MONGOC_SOURCES' => 'src/libmongoc/src/libmongoc/src/mongoc',
11-
'PHP_MONGODB_ZLIB_SOURCES' => 'src/libmongoc/src/zlib-1.2.11',
11+
'PHP_MONGODB_ZLIB_SOURCES' => 'src/libmongoc/src/zlib-1.2.12',
1212
'PHP_MONGODB_MONGOCRYPT_SOURCES' => 'src/libmongocrypt/src',
1313
'PHP_MONGODB_MONGOCRYPT_CRYPTO_SOURCES' => 'src/libmongocrypt/src/crypto',
1414
'PHP_MONGODB_MONGOCRYPT_OS_POSIX_SOURCES' => 'src/libmongocrypt/src/os_posix',

src/LIBMONGOCRYPT_VERSION_CURRENT

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.3.2
1+
1.5.0-pre2+20220517git437fd3475e

src/LIBMONGOC_VERSION_CURRENT

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.11.1-20220427+gitba73833f18
1+
1.11.1-20220517+gitdddadc1048

src/MongoDB/BulkWrite.c

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ static bool php_phongo_bulkwrite_update_apply_options(bson_t* boptions, zval* zo
286286
return true;
287287
} /* }}} */
288288

289-
/* Applies options (including defaults) for an delete operation. */
289+
/* Applies options (including defaults) for a delete operation. */
290290
static bool php_phongo_bulkwrite_delete_apply_options(bson_t* boptions, zval* zoptions) /* {{{ */
291291
{
292292
int32_t limit = 0;
@@ -361,6 +361,20 @@ static PHP_METHOD(BulkWrite, __construct)
361361

362362
mongoc_bulk_operation_set_let(intern->bulk, intern->let);
363363
}
364+
365+
if (options && php_array_existsc(options, "comment")) {
366+
zval* value = php_array_fetch(options, "comment");
367+
368+
intern->comment = ecalloc(1, sizeof(bson_value_t));
369+
php_phongo_zval_to_bson_value(value, PHONGO_BSON_NONE, intern->comment);
370+
371+
if (EG(exception)) {
372+
/* Exception should already have been thrown */
373+
return;
374+
}
375+
376+
mongoc_bulk_operation_set_comment(intern->bulk, intern->comment);
377+
}
364378
} /* }}} */
365379

366380
/* {{{ proto mixed MongoDB\Driver\BulkWrite::insert(array|object $document)
@@ -602,6 +616,11 @@ static void php_phongo_bulkwrite_free_object(zend_object* object) /* {{{ */
602616
bson_clear(&intern->let);
603617
}
604618

619+
if (intern->comment) {
620+
bson_value_destroy(intern->comment);
621+
efree(intern->comment);
622+
}
623+
605624
if (intern->database) {
606625
efree(intern->database);
607626
}
@@ -656,6 +675,17 @@ static HashTable* php_phongo_bulkwrite_get_debug_info(phongo_compat_object_handl
656675
ADD_ASSOC_NULL_EX(&retval, "bypassDocumentValidation");
657676
}
658677

678+
if (intern->comment) {
679+
zval zv;
680+
681+
if (!php_phongo_bson_value_to_zval(intern->comment, &zv)) {
682+
zval_ptr_dtor(&zv);
683+
goto done;
684+
}
685+
686+
ADD_ASSOC_ZVAL_EX(&retval, "comment", &zv);
687+
}
688+
659689
if (intern->let) {
660690
zval zv;
661691

src/MongoDB/Query.c

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,30 @@ static bool php_phongo_query_opts_append_document(bson_t* opts, const char* opts
8484
return true;
8585
} /* }}} */
8686

87+
/* Appends an arbitrary BSON value for the given opts document and key. Returns
88+
* true on success; otherwise, false is returned and an exception is thrown. */
89+
static bool php_phongo_query_opts_append_value(bson_t* opts, const char* opts_key, zval* zarr, const char* zarr_key) /* {{{ */
90+
{
91+
bson_value_t value = { 0 };
92+
93+
php_phongo_zval_to_bson_value(php_array_fetch(zarr, zarr_key), PHONGO_BSON_NONE, &value);
94+
95+
if (EG(exception)) {
96+
/* Exception should already have been thrown */
97+
bson_value_destroy(&value);
98+
return false;
99+
}
100+
101+
if (!BSON_APPEND_VALUE(opts, opts_key, &value)) {
102+
phongo_throw_exception(PHONGO_ERROR_INVALID_ARGUMENT, "Error appending \"%s\" option", opts_key);
103+
bson_value_destroy(&value);
104+
return false;
105+
}
106+
107+
bson_value_destroy(&value);
108+
return true;
109+
} /* }}} */
110+
87111
#define PHONGO_QUERY_OPT_BOOL_EX(opt, zarr, key, deprecated) \
88112
if ((zarr) && php_array_existsc((zarr), (key))) { \
89113
if ((deprecated)) { \
@@ -98,6 +122,13 @@ static bool php_phongo_query_opts_append_document(bson_t* opts, const char* opts
98122
#define PHONGO_QUERY_OPT_BOOL(opt, zarr, key) PHONGO_QUERY_OPT_BOOL_EX((opt), (zarr), (key), 0)
99123
#define PHONGO_QUERY_OPT_BOOL_DEPRECATED(opt, zarr, key) PHONGO_QUERY_OPT_BOOL_EX((opt), (zarr), (key), 1)
100124

125+
#define PHONGO_QUERY_OPT_BSON_VALUE(opt, zarr, key) \
126+
if ((zarr) && php_array_existsc((zarr), (key))) { \
127+
if (!php_phongo_query_opts_append_value(intern->opts, (opt), (zarr), (key))) { \
128+
return false; \
129+
} \
130+
}
131+
101132
#define PHONGO_QUERY_OPT_DOCUMENT(opt, zarr, key) \
102133
if ((zarr) && php_array_existsc((zarr), (key))) { \
103134
if (!php_phongo_query_opts_append_document(intern->opts, (opt), (zarr), (key))) { \
@@ -296,8 +327,8 @@ static bool php_phongo_query_init(php_phongo_query_t* intern, zval* filter, zval
296327
PHONGO_QUERY_OPT_BOOL("awaitData", options, "awaitData");
297328
PHONGO_QUERY_OPT_INT64("batchSize", options, "batchSize");
298329
PHONGO_QUERY_OPT_DOCUMENT("collation", options, "collation");
299-
PHONGO_QUERY_OPT_STRING("comment", options, "comment")
300-
else PHONGO_QUERY_OPT_STRING("comment", modifiers, "$comment");
330+
PHONGO_QUERY_OPT_BSON_VALUE("comment", options, "comment")
331+
else PHONGO_QUERY_OPT_BSON_VALUE("comment", modifiers, "$comment");
301332
PHONGO_QUERY_OPT_BOOL("exhaust", options, "exhaust");
302333
PHONGO_QUERY_OPT_DOCUMENT("let", options, "let");
303334
PHONGO_QUERY_OPT_DOCUMENT("max", options, "max")
@@ -346,9 +377,14 @@ static bool php_phongo_query_init(php_phongo_query_t* intern, zval* filter, zval
346377
return true;
347378
} /* }}} */
348379

380+
#undef PHONGO_QUERY_OPT_BOOL_EX
349381
#undef PHONGO_QUERY_OPT_BOOL
382+
#undef PHONGO_QUERY_OPT_BOOL_DEPRECATED
383+
#undef PHONGO_QUERY_OPT_BSON_VALUE
350384
#undef PHONGO_QUERY_OPT_DOCUMENT
385+
#undef PHONGO_QUERY_OPT_INT64_EX
351386
#undef PHONGO_QUERY_OPT_INT64
387+
#undef PHONGO_QUERY_OPT_INT64_DEPRECATED
352388
#undef PHONGO_QUERY_OPT_STRING
353389

354390
/* {{{ proto void MongoDB\Driver\Query::__construct(array|object $filter[, array $options = array()])

src/libmongoc

Submodule libmongoc updated 368 files

0 commit comments

Comments
 (0)