Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
41a58388
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
41a58388
编写于
4月 21, 2021
作者:
sangshuduo
提交者:
GitHub
4月 21, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-3880]<fix>: C# driver test miss unsigned type. (#5871)
for develop branch. Co-authored-by:
N
Shuduo Sang
<
sdsang@taosdata.com
>
上级
e60ad07d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
163 addition
and
122 deletion
+163
-122
src/connector/C#/TDengineDriver.cs
src/connector/C#/TDengineDriver.cs
+17
-5
tests/examples/C#/TDengineDriver.cs
tests/examples/C#/TDengineDriver.cs
+130
-117
tests/examples/C#/TDengineTest.cs
tests/examples/C#/TDengineTest.cs
+16
-0
未找到文件。
src/connector/C#/TDengineDriver.cs
浏览文件 @
41a58388
...
@@ -31,7 +31,11 @@ namespace TDengineDriver
...
@@ -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
...
@@ -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
"BOOL
EAN
"
;
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
"S
HOR
T"
;
return
"S
MALLIN
T"
;
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
:
...
...
tests/examples/C#/TDengineDriver.cs
浏览文件 @
41a58388
...
@@ -19,136 +19,149 @@ using System.Runtime.InteropServices;
...
@@ -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
enum
TDengineInitOption
{
{
public
const
int
TSDB_CODE_SUCCESS
=
0
;
TSDB_OPTION_LOCALE
=
0
,
TSDB_OPTION_CHARSET
=
1
,
TSDB_OPTION_TIMEZONE
=
2
,
TDDB_OPTION_CONFIGDIR
=
3
,
TDDB_OPTION_SHELL_ACTIVITY_TIMER
=
4
}
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_init"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
class
TDengineMeta
static
extern
public
void
Init
();
{
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_cleanup"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
class
TDengine
static
extern
public
void
Cleanup
();
{
public
const
int
TSDB_CODE_SUCCESS
=
0
;
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_options
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_init
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
void
Options
(
int
option
,
string
value
);
static
extern
public
void
Init
(
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_connect
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_cleanup
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
IntPtr
Connect
(
string
ip
,
string
user
,
string
password
,
string
db
,
short
port
);
static
extern
public
void
Cleanup
(
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_errstr"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_options"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
private
IntPtr
taos_errstr
(
IntPtr
res
);
static
extern
public
void
Options
(
int
option
,
string
value
);
static
public
string
Error
(
IntPtr
res
)
{
IntPtr
errPtr
=
taos_errstr
(
res
);
return
Marshal
.
PtrToStringAnsi
(
errPtr
);
}
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_errno
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_connect
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
ErrorNo
(
IntPtr
res
);
static
extern
public
IntPtr
Connect
(
string
ip
,
string
user
,
string
password
,
string
db
,
short
port
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_query"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_errstr"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
IntPtr
Query
(
IntPtr
conn
,
string
sqlstr
);
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_affected_rows
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_errno
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
AffectRows
(
IntPtr
res
);
static
extern
public
int
ErrorNo
(
IntPtr
res
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_field_count
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_query
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
FieldCount
(
IntPtr
res
);
static
extern
public
IntPtr
Query
(
IntPtr
conn
,
string
sqlstr
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_fetch_fields"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_affected_rows"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
private
IntPtr
taos_fetch_fields
(
IntPtr
res
);
static
extern
public
int
AffectRows
(
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.dll"
,
EntryPoint
=
"taos_fetch_row
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_field_count
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
IntPtr
FetchRows
(
IntPtr
res
);
static
extern
public
int
FieldCount
(
IntPtr
res
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_free_result"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_fetch_fields"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
IntPtr
FreeResult
(
IntPtr
res
);
static
extern
private
IntPtr
taos_fetch_fields
(
IntPtr
res
);
static
public
List
<
TDengineMeta
>
FetchFields
(
IntPtr
res
)
{
const
int
fieldSize
=
68
;
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_close"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
List
<
TDengineMeta
>
metas
=
new
List
<
TDengineMeta
>();
static
extern
public
int
Close
(
IntPtr
taos
);
if
(
res
==
IntPtr
.
Zero
)
}
{
}
return
metas
;
\ No newline at end of file
}
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
);
}
}
tests/examples/C#/TDengineTest.cs
浏览文件 @
41a58388
...
@@ -410,6 +410,22 @@ namespace TDengineDriver
...
@@ -410,6 +410,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
(
"---"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录