@@ -130,13 +130,22 @@ func (c *Column) AppendValue(rv bson.RawValue) error {
130
130
return fmt .Errorf ("field %s should have type %s, but got %s" , c .Name , c .Type ().ItemTypeString (), rv .Type .String ())
131
131
}
132
132
133
- c .Field .Append (pointer (rv .Document ().String ()))
133
+ v , err := rawDocToJson (rv )
134
+ if err != nil {
135
+ return err
136
+ }
137
+
138
+ c .Field .Append (& v )
134
139
case bson .TypeArray :
135
140
if c .Type () != data .FieldTypeNullableString {
136
141
return fmt .Errorf ("field %s should have type %s, but got %s" , c .Name , c .Type ().ItemTypeString (), rv .Type .String ())
137
142
}
138
143
139
- c .Field .Append (pointer (rv .Array ().String ()))
144
+ v , err := rawArrayToJson (rv )
145
+ if err != nil {
146
+ return err
147
+ }
148
+ c .Field .Append (& v )
140
149
141
150
default :
142
151
if c .Type () != data .FieldTypeNullableString {
@@ -158,7 +167,7 @@ func (c *Column) Type() data.FieldType {
158
167
return c .Field .Type ()
159
168
}
160
169
161
- func NewColumn (rowIndex int , element bson.RawElement ) * Column {
170
+ func NewColumn (rowIndex int , element bson.RawElement ) ( * Column , error ) {
162
171
key := element .Key ()
163
172
value := element .Value ()
164
173
var field * data.Field
@@ -194,11 +203,21 @@ func NewColumn(rowIndex int, element bson.RawElement) *Column {
194
203
195
204
case bson .TypeEmbeddedDocument :
196
205
field = data .NewField (key , nil , make ([]* string , rowIndex + 1 ))
197
- field .Set (rowIndex , pointer (value .Document ().String ()))
206
+
207
+ v , err := rawDocToJson (value )
208
+ if err != nil {
209
+ return nil , err
210
+ }
211
+ field .Set (rowIndex , & v )
198
212
199
213
case bson .TypeArray :
200
214
field = data .NewField (key , nil , make ([]* string , rowIndex + 1 ))
201
- field .Set (rowIndex , pointer (value .Array ().String ()))
215
+
216
+ v , err := rawArrayToJson (value )
217
+ if err != nil {
218
+ return nil , err
219
+ }
220
+ field .Set (rowIndex , & v )
202
221
203
222
default :
204
223
field = data .NewField (key , nil , make ([]* string , rowIndex + 1 ))
@@ -209,7 +228,7 @@ func NewColumn(rowIndex int, element bson.RawElement) *Column {
209
228
Name : key ,
210
229
Field : field ,
211
230
BsonTypes : []bsontype.Type {value .Type },
212
- }
231
+ }, nil
213
232
}
214
233
215
234
// Convert array and embedded document type values to json.RawMessage if allowed
0 commit comments