@@ -34,6 +34,8 @@ IMPLEMENT_GET_CLASS(MongoDBDriverBulkWriteData);
34
34
const StaticString s_MongoDBDriverBulkWrite_ordered (" ordered" );
35
35
const StaticString s_MongoDBDriverBulkWrite_bypassDocumentValidation (" bypassDocumentValidation" );
36
36
37
+ #define BYPASS_UNSET -1
38
+
37
39
void HHVM_METHOD (MongoDBDriverBulkWrite, __construct, const Variant &bulkWriteOptions)
38
40
{
39
41
MongoDBDriverBulkWriteData* data = Native::data<MongoDBDriverBulkWriteData>(this_);
@@ -48,13 +50,14 @@ void HHVM_METHOD(MongoDBDriverBulkWrite, __construct, const Variant &bulkWriteOp
48
50
49
51
data->m_bulk = mongoc_bulk_operation_new (b_ordered);
50
52
data->m_num_ops = 0 ;
53
+ data->m_ordered = b_ordered;
54
+ data->m_bypass = BYPASS_UNSET;
51
55
52
56
if (!options.isNull ()) {
53
57
if (options.exists (s_MongoDBDriverBulkWrite_bypassDocumentValidation)) {
54
- mongoc_bulk_operation_set_bypass_document_validation (
55
- data->m_bulk ,
56
- options[s_MongoDBDriverBulkWrite_bypassDocumentValidation].toBoolean ()
57
- );
58
+ bool bypass = !!options[s_MongoDBDriverBulkWrite_bypassDocumentValidation].toBoolean ();
59
+ mongoc_bulk_operation_set_bypass_document_validation (data->m_bulk , bypass);
60
+ data->m_bypass = bypass;
58
61
}
59
62
}
60
63
}
@@ -184,6 +187,7 @@ const StaticString
184
187
s_database (" database" ),
185
188
s_collection (" collection" ),
186
189
s_ordered (" ordered" ),
190
+ s_bypassDocumentValidation (" bypassDocumentValidation" ),
187
191
s_executed (" executed" ),
188
192
s_server_id (" server_id" ),
189
193
s_write_concern (" write_concern" );
@@ -193,20 +197,27 @@ Array HHVM_METHOD(MongoDBDriverBulkWrite, __debugInfo)
193
197
MongoDBDriverBulkWriteData* data = Native::data<MongoDBDriverBulkWriteData>(this_);
194
198
Array retval = Array::Create ();
195
199
196
- if (data->m_bulk -> database ) {
197
- retval.set (s_database, data->m_bulk -> database );
200
+ if (data->m_database ) {
201
+ retval.set (s_database, data->m_database );
198
202
} else {
199
203
retval.set (s_database, Variant ());
200
204
}
201
205
202
- if (data->m_bulk -> collection ) {
203
- retval.set (s_collection, data->m_bulk -> collection );
206
+ if (data->m_collection ) {
207
+ retval.set (s_collection, data->m_collection );
204
208
} else {
205
209
retval.set (s_collection, Variant ());
206
210
}
207
211
208
- retval.set (s_ordered, data->m_bulk ->flags .ordered );
209
- retval.set (s_executed, data->m_bulk ->executed );
212
+ retval.set (s_ordered, data->m_ordered );
213
+
214
+ if (data->m_bypass != BYPASS_UNSET) {
215
+ retval.set (s_bypassDocumentValidation, (bool ) !!data->m_bypass );
216
+ } else {
217
+ retval.set (s_bypassDocumentValidation, Variant ());
218
+ }
219
+
220
+ retval.set (s_executed, data->m_executed );
210
221
retval.set (s_server_id, (int64_t ) mongoc_bulk_operation_get_hint (data->m_bulk ));
211
222
212
223
if (mongoc_bulk_operation_get_write_concern (data->m_bulk )) {
0 commit comments