Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_54624550
TDengine
提交
d37fad65
T
TDengine
项目概览
weixin_54624550
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d37fad65
编写于
4月 21, 2021
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into feature/qrefactor
上级
64d0f679
e663bc6f
变更
18
展开全部
隐藏空白更改
内联
并排
Showing
18 changed file
with
1094 addition
and
655 deletion
+1094
-655
cmake/version.inc
cmake/version.inc
+1
-1
snap/snapcraft.yaml
snap/snapcraft.yaml
+2
-2
src/connector/C#/TDengineDriver.cs
src/connector/C#/TDengineDriver.cs
+17
-5
src/connector/go
src/connector/go
+1
-1
src/kit/taosdemo/taosdemo.c
src/kit/taosdemo/taosdemo.c
+213
-132
src/kit/taosdump/taosdump.c
src/kit/taosdump/taosdump.c
+2
-1
src/os/src/darwin/darwinSysInfo.c
src/os/src/darwin/darwinSysInfo.c
+1
-1
src/os/src/detail/osSysinfo.c
src/os/src/detail/osSysinfo.c
+1
-1
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+5
-1
tests/examples/C#/C#checker/C#checker.cs
tests/examples/C#/C#checker/C#checker.cs
+357
-348
tests/examples/C#/TDengineDriver.cs
tests/examples/C#/TDengineDriver.cs
+130
-117
tests/examples/C#/TDengineTest.cs
tests/examples/C#/TDengineTest.cs
+65
-23
tests/examples/C#/taosdemo/taosdemo.cs
tests/examples/C#/taosdemo/taosdemo.cs
+44
-21
tests/pytest/alter/alterTabAddTagWithNULL.py
tests/pytest/alter/alterTabAddTagWithNULL.py
+85
-0
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+4
-0
tests/pytest/query/queryNormal.py
tests/pytest/query/queryNormal.py
+27
-1
tests/pytest/query/querySecondtscolumnTowherenow.py
tests/pytest/query/querySecondtscolumnTowherenow.py
+131
-0
tests/pytest/util/sql.py
tests/pytest/util/sql.py
+8
-0
未找到文件。
cmake/version.inc
浏览文件 @
d37fad65
...
...
@@ -4,7 +4,7 @@ PROJECT(TDengine)
IF
(
DEFINED
VERNUMBER
)
SET
(
TD_VER_NUMBER
$
{
VERNUMBER
})
ELSE
()
SET
(
TD_VER_NUMBER
"2.0.
19
.0"
)
SET
(
TD_VER_NUMBER
"2.0.
20
.0"
)
ENDIF
()
IF
(
DEFINED
VERCOMPATIBLE
)
...
...
snap/snapcraft.yaml
浏览文件 @
d37fad65
name
:
tdengine
base
:
core18
version
:
'
2.0.
19
.0'
version
:
'
2.0.
20
.0'
icon
:
snap/gui/t-dengine.svg
summary
:
an open-source big data platform designed and optimized for IoT.
description
:
|
...
...
@@ -72,7 +72,7 @@ parts:
-
usr/bin/taosd
-
usr/bin/taos
-
usr/bin/taosdemo
-
usr/lib/libtaos.so.2.0.
19
.0
-
usr/lib/libtaos.so.2.0.
20
.0
-
usr/lib/libtaos.so.1
-
usr/lib/libtaos.so
...
...
src/connector/C#/TDengineDriver.cs
浏览文件 @
d37fad65
...
...
@@ -31,7 +31,11 @@ namespace TDengineDriver
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
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
...
...
@@ -53,15 +57,23 @@ namespace TDengineDriver
switch
((
TDengineDataType
)
type
)
{
case
TDengineDataType
.
TSDB_DATA_TYPE_BOOL
:
return
"BOOL
EAN
"
;
return
"BOOL"
;
case
TDengineDataType
.
TSDB_DATA_TYPE_TINYINT
:
return
"
BYTE
"
;
return
"
TINYINT
"
;
case
TDengineDataType
.
TSDB_DATA_TYPE_SMALLINT
:
return
"S
HOR
T"
;
return
"S
MALLIN
T"
;
case
TDengineDataType
.
TSDB_DATA_TYPE_INT
:
return
"INT"
;
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
:
return
"FLOAT"
;
case
TDengineDataType
.
TSDB_DATA_TYPE_DOUBLE
:
...
...
go
@
d9975135
比较
050667e5
...
d9975135
Subproject commit
050667e5b4d0eafa5387e4283e713559b421203f
Subproject commit
d99751356e285696f57bc604304ffafd10287439
src/kit/taosdemo/taosdemo.c
浏览文件 @
d37fad65
此差异已折叠。
点击以展开。
src/kit/taosdump/taosdump.c
浏览文件 @
d37fad65
...
...
@@ -517,7 +517,8 @@ int main(int argc, char *argv[]) {
/* Parse our arguments; every option seen by parse_opt will be
reflected in arguments. */
parse_args
(
argc
,
argv
,
&
g_args
);
if
(
argc
>
1
)
parse_args
(
argc
,
argv
,
&
g_args
);
argp_parse
(
&
argp
,
argc
,
argv
,
0
,
0
,
&
g_args
);
...
...
src/os/src/darwin/darwinSysInfo.c
浏览文件 @
d37fad65
...
...
@@ -217,7 +217,7 @@ void taosSetCoreDump() {}
int32_t
taosGetDiskSize
(
char
*
dataDir
,
SysDiskSize
*
diskSize
)
{
struct
statvfs
info
;
if
(
statvfs
(
tsD
ataDir
,
&
info
))
{
if
(
statvfs
(
d
ataDir
,
&
info
))
{
uError
(
"failed to get disk size, dataDir:%s errno:%s"
,
tsDataDir
,
strerror
(
errno
));
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
...
...
src/os/src/detail/osSysinfo.c
浏览文件 @
d37fad65
...
...
@@ -319,7 +319,7 @@ bool taosGetCpuUsage(float *sysCpuUsage, float *procCpuUsage) {
int32_t
taosGetDiskSize
(
char
*
dataDir
,
SysDiskSize
*
diskSize
)
{
struct
statvfs
info
;
if
(
statvfs
(
tsD
ataDir
,
&
info
))
{
if
(
statvfs
(
d
ataDir
,
&
info
))
{
uError
(
"failed to get disk size, dataDir:%s errno:%s"
,
tsDataDir
,
strerror
(
errno
));
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
...
...
src/tsdb/src/tsdbRead.c
浏览文件 @
d37fad65
...
...
@@ -1406,7 +1406,11 @@ static void copyOneRowFromMem(STsdbQueryHandle* pQueryHandle, int32_t capacity,
SET_DOUBLE_PTR
(
pData
,
value
);
break
;
case
TSDB_DATA_TYPE_TIMESTAMP
:
*
(
TSKEY
*
)
pData
=
tdGetKey
(
*
(
TKEY
*
)
value
);
if
(
pColInfo
->
info
.
colId
==
PRIMARYKEY_TIMESTAMP_COL_INDEX
)
{
*
(
TSKEY
*
)
pData
=
tdGetKey
(
*
(
TKEY
*
)
value
);
}
else
{
*
(
TSKEY
*
)
pData
=
*
(
TSKEY
*
)
value
;
}
break
;
default:
memcpy
(
pData
,
value
,
pColInfo
->
info
.
bytes
);
...
...
tests/examples/C#/C#checker/C#checker.cs
浏览文件 @
d37fad65
此差异已折叠。
点击以展开。
tests/examples/C#/TDengineDriver.cs
浏览文件 @
d37fad65
...
...
@@ -19,136 +19,149 @@ using System.Runtime.InteropServices;
namespace
TDengineDriver
{
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
()
enum
TDengineDataType
{
switch
((
TDengineDataType
)
type
)
{
case
TDengineDataType
.
TSDB_DATA_TYPE_BOOL
:
return
"BOOLEAN"
;
case
TDengineDataType
.
TSDB_DATA_TYPE_TINYINT
:
return
"BYTE"
;
case
TDengineDataType
.
TSDB_DATA_TYPE_SMALLINT
:
return
"SHORT"
;
case
TDengineDataType
.
TSDB_DATA_TYPE_INT
:
return
"INT"
;
case
TDengineDataType
.
TSDB_DATA_TYPE_BIGINT
:
return
"LONG"
;
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"
;
}
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
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
}
}
class
TDengine
{
public
const
int
TSDB_CODE_SUCCESS
=
0
;
enum
TDengineInitOption
{
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
)]
static
extern
public
void
Init
();
class
TDengineMeta
{
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
)]
static
extern
public
void
Cleanup
();
class
TDengine
{
public
const
int
TSDB_CODE_SUCCESS
=
0
;
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_options
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
void
Options
(
int
option
,
string
value
);
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_init
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
void
Init
(
);
[
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"
,
EntryPoint
=
"taos_cleanup
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
void
Cleanup
(
);
[
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"
,
EntryPoint
=
"taos_options"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
void
Options
(
int
option
,
string
value
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_errno
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
ErrorNo
(
IntPtr
res
);
[
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.dll"
,
EntryPoint
=
"taos_query"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
IntPtr
Query
(
IntPtr
conn
,
string
sqlstr
);
[
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.dll"
,
EntryPoint
=
"taos_affected_rows
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
AffectRows
(
IntPtr
res
);
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_errno
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
ErrorNo
(
IntPtr
res
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_field_count
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
FieldCount
(
IntPtr
res
);
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_query
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
IntPtr
Query
(
IntPtr
conn
,
string
sqlstr
);
[
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
;
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_affected_rows"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
AffectRows
(
IntPtr
res
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_fetch_row
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
IntPtr
FetchRows
(
IntPtr
res
);
[
DllImport
(
"taos"
,
EntryPoint
=
"taos_field_count
"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
FieldCount
(
IntPtr
res
);
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_free_result"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
IntPtr
FreeResult
(
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
;
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_close"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
static
extern
public
int
Close
(
IntPtr
taos
);
}
}
\ No newline at end of file
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
);
}
}
tests/examples/C#/TDengineTest.cs
浏览文件 @
d37fad65
...
...
@@ -165,7 +165,7 @@ namespace TDengineDriver
public
void
ReadArgument
(
String
[]
argv
)
{
PrintHelp
(
argv
);
host
=
this
.
GetArgumentAsString
(
argv
,
"-h"
,
"1
92.168.100.128
"
);
host
=
this
.
GetArgumentAsString
(
argv
,
"-h"
,
"1
27.0.0.1
"
);
user
=
this
.
GetArgumentAsString
(
argv
,
"-u"
,
"root"
);
password
=
this
.
GetArgumentAsString
(
argv
,
"-p"
,
"taosdata"
);
dbName
=
this
.
GetArgumentAsString
(
argv
,
"-d"
,
"db"
);
...
...
@@ -212,42 +212,54 @@ namespace TDengineDriver
StringBuilder
sql
=
new
StringBuilder
();
sql
.
Append
(
"create database if not exists "
).
Append
(
this
.
dbName
);
IntPtr
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
!=
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" success"
);
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
ExitProgram
();
}
else
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
ExitProgram
();
Console
.
WriteLine
(
sql
.
ToString
()
+
" success"
);
}
TDengine
.
FreeResult
(
res
);
sql
.
Clear
();
sql
.
Append
(
"use "
).
Append
(
this
.
dbName
);
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
!=
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" success"
);
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
ExitProgram
();
}
else
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
ExitProgram
();
Console
.
WriteLine
(
sql
.
ToString
()
+
" success"
);
}
TDengine
.
FreeResult
(
res
);
sql
.
Clear
();
sql
.
Append
(
"create table if not exists "
).
Append
(
this
.
stableName
).
Append
(
"(ts timestamp, v1 bool, v2 tinyint, v3 smallint, v4 int, v5 bigint, v6 float, v7 double, v8 binary(10), v9 nchar(10)) tags(t1 int)"
);
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
!=
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" success"
);
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
ExitProgram
();
}
else
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
ExitProgram
();
Console
.
WriteLine
(
sql
.
ToString
()
+
" success"
);
}
TDengine
.
FreeResult
(
res
);
...
...
@@ -257,14 +269,18 @@ namespace TDengineDriver
sql
=
sql
.
Append
(
"create table if not exists "
).
Append
(
this
.
tablePrefix
).
Append
(
i
)
.
Append
(
" using "
).
Append
(
this
.
stableName
).
Append
(
" tags("
).
Append
(
i
).
Append
(
")"
);
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
!=
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" success"
);
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
ExitProgram
();
}
else
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
ExitProgram
();
Console
.
WriteLine
(
sql
.
ToString
()
+
" success"
);
}
TDengine
.
FreeResult
(
res
);
}
...
...
@@ -298,9 +314,13 @@ namespace TDengineDriver
.
Append
(
", 5, 6, 7, 'abc', 'def')"
);
}
IntPtr
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
==
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
}
int
affectRows
=
TDengine
.
AffectRows
(
res
);
...
...
@@ -326,16 +346,20 @@ namespace TDengineDriver
System
.
DateTime
start
=
new
System
.
DateTime
();
long
queryRows
=
0
;
for
(
int
i
=
0
;
i
<
1
/*this.tableCount*/
;
++
i
)
{
String
sql
=
"select * from "
+
this
.
dbName
+
"."
+
tablePrefix
+
i
;
Console
.
WriteLine
(
sql
);
IntPtr
res
=
TDengine
.
Query
(
conn
,
sql
);
if
(
res
==
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
Console
.
WriteLine
(
sql
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
ExitProgram
();
}
...
...
@@ -410,6 +434,22 @@ namespace TDengineDriver
string
v10
=
Marshal
.
PtrToStringAnsi
(
data
);
builder
.
Append
(
v10
);
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
(
"---"
);
...
...
@@ -423,8 +463,10 @@ namespace TDengineDriver
if
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
{
Console
.
Write
(
"Query is not complete, Error {0:G}"
,
TDengine
.
ErrorNo
(
res
),
TDengine
.
Error
(
res
));
Console
.
Write
(
"Query is not complete, Error {0:G}"
,
TDengine
.
ErrorNo
(
res
),
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
TDengine
.
FreeResult
(
res
);
}
...
...
tests/examples/C#/taosdemo/taosdemo.cs
浏览文件 @
d37fad65
...
...
@@ -370,16 +370,19 @@ namespace TDengineDriver
StringBuilder
sql
=
new
StringBuilder
();
sql
.
Append
(
"DROP DATABASE IF EXISTS "
).
Append
(
this
.
dbName
);
IntPtr
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
!=
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
VerbosePrint
(
sql
.
ToString
()
+
" success\n"
);
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
CleanAndExitProgram
(
1
);
}
else
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
CleanAndExitProgram
(
1
);
VerbosePrint
(
sql
.
ToString
()
+
" success\n"
);
}
}
public
void
CreateDb
()
...
...
@@ -387,14 +390,18 @@ namespace TDengineDriver
StringBuilder
sql
=
new
StringBuilder
();
sql
.
Append
(
"CREATE DATABASE IF NOT EXISTS "
).
Append
(
this
.
dbName
).
Append
(
" replica "
).
Append
(
this
.
replica
);
IntPtr
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
!=
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
VerbosePrint
(
sql
.
ToString
()
+
" success\n"
);
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
CleanAndExitProgram
(
1
);
}
else
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
CleanAndExitProgram
(
1
);
VerbosePrint
(
sql
.
ToString
()
+
" success\n"
);
}
TDengine
.
FreeResult
(
res
);
}
...
...
@@ -408,14 +415,18 @@ namespace TDengineDriver
Append
(
this
.
dbName
).
Append
(
"."
).
Append
(
this
.
stablePrefix
).
Append
(
"(ts timestamp, v1 bool, v2 tinyint, v3 smallint, v4 int, v5 bigint, v6 float, v7 double, v8 binary(10), v9 nchar(10)) tags(t1 int)"
);
IntPtr
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
!=
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
VerbosePrint
(
sql
.
ToString
()
+
" success\n"
);
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
CleanAndExitProgram
(
1
);
}
else
{
Console
.
WriteLine
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
CleanAndExitProgram
(
1
);
VerbosePrint
(
sql
.
ToString
()
+
" success\n"
);
}
TDengine
.
FreeResult
(
res
);
}
...
...
@@ -495,9 +506,13 @@ namespace TDengineDriver
IntPtr
res
=
TDengine
.
Query
(
conn
,
sql
);
DebugPrintFormat
(
"res: {0}\n"
,
res
);
if
(
res
==
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
Console
.
WriteLine
(
sql
+
" failure, reason: "
+
TDengine
.
Error
(
res
));
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
CleanAndExitProgram
(
1
);
}
...
...
@@ -761,9 +776,13 @@ namespace TDengineDriver
}
IntPtr
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
==
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
VerbosePrint
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
)
+
"\n"
);
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
}
inserted
+=
this
.
batchRows
;
...
...
@@ -840,14 +859,18 @@ namespace TDengineDriver
sql
=
sql
.
Append
(
"(ts timestamp, v1 bool, v2 tinyint, v3 smallint, v4 int, v5 bigint, v6 float, v7 double, v8 binary(10), v9 nchar(10))"
);
}
IntPtr
res
=
TDengine
.
Query
(
this
.
conn
,
sql
.
ToString
());
if
(
res
!=
IntPtr
.
Zero
)
if
(
(
res
==
IntPtr
.
Zero
)
||
(
TDengine
.
ErrorNo
(
res
)
!=
0
)
)
{
VerbosePrint
(
sql
.
ToString
()
+
" success\n"
);
Console
.
Write
(
sql
.
ToString
()
+
" failure, "
);
if
(
res
!=
IntPtr
.
Zero
)
{
Console
.
Write
(
"reason: "
+
TDengine
.
Error
(
res
));
}
Console
.
WriteLine
(
""
);
CleanAndExitProgram
(
1
);
}
else
{
VerbosePrint
(
sql
.
ToString
()
+
" failure, reason: "
+
TDengine
.
Error
(
res
)
+
"\n"
);
CleanAndExitProgram
(
1
);
VerbosePrint
(
sql
.
ToString
()
+
" success\n"
);
}
TDengine
.
FreeResult
(
res
);
}
...
...
tests/pytest/alter/alterTabAddTagWithNULL.py
0 → 100644
浏览文件 @
d37fad65
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import
sys
from
util.log
import
*
from
util.cases
import
*
from
util.sql
import
*
from
util.dnodes
import
*
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
f
"start to execute
{
__file__
}
"
)
tdSql
.
init
(
conn
.
cursor
(),
logSql
)
def
run
(
self
):
tdSql
.
execute
(
"drop database if exists db"
)
tdSql
.
execute
(
"create database if not exists db keep 36500"
)
tdSql
.
execute
(
"use db"
)
tdLog
.
printNoPrefix
(
"==========step1:create table && insert data"
)
tdSql
.
execute
(
"create table stbtag (ts timestamp, c1 int) TAGS(t1 int)"
)
tdSql
.
execute
(
"create table tag1 using stbtag tags(1)"
)
tdLog
.
printNoPrefix
(
"==========step2:alter stb add tag create new chiltable"
)
tdSql
.
execute
(
"alter table stbtag add tag t2 int"
)
tdSql
.
execute
(
"alter table stbtag add tag t3 tinyint"
)
tdSql
.
execute
(
"alter table stbtag add tag t4 smallint "
)
tdSql
.
execute
(
"alter table stbtag add tag t5 bigint"
)
tdSql
.
execute
(
"alter table stbtag add tag t6 float "
)
tdSql
.
execute
(
"alter table stbtag add tag t7 double "
)
tdSql
.
execute
(
"alter table stbtag add tag t8 bool "
)
tdSql
.
execute
(
"alter table stbtag add tag t9 binary(10) "
)
tdSql
.
execute
(
"alter table stbtag add tag t10 nchar(10)"
)
tdSql
.
execute
(
"create table tag2 using stbtag tags(2, 22, 23, 24, 25, 26.1, 27.1, 1, 'binary9', 'nchar10')"
)
tdSql
.
query
(
"select tbname, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 from stbtag"
)
tdSql
.
checkData
(
1
,
0
,
"tag2"
)
tdSql
.
checkData
(
1
,
1
,
2
)
tdSql
.
checkData
(
1
,
2
,
22
)
tdSql
.
checkData
(
1
,
3
,
23
)
tdSql
.
checkData
(
1
,
4
,
24
)
tdSql
.
checkData
(
1
,
5
,
25
)
tdSql
.
checkData
(
1
,
6
,
26.1
)
tdSql
.
checkData
(
1
,
7
,
27.1
)
tdSql
.
checkData
(
1
,
8
,
1
)
tdSql
.
checkData
(
1
,
9
,
"binary9"
)
tdSql
.
checkData
(
1
,
10
,
"nchar10"
)
tdLog
.
printNoPrefix
(
"==========step3:alter stb drop tag create new chiltable"
)
tdSql
.
execute
(
"alter table stbtag drop tag t2 "
)
tdSql
.
execute
(
"alter table stbtag drop tag t3 "
)
tdSql
.
execute
(
"alter table stbtag drop tag t4 "
)
tdSql
.
execute
(
"alter table stbtag drop tag t5 "
)
tdSql
.
execute
(
"alter table stbtag drop tag t6 "
)
tdSql
.
execute
(
"alter table stbtag drop tag t7 "
)
tdSql
.
execute
(
"alter table stbtag drop tag t8 "
)
tdSql
.
execute
(
"alter table stbtag drop tag t9 "
)
tdSql
.
execute
(
"alter table stbtag drop tag t10 "
)
tdSql
.
execute
(
"create table tag3 using stbtag tags(3)"
)
tdSql
.
query
(
"select * from stbtag where tbname like 'tag3' "
)
tdSql
.
checkCols
(
3
)
tdSql
.
query
(
"select tbname, t1 from stbtag where tbname like 'tag3' "
)
tdSql
.
checkData
(
0
,
1
,
3
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
f
"
{
__file__
}
successfully executed"
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
\ No newline at end of file
tests/pytest/fulltest.sh
浏览文件 @
d37fad65
...
...
@@ -219,6 +219,9 @@ python3 ./test.py -f query/bug3351.py
python3 ./test.py
-f
query/bug3375.py
python3 ./test.py
-f
query/queryJoin10tables.py
python3 ./test.py
-f
query/queryStddevWithGroupby.py
python3 ./test.py
-f
query/querySecondtscolumnTowherenow.py
#stream
python3 ./test.py
-f
stream/metric_1.py
...
...
@@ -234,6 +237,7 @@ python3 ./test.py -f stream/table_n.py
#alter table
python3 ./test.py
-f
alter/alter_table_crash.py
python3 ./test.py
-f
alter/alterTabAddTagWithNULL.py
# client
python3 ./test.py
-f
client/client.py
...
...
tests/pytest/query/queryNormal.py
浏览文件 @
d37fad65
...
...
@@ -16,7 +16,7 @@ import taos
from
util.log
import
*
from
util.cases
import
*
from
util.sql
import
*
from
util.dnodes
import
*
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
...
...
@@ -122,6 +122,32 @@ class TDTestCase:
tdSql
.
query
(
"SELECT server_status()"
)
tdSql
.
checkRows
(
1
)
# https://jira.taosdata.com:18080/browse/TD-3800
tdSql
.
execute
(
"create table m1(ts timestamp, k int) tags(a int)"
)
tdSql
.
execute
(
"create table tm0 using m1 tags(1)"
)
tdSql
.
execute
(
"create table tm1 using m1 tags(2)"
)
tdSql
.
execute
(
"insert into tm0 values('2020-3-1 1:1:1', 112)"
)
tdSql
.
execute
(
"insert into tm1 values('2020-1-1 1:1:1', 1)('2020-3-1 0:1:1', 421)"
)
tdSql
.
query
(
"select last(*) from m1 group by tbname"
)
tdSql
.
checkData
(
0
,
0
,
"2020-03-01 01:01:01"
)
tdSql
.
checkData
(
0
,
1
,
112
)
tdSql
.
checkData
(
0
,
2
,
"tm0"
)
tdSql
.
checkData
(
1
,
0
,
"2020-03-01 00:01:01"
)
tdSql
.
checkData
(
1
,
1
,
421
)
tdSql
.
checkData
(
1
,
2
,
"tm1"
)
tdDnodes
.
stop
(
1
)
tdDnodes
.
start
(
1
)
tdSql
.
query
(
"select last(*) from m1 group by tbname"
)
tdSql
.
checkData
(
0
,
0
,
"2020-03-01 01:01:01"
)
tdSql
.
checkData
(
0
,
1
,
112
)
tdSql
.
checkData
(
0
,
2
,
"tm0"
)
tdSql
.
checkData
(
1
,
0
,
"2020-03-01 00:01:01"
)
tdSql
.
checkData
(
1
,
1
,
421
)
tdSql
.
checkData
(
1
,
2
,
"tm1"
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
...
...
tests/pytest/query/querySecondtscolumnTowherenow.py
0 → 100644
浏览文件 @
d37fad65
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import
sys
from
util.log
import
*
from
util.cases
import
*
from
util.sql
import
*
from
util.dnodes
import
*
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
f
"start to execute
{
__file__
}
"
)
tdSql
.
init
(
conn
.
cursor
(),
logSql
)
def
run
(
self
):
tdSql
.
execute
(
"drop database if exists db"
)
tdSql
.
execute
(
"create database if not exists db keep 36500"
)
tdSql
.
execute
(
"use db"
)
tdLog
.
printNoPrefix
(
"==========step1:create table && insert data"
)
# timestamp list:
# 0->"1970-01-01 08:00:00" | -28800000->"1970-01-01 00:00:00" | -946800000000->"1940-01-01 00:00:00"
ts1
=
0
ts2
=
-
28800000
ts3
=
-
946800000000
tdSql
.
execute
(
"create table stb2ts (ts timestamp, ts1 timestamp, ts2 timestamp, c1 int, ts3 timestamp) TAGS(t1 int)"
)
tdSql
.
execute
(
"create table t2ts1 using stb2ts tags(1)"
)
tdSql
.
execute
(
"insert into t2ts1 values (now, now, now, 1, now)"
)
tdSql
.
execute
(
"insert into t2ts1 values (now-1m, now-1m, now-1m, 1, now-1m)"
)
tdSql
.
execute
(
f
"insert into t2ts1 values (
{
ts1
}
,
{
ts1
}
,
{
ts1
}
, 1,
{
ts1
}
)"
)
# tdSql.execute(f"insert into t2ts1 values ({ts2}, {ts2}, {ts2}, 1, {ts2})")
# tdSql.execute(f"insert into t2ts1 values ({ts3}, {ts3}, {ts3}, 1, {ts3})")
tdLog
.
printNoPrefix
(
"==========step2:query"
)
time
.
sleep
(
1
)
# query primary key timestamp column
tdSql
.
execute
(
"select * from t2ts1 where ts < now"
)
ts_len1
=
len
(
tdSql
.
cursor
.
fetchall
())
tdSql
.
execute
(
"select * from t2ts1 where ts <= now"
)
ts_len2
=
len
(
tdSql
.
cursor
.
fetchall
())
tdSql
.
execute
(
"select * from t2ts1 where ts > now"
)
ts_len3
=
len
(
tdSql
.
cursor
.
fetchall
())
tdSql
.
execute
(
"select * from t2ts1 where ts >= now"
)
ts_len4
=
len
(
tdSql
.
cursor
.
fetchall
())
tdSql
.
execute
(
"select * from t2ts1 where ts = now"
)
ts_len5
=
len
(
tdSql
.
cursor
.
fetchall
())
tdSql
.
execute
(
"select * from t2ts1 where ts <> now"
)
ts_len6
=
len
(
tdSql
.
cursor
.
fetchall
())
tdSql
.
execute
(
"select * from t2ts1 where ts between 0 and now"
)
ts_len7
=
len
(
tdSql
.
cursor
.
fetchall
())
tdSql
.
execute
(
"select * from t2ts1 where ts between now and now+100d"
)
ts_len8
=
len
(
tdSql
.
cursor
.
fetchall
())
# query noemal timestamp column
tdSql
.
query
(
"select * from t2ts1 where ts1 < now"
)
tdSql
.
checkRows
(
ts_len1
)
tdSql
.
query
(
"select * from t2ts1 where ts2 < now"
)
tdSql
.
checkRows
(
ts_len1
)
tdSql
.
query
(
"select * from t2ts1 where ts3 < now"
)
tdSql
.
checkRows
(
ts_len1
)
tdSql
.
query
(
"select * from t2ts1 where ts1 <= now"
)
tdSql
.
checkRows
(
ts_len2
)
tdSql
.
query
(
"select * from t2ts1 where ts2 <= now"
)
tdSql
.
checkRows
(
ts_len2
)
tdSql
.
query
(
"select * from t2ts1 where ts3 <= now"
)
tdSql
.
checkRows
(
ts_len2
)
tdSql
.
query
(
"select * from t2ts1 where ts1 > now"
)
tdSql
.
checkRows
(
ts_len3
)
tdSql
.
query
(
"select * from t2ts1 where ts2 > now"
)
tdSql
.
checkRows
(
ts_len3
)
tdSql
.
query
(
"select * from t2ts1 where ts3 > now"
)
tdSql
.
checkRows
(
ts_len3
)
tdSql
.
query
(
"select * from t2ts1 where ts1 >= now"
)
tdSql
.
checkRows
(
ts_len4
)
tdSql
.
query
(
"select * from t2ts1 where ts2 >= now"
)
tdSql
.
checkRows
(
ts_len4
)
tdSql
.
query
(
"select * from t2ts1 where ts3 >= now"
)
tdSql
.
checkRows
(
ts_len4
)
tdSql
.
query
(
"select * from t2ts1 where ts1 = now"
)
tdSql
.
checkRows
(
ts_len5
)
tdSql
.
query
(
"select * from t2ts1 where ts2 = now"
)
tdSql
.
checkRows
(
ts_len5
)
tdSql
.
query
(
"select * from t2ts1 where ts2 = now"
)
tdSql
.
checkRows
(
ts_len5
)
tdSql
.
query
(
"select * from t2ts1 where ts1 <> now"
)
tdSql
.
checkRows
(
ts_len6
)
tdSql
.
query
(
"select * from t2ts1 where ts2 <> now"
)
tdSql
.
checkRows
(
ts_len6
)
tdSql
.
query
(
"select * from t2ts1 where ts3 <> now"
)
tdSql
.
checkRows
(
ts_len6
)
tdSql
.
query
(
"select * from t2ts1 where ts1 between 0 and now"
)
tdSql
.
checkRows
(
ts_len7
)
tdSql
.
query
(
"select * from t2ts1 where ts2 between 0 and now"
)
tdSql
.
checkRows
(
ts_len7
)
tdSql
.
query
(
"select * from t2ts1 where ts3 between 0 and now"
)
tdSql
.
checkRows
(
ts_len7
)
tdSql
.
query
(
"select * from t2ts1 where ts1 between now and now+100d"
)
tdSql
.
checkRows
(
ts_len8
)
tdSql
.
query
(
"select * from t2ts1 where ts2 between now and now+100d"
)
tdSql
.
checkRows
(
ts_len8
)
tdSql
.
query
(
"select * from t2ts1 where ts3 between now and now+100d"
)
tdSql
.
checkRows
(
ts_len8
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
f
"
{
__file__
}
successfully executed"
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
\ No newline at end of file
tests/pytest/util/sql.py
浏览文件 @
d37fad65
...
...
@@ -105,6 +105,14 @@ class TDSql:
args
=
(
caller
.
filename
,
caller
.
lineno
,
self
.
sql
,
self
.
queryRows
,
expectRows
)
tdLog
.
exit
(
"%s(%d) failed: sql:%s, queryRows:%d != expect:%d"
%
args
)
def
checkCols
(
self
,
expectCols
):
if
self
.
queryCols
==
expectCols
:
tdLog
.
info
(
"sql:%s, queryCols:%d == expect:%d"
%
(
self
.
sql
,
self
.
queryCols
,
expectCols
))
else
:
caller
=
inspect
.
getframeinfo
(
inspect
.
stack
()[
1
][
0
])
args
=
(
caller
.
filename
,
caller
.
lineno
,
self
.
sql
,
self
.
queryCols
,
expectCols
)
tdLog
.
exit
(
"%s(%d) failed: sql:%s, queryCols:%d != expect:%d"
%
args
)
def
checkRowCol
(
self
,
row
,
col
):
caller
=
inspect
.
getframeinfo
(
inspect
.
stack
()[
2
][
0
])
if
row
<
0
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录