Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
6370d36a
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看板
未验证
提交
6370d36a
编写于
1月 07, 2022
作者:
C
cpwu
提交者:
GitHub
1月 07, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'taosdata:develop' into doc/TD-12532
上级
07a5129d
3e84b8cb
变更
11
显示空白变更内容
内联
并排
Showing
11 changed file
with
1483 addition
and
4 deletion
+1483
-4
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+7
-2
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBConstants.java
...r/jdbc/src/main/java/com/taosdata/jdbc/TSDBConstants.java
+5
-1
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java
...rc/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java
+13
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetBlockData.java
...c/main/java/com/taosdata/jdbc/TSDBResultSetBlockData.java
+6
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetRowData.java
...src/main/java/com/taosdata/jdbc/TSDBResultSetRowData.java
+4
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulResultSet.java
.../src/main/java/com/taosdata/jdbc/rs/RestfulResultSet.java
+7
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java
...tor/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java
+108
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulJsonTagTest.java
...rc/test/java/com/taosdata/jdbc/rs/RestfulJsonTagTest.java
+1277
-0
src/query/src/qFill.c
src/query/src/qFill.c
+1
-1
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+1
-0
tests/pytest/query/queryPriKey.py
tests/pytest/query/queryPriKey.py
+54
-0
未找到文件。
src/client/src/tscSQLParser.c
浏览文件 @
6370d36a
...
...
@@ -1084,8 +1084,9 @@ static int32_t addPrimaryTsColumnForTimeWindowQuery(SQueryInfo* pQueryInfo, SSql
uint64_t
uid
=
tscExprGet
(
pQueryInfo
,
0
)
->
base
.
uid
;
int32_t
tableIndex
=
COLUMN_INDEX_INITIAL_VAL
;
STableMetaInfo
*
pTableMetaInfo
=
NULL
;
for
(
int32_t
i
=
0
;
i
<
pQueryInfo
->
numOfTables
;
++
i
)
{
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
i
);
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
i
);
if
(
pTableMetaInfo
->
pTableMeta
->
id
.
uid
==
uid
)
{
tableIndex
=
i
;
break
;
...
...
@@ -1097,7 +1098,11 @@ static int32_t addPrimaryTsColumnForTimeWindowQuery(SQueryInfo* pQueryInfo, SSql
}
SSchema
s
=
{.
bytes
=
TSDB_KEYSIZE
,
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
,
.
colId
=
PRIMARYKEY_TIMESTAMP_COL_INDEX
};
if
(
pTableMetaInfo
)
{
tstrncpy
(
s
.
name
,
pTableMetaInfo
->
pTableMeta
->
schema
[
PRIMARYKEY_TIMESTAMP_COL_INDEX
].
name
,
sizeof
(
s
.
name
));
}
else
{
tstrncpy
(
s
.
name
,
aAggs
[
TSDB_FUNC_TS
].
name
,
sizeof
(
s
.
name
));
}
SColumnIndex
index
=
{
tableIndex
,
PRIMARYKEY_TIMESTAMP_COL_INDEX
};
tscAddFuncInSelectClause
(
pQueryInfo
,
0
,
TSDB_FUNC_TS
,
&
index
,
&
s
,
TSDB_COL_NORMAL
,
0
);
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBConstants.java
浏览文件 @
6370d36a
...
...
@@ -54,7 +54,7 @@ public abstract class TSDBConstants {
public
static
final
int
TSDB_DATA_TYPE_USMALLINT
=
12
;
//unsigned smallint
public
static
final
int
TSDB_DATA_TYPE_UINT
=
13
;
//unsigned int
public
static
final
int
TSDB_DATA_TYPE_UBIGINT
=
14
;
//unsigned bigint
public
static
final
int
TSDB_DATA_TYPE_JSON
=
15
;
//json
// nchar column max length
public
static
final
int
maxFieldSize
=
16
*
1024
;
...
...
@@ -129,6 +129,8 @@ public abstract class TSDBConstants {
return
Types
.
TIMESTAMP
;
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
return
Types
.
NCHAR
;
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
return
Types
.
OTHER
;
default
:
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_UNKNOWN_TAOS_TYPE
,
"unknown taos type: "
+
taosType
+
" in tdengine"
);
}
...
...
@@ -160,6 +162,8 @@ public abstract class TSDBConstants {
return
"TIMESTAMP"
;
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
return
"NCHAR"
;
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
return
"JSON"
;
default
:
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_UNKNOWN_TAOS_TYPE
,
"unknown taos type: "
+
taosType
+
" in tdengine"
);
}
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java
浏览文件 @
6370d36a
...
...
@@ -615,6 +615,18 @@ public class TSDBPreparedStatement extends TSDBStatement implements PreparedStat
}
}
public
void
setTagJson
(
int
index
,
String
value
)
{
ensureTagCapacity
(
index
);
this
.
tableTags
.
set
(
index
,
new
TableTagInfo
(
value
,
TSDBConstants
.
TSDB_DATA_TYPE_JSON
));
String
charset
=
TaosGlobalConfig
.
getCharset
();
try
{
this
.
tagValueLength
+=
value
.
getBytes
(
charset
).
length
;
}
catch
(
UnsupportedEncodingException
e
)
{
throw
new
RuntimeException
(
e
.
getMessage
());
}
}
public
<
T
>
void
setValueImpl
(
int
columnIndex
,
ArrayList
<
T
>
list
,
int
type
,
int
bytes
)
throws
SQLException
{
if
(
this
.
colData
.
size
()
==
0
)
{
this
.
colData
.
addAll
(
Collections
.
nCopies
(
this
.
parameters
.
length
-
1
-
this
.
tableTags
.
size
(),
null
));
...
...
@@ -774,6 +786,7 @@ public class TSDBPreparedStatement extends TSDBStatement implements PreparedStat
}
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
{
String
charset
=
TaosGlobalConfig
.
getCharset
();
String
val
=
(
String
)
tag
.
value
;
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetBlockData.java
浏览文件 @
6370d36a
...
...
@@ -151,6 +151,7 @@ public class TSDBResultSetBlockData {
this
.
colData
.
set
(
col
,
lb
);
break
;
}
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
{
ByteBuffer
buf
=
ByteBuffer
.
wrap
(
value
,
0
,
length
);
buf
.
order
(
ByteOrder
.
LITTLE_ENDIAN
);
...
...
@@ -199,6 +200,7 @@ public class TSDBResultSetBlockData {
}
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
{
return
Integer
.
parseInt
((
String
)
obj
);
}
...
...
@@ -232,6 +234,7 @@ public class TSDBResultSetBlockData {
}
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
{
if
(
"TRUE"
.
compareToIgnoreCase
((
String
)
obj
)
==
0
)
{
return
Boolean
.
TRUE
;
...
...
@@ -271,6 +274,7 @@ public class TSDBResultSetBlockData {
}
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
{
return
Long
.
parseLong
((
String
)
obj
);
}
...
...
@@ -308,6 +312,7 @@ public class TSDBResultSetBlockData {
}
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
{
return
Double
.
parseDouble
((
String
)
obj
);
}
...
...
@@ -406,6 +411,7 @@ public class TSDBResultSetBlockData {
return
new
String
(
dest
);
}
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
{
ByteBuffer
bb
=
(
ByteBuffer
)
this
.
colData
.
get
(
col
);
bb
.
position
((
fieldSize
+
BINARY_LENGTH_OFFSET
)
*
this
.
rowIndex
);
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetRowData.java
浏览文件 @
6370d36a
...
...
@@ -78,6 +78,7 @@ public class TSDBResultSetRowData {
case
TSDBConstants
.
TSDB_DATA_TYPE_BIGINT
:
return
((
Long
)
obj
)
==
1L
?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
{
return
obj
.
toString
().
contains
(
"1"
);
}
...
...
@@ -147,6 +148,7 @@ public class TSDBResultSetRowData {
return
((
Long
)
obj
).
intValue
();
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
return
Integer
.
parseInt
((
String
)
obj
);
case
TSDBConstants
.
TSDB_DATA_TYPE_UTINYINT
:
return
parseUnsignedTinyIntToInt
(
obj
);
...
...
@@ -228,6 +230,7 @@ public class TSDBResultSetRowData {
return
(
Long
)
obj
;
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
return
Long
.
parseLong
((
String
)
obj
);
case
TSDBConstants
.
TSDB_DATA_TYPE_UTINYINT
:
{
byte
value
=
(
byte
)
obj
;
...
...
@@ -418,6 +421,7 @@ public class TSDBResultSetRowData {
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
return
new
String
((
byte
[])
obj
);
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
return
(
String
)
obj
;
default
:
return
String
.
valueOf
(
obj
);
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulResultSet.java
浏览文件 @
6370d36a
package
com.taosdata.jdbc.rs
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
com.google.common.primitives.Ints
;
import
com.google.common.primitives.Longs
;
import
com.google.common.primitives.Shorts
;
...
...
@@ -184,6 +186,11 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
return
row
.
getString
(
colIndex
)
==
null
?
null
:
row
.
getString
(
colIndex
).
getBytes
();
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
return
row
.
getString
(
colIndex
)
==
null
?
null
:
row
.
getString
(
colIndex
);
case
TSDBConstants
.
TSDB_DATA_TYPE_JSON
:
// all json tag or just a json tag value
return
row
.
get
(
colIndex
)
!=
null
&&
(
row
.
get
(
colIndex
)
instanceof
String
||
row
.
get
(
colIndex
)
instanceof
JSONObject
)
?
JSON
.
toJSONString
(
row
.
get
(
colIndex
),
SerializerFeature
.
WriteMapNullValue
)
:
row
.
get
(
colIndex
);
default
:
return
row
.
get
(
colIndex
);
}
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java
浏览文件 @
6370d36a
...
...
@@ -8,6 +8,8 @@ import org.junit.runner.RunWith;
import
org.junit.runners.MethodSorters
;
import
java.sql.*
;
import
java.util.ArrayList
;
import
java.util.Random
;
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
@RunWith
(
CatalogRunner
.
class
)
...
...
@@ -197,6 +199,8 @@ public class JsonTagTest {
@Description
(
"select json tag from stable"
)
public
void
case04_select03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from jsons1"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
metaData
.
getColumnTypeName
(
1
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
...
...
@@ -1176,6 +1180,110 @@ public class JsonTagTest {
close
(
resultSet
);
}
@Test
@Description
(
"query metadata for json"
)
public
void
case19_selectMetadata01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from jsons1"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
int
columnType
=
metaData
.
getColumnType
(
1
);
String
columnTypeName
=
metaData
.
getColumnTypeName
(
1
);
Assert
.
assertEquals
(
Types
.
OTHER
,
columnType
);
Assert
.
assertEquals
(
"JSON"
,
columnTypeName
);
close
(
resultSet
);
}
@Test
@Description
(
"query metadata for json"
)
public
void
case19_selectMetadata02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select *,jtag from jsons1"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
int
columnType
=
metaData
.
getColumnType
(
6
);
String
columnTypeName
=
metaData
.
getColumnTypeName
(
6
);
Assert
.
assertEquals
(
Types
.
OTHER
,
columnType
);
Assert
.
assertEquals
(
"JSON"
,
columnTypeName
);
close
(
resultSet
);
}
@Test
@Description
(
"query metadata for one json result"
)
public
void
case19_selectMetadata03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag1' from jsons1_6"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
int
columnType
=
metaData
.
getColumnType
(
1
);
String
columnTypeName
=
metaData
.
getColumnTypeName
(
1
);
Assert
.
assertEquals
(
Types
.
OTHER
,
columnType
);
Assert
.
assertEquals
(
"JSON"
,
columnTypeName
);
resultSet
.
next
();
String
string
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"11"
,
string
);
close
(
resultSet
);
}
@Test
@Description
(
"stmt batch insert with json tag"
)
public
void
case20_batchInsert
()
throws
SQLException
{
String
jsonTag
=
"{\"tag1\":\"fff\",\"tag2\":5,\"tag3\":true}"
;
statement
.
execute
(
"drop table if exists jsons5"
);
statement
.
execute
(
"CREATE STABLE IF NOT EXISTS jsons5 (ts timestamp, dataInt int, dataStr nchar(20)) TAGS(jtag json)"
);
String
sql
=
"INSERT INTO ? USING jsons5 TAGS (?) VALUES ( ?,?,? )"
;
try
(
PreparedStatement
pst
=
connection
.
prepareStatement
(
sql
))
{
TSDBPreparedStatement
ps
=
pst
.
unwrap
(
TSDBPreparedStatement
.
class
);
// 设定数据表名:
ps
.
setTableName
(
"batch_test"
);
// 设定 TAGS 取值 setTagNString or setTagJson:
// ps.setTagNString(0, jsonTag);
ps
.
setTagJson
(
0
,
jsonTag
);
// VALUES 部分以逐列的方式进行设置:
int
numOfRows
=
4
;
ArrayList
<
Long
>
ts
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
numOfRows
;
i
++)
{
ts
.
add
(
System
.
currentTimeMillis
()
+
i
);
}
ps
.
setTimestamp
(
0
,
ts
);
Random
r
=
new
Random
();
int
random
=
10
+
r
.
nextInt
(
5
);
ArrayList
<
Integer
>
c1
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
numOfRows
;
i
++)
{
if
(
i
%
random
==
0
)
{
c1
.
add
(
null
);
}
else
{
c1
.
add
(
r
.
nextInt
());
}
}
ps
.
setInt
(
1
,
c1
);
ArrayList
<
String
>
c2
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
numOfRows
;
i
++)
{
c2
.
add
(
"分支"
+
i
%
4
);
}
ps
.
setNString
(
2
,
c2
,
10
);
// AddBatch 之后,缓存并未清空。为避免混乱,并不推荐在 ExecuteBatch 之前再次绑定新一批的数据:
ps
.
columnDataAddBatch
();
// 执行绑定数据后的语句:
ps
.
columnDataExecuteBatch
();
}
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from batch_test"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
String
columnName
=
metaData
.
getColumnName
(
1
);
Assert
.
assertEquals
(
"jtag"
,
columnName
);
Assert
.
assertEquals
(
"JSON"
,
metaData
.
getColumnTypeName
(
1
));
resultSet
.
next
();
String
string
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
jsonTag
,
string
);
resultSet
.
close
();
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag2' from batch_test"
);
resultSet
.
next
();
long
l
=
resultSet
.
getLong
(
1
);
Assert
.
assertEquals
(
5
,
l
);
resultSet
.
close
();
}
private
void
close
(
ResultSet
resultSet
)
{
try
{
if
(
null
!=
resultSet
)
{
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulJsonTagTest.java
0 → 100644
浏览文件 @
6370d36a
package
com.taosdata.jdbc.rs
;
import
com.taosdata.jdbc.annotation.CatalogRunner
;
import
com.taosdata.jdbc.annotation.Description
;
import
com.taosdata.jdbc.annotation.TestTarget
;
import
org.junit.*
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.MethodSorters
;
import
java.sql.*
;
/**
* Most of the functionality is consistent with {@link com.taosdata.jdbc.JsonTagTest},
* Except for batchInsert, which is not supported by restful API.
* Restful could not distinguish between empty and nonexistent of json value, the result is always null.
* The order of json results may change due to serialization and deserialization
*/
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
@RunWith
(
CatalogRunner
.
class
)
@TestTarget
(
alias
=
"JsonTag"
,
author
=
"huolibo"
,
version
=
"2.0.37"
)
public
class
RestfulJsonTagTest
{
private
static
final
String
dbName
=
"json_tag_test"
;
private
static
Connection
connection
;
private
static
Statement
statement
;
private
static
final
String
superSql
=
"create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)"
;
private
static
final
String
[]
sql
=
{
"insert into jsons1_1 using jsons1 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(now, 1, false, 'json1', '你是') (1591060608000, 23, true, '等等', 'json')"
,
"insert into jsons1_2 using jsons1 tags('{\"tag1\":5,\"tag2\":\"beijing\"}') values (1591060628000, 2, true, 'json2', 'sss')"
,
"insert into jsons1_3 using jsons1 tags('{\"tag1\":false,\"tag2\":\"beijing\"}') values (1591060668000, 3, false, 'json3', 'efwe')"
,
"insert into jsons1_4 using jsons1 tags('{\"tag1\":null,\"tag2\":\"shanghai\",\"tag3\":\"hello\"}') values (1591060728000, 4, true, 'json4', '323sd')"
,
"insert into jsons1_5 using jsons1 tags('{\"tag1\":1.232, \"tag2\":null}') values(1591060928000, 1, false, '你就会', 'ewe')"
,
"insert into jsons1_6 using jsons1 tags('{\"tag1\":11,\"tag2\":\"\",\"tag2\":null}') values(1591061628000, 11, false, '你就会','')"
,
"insert into jsons1_7 using jsons1 tags('{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}') values(1591062628000, 2, NULL, '你就会', 'dws')"
,
// test duplicate key using the first one.
"CREATE TABLE if not exists jsons1_8 using jsons1 tags('{\"tag1\":null, \"tag1\":true, \"tag1\":45, \"1tag$\":2, \" \":90}')"
,
};
private
static
final
String
[]
invalidJsonInsertSql
=
{
// test empty json string, save as tag is NULL
"insert into jsons1_9 using jsons1 tags('\t') values (1591062328000, 24, NULL, '你就会', '2sdw')"
,
};
private
static
final
String
[]
invalidJsonCreateSql
=
{
"CREATE TABLE if not exists jsons1_10 using jsons1 tags('')"
,
"CREATE TABLE if not exists jsons1_11 using jsons1 tags(' ')"
,
"CREATE TABLE if not exists jsons1_12 using jsons1 tags('{}')"
,
"CREATE TABLE if not exists jsons1_13 using jsons1 tags('null')"
,
};
// test invalidate json
private
static
final
String
[]
errorJsonInsertSql
=
{
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('\"efwewf\"')"
,
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('3333')"
,
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('33.33')"
,
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('false')"
,
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('[1,true]')"
,
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('{222}')"
,
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"fe\"}')"
,
};
private
static
final
String
[]
errorSelectSql
=
{
"select * from jsons1 where jtag->tag1='beijing'"
,
"select * from jsons1 where jtag->'location'"
,
"select * from jsons1 where jtag->''"
,
"select * from jsons1 where jtag->''=9"
,
"select -> from jsons1"
,
"select ? from jsons1"
,
"select * from jsons1 where contains"
,
"select * from jsons1 where jtag->"
,
"select jtag->location from jsons1"
,
"select jtag contains location from jsons1"
,
"select * from jsons1 where jtag contains location"
,
"select * from jsons1 where jtag contains ''"
,
"select * from jsons1 where jtag contains 'location'='beijing'"
,
// test where with json tag
"select * from jsons1_1 where jtag is not null"
,
"select * from jsons1 where jtag='{\"tag1\":11,\"tag2\":\"\"}'"
,
"select * from jsons1 where jtag->'tag1'={}"
};
@Test
@Description
(
"insert json tag"
)
public
void
case01_InsertTest
()
throws
SQLException
{
for
(
String
sql
:
sql
)
{
statement
.
execute
(
sql
);
}
for
(
String
sql
:
invalidJsonInsertSql
)
{
statement
.
execute
(
sql
);
}
for
(
String
sql
:
invalidJsonCreateSql
)
{
statement
.
execute
(
sql
);
}
}
@Test
@Description
(
"error json tag insert"
)
public
void
case02_ErrorJsonInsertTest
()
{
int
count
=
0
;
for
(
String
sql
:
errorJsonInsertSql
)
{
try
{
statement
.
execute
(
sql
);
}
catch
(
SQLException
e
)
{
count
++;
}
}
Assert
.
assertEquals
(
errorJsonInsertSql
.
length
,
count
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when json value is array"
)
public
void
case02_ArrayErrorTest
()
throws
SQLException
{
statement
.
execute
(
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"tag1\":[1,true]}')"
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when json value is empty"
)
public
void
case02_EmptyValueErrorTest
()
throws
SQLException
{
statement
.
execute
(
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"tag1\":{}}')"
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when json key is not ASCII"
)
public
void
case02_AbnormalKeyErrorTest1
()
throws
SQLException
{
statement
.
execute
(
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"。loc\":\"fff\"}')"
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when json key is '\\t'"
)
public
void
case02_AbnormalKeyErrorTest2
()
throws
SQLException
{
statement
.
execute
(
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"\t\":\"fff\"}')"
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when json key is chinese"
)
public
void
case02_AbnormalKeyErrorTest3
()
throws
SQLException
{
statement
.
execute
(
"CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"试试\":\"fff\"}')"
);
}
@Test
@Description
(
"alter json tag"
)
public
void
case03_AlterTag
()
throws
SQLException
{
statement
.
execute
(
"ALTER TABLE jsons1_1 SET TAG jtag='{\"tag1\":\"femail\",\"tag2\":35,\"tag3\":true}'"
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when add json tag"
)
public
void
case03_AddTagErrorTest
()
throws
SQLException
{
statement
.
execute
(
"ALTER STABLE jsons1 add tag tag2 nchar(20)"
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when delete json tag"
)
public
void
case03_dropTagErrorTest
()
throws
SQLException
{
statement
.
execute
(
"ALTER STABLE jsons1 drop tag jtag"
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when set some json tag value"
)
public
void
case03_AlterTagErrorTest
()
throws
SQLException
{
statement
.
execute
(
"ALTER TABLE jsons1_1 SET TAG jtag=4"
);
}
@Test
@Description
(
"exception will throw when select syntax error"
)
public
void
case04_SelectErrorTest
()
{
int
count
=
0
;
for
(
String
sql
:
errorSelectSql
)
{
try
{
statement
.
execute
(
sql
);
}
catch
(
SQLException
e
)
{
count
++;
}
}
Assert
.
assertEquals
(
errorSelectSql
.
length
,
count
);
}
@Test
@Description
(
"normal select stable"
)
public
void
case04_select01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select dataint from jsons1"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
sql
.
length
+
invalidJsonInsertSql
.
length
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"select all column from stable"
)
public
void
case04_select02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
sql
.
length
+
invalidJsonInsertSql
.
length
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"select json tag from stable"
)
public
void
case04_select03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from jsons1"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
metaData
.
getColumnTypeName
(
1
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
sql
.
length
+
invalidJsonInsertSql
.
length
+
invalidJsonCreateSql
.
length
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition tag is null"
)
public
void
case04_select04
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from jsons1 where jtag is null"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
invalidJsonInsertSql
.
length
+
invalidJsonCreateSql
.
length
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition tag is not null"
)
public
void
case04_select05
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from jsons1 where jtag is not null"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
sql
.
length
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"select json tag"
)
public
void
case04_select06
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from jsons1_8"
);
resultSet
.
next
();
String
result
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"{\" \":90,\"tag1\":null,\"1tag$\":2}"
,
result
);
close
(
resultSet
);
}
@Test
@Description
(
"select json tag"
)
public
void
case04_select07
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from jsons1_1"
);
resultSet
.
next
();
String
result
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"{\"tag1\":\"femail\",\"tag2\":35,\"tag3\":true}"
,
result
);
close
(
resultSet
);
}
@Test
@Description
(
"select not exist json tag"
)
public
void
case04_select08
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from jsons1_9"
);
resultSet
.
next
();
String
result
=
resultSet
.
getString
(
1
);
Assert
.
assertNull
(
result
);
close
(
resultSet
);
}
@Test
@Description
(
"select a json tag"
)
public
void
case04_select09
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag1' from jsons1_1"
);
resultSet
.
next
();
String
result
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"\"femail\""
,
result
);
close
(
resultSet
);
}
@Test
@Description
(
value
=
"select a normal value"
,
version
=
"2.0.37"
)
public
void
case04_selectNormal
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select datastr from jsons1_1"
);
resultSet
.
next
();
String
result
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"等等"
,
result
);
close
(
resultSet
);
}
@Test
@Description
(
"select a json tag, the value is empty"
)
public
void
case04_select10
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag2' from jsons1_6"
);
resultSet
.
next
();
String
result
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"\"\""
,
result
);
close
(
resultSet
);
}
@Test
@Description
(
"select a json tag, the value is int"
)
public
void
case04_select11
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag2' from jsons1_1"
);
resultSet
.
next
();
String
string
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"35"
,
string
);
close
(
resultSet
);
}
@Test
@Description
(
"select a json tag, the value is boolean"
)
public
void
case04_select12
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag3' from jsons1_1"
);
resultSet
.
next
();
String
string
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"true"
,
string
);
close
(
resultSet
);
}
// @Test
// @Description("select a json tag, the value is null")
// public void case04_select13() throws SQLException {
// ResultSet resultSet = statement.executeQuery("select jtag->'tag1' from jsons1_4");
// resultSet.next();
// String string = resultSet.getString(1);
// Assert.assertEquals("null", string);
// close(resultSet);
// }
@Test
@Description
(
"select a json tag, the value is double"
)
public
void
case04_select14
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag1' from jsons1_5"
);
resultSet
.
next
();
String
string
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"1.232000000"
,
string
);
close
(
resultSet
);
}
@Test
@Description
(
"select a json tag, the key is not exist"
)
public
void
case04_select15
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag10' from jsons1_4"
);
resultSet
.
next
();
String
string
=
resultSet
.
getString
(
1
);
Assert
.
assertNull
(
string
);
close
(
resultSet
);
}
@Test
@Description
(
"select a json tag, the result number equals tables number"
)
public
void
case04_select16
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag1' from jsons1"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
sql
.
length
+
invalidJsonCreateSql
.
length
+
invalidJsonInsertSql
.
length
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition '=' for string"
)
public
void
case04_select19
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag2'='beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"select and where conditon '=' for string"
)
public
void
case04_select20
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select dataint,tbname,jtag->'tag1',jtag from jsons1 where jtag->'tag2'='beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition result is null"
)
public
void
case04_select21
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'='beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition equation has chinese"
)
public
void
case04_select23
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'='收到货'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '>' for character"
)
public
void
case05_symbolOperation01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag2'>'beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '>=' for character"
)
public
void
case05_symbolOperation02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag2'>='beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
3
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '<' for character"
)
public
void
case05_symbolOperation03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag2'<'beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '<=' in character"
)
public
void
case05_symbolOperation04
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag2'<='beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
4
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '!=' in character"
)
public
void
case05_symbolOperation05
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag2'!='beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
3
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '=' empty"
)
public
void
case05_symbolOperation06
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag2'=''"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
// where json value is int
@Test
@Description
(
"where condition support '=' for int"
)
public
void
case06_selectValue01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=5"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where conditional support '<' for int"
)
public
void
case06_selectValue02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'<54"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
3
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '<=' for int"
)
public
void
case06_selectValue03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'<=11"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
3
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where conditional support '>' for int"
)
public
void
case06_selectValue04
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'>4"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '>=' for int"
)
public
void
case06_selectValue05
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'>=5"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where conditional support '!=' for int"
)
public
void
case06_selectValue06
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'!=5"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where conditional support '!=' for int"
)
public
void
case06_selectValue07
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'!=55"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
3
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where conditional support '!=' for int and result is nothing"
)
public
void
case06_selectValue08
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=10"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '=' for double"
)
public
void
case07_selectValue01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=1.232"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '<' for double"
)
public
void
case07_doubleOperation01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'<1.232"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '<=' for double"
)
public
void
case07_doubleOperation02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'<=1.232"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '>' for double"
)
public
void
case07_doubleOperation03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'>1.23"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
3
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '>=' for double"
)
public
void
case07_doubleOperation04
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'>=1.232"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
3
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '!=' for double"
)
public
void
case07_doubleOperation05
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'!=1.232"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '!=' for double"
)
public
void
case07_doubleOperation06
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'!=3.232"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
3
,
count
);
close
(
resultSet
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when denominator is zero"
)
public
void
case07_doubleOperation07
()
throws
SQLException
{
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'/0=3"
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when invalid operation"
)
public
void
case07_doubleOperation08
()
throws
SQLException
{
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'/5=1"
);
}
@Test
@Description
(
"where condition support '=' for boolean"
)
public
void
case08_boolOperation01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=true"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '=' for boolean"
)
public
void
case08_boolOperation02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=false"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support '!=' for boolean"
)
public
void
case08_boolOperation03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'!=false"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"exception will throw when '>' operation for boolean"
)
public
void
case08_boolOperation04
()
throws
SQLException
{
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'>false"
);
}
@Test
@Description
(
"where conditional support '=null'"
)
public
void
case09_select01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=null"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where conditional support 'is null'"
)
public
void
case09_select02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag is null"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support 'is not null'"
)
public
void
case09_select03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag is not null"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
8
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support one tag '='"
)
public
void
case09_select04
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag_no_exist'=3"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support one tag 'is null'"
)
public
void
case09_select05
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1' is null"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
invalidJsonInsertSql
.
length
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support one tag 'is null'"
)
public
void
case09_select06
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag4' is null"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
sql
.
length
+
invalidJsonInsertSql
.
length
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition support one tag 'is not null'"
)
public
void
case09_select07
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag3' is not null"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
4
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"contains"
)
public
void
case09_select10
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag contains 'tag1'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
8
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"contains"
)
public
void
case09_select11
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag contains 'tag3'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
4
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"contains with no exist tag"
)
public
void
case09_select12
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag contains 'tag_no_exist'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition with and"
)
public
void
case10_selectAndOr01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition with 'or'"
)
public
void
case10_selectAndOr02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=false or jtag->'tag2'='beijing'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition with 'and'"
)
public
void
case10_selectAndOr03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition with 'or'"
)
public
void
case10_selectAndOr04
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition with 'or' and contains"
)
public
void
case10_selectAndOr05
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1' is not null and jtag contains 'tag3'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
4
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition with 'and' and contains"
)
public
void
case10_selectAndOr06
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1'='femail' and jtag contains 'tag3'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"test with tbname/normal column"
)
public
void
case11_selectTbName01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where tbname = 'jsons1_1'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"test with tbname/normal column"
)
public
void
case11_selectTbName02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"test with tbname/normal column"
)
public
void
case11_selectTbName03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=3"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"test with tbname/normal column"
)
public
void
case11_selectTbName04
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=23"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition like"
)
public
void
case12_selectWhere01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select *,tbname from jsons1 where jtag->'tag2' like 'bei%'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition like"
)
public
void
case12_selectWhere02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select *,tbname from jsons1 where jtag->'tag1' like 'fe%' and jtag->'tag2' is not null"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
(
expected
=
SQLException
.
class
)
@Description
(
"where condition in no support in"
)
public
void
case12_selectWhere03
()
throws
SQLException
{
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1' in ('beijing')"
);
}
@Test
@Description
(
"where condition match"
)
public
void
case12_selectWhere04
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1' match 'ma'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition match"
)
public
void
case12_selectWhere05
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1' match 'ma$'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition match"
)
public
void
case12_selectWhere06
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag2' match 'jing$'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
2
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"where condition match"
)
public
void
case12_selectWhere07
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from jsons1 where jtag->'tag1' match '收到'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"insert distinct"
)
public
void
case13_selectDistinct01
()
throws
SQLException
{
statement
.
execute
(
"insert into jsons1_14 using jsons1 tags('{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}') values(1591062628000, 2, NULL, '你就会', 'dws')"
);
}
@Test
@Description
(
"distinct json tag"
)
public
void
case13_selectDistinct02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select distinct jtag->'tag1' from jsons1"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
8
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"distinct json tag"
)
public
void
case13_selectDistinct03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select distinct jtag from jsons1"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
9
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"insert json tag"
)
public
void
case14_selectDump01
()
throws
SQLException
{
statement
.
execute
(
"INSERT INTO jsons1_15 using jsons1 tags('{\"tbname\":\"tt\",\"databool\":true,\"datastr\":\"是是是\"}') values(1591060828000, 4, false, 'jjsf', \"你就会\")"
);
}
@Test
@Description
(
"test duplicate key with normal column"
)
public
void
case14_selectDump02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select *,tbname,jtag from jsons1 where jtag->'datastr' match '是' and datastr match 'js'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
1
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"test duplicate key with normal column"
)
public
void
case14_selectDump03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select tbname,jtag->'tbname' from jsons1 where jtag->'tbname'='tt' and tbname='jsons1_14'"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
0
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"insert json tag for join test"
)
public
void
case15_selectJoin01
()
throws
SQLException
{
statement
.
execute
(
"create table if not exists jsons2(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)"
);
statement
.
execute
(
"insert into jsons2_1 using jsons2 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(1591060618000, 2, false, 'json2', '你是2')"
);
statement
.
execute
(
"insert into jsons2_2 using jsons2 tags('{\"tag1\":5,\"tag2\":null}') values (1591060628000, 2, true, 'json2', 'sss')"
);
statement
.
execute
(
"create table if not exists jsons3(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)"
);
statement
.
execute
(
"insert into jsons3_1 using jsons3 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(1591060618000, 3, false, 'json3', '你是3')"
);
statement
.
execute
(
"insert into jsons3_2 using jsons3 tags('{\"tag1\":5,\"tag2\":\"beijing\"}') values (1591060638000, 2, true, 'json3', 'sss')"
);
}
@Test
@Description
(
"select json tag from join"
)
public
void
case15_selectJoin02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select 'sss',33,a.jtag->'tag3' from jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'"
);
resultSet
.
next
();
Assert
.
assertEquals
(
"sss"
,
resultSet
.
getString
(
1
));
close
(
resultSet
);
}
@Test
@Description
(
"group by and order by json tag desc"
)
public
void
case16_selectGroupOrder01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select count(*) from jsons1 group by jtag->'tag1' order by jtag->'tag1' desc"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
8
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"group by and order by json tag asc"
)
public
void
case16_selectGroupOrder02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select count(*) from jsons1 group by jtag->'tag1' order by jtag->'tag1' asc"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
8
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"stddev with group by json tag"
)
public
void
case17_selectStddev01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select stddev(dataint) from jsons1 group by jtag->'tag1'"
);
String
s
=
""
;
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
s
=
resultSet
.
getString
(
2
);
}
Assert
.
assertEquals
(
8
,
count
);
Assert
.
assertEquals
(
"\"femail\""
,
s
);
close
(
resultSet
);
}
@Test
@Description
(
"subquery json tag"
)
public
void
case18_selectSubquery01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select * from (select jtag, dataint from jsons1)"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
11
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"subquery some json tags"
)
public
void
case18_selectSubquery02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag1' from (select jtag->'tag1', dataint from jsons1)"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
String
columnName
=
metaData
.
getColumnName
(
1
);
Assert
.
assertEquals
(
"jtag->'tag1'"
,
columnName
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
11
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
"query some json tags from subquery"
)
public
void
case18_selectSubquery04
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select ts,tbname,jtag->'tag1' from (select jtag->'tag1',tbname,ts from jsons1 order by ts)"
);
int
count
=
0
;
while
(
resultSet
.
next
())
{
count
++;
}
Assert
.
assertEquals
(
11
,
count
);
close
(
resultSet
);
}
@Test
@Description
(
value
=
"query metadata for json"
,
version
=
"2.0.37"
)
public
void
case19_selectMetadata01
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag from jsons1"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
int
columnType
=
metaData
.
getColumnType
(
1
);
String
columnTypeName
=
metaData
.
getColumnTypeName
(
1
);
Assert
.
assertEquals
(
Types
.
OTHER
,
columnType
);
Assert
.
assertEquals
(
"JSON"
,
columnTypeName
);
close
(
resultSet
);
}
@Test
@Description
(
value
=
"query metadata for json"
,
version
=
"2.0.37"
)
public
void
case19_selectMetadata02
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select *,jtag from jsons1"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
int
columnType
=
metaData
.
getColumnType
(
6
);
String
columnTypeName
=
metaData
.
getColumnTypeName
(
6
);
Assert
.
assertEquals
(
Types
.
OTHER
,
columnType
);
Assert
.
assertEquals
(
"JSON"
,
columnTypeName
);
close
(
resultSet
);
}
@Test
@Description
(
value
=
"query metadata for one json result"
,
version
=
"2.0.37"
)
public
void
case19_selectMetadata03
()
throws
SQLException
{
ResultSet
resultSet
=
statement
.
executeQuery
(
"select jtag->'tag1' from jsons1_6"
);
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
int
columnType
=
metaData
.
getColumnType
(
1
);
String
columnTypeName
=
metaData
.
getColumnTypeName
(
1
);
Assert
.
assertEquals
(
Types
.
OTHER
,
columnType
);
Assert
.
assertEquals
(
"JSON"
,
columnTypeName
);
resultSet
.
next
();
String
string
=
resultSet
.
getString
(
1
);
Assert
.
assertEquals
(
"11"
,
string
);
close
(
resultSet
);
}
private
void
close
(
ResultSet
resultSet
)
{
try
{
if
(
null
!=
resultSet
)
{
resultSet
.
close
();
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
@BeforeClass
public
static
void
beforeClass
()
{
String
host
=
"127.0.0.1"
;
final
String
url
=
"jdbc:TAOS-RS://"
+
host
+
":6041/?user=root&password=taosdata"
;
try
{
connection
=
DriverManager
.
getConnection
(
url
);
statement
=
connection
.
createStatement
();
statement
.
execute
(
"drop database if exists "
+
dbName
);
statement
.
execute
(
"create database if not exists "
+
dbName
);
statement
.
execute
(
"use "
+
dbName
);
statement
.
execute
(
superSql
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
@AfterClass
public
static
void
afterClass
()
{
try
{
if
(
null
!=
statement
)
{
statement
.
execute
(
"drop database "
+
dbName
);
statement
.
close
();
}
if
(
null
!=
connection
)
{
connection
.
close
();
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
src/query/src/qFill.c
浏览文件 @
6370d36a
...
...
@@ -120,7 +120,7 @@ static void doFillOneRowResult(SFillInfo* pFillInfo, void** data, char** srcData
bool
exceedMax
=
false
,
exceedMin
=
false
;
point1
=
(
SPoint
){.
key
=
*
(
TSKEY
*
)(
prev
),
.
val
=
prev
+
pCol
->
col
.
offset
};
point2
=
(
SPoint
){.
key
=
ts
,
.
val
=
srcData
[
i
]
+
pFillInfo
->
index
*
bytes
};
if
(
isNull
(
point2
.
val
,
type
))
{
if
(
isNull
(
point
1
.
val
,
type
)
||
isNull
(
point
2
.
val
,
type
))
{
setNull
(
val1
,
pCol
->
col
.
type
,
bytes
);
continue
;
}
...
...
tests/pytest/fulltest.sh
浏览文件 @
6370d36a
...
...
@@ -288,6 +288,7 @@ python3 test.py -f query/nestedQuery/queryWithSpread.py
python3 ./test.py
-f
query/bug6586.py
# python3 ./test.py -f query/bug5903.py
python3 ./test.py
-f
query/queryLimit.py
python3 ./test.py
-f
query/queryPriKey.py
#stream
python3 ./test.py
-f
stream/metric_1.py
...
...
tests/pytest/query/queryPriKey.py
0 → 100644
浏览文件 @
6370d36a
###################################################################
# 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
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
(),
logSql
)
def
run
(
self
):
tdSql
.
prepare
()
tdSql
.
execute
(
"drop database if exists tdb"
)
tdSql
.
execute
(
"create database if not exists tdb keep 3650"
)
tdSql
.
execute
(
"use tdb"
)
tdSql
.
execute
(
"create table stb1 (time timestamp, c1 int) TAGS (t1 int)"
)
tdSql
.
execute
(
"insert into t1 using stb1 tags(1) values (now - 1m, 1)"
)
tdSql
.
execute
(
"insert into t1 using stb1 tags(1) values (now - 2m, 2)"
)
tdSql
.
execute
(
"insert into t1 using stb1 tags(1) values (now - 3m, 3)"
)
res
=
tdSql
.
getColNameList
(
"select count(*) from t1 interval(1m)"
)
assert
res
[
0
]
==
'time'
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录