From 9ea03e98f6299d964c1d02d99ff06c93f0a7363b Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Wed, 18 Sep 2024 12:27:25 -0400 Subject: [PATCH 1/3] PHPC-1021: Remove support for ReadPreference integer modes This removes the deprecated integer constants, constructor support, and getMode(). Error-checking in php_phongo_readpreference_get_mode_string() has also been removed. ReadPreference only uses mongoc_read_prefs_new() internally, and we should not need to worry about libmongoc feeding us mongoc_read_prefs_t with an invalid mode. --- src/MongoDB/ReadPreference.c | 99 +++++-------------- src/MongoDB/ReadPreference.stub.php | 40 +------- src/MongoDB/ReadPreference_arginfo.h | 38 +------ .../readpreference-constants-002.phpt | 33 ------- .../readpreference-ctor-004.phpt | 82 --------------- .../readpreference-ctor_error-005.phpt | 18 ---- .../readpreference-ctor_error-006.phpt | 18 ---- .../readpreference-getMode-001.phpt | 37 ------- 8 files changed, 26 insertions(+), 339 deletions(-) delete mode 100644 tests/readPreference/readpreference-constants-002.phpt delete mode 100644 tests/readPreference/readpreference-ctor-004.phpt delete mode 100644 tests/readPreference/readpreference-ctor_error-005.phpt delete mode 100644 tests/readPreference/readpreference-ctor_error-006.phpt delete mode 100644 tests/readPreference/readpreference-getMode-001.phpt diff --git a/src/MongoDB/ReadPreference.c b/src/MongoDB/ReadPreference.c index c2c06b295..430ec274b 100644 --- a/src/MongoDB/ReadPreference.c +++ b/src/MongoDB/ReadPreference.c @@ -153,9 +153,9 @@ static bool php_phongo_readpreference_init_from_hash(php_phongo_readpreference_t return false; } -static const char* php_phongo_readpreference_get_mode_string(mongoc_read_mode_t mode) +static const char* php_phongo_readpreference_get_mode_string(const mongoc_read_prefs_t* read_prefs) { - switch (mode) { + switch (mongoc_read_prefs_get_mode(read_prefs)) { case MONGOC_READ_PRIMARY: return PHONGO_READ_PRIMARY; case MONGOC_READ_PRIMARY_PREFERRED: @@ -167,19 +167,15 @@ static const char* php_phongo_readpreference_get_mode_string(mongoc_read_mode_t case MONGOC_READ_NEAREST: return PHONGO_READ_NEAREST; default: - /* Should never happen, but if it does: exception */ - phongo_throw_exception(PHONGO_ERROR_LOGIC, "Mode '%d' should never have been passed to php_phongo_readpreference_get_mode_string, please file a bug report", mode); - break; + return ""; } - - return NULL; } /* Constructs a new ReadPreference */ static PHP_METHOD(MongoDB_Driver_ReadPreference, __construct) { php_phongo_readpreference_t* intern; - zval* mode; + zend_string* mode; zval* tagSets = NULL; zval* options = NULL; @@ -188,44 +184,24 @@ static PHP_METHOD(MongoDB_Driver_ReadPreference, __construct) /* Separate the tagSets zval, since we may end up modifying it in * php_phongo_read_preference_prep_tagsets() below. */ PHONGO_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_ZVAL(mode) + Z_PARAM_STR(mode) Z_PARAM_OPTIONAL Z_PARAM_ARRAY_EX(tagSets, 1, 1) Z_PARAM_ARRAY_OR_NULL(options) PHONGO_PARSE_PARAMETERS_END(); - if (Z_TYPE_P(mode) == IS_LONG) { - php_error_docref(NULL, E_DEPRECATED, "Passing an integer mode to \"MongoDB\\Driver\\ReadPreference::__construct\" is deprecated and will be removed in a future release."); - - switch (Z_LVAL_P(mode)) { - case MONGOC_READ_PRIMARY: - case MONGOC_READ_SECONDARY: - case MONGOC_READ_PRIMARY_PREFERRED: - case MONGOC_READ_SECONDARY_PREFERRED: - case MONGOC_READ_NEAREST: - intern->read_preference = mongoc_read_prefs_new(Z_LVAL_P(mode)); - break; - default: - phongo_throw_exception(PHONGO_ERROR_INVALID_ARGUMENT, "Invalid mode: %" PHONGO_LONG_FORMAT, Z_LVAL_P(mode)); - return; - } - } else if (Z_TYPE_P(mode) == IS_STRING) { - if (strcasecmp(Z_STRVAL_P(mode), PHONGO_READ_PRIMARY) == 0) { - intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_PRIMARY); - } else if (strcasecmp(Z_STRVAL_P(mode), PHONGO_READ_PRIMARY_PREFERRED) == 0) { - intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_PRIMARY_PREFERRED); - } else if (strcasecmp(Z_STRVAL_P(mode), PHONGO_READ_SECONDARY) == 0) { - intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_SECONDARY); - } else if (strcasecmp(Z_STRVAL_P(mode), PHONGO_READ_SECONDARY_PREFERRED) == 0) { - intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_SECONDARY_PREFERRED); - } else if (strcasecmp(Z_STRVAL_P(mode), PHONGO_READ_NEAREST) == 0) { - intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_NEAREST); - } else { - phongo_throw_exception(PHONGO_ERROR_INVALID_ARGUMENT, "Invalid mode: '%s'", Z_STRVAL_P(mode)); - return; - } + if (zend_string_equals_literal_ci(mode, PHONGO_READ_PRIMARY)) { + intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_PRIMARY); + } else if (zend_string_equals_literal_ci(mode, PHONGO_READ_PRIMARY_PREFERRED)) { + intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_PRIMARY_PREFERRED); + } else if (zend_string_equals_literal_ci(mode, PHONGO_READ_SECONDARY)) { + intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_SECONDARY); + } else if (zend_string_equals_literal_ci(mode, PHONGO_READ_SECONDARY_PREFERRED)) { + intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_SECONDARY_PREFERRED); + } else if (zend_string_equals_literal_ci(mode, PHONGO_READ_NEAREST)) { + intern->read_preference = mongoc_read_prefs_new(MONGOC_READ_NEAREST); } else { - phongo_throw_exception(PHONGO_ERROR_INVALID_ARGUMENT, "Expected mode to be integer or string, %s given", PHONGO_ZVAL_CLASS_OR_TYPE_NAME_P(mode)); + phongo_throw_exception(PHONGO_ERROR_INVALID_ARGUMENT, "Invalid mode: '%s'", ZSTR_VAL(mode)); return; } @@ -366,35 +342,16 @@ static PHP_METHOD(MongoDB_Driver_ReadPreference, getMaxStalenessSeconds) RETURN_LONG(mongoc_read_prefs_get_max_staleness_seconds(intern->read_preference)); } -/* Returns the ReadPreference mode */ -static PHP_METHOD(MongoDB_Driver_ReadPreference, getMode) -{ - php_phongo_readpreference_t* intern; - - intern = Z_READPREFERENCE_OBJ_P(getThis()); - - PHONGO_PARSE_PARAMETERS_NONE(); - - RETURN_LONG(mongoc_read_prefs_get_mode(intern->read_preference)); -} - /* Returns the ReadPreference mode as string */ static PHP_METHOD(MongoDB_Driver_ReadPreference, getModeString) { php_phongo_readpreference_t* intern; - const char* mode_string; intern = Z_READPREFERENCE_OBJ_P(getThis()); PHONGO_PARSE_PARAMETERS_NONE(); - mode_string = php_phongo_readpreference_get_mode_string(mongoc_read_prefs_get_mode(intern->read_preference)); - if (!mode_string) { - /* Exception already thrown */ - return; - } - - RETURN_STRING(mode_string); + RETURN_STRING(php_phongo_readpreference_get_mode_string(intern->read_preference)); } /* Returns the ReadPreference tag sets */ @@ -429,10 +386,8 @@ static HashTable* php_phongo_readpreference_get_properties_hash(zend_object* obj { php_phongo_readpreference_t* intern; HashTable* props; - const char* modeString = NULL; const bson_t* tags; const bson_t* hedge; - mongoc_read_mode_t mode; intern = Z_OBJ_READPREFERENCE(object); @@ -442,15 +397,13 @@ static HashTable* php_phongo_readpreference_get_properties_hash(zend_object* obj return props; } - tags = mongoc_read_prefs_get_tags(intern->read_preference); - mode = mongoc_read_prefs_get_mode(intern->read_preference); - modeString = php_phongo_readpreference_get_mode_string(mode); - hedge = mongoc_read_prefs_get_hedge(intern->read_preference); + tags = mongoc_read_prefs_get_tags(intern->read_preference); + hedge = mongoc_read_prefs_get_hedge(intern->read_preference); - if (modeString) { + { zval z_mode; - ZVAL_STRING(&z_mode, modeString); + ZVAL_STRING(&z_mode, php_phongo_readpreference_get_mode_string(intern->read_preference)); zend_hash_str_update(props, "mode", sizeof("mode") - 1, &z_mode); } @@ -510,12 +463,10 @@ static PHP_METHOD(MongoDB_Driver_ReadPreference, serialize) php_phongo_readpreference_t* intern; zval retval; php_serialize_data_t var_hash; - smart_str buf = { 0 }; - const char* modeString = NULL; + smart_str buf = { 0 }; const bson_t* tags; const bson_t* hedge; int64_t maxStalenessSeconds; - mongoc_read_mode_t mode; intern = Z_READPREFERENCE_OBJ_P(getThis()); @@ -526,16 +477,12 @@ static PHP_METHOD(MongoDB_Driver_ReadPreference, serialize) } tags = mongoc_read_prefs_get_tags(intern->read_preference); - mode = mongoc_read_prefs_get_mode(intern->read_preference); - modeString = php_phongo_readpreference_get_mode_string(mode); maxStalenessSeconds = mongoc_read_prefs_get_max_staleness_seconds(intern->read_preference); hedge = mongoc_read_prefs_get_hedge(intern->read_preference); array_init_size(&retval, 4); - if (modeString) { - ADD_ASSOC_STRING(&retval, "mode", modeString); - } + ADD_ASSOC_STRING(&retval, "mode", php_phongo_readpreference_get_mode_string(intern->read_preference)); if (!bson_empty0(tags)) { php_phongo_bson_state state; diff --git a/src/MongoDB/ReadPreference.stub.php b/src/MongoDB/ReadPreference.stub.php index 20a26c283..6b23579f9 100644 --- a/src/MongoDB/ReadPreference.stub.php +++ b/src/MongoDB/ReadPreference.stub.php @@ -9,41 +9,6 @@ final class ReadPreference implements \MongoDB\BSON\Serializable, \Serializable { - /** - * @var int - * @cvalue MONGOC_READ_PRIMARY - * @deprecated - */ - public const RP_PRIMARY = UNKNOWN; - - /** - * @var int - * @cvalue MONGOC_READ_PRIMARY_PREFERRED - * @deprecated - */ - public const RP_PRIMARY_PREFERRED = UNKNOWN; - - /** - * @var int - * @cvalue MONGOC_READ_SECONDARY - * @deprecated - */ - public const RP_SECONDARY = UNKNOWN; - - /** - * @var int - * @cvalue MONGOC_READ_SECONDARY_PREFERRED - * @deprecated - */ - public const RP_SECONDARY_PREFERRED = UNKNOWN; - - /** - * @var int - * @cvalue MONGOC_READ_NEAREST - * @deprecated - */ - public const RP_NEAREST = UNKNOWN; - /** * @var string * @cvalue PHONGO_READ_PRIMARY @@ -86,15 +51,12 @@ final class ReadPreference implements \MongoDB\BSON\Serializable, \Serializable */ public const SMALLEST_MAX_STALENESS_SECONDS = UNKNOWN; - final public function __construct(string|int $mode, ?array $tagSets = null, ?array $options = null) {} + final public function __construct(string $mode, ?array $tagSets = null, ?array $options = null) {} final public function getHedge(): ?object {} final public function getMaxStalenessSeconds(): int {} - /** @deprecated */ - final public function getMode(): int {} - final public function getModeString(): string {} final public function getTagSets(): array {} diff --git a/src/MongoDB/ReadPreference_arginfo.h b/src/MongoDB/ReadPreference_arginfo.h index 903a4ea58..a4bbe0642 100644 --- a/src/MongoDB/ReadPreference_arginfo.h +++ b/src/MongoDB/ReadPreference_arginfo.h @@ -1,8 +1,8 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 749f4ec07a374c2d9abb2dcb4cb1e7204d52923d */ + * Stub hash: 3fa545a3ff56acac4567ef25a48d87881711985c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_MongoDB_Driver_ReadPreference___construct, 0, 0, 1) - ZEND_ARG_TYPE_MASK(0, mode, MAY_BE_STRING|MAY_BE_LONG, NULL) + ZEND_ARG_TYPE_INFO(0, mode, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, tagSets, IS_ARRAY, 1, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 1, "null") ZEND_END_ARG_INFO() @@ -13,8 +13,6 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_MongoDB_Driver_ReadPreference_getMaxStalenessSeconds, 0, 0, IS_LONG, 0) ZEND_END_ARG_INFO() -#define arginfo_class_MongoDB_Driver_ReadPreference_getMode arginfo_class_MongoDB_Driver_ReadPreference_getMaxStalenessSeconds - ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_MongoDB_Driver_ReadPreference_getModeString, 0, 0, IS_STRING, 0) ZEND_END_ARG_INFO() @@ -44,7 +42,6 @@ ZEND_END_ARG_INFO() static ZEND_METHOD(MongoDB_Driver_ReadPreference, __construct); static ZEND_METHOD(MongoDB_Driver_ReadPreference, getHedge); static ZEND_METHOD(MongoDB_Driver_ReadPreference, getMaxStalenessSeconds); -static ZEND_METHOD(MongoDB_Driver_ReadPreference, getMode); static ZEND_METHOD(MongoDB_Driver_ReadPreference, getModeString); static ZEND_METHOD(MongoDB_Driver_ReadPreference, getTagSets); static ZEND_METHOD(MongoDB_Driver_ReadPreference, __set_state); @@ -59,7 +56,6 @@ static const zend_function_entry class_MongoDB_Driver_ReadPreference_methods[] = ZEND_ME(MongoDB_Driver_ReadPreference, __construct, arginfo_class_MongoDB_Driver_ReadPreference___construct, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) ZEND_ME(MongoDB_Driver_ReadPreference, getHedge, arginfo_class_MongoDB_Driver_ReadPreference_getHedge, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) ZEND_ME(MongoDB_Driver_ReadPreference, getMaxStalenessSeconds, arginfo_class_MongoDB_Driver_ReadPreference_getMaxStalenessSeconds, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) - ZEND_ME(MongoDB_Driver_ReadPreference, getMode, arginfo_class_MongoDB_Driver_ReadPreference_getMode, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL|ZEND_ACC_DEPRECATED) ZEND_ME(MongoDB_Driver_ReadPreference, getModeString, arginfo_class_MongoDB_Driver_ReadPreference_getModeString, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) ZEND_ME(MongoDB_Driver_ReadPreference, getTagSets, arginfo_class_MongoDB_Driver_ReadPreference_getTagSets, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) ZEND_ME(MongoDB_Driver_ReadPreference, __set_state, arginfo_class_MongoDB_Driver_ReadPreference___set_state, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC|ZEND_ACC_FINAL) @@ -80,36 +76,6 @@ static zend_class_entry *register_class_MongoDB_Driver_ReadPreference(zend_class class_entry->ce_flags |= ZEND_ACC_FINAL; zend_class_implements(class_entry, 2, class_entry_MongoDB_BSON_Serializable, class_entry_Serializable); - zval const_RP_PRIMARY_value; - ZVAL_LONG(&const_RP_PRIMARY_value, MONGOC_READ_PRIMARY); - zend_string *const_RP_PRIMARY_name = zend_string_init_interned("RP_PRIMARY", sizeof("RP_PRIMARY") - 1, 1); - zend_declare_class_constant_ex(class_entry, const_RP_PRIMARY_name, &const_RP_PRIMARY_value, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED, NULL); - zend_string_release(const_RP_PRIMARY_name); - - zval const_RP_PRIMARY_PREFERRED_value; - ZVAL_LONG(&const_RP_PRIMARY_PREFERRED_value, MONGOC_READ_PRIMARY_PREFERRED); - zend_string *const_RP_PRIMARY_PREFERRED_name = zend_string_init_interned("RP_PRIMARY_PREFERRED", sizeof("RP_PRIMARY_PREFERRED") - 1, 1); - zend_declare_class_constant_ex(class_entry, const_RP_PRIMARY_PREFERRED_name, &const_RP_PRIMARY_PREFERRED_value, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED, NULL); - zend_string_release(const_RP_PRIMARY_PREFERRED_name); - - zval const_RP_SECONDARY_value; - ZVAL_LONG(&const_RP_SECONDARY_value, MONGOC_READ_SECONDARY); - zend_string *const_RP_SECONDARY_name = zend_string_init_interned("RP_SECONDARY", sizeof("RP_SECONDARY") - 1, 1); - zend_declare_class_constant_ex(class_entry, const_RP_SECONDARY_name, &const_RP_SECONDARY_value, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED, NULL); - zend_string_release(const_RP_SECONDARY_name); - - zval const_RP_SECONDARY_PREFERRED_value; - ZVAL_LONG(&const_RP_SECONDARY_PREFERRED_value, MONGOC_READ_SECONDARY_PREFERRED); - zend_string *const_RP_SECONDARY_PREFERRED_name = zend_string_init_interned("RP_SECONDARY_PREFERRED", sizeof("RP_SECONDARY_PREFERRED") - 1, 1); - zend_declare_class_constant_ex(class_entry, const_RP_SECONDARY_PREFERRED_name, &const_RP_SECONDARY_PREFERRED_value, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED, NULL); - zend_string_release(const_RP_SECONDARY_PREFERRED_name); - - zval const_RP_NEAREST_value; - ZVAL_LONG(&const_RP_NEAREST_value, MONGOC_READ_NEAREST); - zend_string *const_RP_NEAREST_name = zend_string_init_interned("RP_NEAREST", sizeof("RP_NEAREST") - 1, 1); - zend_declare_class_constant_ex(class_entry, const_RP_NEAREST_name, &const_RP_NEAREST_value, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED, NULL); - zend_string_release(const_RP_NEAREST_name); - zval const_PRIMARY_value; zend_string *const_PRIMARY_value_str = zend_string_init(PHONGO_READ_PRIMARY, strlen(PHONGO_READ_PRIMARY), 1); ZVAL_STR(&const_PRIMARY_value, const_PRIMARY_value_str); diff --git a/tests/readPreference/readpreference-constants-002.phpt b/tests/readPreference/readpreference-constants-002.phpt deleted file mode 100644 index 7ce8182e6..000000000 --- a/tests/readPreference/readpreference-constants-002.phpt +++ /dev/null @@ -1,33 +0,0 @@ ---TEST-- -MongoDB\Driver\ReadPreference deprecated constants ---SKIPIF-- - - ---FILE-- - -===DONE=== - ---EXPECTF-- -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_PRIMARY is deprecated in %s -int(1) - -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED is deprecated in %s -int(5) - -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_SECONDARY is deprecated in %s -int(2) - -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED is deprecated in %s -int(6) - -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_NEAREST is deprecated in %s -int(10) -===DONE=== diff --git a/tests/readPreference/readpreference-ctor-004.phpt b/tests/readPreference/readpreference-ctor-004.phpt deleted file mode 100644 index 88d9ec754..000000000 --- a/tests/readPreference/readpreference-ctor-004.phpt +++ /dev/null @@ -1,82 +0,0 @@ ---TEST-- -MongoDB\Driver\ReadPreference construction with integer constants (PHP 8.3+) ---SKIPIF-- - - ---FILE-- - 'one']])); -var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY, [])); -var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessSeconds' => 1000])); -var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['hedge' => ['enabled' => true]])); -var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['hedge' => []])); - -?> -===DONE=== - ---EXPECTF-- -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_PRIMARY is deprecated in %s - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(7) "primary" -} - -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_SECONDARY is deprecated in %s - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(9) "secondary" - ["tags"]=> - array(1) { - [0]=> - object(stdClass)#%d (%d) { - ["tag"]=> - string(3) "one" - } - } -} - -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_PRIMARY is deprecated in %s - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(7) "primary" -} - -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_SECONDARY is deprecated in %s - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(9) "secondary" - ["maxStalenessSeconds"]=> - int(1000) -} - -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_SECONDARY is deprecated in %s - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(9) "secondary" - ["hedge"]=> - object(stdClass)#%d (%d) { - ["enabled"]=> - bool(true) - } -} - -Deprecated: Constant MongoDB\Driver\ReadPreference::RP_SECONDARY is deprecated in %s - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(9) "secondary" -} -===DONE=== diff --git a/tests/readPreference/readpreference-ctor_error-005.phpt b/tests/readPreference/readpreference-ctor_error-005.phpt deleted file mode 100644 index a442dd749..000000000 --- a/tests/readPreference/readpreference-ctor_error-005.phpt +++ /dev/null @@ -1,18 +0,0 @@ ---TEST-- -MongoDB\Driver\ReadPreference construction (invalid string mode) ---FILE-- - -===DONE=== - ---EXPECT-- -OK: Got MongoDB\Driver\Exception\InvalidArgumentException -Invalid mode: 'hocuspocus' -===DONE=== diff --git a/tests/readPreference/readpreference-ctor_error-006.phpt b/tests/readPreference/readpreference-ctor_error-006.phpt deleted file mode 100644 index 99d32421e..000000000 --- a/tests/readPreference/readpreference-ctor_error-006.phpt +++ /dev/null @@ -1,18 +0,0 @@ ---TEST-- -MongoDB\Driver\ReadPreference construction (invalid type for mode) ---FILE-- - -===DONE=== - ---EXPECT-- -OK: Got MongoDB\Driver\Exception\InvalidArgumentException -Expected mode to be integer or string, float given -===DONE=== diff --git a/tests/readPreference/readpreference-getMode-001.phpt b/tests/readPreference/readpreference-getMode-001.phpt deleted file mode 100644 index b62a13673..000000000 --- a/tests/readPreference/readpreference-getMode-001.phpt +++ /dev/null @@ -1,37 +0,0 @@ ---TEST-- -MongoDB\Driver\ReadPreference::getMode() ---FILE-- -getMode()); -} - -?> -===DONE=== - ---EXPECTF-- -Deprecated: %s MongoDB\Driver\ReadPreference::getMode() is deprecated in %s -int(1) - -Deprecated: %s MongoDB\Driver\ReadPreference::getMode() is deprecated in %s -int(5) - -Deprecated: %s MongoDB\Driver\ReadPreference::getMode() is deprecated in %s -int(2) - -Deprecated: %s MongoDB\Driver\ReadPreference::getMode() is deprecated in %s -int(6) - -Deprecated: %s MongoDB\Driver\ReadPreference::getMode() is deprecated in %s -int(10) -===DONE=== From cf59499ad832b86feaa041a3fca569587abcdc79 Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Wed, 18 Sep 2024 12:52:33 -0400 Subject: [PATCH 2/3] Add upgrade note --- UPGRADE-2.0.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/UPGRADE-2.0.md b/UPGRADE-2.0.md index cf87eebaa..1e5bff682 100644 --- a/UPGRADE-2.0.md +++ b/UPGRADE-2.0.md @@ -9,6 +9,10 @@ UPGRADE FROM 1.x to 2.0 * The constants `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE_PREVIEW` and `MongoDB\Driver\ClientEncryption::QUERY_TYPE_RANGE_PREVIEW` have been removed. Use the `ALGORITHM_RANGE` and `QUERY_TYPE_RANGE` instead. + * The `MongoDB\Driver\ReadPreference` class now requires a string value for its + constructor's `$mode` parameter. The integer constants for modes have been + removed along with the `getMode()` method. Use the string constants and + `getModeString()` instead. * All tentative return types defined in interface and non-final classes are now fixed and are required in implementing or extending classes. * `MongoDB\Driver\CursorInterface` now extends `Iterator`, requiring From 2a8feb7b2bdb19f87e4935f4f79d8a9c311e06ab Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Wed, 18 Sep 2024 14:05:41 -0400 Subject: [PATCH 3/3] Remove obsolete test --- .../readpreference-ctor-003.phpt | 70 ------------------- 1 file changed, 70 deletions(-) delete mode 100644 tests/readPreference/readpreference-ctor-003.phpt diff --git a/tests/readPreference/readpreference-ctor-003.phpt b/tests/readPreference/readpreference-ctor-003.phpt deleted file mode 100644 index ef6459c1e..000000000 --- a/tests/readPreference/readpreference-ctor-003.phpt +++ /dev/null @@ -1,70 +0,0 @@ ---TEST-- -MongoDB\Driver\ReadPreference construction with integer constants (PHP < 8.3) ---SKIPIF-- - -=', '8.3.0'); ?> ---FILE-- - 'one']])); -var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY, [])); -var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessSeconds' => 1000])); -var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['hedge' => ['enabled' => true]])); -var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['hedge' => []])); - -?> -===DONE=== - ---EXPECTF-- -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(7) "primary" -} - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(9) "secondary" - ["tags"]=> - array(1) { - [0]=> - object(stdClass)#%d (%d) { - ["tag"]=> - string(3) "one" - } - } -} - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(7) "primary" -} - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(9) "secondary" - ["maxStalenessSeconds"]=> - int(1000) -} - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(9) "secondary" - ["hedge"]=> - object(stdClass)#%d (%d) { - ["enabled"]=> - bool(true) - } -} - -Deprecated: MongoDB\Driver\ReadPreference::__construct(): Passing an integer mode to "MongoDB\Driver\ReadPreference::__construct" is deprecated and will be removed in a future release. in %s -object(MongoDB\Driver\ReadPreference)#%d (%d) { - ["mode"]=> - string(9) "secondary" -} -===DONE===