Skip to content

Commit 49225e1

Browse files
bjoriderickr
authored andcommitted
PHPC-495: Upgrade bundled libbson and libmongoc to 1.3.0
1 parent 2a9981b commit 49225e1

File tree

9 files changed

+32
-57
lines changed

9 files changed

+32
-57
lines changed

config.m4

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ if test "$MONGODB" != "no"; then
235235
mongoc-cursor-transform.c \
236236
mongoc-cursor-cursorid.c \
237237
mongoc-database.c \
238+
mongoc-find-and-modify.c \
238239
mongoc-init.c \
239240
mongoc-gridfs.c \
240241
mongoc-gridfs-file.c \
@@ -246,13 +247,16 @@ if test "$MONGODB" != "no"; then
246247
mongoc-log.c \
247248
mongoc-matcher-op.c \
248249
mongoc-matcher.c \
250+
mongoc-memcmp.c \
249251
mongoc-opcode.c \
250252
mongoc-queue.c \
251253
mongoc-read-concern.c \
252254
mongoc-read-prefs.c \
255+
mongoc-read-concern.c \
253256
mongoc-rpc.c \
254257
mongoc-set.c \
255258
mongoc-server-description.c \
259+
mongoc-server-stream.c \
256260
mongoc-socket.c \
257261
mongoc-stream.c \
258262
mongoc-stream-buffered.c \
@@ -300,13 +304,13 @@ PHP_ARG_WITH(libbson, Use system libbson,
300304
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
301305
AC_MSG_CHECKING(for libbson)
302306
if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libbson-1.0; then
303-
if $PKG_CONFIG libbson-1.0 --atleast-version 1.2.0; then
307+
if $PKG_CONFIG libbson-1.0 --atleast-version 1.3.0; then
304308
LIBBSON_INC=`$PKG_CONFIG libbson-1.0 --cflags`
305309
LIBBSON_LIB=`$PKG_CONFIG libbson-1.0 --libs`
306310
LIBBSON_VER=`$PKG_CONFIG libbson-1.0 --modversion`
307311
AC_MSG_RESULT(version $LIBBSON_VER found)
308312
else
309-
AC_MSG_ERROR(system libbson must be upgraded to version >= 1.2.0)
313+
AC_MSG_ERROR(system libbson must be upgraded to version >= 1.3.0)
310314
fi
311315
else
312316
AC_MSG_ERROR(pkgconfig and libbson must be installed)
@@ -332,15 +336,15 @@ PHP_ARG_WITH(libmongoc, Use system libmongoc,
332336
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
333337
AC_MSG_CHECKING(for libmongoc)
334338
if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libmongoc-1.0 && $PKG_CONFIG --exists libmongoc-priv; then
335-
if $PKG_CONFIG libmongoc-1.0 --atleast-version 1.2.0; then
339+
if $PKG_CONFIG libmongoc-1.0 --atleast-version 1.3.0; then
336340
LIBMONGOC_INC=`$PKG_CONFIG libmongoc-priv --cflags`
337341
LIBMONGOC_LIB=`$PKG_CONFIG libmongoc-priv --libs`
338342
LIBMONGOC_VER=`$PKG_CONFIG libmongoc-priv --modversion`
339343
AC_MSG_RESULT(version $LIBMONGOC_VER found)
340344
CFLAGS="$CFLAGS -DMONGOC_I_AM_A_DRIVER"
341345

342346
else
343-
AC_MSG_ERROR(system libmongoc must be upgraded to version >= 1.2.0)
347+
AC_MSG_ERROR(system libmongoc must be upgraded to version >= 1.3.0)
344348
fi
345349
else
346350
AC_MSG_ERROR(pkgconfig and mongoc must be installed)
@@ -427,8 +431,7 @@ else
427431
AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 0)
428432
fi
429433

430-
AC_SUBST(MONGOC_HAVE_WEAK_SYMBOLS, 1)
431-
434+
m4_include(src/libmongoc/build/autotools/WeakSymbols.m4)
432435
m4_include(src/libmongoc/build/autotools/m4/ax_pthread.m4)
433436
AX_PTHREAD
434437

config.w32

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ if (PHP_MONGODB != "no") {
1515
ADD_SOURCES(configure_module_dirname + "/src/contrib/", "php-ssl.c", "mongodb");
1616
ADD_SOURCES(configure_module_dirname + "/src/libbson/src/yajl", "yajl_version.c yajl.c yajl_encode.c yajl_lex.c yajl_parser.c yajl_buf.c yajl_tree.c yajl_alloc.c yajl_gen.c", "mongodb");
1717
ADD_SOURCES(configure_module_dirname + "/src/libbson/src/bson", "bcon.c bson.c bson-atomic.c bson-clock.c bson-context.c bson-error.c bson-iter.c bson-iso8601.c bson-json.c bson-keys.c bson-md5.c bson-memory.c bson-oid.c bson-reader.c bson-string.c bson-timegm.c bson-utf8.c bson-value.c bson-version-functions.c bson-writer.c", "mongodb");
18-
ADD_SOURCES(configure_module_dirname + "/src/libmongoc/src/mongoc", "mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-b64.c mongoc-client.c mongoc-client-pool.c mongoc-cluster.c mongoc-collection.c mongoc-counters.c mongoc-cursor.c mongoc-cursor-array.c mongoc-cursor-transform.c mongoc-cursor-cursorid.c mongoc-database.c mongoc-init.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-page.c mongoc-gridfs-file-list.c mongoc-host-list.c mongoc-index.c mongoc-list.c mongoc-log.c mongoc-matcher-op.c mongoc-matcher.c mongoc-opcode.c mongoc-queue.c mongoc-read-prefs.c mongoc-rpc.c mongoc-set.c mongoc-server-description.c mongoc-socket.c mongoc-stream.c mongoc-stream-buffered.c mongoc-stream-file.c mongoc-stream-gridfs.c mongoc-stream-socket.c mongoc-topology.c mongoc-topology-scanner.c mongoc-topology-description.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-concern.c", "mongodb");
18+
ADD_SOURCES(configure_module_dirname + "/src/libmongoc/src/mongoc", "mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-b64.c mongoc-client.c mongoc-client-pool.c mongoc-cluster.c mongoc-collection.c mongoc-counters.c mongoc-cursor.c mongoc-cursor-array.c mongoc-cursor-transform.c mongoc-cursor-cursorid.c mongoc-database.c mongoc-find-and-modify.c mongoc-init.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-page.c mongoc-gridfs-file-list.c mongoc-host-list.c mongoc-index.c mongoc-list.c mongoc-log.c mongoc-matcher-op.c mongoc-matcher.c mongoc-memcmp.c mongoc-opcode.c mongoc-queue.c mongoc-read-prefs.c mongoc-read-concern.c mongoc-rpc.c mongoc-set.c mongoc-server-description.c mongoc-server-stream.c mongoc-socket.c mongoc-stream.c mongoc-stream-buffered.c mongoc-stream-file.c mongoc-stream-gridfs.c mongoc-stream-socket.c mongoc-topology.c mongoc-topology-scanner.c mongoc-topology-description.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-concern.c", "mongodb");
1919
ADD_SOURCES(configure_module_dirname + "/src/libmongoc/src/mongoc", "mongoc-rand.c mongoc-scram.c mongoc-stream-tls.c mongoc-ssl.c", "mongodb");
2020
ADD_SOURCES(configure_module_dirname + "/src/libmongoc/src/mongoc", "mongoc-sasl.c", "mongodb");
2121

php_phongo.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ int phongo_execute_command(mongoc_client_t *client, const char *db, const bson_t
650650

651651
cid = cursor->iface_data;
652652
cid->in_batch = true;
653+
bson_destroy (&empty);
653654

654655
while (bson_iter_next(&child)) {
655656
if (BSON_ITER_IS_KEY(&child, "id")) {
@@ -661,7 +662,7 @@ int phongo_execute_command(mongoc_client_t *client, const char *db, const bson_t
661662
bson_strncpy(cursor->ns, ns, sizeof cursor->ns);
662663
} else if (BSON_ITER_IS_KEY(&child, "firstBatch")) {
663664
if (BSON_ITER_HOLDS_ARRAY(&child) && bson_iter_recurse(&child, &cid->batch_iter)) {
664-
cid->in_reader = true;
665+
cid->in_batch = true;
665666
}
666667
}
667668
}
@@ -920,11 +921,6 @@ bool phongo_stream_socket_check_closed(mongoc_stream_t *stream) /* {{{ */
920921
return PHP_STREAM_OPTION_RETURN_OK != php_stream_set_option(base_stream->stream, PHP_STREAM_OPTION_CHECK_LIVENESS, 0, NULL);
921922
} /* }}} */
922923

923-
mongoc_stream_t* phongo_stream_get_base_stream(mongoc_stream_t *stream) /* {{{ */
924-
{
925-
return (mongoc_stream_t *) stream;
926-
} /* }}} */
927-
928924
ssize_t phongo_stream_poll (mongoc_stream_poll_t *streams, size_t nstreams, int32_t timeout) /* {{{ */
929925
{
930926
php_pollfd *fds = NULL;
@@ -1175,7 +1171,6 @@ mongoc_stream_t* phongo_stream_initiator(const mongoc_uri_t *uri, const mongoc_h
11751171
base_stream->vtable.readv = phongo_stream_readv;
11761172
base_stream->vtable.setsockopt = phongo_stream_setsockopt;
11771173
base_stream->vtable.check_closed = phongo_stream_socket_check_closed;
1178-
base_stream->vtable.get_base_stream = phongo_stream_get_base_stream;
11791174
base_stream->vtable.poll = phongo_stream_poll;
11801175

11811176
if (host->family != AF_UNIX) {

src/BSON/Javascript.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ PHP_METHOD(Javascript, __construct)
7373
}
7474

7575
php_phongo_new_javascript_from_javascript_and_scope(0, getThis(), javascript, javascript_len, &scope TSRMLS_CC);
76+
bson_destroy(&scope);
7677
}
7778
/* }}} */
7879

src/MongoDB/Server.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -481,16 +481,24 @@ static int php_phongo_server_compare_objects(zval *o1, zval *o2 TSRMLS_DC) /* {{
481481
{
482482
php_phongo_server_t *intern1;
483483
php_phongo_server_t *intern2;
484+
bson_error_t error1;
485+
bson_error_t error2;
484486
mongoc_server_description_t *sd1, *sd2;
485487

486488
intern1 = (php_phongo_server_t *)zend_object_store_get_object(o1 TSRMLS_CC);
487489
intern2 = (php_phongo_server_t *)zend_object_store_get_object(o2 TSRMLS_CC);
488490

489-
sd1 = mongoc_topology_description_server_by_id(&intern1->client->topology->description, intern1->server_id, NULL);
490-
sd2 = mongoc_topology_description_server_by_id(&intern2->client->topology->description, intern2->server_id, NULL);
491+
sd1 = mongoc_topology_description_server_by_id(&intern1->client->topology->description, intern1->server_id, &error1);
492+
sd2 = mongoc_topology_description_server_by_id(&intern2->client->topology->description, intern2->server_id, &error2);
491493

492494
if (!sd1 || !sd2) {
493-
phongo_throw_exception(PHONGO_ERROR_RUNTIME TSRMLS_CC, "%s", "Failed to get server description, server likely gone");
495+
if (!sd1 && !sd2) {
496+
phongo_throw_exception(PHONGO_ERROR_RUNTIME TSRMLS_CC, "%s and %s", error1.message, error2.message);
497+
} else if (!sd1) {
498+
phongo_throw_exception(PHONGO_ERROR_RUNTIME TSRMLS_CC, "%s", error1.message);
499+
} else {
500+
phongo_throw_exception(PHONGO_ERROR_RUNTIME TSRMLS_CC, "%s", error2.message);
501+
}
494502
return 0;
495503
}
496504

tests/manager/manager-executeCommand-001.phpt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ object(MongoDB\Driver\Command)#%d (1) {
3838
bool(true)
3939
object(MongoDB\Driver\Cursor)#%d (%d) {
4040
["cursor"]=>
41-
array(19) {
41+
array(%d) {
4242
["stamp"]=>
4343
int(0)
4444
["is_command"]=>
@@ -47,14 +47,10 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
4747
bool(true)
4848
["done"]=>
4949
bool(false)
50-
["failed"]=>
51-
bool(false)
5250
["end_of_event"]=>
5351
bool(false)
5452
["in_exhaust"]=>
5553
bool(false)
56-
["redir_primary"]=>
57-
bool(false)
5854
["has_fields"]=>
5955
bool(false)
6056
["query"]=>

tests/manager/manager-executeQuery-001.phpt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ var_dump(iterator_to_array($qr));
3636
bool(true)
3737
object(MongoDB\Driver\Cursor)#%d (%d) {
3838
["cursor"]=>
39-
array(19) {
39+
array(%d) {
4040
["stamp"]=>
4141
int(0)
4242
["is_command"]=>
@@ -45,14 +45,10 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
4545
bool(true)
4646
["done"]=>
4747
bool(false)
48-
["failed"]=>
49-
bool(false)
5048
["end_of_event"]=>
5149
bool(false)
5250
["in_exhaust"]=>
5351
bool(false)
54-
["redir_primary"]=>
55-
bool(false)
5652
["has_fields"]=>
5753
bool(true)
5854
["query"]=>

tests/readPreference/bug0146.phpt

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ foreach($rps as $r) {
3232
--EXPECTF--
3333
object(MongoDB\Driver\Cursor)#%d (%d) {
3434
["cursor"]=>
35-
array(18) {
35+
array(%d) {
3636
["stamp"]=>
3737
int(0)
3838
["is_command"]=>
@@ -41,14 +41,10 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
4141
bool(true)
4242
["done"]=>
4343
bool(true)
44-
["failed"]=>
45-
bool(false)
4644
["end_of_event"]=>
4745
bool(true)
4846
["in_exhaust"]=>
4947
bool(false)
50-
["redir_primary"]=>
51-
bool(false)
5248
["has_fields"]=>
5349
bool(false)
5450
["query"]=>
@@ -88,7 +84,7 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
8884
}
8985
object(MongoDB\Driver\Cursor)#%d (%d) {
9086
["cursor"]=>
91-
array(18) {
87+
array(%d) {
9288
["stamp"]=>
9389
int(0)
9490
["is_command"]=>
@@ -97,14 +93,10 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
9793
bool(true)
9894
["done"]=>
9995
bool(true)
100-
["failed"]=>
101-
bool(false)
10296
["end_of_event"]=>
10397
bool(true)
10498
["in_exhaust"]=>
10599
bool(false)
106-
["redir_primary"]=>
107-
bool(false)
108100
["has_fields"]=>
109101
bool(false)
110102
["query"]=>
@@ -144,7 +136,7 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
144136
}
145137
object(MongoDB\Driver\Cursor)#%d (%d) {
146138
["cursor"]=>
147-
array(18) {
139+
array(%d) {
148140
["stamp"]=>
149141
int(0)
150142
["is_command"]=>
@@ -153,14 +145,10 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
153145
bool(true)
154146
["done"]=>
155147
bool(true)
156-
["failed"]=>
157-
bool(false)
158148
["end_of_event"]=>
159149
bool(true)
160150
["in_exhaust"]=>
161151
bool(false)
162-
["redir_primary"]=>
163-
bool(false)
164152
["has_fields"]=>
165153
bool(false)
166154
["query"]=>
@@ -200,7 +188,7 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
200188
}
201189
object(MongoDB\Driver\Cursor)#%d (%d) {
202190
["cursor"]=>
203-
array(18) {
191+
array(%d) {
204192
["stamp"]=>
205193
int(0)
206194
["is_command"]=>
@@ -209,14 +197,10 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
209197
bool(true)
210198
["done"]=>
211199
bool(true)
212-
["failed"]=>
213-
bool(false)
214200
["end_of_event"]=>
215201
bool(true)
216202
["in_exhaust"]=>
217203
bool(false)
218-
["redir_primary"]=>
219-
bool(false)
220204
["has_fields"]=>
221205
bool(false)
222206
["query"]=>
@@ -256,7 +240,7 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
256240
}
257241
object(MongoDB\Driver\Cursor)#%d (%d) {
258242
["cursor"]=>
259-
array(18) {
243+
array(%d) {
260244
["stamp"]=>
261245
int(0)
262246
["is_command"]=>
@@ -265,14 +249,10 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
265249
bool(true)
266250
["done"]=>
267251
bool(true)
268-
["failed"]=>
269-
bool(false)
270252
["end_of_event"]=>
271253
bool(true)
272254
["in_exhaust"]=>
273255
bool(false)
274-
["redir_primary"]=>
275-
bool(false)
276256
["has_fields"]=>
277257
bool(false)
278258
["query"]=>

tests/server/server-executeCommand-001.phpt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ var_dump($server == $result->getServer());
2727
bool(true)
2828
object(MongoDB\Driver\Cursor)#%d (%d) {
2929
["cursor"]=>
30-
array(19) {
30+
array(%d) {
3131
["stamp"]=>
3232
int(0)
3333
["is_command"]=>
@@ -36,14 +36,10 @@ object(MongoDB\Driver\Cursor)#%d (%d) {
3636
bool(true)
3737
["done"]=>
3838
bool(false)
39-
["failed"]=>
40-
bool(false)
4139
["end_of_event"]=>
4240
bool(false)
4341
["in_exhaust"]=>
4442
bool(false)
45-
["redir_primary"]=>
46-
bool(false)
4743
["has_fields"]=>
4844
bool(false)
4945
["query"]=>

0 commit comments

Comments
 (0)