Skip to content

Commit f609ac7

Browse files
committed
PHPC-1037: Upgrade bundled libmongoc and libbson to 1.9
1 parent 8c85f0b commit f609ac7

13 files changed

+48
-35
lines changed

config.m4

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ if test "$MONGODB" != "no"; then
280280
PHP_MONGODB_MONGOC_CFLAGS="$STD_CFLAGS -DMONGOC_COMPILATION -DMONGOC_TRACE"
281281

282282
dnl Generated with: find src/libmongoc/src/mongoc -name '*.c' -print0 | cut -sz -d / -f 5- | sort -z | tr '\000' ' '
283-
PHP_MONGODB_MONGOC_SOURCES="mongoc-apm.c mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-b64.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-client.c mongoc-client-pool.c mongoc-cluster.c mongoc-cluster-cyrus.c mongoc-cluster-gssapi.c mongoc-cluster-sasl.c mongoc-cluster-sspi.c mongoc-cmd.c mongoc-collection.c mongoc-compression.c mongoc-counters.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-cursorid.c mongoc-cursor-transform.c mongoc-cyrus.c mongoc-database.c mongoc-find-and-modify.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-list.c mongoc-gridfs-file-page.c mongoc-gssapi.c mongoc-handshake.c mongoc-host-list.c mongoc-index.c mongoc-init.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-openssl.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-description.c mongoc-server-stream.c mongoc-set.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-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-topology.c mongoc-topology-description-apm.c mongoc-topology-description.c mongoc-topology-scanner.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-concern.c"
283+
PHP_MONGODB_MONGOC_SOURCES="mongoc-apm.c mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-b64.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-change-stream.c mongoc-client.c mongoc-client-pool.c mongoc-client-session.c mongoc-cluster.c mongoc-cluster-cyrus.c mongoc-cluster-gssapi.c mongoc-cluster-sasl.c mongoc-cluster-sspi.c mongoc-cmd.c mongoc-collection.c mongoc-compression.c mongoc-counters.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-cursorid.c mongoc-cursor-transform.c mongoc-cyrus.c mongoc-database.c mongoc-find-and-modify.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-list.c mongoc-gridfs-file-page.c mongoc-gssapi.c mongoc-handshake.c mongoc-host-list.c mongoc-index.c mongoc-init.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-openssl.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-description.c mongoc-server-stream.c mongoc-set.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-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-topology.c mongoc-topology-description-apm.c mongoc-topology-description.c mongoc-topology-scanner.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-command-legacy.c mongoc-write-concern.c"
284284

285285
PHP_ADD_SOURCES_X(PHP_EXT_DIR(mongodb)[src/libmongoc/src/mongoc], $PHP_MONGODB_MONGOC_SOURCES, $PHP_MONGODB_MONGOC_CFLAGS, shared_objects_mongodb, yes)
286286

@@ -374,6 +374,7 @@ if test "$MONGODB" != "no"; then
374374

375375
m4_include(src/libmongoc/build/autotools/m4/ax_prototype.m4)
376376
m4_include(src/libmongoc/build/autotools/CheckCompiler.m4)
377+
m4_include(src/libmongoc/build/autotools/FindResSearch.m4)
377378
m4_include(src/libmongoc/build/autotools/WeakSymbols.m4)
378379
m4_include(src/libmongoc/build/autotools/m4/ax_pthread.m4)
379380
AX_PTHREAD

