Hotfix/sangshuduo/td 3880 csharp driver unsigned miss (#5872)
* [TD-3880]<fix>: C# driver test miss unsigned type. * [TD-3880]<fix>: C# driver test miss unsigned type. also modify other files as what TD-3204 did. Co-authored-by: Shuduo Sang <sdsang@taosdata.com>
This commit is contained in:
parent
91da3ab9f6
commit
e663bc6f00
|
@ -31,7 +31,11 @@ namespace TDengineDriver
|
||||||
TSDB_DATA_TYPE_DOUBLE = 7, // 8 bytes
|
TSDB_DATA_TYPE_DOUBLE = 7, // 8 bytes
|
||||||
TSDB_DATA_TYPE_BINARY = 8, // string
|
TSDB_DATA_TYPE_BINARY = 8, // string
|
||||||
TSDB_DATA_TYPE_TIMESTAMP = 9,// 8 bytes
|
TSDB_DATA_TYPE_TIMESTAMP = 9,// 8 bytes
|
||||||
TSDB_DATA_TYPE_NCHAR = 10 // unicode string
|
TSDB_DATA_TYPE_NCHAR = 10, // unicode string
|
||||||
|
TSDB_DATA_TYPE_UTINYINT = 11,// 1 byte
|
||||||
|
TSDB_DATA_TYPE_USMALLINT= 12,// 2 bytes
|
||||||
|
TSDB_DATA_TYPE_UINT = 13, // 4 bytes
|
||||||
|
TSDB_DATA_TYPE_UBIGINT= 14 // 8 bytes
|
||||||
}
|
}
|
||||||
|
|
||||||
enum TDengineInitOption
|
enum TDengineInitOption
|
||||||
|
@ -53,15 +57,23 @@ namespace TDengineDriver
|
||||||
switch ((TDengineDataType)type)
|
switch ((TDengineDataType)type)
|
||||||
{
|
{
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_BOOL:
|
case TDengineDataType.TSDB_DATA_TYPE_BOOL:
|
||||||
return "BOOLEAN";
|
return "BOOL";
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_TINYINT:
|
case TDengineDataType.TSDB_DATA_TYPE_TINYINT:
|
||||||
return "BYTE";
|
return "TINYINT";
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_SMALLINT:
|
case TDengineDataType.TSDB_DATA_TYPE_SMALLINT:
|
||||||
return "SHORT";
|
return "SMALLINT";
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_INT:
|
case TDengineDataType.TSDB_DATA_TYPE_INT:
|
||||||
return "INT";
|
return "INT";
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_BIGINT:
|
case TDengineDataType.TSDB_DATA_TYPE_BIGINT:
|
||||||
return "LONG";
|
return "BIGINT";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_UTINYINT:
|
||||||
|
return "TINYINT UNSIGNED";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_USMALLINT:
|
||||||
|
return "SMALLINT UNSIGNED";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_UINT:
|
||||||
|
return "INT UNSIGNED";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_UBIGINT:
|
||||||
|
return "BIGINT UNSIGNED";
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_FLOAT:
|
case TDengineDataType.TSDB_DATA_TYPE_FLOAT:
|
||||||
return "FLOAT";
|
return "FLOAT";
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_DOUBLE:
|
case TDengineDataType.TSDB_DATA_TYPE_DOUBLE:
|
||||||
|
|
|
@ -19,136 +19,149 @@ using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace TDengineDriver
|
namespace TDengineDriver
|
||||||
{
|
{
|
||||||
enum TDengineDataType {
|
enum TDengineDataType
|
||||||
TSDB_DATA_TYPE_NULL = 0, // 1 bytes
|
|
||||||
TSDB_DATA_TYPE_BOOL = 1, // 1 bytes
|
|
||||||
TSDB_DATA_TYPE_TINYINT = 2, // 1 bytes
|
|
||||||
TSDB_DATA_TYPE_SMALLINT = 3, // 2 bytes
|
|
||||||
TSDB_DATA_TYPE_INT = 4, // 4 bytes
|
|
||||||
TSDB_DATA_TYPE_BIGINT = 5, // 8 bytes
|
|
||||||
TSDB_DATA_TYPE_FLOAT = 6, // 4 bytes
|
|
||||||
TSDB_DATA_TYPE_DOUBLE = 7, // 8 bytes
|
|
||||||
TSDB_DATA_TYPE_BINARY = 8, // string
|
|
||||||
TSDB_DATA_TYPE_TIMESTAMP = 9,// 8 bytes
|
|
||||||
TSDB_DATA_TYPE_NCHAR = 10 // unicode string
|
|
||||||
}
|
|
||||||
|
|
||||||
enum TDengineInitOption
|
|
||||||
{
|
|
||||||
TSDB_OPTION_LOCALE = 0,
|
|
||||||
TSDB_OPTION_CHARSET = 1,
|
|
||||||
TSDB_OPTION_TIMEZONE = 2,
|
|
||||||
TDDB_OPTION_CONFIGDIR = 3,
|
|
||||||
TDDB_OPTION_SHELL_ACTIVITY_TIMER = 4
|
|
||||||
}
|
|
||||||
|
|
||||||
class TDengineMeta
|
|
||||||
{
|
|
||||||
public string name;
|
|
||||||
public short size;
|
|
||||||
public byte type;
|
|
||||||
public string TypeName()
|
|
||||||
{
|
{
|
||||||
switch ((TDengineDataType)type)
|
TSDB_DATA_TYPE_NULL = 0, // 1 bytes
|
||||||
{
|
TSDB_DATA_TYPE_BOOL = 1, // 1 bytes
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_BOOL:
|
TSDB_DATA_TYPE_TINYINT = 2, // 1 bytes
|
||||||
return "BOOLEAN";
|
TSDB_DATA_TYPE_SMALLINT = 3, // 2 bytes
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_TINYINT:
|
TSDB_DATA_TYPE_INT = 4, // 4 bytes
|
||||||
return "BYTE";
|
TSDB_DATA_TYPE_BIGINT = 5, // 8 bytes
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_SMALLINT:
|
TSDB_DATA_TYPE_FLOAT = 6, // 4 bytes
|
||||||
return "SHORT";
|
TSDB_DATA_TYPE_DOUBLE = 7, // 8 bytes
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_INT:
|
TSDB_DATA_TYPE_BINARY = 8, // string
|
||||||
return "INT";
|
TSDB_DATA_TYPE_TIMESTAMP = 9,// 8 bytes
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_BIGINT:
|
TSDB_DATA_TYPE_NCHAR = 10, // unicode string
|
||||||
return "LONG";
|
TSDB_DATA_TYPE_UTINYINT = 11,// 1 byte
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_FLOAT:
|
TSDB_DATA_TYPE_USMALLINT= 12,// 2 bytes
|
||||||
return "FLOAT";
|
TSDB_DATA_TYPE_UINT = 13, // 4 bytes
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_DOUBLE:
|
TSDB_DATA_TYPE_UBIGINT= 14 // 8 bytes
|
||||||
return "DOUBLE";
|
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_BINARY:
|
|
||||||
return "STRING";
|
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_TIMESTAMP:
|
|
||||||
return "TIMESTAMP";
|
|
||||||
case TDengineDataType.TSDB_DATA_TYPE_NCHAR:
|
|
||||||
return "NCHAR";
|
|
||||||
default:
|
|
||||||
return "undefine";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class TDengine
|
|
||||||
{
|
|
||||||
public const int TSDB_CODE_SUCCESS = 0;
|
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_init", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
static extern public void Init();
|
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_cleanup", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
static extern public void Cleanup();
|
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_options", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
static extern public void Options(int option, string value);
|
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_connect", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
static extern public IntPtr Connect(string ip, string user, string password, string db, short port);
|
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_errstr", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
static extern private IntPtr taos_errstr(IntPtr res);
|
|
||||||
static public string Error(IntPtr res)
|
|
||||||
{
|
|
||||||
IntPtr errPtr = taos_errstr(res);
|
|
||||||
return Marshal.PtrToStringAnsi(errPtr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_errno", CallingConvention = CallingConvention.Cdecl)]
|
enum TDengineInitOption
|
||||||
static extern public int ErrorNo(IntPtr res);
|
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_query", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
static extern public IntPtr Query(IntPtr conn, string sqlstr);
|
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_affected_rows", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
static extern public int AffectRows(IntPtr res);
|
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_field_count", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
static extern public int FieldCount(IntPtr res);
|
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_fetch_fields", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
static extern private IntPtr taos_fetch_fields(IntPtr res);
|
|
||||||
static public List<TDengineMeta> FetchFields(IntPtr res)
|
|
||||||
{
|
{
|
||||||
const int fieldSize = 68;
|
TSDB_OPTION_LOCALE = 0,
|
||||||
|
TSDB_OPTION_CHARSET = 1,
|
||||||
List<TDengineMeta> metas = new List<TDengineMeta>();
|
TSDB_OPTION_TIMEZONE = 2,
|
||||||
if (res == IntPtr.Zero)
|
TDDB_OPTION_CONFIGDIR = 3,
|
||||||
{
|
TDDB_OPTION_SHELL_ACTIVITY_TIMER = 4
|
||||||
return metas;
|
|
||||||
}
|
|
||||||
|
|
||||||
int fieldCount = FieldCount(res);
|
|
||||||
IntPtr fieldsPtr = taos_fetch_fields(res);
|
|
||||||
|
|
||||||
for (int i = 0; i < fieldCount; ++i)
|
|
||||||
{
|
|
||||||
int offset = i * fieldSize;
|
|
||||||
|
|
||||||
TDengineMeta meta = new TDengineMeta();
|
|
||||||
meta.name = Marshal.PtrToStringAnsi(fieldsPtr + offset);
|
|
||||||
meta.type = Marshal.ReadByte(fieldsPtr + offset + 65);
|
|
||||||
meta.size = Marshal.ReadInt16(fieldsPtr + offset + 66);
|
|
||||||
metas.Add(meta);
|
|
||||||
}
|
|
||||||
|
|
||||||
return metas;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_fetch_row", CallingConvention = CallingConvention.Cdecl)]
|
class TDengineMeta
|
||||||
static extern public IntPtr FetchRows(IntPtr res);
|
{
|
||||||
|
public string name;
|
||||||
|
public short size;
|
||||||
|
public byte type;
|
||||||
|
public string TypeName()
|
||||||
|
{
|
||||||
|
switch ((TDengineDataType)type)
|
||||||
|
{
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_BOOL:
|
||||||
|
return "BOOL";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_TINYINT:
|
||||||
|
return "TINYINT";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_SMALLINT:
|
||||||
|
return "SMALLINT";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_INT:
|
||||||
|
return "INT";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_BIGINT:
|
||||||
|
return "BIGINT";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_UTINYINT:
|
||||||
|
return "TINYINT UNSIGNED";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_USMALLINT:
|
||||||
|
return "SMALLINT UNSIGNED";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_UINT:
|
||||||
|
return "INT UNSIGNED";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_UBIGINT:
|
||||||
|
return "BIGINT UNSIGNED";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_FLOAT:
|
||||||
|
return "FLOAT";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_DOUBLE:
|
||||||
|
return "DOUBLE";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_BINARY:
|
||||||
|
return "STRING";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_TIMESTAMP:
|
||||||
|
return "TIMESTAMP";
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_NCHAR:
|
||||||
|
return "NCHAR";
|
||||||
|
default:
|
||||||
|
return "undefine";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_free_result", CallingConvention = CallingConvention.Cdecl)]
|
class TDengine
|
||||||
static extern public IntPtr FreeResult(IntPtr res);
|
{
|
||||||
|
public const int TSDB_CODE_SUCCESS = 0;
|
||||||
|
|
||||||
[DllImport("taos.dll", EntryPoint = "taos_close", CallingConvention = CallingConvention.Cdecl)]
|
[DllImport("taos", EntryPoint = "taos_init", CallingConvention = CallingConvention.Cdecl)]
|
||||||
static extern public int Close(IntPtr taos);
|
static extern public void Init();
|
||||||
}
|
|
||||||
}
|
[DllImport("taos", EntryPoint = "taos_cleanup", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public void Cleanup();
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_options", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public void Options(int option, string value);
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_connect", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public IntPtr Connect(string ip, string user, string password, string db, short port);
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_errstr", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern private IntPtr taos_errstr(IntPtr res);
|
||||||
|
static public string Error(IntPtr res)
|
||||||
|
{
|
||||||
|
IntPtr errPtr = taos_errstr(res);
|
||||||
|
return Marshal.PtrToStringAnsi(errPtr);
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_errno", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public int ErrorNo(IntPtr res);
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_query", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public IntPtr Query(IntPtr conn, string sqlstr);
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_affected_rows", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public int AffectRows(IntPtr res);
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_field_count", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public int FieldCount(IntPtr res);
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_fetch_fields", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern private IntPtr taos_fetch_fields(IntPtr res);
|
||||||
|
static public List<TDengineMeta> FetchFields(IntPtr res)
|
||||||
|
{
|
||||||
|
const int fieldSize = 68;
|
||||||
|
|
||||||
|
List<TDengineMeta> metas = new List<TDengineMeta>();
|
||||||
|
if (res == IntPtr.Zero)
|
||||||
|
{
|
||||||
|
return metas;
|
||||||
|
}
|
||||||
|
|
||||||
|
int fieldCount = FieldCount(res);
|
||||||
|
IntPtr fieldsPtr = taos_fetch_fields(res);
|
||||||
|
|
||||||
|
for (int i = 0; i < fieldCount; ++i)
|
||||||
|
{
|
||||||
|
int offset = i * fieldSize;
|
||||||
|
|
||||||
|
TDengineMeta meta = new TDengineMeta();
|
||||||
|
meta.name = Marshal.PtrToStringAnsi(fieldsPtr + offset);
|
||||||
|
meta.type = Marshal.ReadByte(fieldsPtr + offset + 65);
|
||||||
|
meta.size = Marshal.ReadInt16(fieldsPtr + offset + 66);
|
||||||
|
metas.Add(meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
return metas;
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_fetch_row", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public IntPtr FetchRows(IntPtr res);
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_free_result", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public IntPtr FreeResult(IntPtr res);
|
||||||
|
|
||||||
|
[DllImport("taos", EntryPoint = "taos_close", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
static extern public int Close(IntPtr taos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -434,6 +434,22 @@ namespace TDengineDriver
|
||||||
string v10 = Marshal.PtrToStringAnsi(data);
|
string v10 = Marshal.PtrToStringAnsi(data);
|
||||||
builder.Append(v10);
|
builder.Append(v10);
|
||||||
break;
|
break;
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_UTINYINT:
|
||||||
|
byte v11 = Marshal.ReadByte(data);
|
||||||
|
builder.Append(v11);
|
||||||
|
break;
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_USMALLINT:
|
||||||
|
ushort v12 = (ushort)Marshal.ReadInt16(data);
|
||||||
|
builder.Append(v12);
|
||||||
|
break;
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_UINT:
|
||||||
|
uint v13 = (uint)Marshal.ReadInt32(data);
|
||||||
|
builder.Append(v13);
|
||||||
|
break;
|
||||||
|
case TDengineDataType.TSDB_DATA_TYPE_UBIGINT:
|
||||||
|
ulong v14 = (ulong)Marshal.ReadInt64(data);
|
||||||
|
builder.Append(v14);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
builder.Append("---");
|
builder.Append("---");
|
||||||
|
|
Loading…
Reference in New Issue