Skip to content

Commit afca224

Browse files
committed
wip
1 parent 7bf5c63 commit afca224

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src/MongoDB/BulkWriteCommandResult.stub.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ final public function getUpdateResults(): ?\MongoDB\BSON\Document {}
3030

3131
final public function getDeleteResults(): ?\MongoDB\BSON\Document {}
3232

33-
final public function getWriteErrors(): ?\MongoDB\BSON\Document {}
33+
final public function getWriteErrors(): array {}
3434

35-
final public function getWriteConcernErrors(): ?\MongoDB\BSON\PackedArray {}
35+
final public function getWriteConcernErrors(): array {}
3636

3737
final public function getErrorReply(): ?\MongoDB\BSON\Document {}
3838

src/phongo_execute.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -371,17 +371,20 @@ bool phongo_execute_bulkwritecommand(zval* manager, php_phongo_bulkwritecommand_
371371
if (bw_ret.exc) {
372372
success = false;
373373
bson_error_t error = { 0 };
374+
const bson_t *error_reply = NULL;
375+
376+
error_reply = mongoc_bulkwriteexception_errorreply(bw_ret.exc);
374377

375378
// Check if there is a top-level error
376379
if (mongoc_bulkwriteexception_error(bw_ret.exc, &error)) {
377-
phongo_throw_exception_from_bson_error_t_and_reply(&error, mongoc_bulkwriteexception_errorreply(bw_ret.exc));
380+
phongo_throw_exception_from_bson_error_t_and_reply(&error, error_reply);
378381
}
379382

380383
/* Unlike mongoc_bulk_operation_execute, mongoc_bulkwrite_execute may
381384
* report COMMAND_INVALID_ARG alongside a partial result (CDRIVER-5842).
382-
* If there is no result, we can throw InvalidArgumentException without
383-
* proxying it behind a BulkWriteException. */
384-
if (!bw_ret.res && error.domain == MONGOC_ERROR_COMMAND && error.code == MONGOC_ERROR_COMMAND_INVALID_ARG) {
385+
* If there is no result and error_reply, throw InvalidArgumentException
386+
* without proxying it behind a BulkWriteException. */
387+
if (!bw_ret.res && !error_reply && error.domain == MONGOC_ERROR_COMMAND && error.code == MONGOC_ERROR_COMMAND_INVALID_ARG) {
385388
// TODO: Do we care about other mongoc_bulkwriteexception_t fields?
386389
goto cleanup;
387390
}

0 commit comments

Comments
 (0)