config.w32

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ if (PHP_MONGODB != "no") {
8080
var PHP_MONGODB_JSONSL_SOURCES="jsonsl.c";
8181

8282
// Generated with: find src/libmongoc/src/mongoc -name '*.c' -print0 | cut -sz -d / -f 4- | sort -z | tr '\000' ' '
83-
var PHP_MONGODB_MONGOC_SOURCES="mongoc-apm.c mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-b64.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-client.c mongoc-client-pool.c mongoc-cluster.c mongoc-cluster-cyrus.c mongoc-cluster-gssapi.c mongoc-cluster-sasl.c mongoc-cluster-sspi.c mongoc-cmd.c mongoc-collection.c mongoc-compression.c mongoc-counters.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-cursorid.c mongoc-cursor-transform.c mongoc-cyrus.c mongoc-database.c mongoc-find-and-modify.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-list.c mongoc-gridfs-file-page.c mongoc-gssapi.c mongoc-handshake.c mongoc-host-list.c mongoc-index.c mongoc-init.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-openssl.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-description.c mongoc-server-stream.c mongoc-set.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-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-topology.c mongoc-topology-description-apm.c mongoc-topology-description.c mongoc-topology-scanner.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-concern.c";
83+
var PHP_MONGODB_MONGOC_SOURCES="mongoc-apm.c mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-b64.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-change-stream.c mongoc-client.c mongoc-client-pool.c mongoc-client-session.c mongoc-cluster.c mongoc-cluster-cyrus.c mongoc-cluster-gssapi.c mongoc-cluster-sasl.c mongoc-cluster-sspi.c mongoc-cmd.c mongoc-collection.c mongoc-compression.c mongoc-counters.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-cursorid.c mongoc-cursor-transform.c mongoc-cyrus.c mongoc-database.c mongoc-find-and-modify.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-list.c mongoc-gridfs-file-page.c mongoc-gssapi.c mongoc-handshake.c mongoc-host-list.c mongoc-index.c mongoc-init.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-openssl.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-description.c mongoc-server-stream.c mongoc-set.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-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-topology.c mongoc-topology-description-apm.c mongoc-topology-description.c mongoc-topology-scanner.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-command-legacy.c mongoc-write-concern.c";
8484

8585
EXTENSION("mongodb", "php_phongo.c phongo_compat.c", null, PHP_MONGODB_CFLAGS);
8686
ADD_SOURCES(configure_module_dirname + "/src", "bson.c bson-encode.c", "mongodb");

php_phongo.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,6 +1116,32 @@ static bool php_phongo_apply_options_to_uri(mongoc_uri_t *uri, bson_t *options T
11161116

11171117
continue;
11181118
}
1119+
1120+
if (!strcasecmp(key, MONGOC_URI_GSSAPISERVICENAME)) {
1121+
bson_t unused, properties = BSON_INITIALIZER;
1122+
1123+
if (mongoc_uri_get_mechanism_properties(uri, &unused)) {
1124+
phongo_throw_exception(PHONGO_ERROR_INVALID_ARGUMENT TSRMLS_CC, "authMechanismProperties SERVICE_NAME already set, ignoring \"%s\"", key);
1125+
return false;
1126+
}
1127+
1128+
if (!BSON_ITER_HOLDS_UTF8(&iter)) {
1129+
PHONGO_URI_INVALID_TYPE(iter, "string");
1130+
return false;
1131+
}
1132+
1133+
bson_append_utf8(&properties, "SERVICE_NAME", -1, bson_iter_utf8(&iter, NULL), -1);
1134+
1135+
if (!mongoc_uri_set_mechanism_properties(uri, &properties)) {
1136+
phongo_throw_exception(PHONGO_ERROR_INVALID_ARGUMENT TSRMLS_CC, "Failed to parse \"%s\" URI option", key);
1137+
bson_destroy(&properties);
1138+
return false;
1139+
}
1140+
1141+
bson_destroy(&properties);
1142+
1143+
continue;
1144+
}
11191145
}
11201146

11211147
return true;

src/libmongoc

Submodule libmongoc updated 399 files

