1--TEST--
2MongoDB\Driver\BulkWrite::update() with hint option
3--SKIPIF--
4<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
5<?php skip_if_not_live(); ?>
6<?php skip_if_server_version('<', '4.2'); ?>
7<?php skip_if_not_clean(); ?>
8--FILE--
9<?php
10require_once __DIR__ . "/../utils/basic.inc";
11
12class CommandLogger implements MongoDB\Driver\Monitoring\CommandSubscriber
13{
14    public function commandStarted(MongoDB\Driver\Monitoring\CommandStartedEvent $event)
15    {
16        if ($event->getCommandName() !== 'update') {
17            return;
18        }
19
20        printf("update included hint: %s\n", json_encode($event->getCommand()->updates[0]->hint));
21    }
22
23    public function commandSucceeded(MongoDB\Driver\Monitoring\CommandSucceededEvent $event)
24    {
25    }
26
27    public function commandFailed(MongoDB\Driver\Monitoring\CommandFailedEvent $event)
28    {
29    }
30}
31
32$manager = new MongoDB\Driver\Manager(URI);
33
34$bulk = new MongoDB\Driver\BulkWrite();
35$bulk->insert(['x' => 1]);
36$bulk->insert(['x' => 2]);
37$manager->executeBulkWrite(NS, $bulk);
38
39MongoDB\Driver\Monitoring\addSubscriber(new CommandLogger);
40
41$bulk = new MongoDB\Driver\BulkWrite;
42$bulk->update(['_id' => 1], ['$set' => ['x' => 11]], ['hint' => '_id_']);
43$manager->executeBulkWrite(NS, $bulk);
44
45$bulk = new MongoDB\Driver\BulkWrite;
46$bulk->update(['_id' => 2], ['$set' => ['x' => 22]], ['hint' => ['_id' => 1]]);
47$manager->executeBulkWrite(NS, $bulk);
48
49?>
50===DONE===
51<?php exit(0); ?>
52--EXPECTF--
53update included hint: "_id_"
54update included hint: {"_id":1}
55===DONE===
56