Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
03ed83e0
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看板
未验证
提交
03ed83e0
编写于
6月 05, 2022
作者:
wafwerar
提交者:
GitHub
6月 05, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #13478 from taosdata/fix/ZhiqiangWang/TD-15849-add-win32-udf-case
fix(os): add win32 udf case
上级
43df4f1c
ac09ef04
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
118 addition
and
89 deletion
+118
-89
source/libs/function/src/udfd.c
source/libs/function/src/udfd.c
+8
-0
source/libs/function/test/udf1.c
source/libs/function/test/udf1.c
+3
-3
source/libs/function/test/udf2.c
source/libs/function/test/udf2.c
+5
-5
source/os/src/osFile.c
source/os/src/osFile.c
+6
-0
source/os/src/osSysinfo.c
source/os/src/osSysinfo.c
+11
-2
source/os/src/osTimezone.c
source/os/src/osTimezone.c
+39
-42
tests/pytest/util/dnodes.py
tests/pytest/util/dnodes.py
+8
-9
tests/system-test/0-others/udfTest.py
tests/system-test/0-others/udfTest.py
+36
-27
tests/system-test/fulltest.bat
tests/system-test/fulltest.bat
+2
-1
未找到文件。
source/libs/function/src/udfd.c
浏览文件 @
03ed83e0
...
...
@@ -401,9 +401,17 @@ void udfdProcessRpcRsp(void *parent, SRpcMsg *pMsg, SEpSet *pEpSet) {
udf
->
bufSize
=
pFuncInfo
->
bufSize
;
char
path
[
PATH_MAX
]
=
{
0
};
#ifdef WINDOWS
snprintf
(
path
,
sizeof
(
path
),
"%s%s.dll"
,
TD_TMP_DIR_PATH
,
pFuncInfo
->
name
);
#else
snprintf
(
path
,
sizeof
(
path
),
"%s/lib%s.so"
,
TD_TMP_DIR_PATH
,
pFuncInfo
->
name
);
#endif
TdFilePtr
file
=
taosOpenFile
(
path
,
TD_FILE_CREATE
|
TD_FILE_WRITE
|
TD_FILE_READ
|
TD_FILE_TRUNC
|
TD_FILE_AUTO_DEL
);
if
(
file
==
NULL
)
{
fnError
(
"udfd write udf shared library: %s failed, error: %d %s"
,
path
,
errno
,
strerror
(
errno
));
msgInfo
->
code
=
TSDB_CODE_FILE_CORRUPTED
;
}
int64_t
count
=
taosWriteFile
(
file
,
pFuncInfo
->
pCode
,
pFuncInfo
->
codeSize
);
if
(
count
!=
pFuncInfo
->
codeSize
)
{
fnError
(
"udfd write udf shared library failed"
);
...
...
source/libs/function/test/udf1.c
浏览文件 @
03ed83e0
...
...
@@ -9,15 +9,15 @@
#undef free
#define free free
int32_t
udf1_init
()
{
DLL_EXPORT
int32_t
udf1_init
()
{
return
0
;
}
int32_t
udf1_destroy
()
{
DLL_EXPORT
int32_t
udf1_destroy
()
{
return
0
;
}
int32_t
udf1
(
SUdfDataBlock
*
block
,
SUdfColumn
*
resultCol
)
{
DLL_EXPORT
int32_t
udf1
(
SUdfDataBlock
*
block
,
SUdfColumn
*
resultCol
)
{
SUdfColumnMeta
*
meta
=
&
resultCol
->
colMeta
;
meta
->
bytes
=
4
;
meta
->
type
=
TSDB_DATA_TYPE_INT
;
...
...
source/libs/function/test/udf2.c
浏览文件 @
03ed83e0
...
...
@@ -9,22 +9,22 @@
#undef free
#define free free
int32_t
udf2_init
()
{
DLL_EXPORT
int32_t
udf2_init
()
{
return
0
;
}
int32_t
udf2_destroy
()
{
DLL_EXPORT
int32_t
udf2_destroy
()
{
return
0
;
}
int32_t
udf2_start
(
SUdfInterBuf
*
buf
)
{
DLL_EXPORT
int32_t
udf2_start
(
SUdfInterBuf
*
buf
)
{
*
(
int64_t
*
)(
buf
->
buf
)
=
0
;
buf
->
bufLen
=
sizeof
(
double
);
buf
->
numOfResult
=
0
;
return
0
;
}
int32_t
udf2
(
SUdfDataBlock
*
block
,
SUdfInterBuf
*
interBuf
,
SUdfInterBuf
*
newInterBuf
)
{
DLL_EXPORT
int32_t
udf2
(
SUdfDataBlock
*
block
,
SUdfInterBuf
*
interBuf
,
SUdfInterBuf
*
newInterBuf
)
{
double
sumSquares
=
*
(
double
*
)
interBuf
->
buf
;
int8_t
numNotNull
=
0
;
for
(
int32_t
i
=
0
;
i
<
block
->
numOfCols
;
++
i
)
{
...
...
@@ -71,7 +71,7 @@ int32_t udf2(SUdfDataBlock* block, SUdfInterBuf *interBuf, SUdfInterBuf *newInte
return
0
;
}
int32_t
udf2_finish
(
SUdfInterBuf
*
buf
,
SUdfInterBuf
*
resultData
)
{
DLL_EXPORT
int32_t
udf2_finish
(
SUdfInterBuf
*
buf
,
SUdfInterBuf
*
resultData
)
{
if
(
buf
->
numOfResult
==
0
)
{
resultData
->
numOfResult
=
0
;
return
0
;
...
...
source/os/src/osFile.c
浏览文件 @
03ed83e0
...
...
@@ -399,6 +399,9 @@ int64_t taosPReadFile(TdFilePtr pFile, void *buf, int64_t count, int64_t offset)
}
int64_t
taosWriteFile
(
TdFilePtr
pFile
,
const
void
*
buf
,
int64_t
count
)
{
if
(
pFile
==
NULL
)
{
return
0
;
}
#if FILE_WITH_LOCK
taosThreadRwlockWrlock
(
&
(
pFile
->
rwlock
));
#endif
...
...
@@ -430,6 +433,9 @@ int64_t taosWriteFile(TdFilePtr pFile, const void *buf, int64_t count) {
}
int64_t
taosLSeekFile
(
TdFilePtr
pFile
,
int64_t
offset
,
int32_t
whence
)
{
if
(
pFile
==
NULL
)
{
return
0
;
}
#if FILE_WITH_LOCK
taosThreadRwlockRdlock
(
&
(
pFile
->
rwlock
));
#endif
...
...
source/os/src/osSysinfo.c
浏览文件 @
03ed83e0
...
...
@@ -276,7 +276,8 @@ int32_t taosGetEmail(char *email, int32_t maxLen) {
int32_t
taosGetOsReleaseName
(
char
*
releaseName
,
int32_t
maxLen
)
{
#ifdef WINDOWS
assert
(
0
);
snprintf
(
releaseName
,
maxLen
,
"Windows"
);
return
0
;
#elif defined(_TD_DARWIN_64)
char
*
line
=
NULL
;
size_t
size
=
0
;
...
...
@@ -332,7 +333,15 @@ int32_t taosGetOsReleaseName(char *releaseName, int32_t maxLen) {
int32_t
taosGetCpuInfo
(
char
*
cpuModel
,
int32_t
maxLen
,
float
*
numOfCores
)
{
#ifdef WINDOWS
assert
(
0
);
char
value
[
100
];
DWORD
bufferSize
=
sizeof
(
value
);
RegGetValue
(
HKEY_LOCAL_MACHINE
,
"HARDWARE
\\
DESCRIPTION
\\
System
\\
CentralProcessor
\\
0"
,
"ProcessorNameString"
,
RRF_RT_ANY
,
NULL
,
(
PVOID
)
&
value
,
&
bufferSize
);
tstrncpy
(
cpuModel
,
value
,
maxLen
);
SYSTEM_INFO
si
;
memset
(
&
si
,
0
,
sizeof
(
SYSTEM_INFO
));
GetSystemInfo
(
&
si
);
*
numOfCores
=
si
.
dwNumberOfProcessors
;
return
0
;
#elif defined(_TD_DARWIN_64)
char
*
line
=
NULL
;
size_t
size
=
0
;
...
...
source/os/src/osTimezone.c
浏览文件 @
03ed83e0
...
...
@@ -767,32 +767,36 @@ void taosSetSystemTimezone(const char *inTimezoneStr, char *outTimezoneStr, int8
keyValue
[
4
]
=
(
keyValue
[
4
]
==
'+'
?
'-'
:
'+'
);
keyValue
[
10
]
=
0
;
sprintf
(
winStr
,
"TZ=%s:00"
,
&
(
keyValue
[
1
]));
*
tsTimezone
=
taosStr2Int32
(
&
keyValue
[
4
],
NULL
,
10
);
}
break
;
}
}
char
*
p
=
strchr
(
inTimezoneStr
,
'+'
);
if
(
p
==
NULL
)
p
=
strchr
(
inTimezoneStr
,
'-'
);
if
(
p
==
NULL
)
{
sprintf
(
winStr
,
"TZ=UTC+00:00:00"
);
}
else
{
sprintf
(
winStr
,
"TZ=UTC%c%c%c:%c%c:00"
,
(
p
[
0
]
==
'+'
?
'-'
:
'+'
),
p
[
1
],
p
[
2
],
p
[
3
],
p
[
4
]);
if
(
winStr
[
0
]
==
0
)
{
char
*
p
=
strchr
(
inTimezoneStr
,
'+'
);
if
(
p
==
NULL
)
p
=
strchr
(
inTimezoneStr
,
'-'
);
if
(
p
!=
NULL
)
{
char
*
pp
=
strchr
(
inTimezoneStr
,
'('
);
char
*
ppp
=
strchr
(
inTimezoneStr
,
','
);
int
indexStr
;
if
(
pp
==
NULL
||
ppp
==
NULL
)
{
indexStr
=
sprintf
(
winStr
,
"TZ=UTC"
);
}
else
{
memcpy
(
winStr
,
"TZ="
,
3
);
pp
++
;
memcpy
(
&
winStr
[
3
],
pp
,
ppp
-
pp
);
indexStr
=
ppp
-
pp
+
3
;
}
sprintf
(
&
winStr
[
indexStr
],
"%c%c%c:%c%c:00"
,
(
p
[
0
]
==
'+'
?
'-'
:
'+'
),
p
[
1
],
p
[
2
],
p
[
3
],
p
[
4
]);
*
tsTimezone
=
taosStr2Int32
(
p
,
NULL
,
10
);
}
else
{
*
tsTimezone
=
0
;
}
}
_putenv
(
winStr
);
_tzset
();
#ifdef _MSC_VER
#if _MSC_VER >= 1900
int64_t
timezone
=
_timezone
;
int32_t
daylight
=
_daylight
;
char
**
tzname
=
_tzname
;
#endif
#endif
int32_t
tz
=
(
int32_t
)((
-
timezone
*
MILLISECOND_PER_SECOND
)
/
MILLISECOND_PER_HOUR
);
*
tsTimezone
=
tz
;
tz
+=
daylight
;
sprintf
(
outTimezoneStr
,
"%s (%s, %s%02d00)"
,
buf
,
tzname
[
daylight
],
tz
>=
0
?
"+"
:
"-"
,
abs
(
tz
));
*
outDaylight
=
daylight
;
strcpy
(
outTimezoneStr
,
inTimezoneStr
);
*
outDaylight
=
0
;
#elif defined(_TD_DARWIN_64)
...
...
@@ -822,34 +826,27 @@ void taosSetSystemTimezone(const char *inTimezoneStr, char *outTimezoneStr, int8
void
taosGetSystemTimezone
(
char
*
outTimezoneStr
,
enum
TdTimezone
*
tsTimezone
)
{
#ifdef WINDOWS
char
value
[
100
];
char
keyPath
[
100
];
DWORD
bufferSize
=
sizeof
(
value
);
char
*
buf
=
getenv
(
"TZ"
);
if
(
buf
==
NULL
||
strlen
(
buf
)
==
0
)
{
RegGetValue
(
HKEY_LOCAL_MACHINE
,
"SYSTEM
\\
CurrentControlSet
\\
Control
\\
TimeZoneInformation"
,
"TimeZoneKeyName"
,
RRF_RT_ANY
,
NULL
,
(
PVOID
)
&
value
,
&
bufferSize
);
strcpy
(
outTimezoneStr
,
"not configured"
);
if
(
bufferSize
>
0
)
{
for
(
size_t
i
=
0
;
i
<
139
;
i
++
)
{
if
(
strcmp
(
win_tz
[
i
][
0
],
value
)
==
0
)
{
strcpy
(
outTimezoneStr
,
win_tz
[
i
][
1
]);
break
;
RegGetValue
(
HKEY_LOCAL_MACHINE
,
"SYSTEM
\\
CurrentControlSet
\\
Control
\\
TimeZoneInformation"
,
"TimeZoneKeyName"
,
RRF_RT_ANY
,
NULL
,
(
PVOID
)
&
value
,
&
bufferSize
);
strcpy
(
outTimezoneStr
,
"not configured"
);
*
tsTimezone
=
0
;
if
(
bufferSize
>
0
)
{
for
(
size_t
i
=
0
;
i
<
139
;
i
++
)
{
if
(
strcmp
(
win_tz
[
i
][
0
],
value
)
==
0
)
{
strcpy
(
outTimezoneStr
,
win_tz
[
i
][
1
]);
bufferSize
=
sizeof
(
value
);
sprintf
(
keyPath
,
"SOFTWARE
\\
Microsoft
\\
Windows NT
\\
CurrentVersion
\\
Time Zones
\\
%s"
,
value
);
RegGetValue
(
HKEY_LOCAL_MACHINE
,
keyPath
,
"Display"
,
RRF_RT_ANY
,
NULL
,
(
PVOID
)
&
value
,
&
bufferSize
);
if
(
bufferSize
>
0
)
{
// value[4] = (value[4] == '+' ? '-' : '+');
sprintf
(
outTimezoneStr
,
"%s (UTC, %c%c%c%c%c)"
,
outTimezoneStr
,
value
[
4
],
value
[
5
],
value
[
6
],
value
[
8
],
value
[
9
]);
*
tsTimezone
=
taosStr2Int32
(
&
value
[
4
],
NULL
,
10
);
}
break
;
}
}
}
else
{
strcpy
(
outTimezoneStr
,
buf
);
}
#ifdef _MSC_VER
#if _MSC_VER >= 1900
// see https://docs.microsoft.com/en-us/cpp/c-runtime-library/daylight-dstbias-timezone-and-tzname?view=vs-2019
int64_t
timezone
=
_timezone
;
int32_t
daylight
=
_daylight
;
char
**
tzname
=
_tzname
;
#endif
#endif
int32_t
tz
=
(
int32_t
)((
-
timezone
*
MILLISECOND_PER_SECOND
)
/
MILLISECOND_PER_HOUR
);
*
tsTimezone
=
tz
;
tz
+=
daylight
;
sprintf
(
outTimezoneStr
,
"%s (%s, %s%02d00)"
,
outTimezoneStr
,
tzname
[
daylight
],
tz
>=
0
?
"+"
:
"-"
,
abs
(
tz
));
#elif defined(_TD_DARWIN_64)
char
buf
[
4096
]
=
{
0
};
char
*
tz
=
NULL
;
...
...
tests/pytest/util/dnodes.py
浏览文件 @
03ed83e0
...
...
@@ -145,6 +145,12 @@ class TDDnode:
def
init
(
self
,
path
,
remoteIP
=
""
):
self
.
path
=
path
self
.
remoteIP
=
remoteIP
if
(
not
self
.
remoteIP
==
""
):
try
:
self
.
config
=
eval
(
self
.
remoteIP
)
self
.
remote_conn
=
Connection
(
host
=
self
.
config
[
"host"
],
port
=
self
.
config
[
"port"
],
user
=
self
.
config
[
"user"
],
connect_kwargs
=
{
'password'
:
self
.
config
[
"password"
]})
except
Exception
as
r
:
print
(
r
)
def
setTestCluster
(
self
,
value
):
self
.
testCluster
=
value
...
...
@@ -169,13 +175,6 @@ class TDDnode:
self
.
cfgDict
.
update
({
option
:
value
})
def
remoteExec
(
self
,
updateCfgDict
,
execCmd
):
try
:
config
=
eval
(
self
.
remoteIP
)
remote_conn
=
Connection
(
host
=
config
[
"host"
],
port
=
config
[
"port"
],
user
=
config
[
"user"
],
connect_kwargs
=
{
'password'
:
config
[
"password"
]})
remote_top_dir
=
config
[
"path"
]
except
Exception
as
r
:
remote_conn
=
Connection
(
host
=
self
.
remoteIP
,
port
=
22
,
user
=
'root'
,
connect_kwargs
=
{
'password'
:
'123456'
})
remote_top_dir
=
'~/test'
valgrindStr
=
''
if
(
self
.
valgrind
==
1
):
valgrindStr
=
'-g'
...
...
@@ -188,8 +187,8 @@ class TDDnode:
del
remoteCfgDict
[
"cfgDir"
]
remoteCfgDictStr
=
base64
.
b64encode
(
json
.
dumps
(
remoteCfgDict
).
encode
()).
decode
()
execCmdStr
=
base64
.
b64encode
(
execCmd
.
encode
()).
decode
()
with
remote_conn
.
cd
((
remote_top_dir
+
sys
.
path
[
0
].
replace
(
self
.
path
,
''
)).
replace
(
'
\\
'
,
'/'
)):
remote_conn
.
run
(
"python3 ./test.py %s -d %s -e %s"
%
(
valgrindStr
,
remoteCfgDictStr
,
execCmdStr
))
with
self
.
remote_conn
.
cd
((
self
.
config
[
"path"
]
+
sys
.
path
[
0
].
replace
(
self
.
path
,
''
)).
replace
(
'
\\
'
,
'/'
)):
self
.
remote_conn
.
run
(
"python3 ./test.py %s -d %s -e %s"
%
(
valgrindStr
,
remoteCfgDictStr
,
execCmdStr
))
def
deploy
(
self
,
*
updatecfgDict
):
self
.
logDir
=
"%s/sim/dnode%d/log"
%
(
self
.
path
,
self
.
index
)
...
...
tests/system-test/0-others/udfTest.py
浏览文件 @
03ed83e0
...
...
@@ -3,6 +3,7 @@ import taos
import
sys
import
time
import
os
import
platform
from
util.log
import
*
from
util.sql
import
*
...
...
@@ -25,7 +26,7 @@ class TDTestCase:
projPath
=
selfPath
[:
selfPath
.
find
(
"tests"
)]
for
root
,
dirs
,
files
in
os
.
walk
(
projPath
):
if
(
"taosd"
in
files
):
if
(
"taosd"
in
files
or
"taosd.exe"
in
files
):
rootRealPath
=
os
.
path
.
dirname
(
os
.
path
.
realpath
(
root
))
if
(
"packaging"
not
in
rootRealPath
):
buildPath
=
root
[:
len
(
root
)
-
len
(
"/build/bin"
)]
...
...
@@ -41,11 +42,19 @@ class TDTestCase:
projPath
=
selfPath
[:
selfPath
.
find
(
"tests"
)]
print
(
projPath
)
libudf1
=
subprocess
.
Popen
(
'find %s -name "libudf1.so"|grep lib|head -n1'
%
projPath
,
shell
=
True
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
).
stdout
.
read
().
decode
(
"utf-8"
)
libudf2
=
subprocess
.
Popen
(
'find %s -name "libudf2.so"|grep lib|head -n1'
%
projPath
,
shell
=
True
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
).
stdout
.
read
().
decode
(
"utf-8"
)
os
.
system
(
"mkdir /tmp/udf/"
)
os
.
system
(
"cp %s /tmp/udf/ "
%
libudf1
.
replace
(
"
\n
"
,
""
))
os
.
system
(
"cp %s /tmp/udf/ "
%
libudf2
.
replace
(
"
\n
"
,
""
))
if
platform
.
system
().
lower
()
==
'windows'
:
self
.
libudf1
=
subprocess
.
Popen
(
'(for /r %s %%i in ("udf1.d*") do @echo %%i)|grep lib|head -n1'
%
projPath
,
shell
=
True
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
).
stdout
.
read
().
decode
(
"utf-8"
)
self
.
libudf2
=
subprocess
.
Popen
(
'(for /r %s %%i in ("udf2.d*") do @echo %%i)|grep lib|head -n1'
%
projPath
,
shell
=
True
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
).
stdout
.
read
().
decode
(
"utf-8"
)
if
(
not
tdDnodes
.
dnodes
[
0
].
remoteIP
==
""
):
tdDnodes
.
dnodes
[
0
].
remote_conn
.
get
(
tdDnodes
.
dnodes
[
0
].
config
[
"path"
]
+
'/debug/build/lib/libudf1.so'
,
projPath
+
"
\\
debug
\\
build
\\
lib
\\
"
)
tdDnodes
.
dnodes
[
0
].
remote_conn
.
get
(
tdDnodes
.
dnodes
[
0
].
config
[
"path"
]
+
'/debug/build/lib/libudf2.so'
,
projPath
+
"
\\
debug
\\
build
\\
lib
\\
"
)
self
.
libudf1
=
self
.
libudf1
.
replace
(
'udf1.dll'
,
'libudf1.so'
)
self
.
libudf2
=
self
.
libudf2
.
replace
(
'udf2.dll'
,
'libudf2.so'
)
else
:
self
.
libudf1
=
subprocess
.
Popen
(
'find %s -name "libudf1.so"|grep lib|head -n1'
%
projPath
,
shell
=
True
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
).
stdout
.
read
().
decode
(
"utf-8"
)
self
.
libudf2
=
subprocess
.
Popen
(
'find %s -name "libudf2.so"|grep lib|head -n1'
%
projPath
,
shell
=
True
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
).
stdout
.
read
().
decode
(
"utf-8"
)
self
.
libudf1
=
self
.
libudf1
.
replace
(
'
\r
'
,
''
).
replace
(
'
\n
'
,
''
)
self
.
libudf2
=
self
.
libudf2
.
replace
(
'
\r
'
,
''
).
replace
(
'
\n
'
,
''
)
def
prepare_data
(
self
):
...
...
@@ -136,11 +145,11 @@ class TDTestCase:
for
i
in
range
(
5
):
# create scalar functions
tdSql
.
execute
(
"create function udf1 as '
/tmp/udf/libudf1.so' outputtype int bufSize 8;"
)
tdSql
.
execute
(
"create function udf1 as '
%s' outputtype int bufSize 8;"
%
self
.
libudf1
)
# create aggregate functions
tdSql
.
execute
(
"create aggregate function udf2 as '
/tmp/udf/libudf2.so' outputtype double bufSize 8;"
)
tdSql
.
execute
(
"create aggregate function udf2 as '
%s' outputtype double bufSize 8;"
%
self
.
libudf2
)
functions
=
tdSql
.
getResult
(
"show functions"
)
function_nums
=
len
(
functions
)
...
...
@@ -161,11 +170,11 @@ class TDTestCase:
tdLog
.
info
(
"drop two udf functions success "
)
# create scalar functions
tdSql
.
execute
(
"create function udf1 as '
/tmp/udf/libudf1.so' outputtype int bufSize 8;"
)
tdSql
.
execute
(
"create function udf1 as '
%s' outputtype int bufSize 8;"
%
self
.
libudf1
)
# create aggregate functions
tdSql
.
execute
(
"create aggregate function udf2 as '
/tmp/udf/libudf2.so' outputtype double bufSize 8;"
)
tdSql
.
execute
(
"create aggregate function udf2 as '
%s' outputtype double bufSize 8;"
%
self
.
libudf2
)
functions
=
tdSql
.
getResult
(
"show functions"
)
function_nums
=
len
(
functions
)
...
...
@@ -533,8 +542,8 @@ class TDTestCase:
tdSql
.
query
(
"drop function udf2 "
)
# create function without buffer
tdSql
.
execute
(
"create function udf1 as '
/tmp/udf/libudf1.so' outputtype int"
)
tdSql
.
execute
(
"create aggregate function udf2 as '
/tmp/udf/libudf2.so' outputtype double"
)
tdSql
.
execute
(
"create function udf1 as '
%s' outputtype int"
%
self
.
libudf1
)
tdSql
.
execute
(
"create aggregate function udf2 as '
%s' outputtype double"
%
self
.
libudf2
)
udf1_sqls
,
udf2_sqls
=
self
.
try_query_sql
()
for
scalar_sql
in
udf1_sqls
:
...
...
@@ -549,8 +558,8 @@ class TDTestCase:
tdSql
.
query
(
"drop function udf2 "
)
# create function without buffer
tdSql
.
execute
(
"create aggregate function udf1 as '
/tmp/udf/libudf1.so' outputtype int bufSize 8 "
)
tdSql
.
execute
(
"create function udf2 as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
execute
(
"create aggregate function udf1 as '
%s' outputtype int bufSize 8 "
%
self
.
libudf1
)
tdSql
.
execute
(
"create function udf2 as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
udf1_sqls
,
udf2_sqls
=
self
.
try_query_sql
()
for
scalar_sql
in
udf1_sqls
:
...
...
@@ -558,8 +567,8 @@ class TDTestCase:
for
aggregate_sql
in
udf2_sqls
:
tdSql
.
error
(
aggregate_sql
)
tdSql
.
execute
(
" create function db as '
/tmp/udf/libudf1.so' outputtype int bufSize 8 "
)
tdSql
.
execute
(
" create aggregate function test as '
/tmp/udf/libudf1.so' outputtype int bufSize 8 "
)
tdSql
.
execute
(
" create function db as '
%s' outputtype int bufSize 8 "
%
self
.
libudf1
)
tdSql
.
execute
(
" create aggregate function test as '
%s' outputtype int bufSize 8 "
%
self
.
libudf1
)
tdSql
.
error
(
" select db(c1) from stb1 "
)
tdSql
.
error
(
" select db(c1,c6), db(c6) from stb1 "
)
tdSql
.
error
(
" select db(num1,num2), db(num1) from tb "
)
...
...
@@ -607,17 +616,17 @@ class TDTestCase:
tdLog
.
info
(
" create function name is not build_in functions "
)
tdSql
.
execute
(
" drop function udf1 "
)
tdSql
.
execute
(
" drop function udf2 "
)
tdSql
.
error
(
"create function max as '
/tmp/udf/libudf1.so' outputtype int bufSize 8"
)
tdSql
.
error
(
"create aggregate function sum as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
error
(
"create function max as '
/tmp/udf/libudf1.so' outputtype int bufSize 8"
)
tdSql
.
error
(
"create aggregate function sum as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
error
(
"create aggregate function tbname as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
error
(
"create aggregate function function as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
error
(
"create aggregate function stable as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
error
(
"create aggregate function union as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
error
(
"create aggregate function 123 as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
error
(
"create aggregate function 123db as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
error
(
"create aggregate function mnode as '
/tmp/udf/libudf2.so' outputtype double bufSize 8"
)
tdSql
.
error
(
"create function max as '
%s' outputtype int bufSize 8"
%
self
.
libudf1
)
tdSql
.
error
(
"create aggregate function sum as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
tdSql
.
error
(
"create function max as '
%s' outputtype int bufSize 8"
%
self
.
libudf1
)
tdSql
.
error
(
"create aggregate function sum as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
tdSql
.
error
(
"create aggregate function tbname as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
tdSql
.
error
(
"create aggregate function function as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
tdSql
.
error
(
"create aggregate function stable as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
tdSql
.
error
(
"create aggregate function union as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
tdSql
.
error
(
"create aggregate function 123 as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
tdSql
.
error
(
"create aggregate function 123db as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
tdSql
.
error
(
"create aggregate function mnode as '
%s' outputtype double bufSize 8"
%
self
.
libudf2
)
def
restart_taosd_query_udf
(
self
):
...
...
tests/system-test/fulltest.bat
浏览文件 @
03ed83e0
python3
.\test.py
-f
0
-others
\taosShell.py
python3
.\test.py
-f
0
-others
\taosShellError.py
python3
.\test.py
-f
0
-others
\taosShellNetChk.py
\ No newline at end of file
python3
.\test.py
-f
0
-others
\taosShellNetChk.py
python3
.\test.py
-f
0
-others
\udfTest.py
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录