tests/apm/overview.phpt

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ object(MongoDB\Driver\Monitoring\CommandStartedEvent)#%d (%d) {
4848
["command"]=>
4949
object(stdClass)#%d (%d) {
5050
["drop"]=>
51-
string(12) "apm_overview"
51+
string(12) "apm_overview"%A
5252
}
5353
["commandName"]=>
5454
string(4) "drop"
@@ -105,20 +105,7 @@ object(MongoDB\Driver\Monitoring\CommandStartedEvent)#%d (%d) {
105105
object(stdClass)#%d (%d) {
106106
}
107107
["ordered"]=>
108-
bool(false)
109-
["documents"]=>
110-
array(%d) {
111-
[0]=>
112-
object(stdClass)#%d (%d) {
113-
["decimal"]=>
114-
int(12345678)
115-
["_id"]=>
116-
object(MongoDB\BSON\ObjectId)#%d (%d) {
117-
["oid"]=>
118-
string(24) "%s"
119-
}
120-
}
121-
}
108+
bool(false)%A
122109
}
123110
["commandName"]=>
124111
string(6) "insert"
@@ -160,7 +147,7 @@ object(MongoDB\Driver\Monitoring\CommandStartedEvent)#%d (%d) {
160147
string(12) "apm_overview"
161148
["filter"]=>
162149
object(stdClass)#%d (%d) {
163-
}
150+
}%A
164151
}
165152
["commandName"]=>
166153
string(4) "find"

