MCPcopy Create free account
hub / github.com/documentdb/documentdb / WriteBsonSqlValue

Function WriteBsonSqlValue

pg_documentdb_core/src/io/bson_io.c:593–623  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

591
592
593inline static void
594WriteBsonSqlValue(Datum fieldValue, pgbson_element_writer *writer)
595{
596 /* extract the bson. */
597 pgbson *nestedBson = DatumGetPgBson(fieldValue);
598
599 /* if it's a single value bson ({ "": <value> }) */
600 /* then write the *value* as a child element. */
601 pgbsonelement element;
602 bool isSingleElement = TryGetSinglePgbsonElementFromPgbson(nestedBson, &element);
603 if (isSingleElement && element.pathLength == 0)
604 {
605 PgbsonElementWriterWriteValue(writer, &element.bsonValue);
606 }
607 else
608 {
609 /* if it's not a single value element, treat it as a nested object. */
610 pgbson_writer childWriter;
611 bson_iter_t childIter;
612 PgbsonElementWriterStartDocument(writer, &childWriter);
613 PgbsonInitIterator(nestedBson, &childIter);
614 while (bson_iter_next(&childIter))
615 {
616 PgbsonWriterAppendValue(&childWriter, bson_iter_key(&childIter),
617 bson_iter_key_len(&childIter), bson_iter_value(
618 &childIter));
619 }
620
621 PgbsonElementWriterEndDocument(writer, &childWriter);
622 }
623}
624
625
626/*

Callers 1

Tested by

no test coverage detected