Skip to content

Commit 3ea6d64

Browse files
authored
Merge pull request #184 from pigwing/master
修复meta.size获取错误长度问题
2 parents 2fe8466 + 9f94ef8 commit 3ea6d64

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/IoTSharp.Data.Taos/Driver/TDengineDriver.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,23 +256,28 @@ static public IntPtr Query(IntPtr conn, string command)
256256

257257
public static List<TDengineMeta> FetchFields(IntPtr res)
258258
{
259+
// const int fieldSize = 68;
260+
259261
List<TDengineMeta> metas = new List<TDengineMeta>();
262+
if (res == IntPtr.Zero)
263+
{
264+
return metas;
265+
}
260266

261267
int fieldCount = FieldCount(res);
262268
IntPtr fieldsPtr = taos_fetch_fields(res);
263269

264270
for (int i = 0; i < fieldCount; ++i)
265271
{
266272
int offset = i * (int)TaosField.STRUCT_SIZE;
267-
#if NET45
268-
taosField field = (taosField)Marshal.PtrToStructure(fieldsPtr + offset,typeof(taosField));
269-
#else
270-
taosField field = Marshal.PtrToStructure<taosField>(fieldsPtr + offset);
271-
#endif
272-
TDengineMeta meta = new TDengineMeta() { name = Encoding.Default.GetString(field.name)?.TrimEnd('\0'), size = field.bytes, type = field.type };
273+
TDengineMeta meta = new TDengineMeta();
274+
meta.name = Marshal.PtrToStringAnsi(fieldsPtr + offset);
275+
meta.type = Marshal.ReadByte(fieldsPtr + offset + (int)TaosField.TYPE_OFFSET);
276+
meta.size = Marshal.ReadInt16(fieldsPtr + offset + (int)TaosField.BYTES_OFFSET);
273277
metas.Add(meta);
274278
}
275279

280+
276281
return metas;
277282
}
278283

0 commit comments

Comments
 (0)