tests/bulk/bulkwrite-insert_error-004.phpt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ echo throws(function() use ($bulk) {
2222
?>
2323
===DONE===
2424
<?php exit(0); ?>
25-
--EXPECT--
25+
--EXPECTF--
2626
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
27-
legacy index document contains invalid key: empty key
27+
%s contains invalid key: empty key
2828

2929
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
30-
legacy index document contains invalid key: keys cannot begin with "$": "$x"
30+
%s contains invalid key: keys cannot begin with "$": "$x"
3131

3232
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
33-
legacy index document contains invalid key: corrupt BSON
33+
%s contains invalid key: corrupt BSON
3434
===DONE===

tests/manager/manager-ctor-auth_mechanism-001.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ MongoDB\Driver\Manager::__construct(): authMechanism option
44
<?php
55

66
$tests = [
7-
['mongodb://127.0.0.1/?authMechanism=MONGODB-X509', []],
8-
['mongodb://127.0.0.1/?authMechanism=GSSAPI', []],
7+
['mongodb://username@127.0.0.1/?authMechanism=MONGODB-X509', []],
8+
['mongodb://username@127.0.0.1/?authMechanism=GSSAPI', []],
99
[null, ['authMechanism' => 'MONGODB-X509']],
1010
[null, ['authMechanism' => 'GSSAPI']],
1111
];

tests/manager/manager-ctor-auth_mechanism-002.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ MongoDB\Driver\Manager::__construct(): authMechanismProperties option
44
<?php
55

66
$tests = [
7-
['mongodb://127.0.0.1/?authMechanism=GSSAPI&authMechanismProperties=CANONICALIZE_HOST_NAME:true,SERVICE_NAME:foo,SERVICE_REALM:bar', []],
7+
['mongodb://username@127.0.0.1/?authMechanism=GSSAPI&authMechanismProperties=CANONICALIZE_HOST_NAME:true,SERVICE_NAME:foo,SERVICE_REALM:bar', []],
88
[null, ['authMechanism' => 'GSSAPI', 'authMechanismProperties' => ['CANONICALIZE_HOST_NAME' => 'true', 'SERVICE_NAME' => 'foo', 'SERVICE_REALM' => 'bar']]],
99
// Options are case-insensitive
10-
['mongodb://127.0.0.1/?authMechanism=GSSAPI&authMechanismProperties=canonicalize_host_name:TRUE,service_name:foo,service_realm:bar', []],
10+
['mongodb://username@127.0.0.1/?authMechanism=GSSAPI&authMechanismProperties=canonicalize_host_name:TRUE,service_name:foo,service_realm:bar', []],
1111
[null, ['authMechanism' => 'GSSAPI', 'authMechanismProperties' => ['canonicalize_host_name' => 'TRUE', 'service_name' => 'foo', 'service_realm' => 'bar']]],
1212
// Boolean true "CANONICALIZE_HOST_NAME" value is converted to "true"
1313
[null, ['authMechanism' => 'GSSAPI', 'authMechanismProperties' => ['canonicalize_host_name' => true]]],

tests/manager/manager-ctor-read_preference-error-001.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ echo throws(function() {
4848
<?php exit(0); ?>
4949
--EXPECT--
5050
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
51-
Failed to parse MongoDB URI: 'mongodb://127.0.0.1/?readPreference=1'. Unsupported readPreference value [readPreference=1]..
51+
Failed to parse MongoDB URI: 'mongodb://127.0.0.1/?readPreference=1'. Unsupported readPreference value [readPreference=1].
5252
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
5353
Failed to parse MongoDB URI: 'mongodb://127.0.0.1/?readPreference=secondary&readPreferenceTags=invalid'. Unknown option or value for 'readPreferenceTags=invalid'.
5454
OK: Got MongoDB\Driver\Exception\InvalidArgumentException

tests/manager/manager-ctor-write_concern-error-005.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ Failed to parse MongoDB URI: 'mongodb://127.0.0.1/?journal=invalid'. Unknown opt
5858
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
5959
Expected boolean for "journal" URI option, string given
6060
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
61-
Failed to parse MongoDB URI: 'mongodb://127.0.0.1/?w=-1&journal=true'. Invalid writeConcern.
61+
Failed to parse MongoDB URI: 'mongodb://127.0.0.1/?w=-1&journal=true'. Journal conflicts with w value [w=-1].
6262
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
63-
Failed to parse MongoDB URI: 'mongodb://127.0.0.1/?w=0&journal=true'. Invalid writeConcern.
63+
Failed to parse MongoDB URI: 'mongodb://127.0.0.1/?w=0&journal=true'. Journal conflicts with w value [w=0].
6464
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
6565
Journal conflicts with w value: -1
6666
OK: Got MongoDB\Driver\Exception\InvalidArgumentException

tests/manager/manager-ctor_error-002.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ echo throws(function() {
1414
<?php exit(0); ?>
1515
--EXPECT--
1616
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
17-
Failed to parse MongoDB URI: 'not a valid connection string'. Invalid URI Schema, expecting 'mongodb://'.
17+
Failed to parse MongoDB URI: 'not a valid connection string'. Invalid URI Schema, expecting 'mongodb://' or 'mongodb+srv://'.
1818
===DONE===

tests/writeConcern/writeconcern-isdefault-001.phpt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ $tests = [
1414
new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY),
1515
// mongoc_uri_parse_option() ignores empty string for w
1616
(new MongoDB\Driver\Manager('mongodb://127.0.0.1/?w='))->getWriteConcern(),
17-
// Cannot test "w=-3" since libmongoc URI parsing expects integers >= -2
18-
(new MongoDB\Driver\Manager('mongodb://127.0.0.1/?w=-2'))->getWriteConcern(),
17+
// Cannot test "w=-3" since libmongoc URI parsing expects integers >= -1
18+
// Cannot test "w=-2" since libmongoc URI parsing expects integers >= -1, and throws an error otherwise
1919
(new MongoDB\Driver\Manager('mongodb://127.0.0.1/?w=-1'))->getWriteConcern(),
2020
(new MongoDB\Driver\Manager('mongodb://127.0.0.1/?w=0'))->getWriteConcern(),
2121
(new MongoDB\Driver\Manager('mongodb://127.0.0.1/?w=1'))->getWriteConcern(),
@@ -50,7 +50,6 @@ bool(false)
5050
bool(false)
5151
bool(false)
5252
bool(true)
53-
bool(true)
5453
bool(false)
5554
bool(false)
5655
bool(false)

0 commit comments

Comments
 (0)