Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
1ea963b0
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看板
提交
1ea963b0
编写于
5月 15, 2021
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
差异文件
Merge from master
上级
d9cfdcd1
1c1cbb3d
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
419 addition
and
238 deletion
+419
-238
src/client/src/tscProfile.c
src/client/src/tscProfile.c
+2
-2
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+9
-4
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBConstants.java
...r/jdbc/src/main/java/com/taosdata/jdbc/TSDBConstants.java
+1
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulResultSet.java
.../src/main/java/com/taosdata/jdbc/rs/RestfulResultSet.java
+123
-29
src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/UtcTimestampUtil.java
...c/main/java/com/taosdata/jdbc/utils/UtcTimestampUtil.java
+0
-12
src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/Utils.java
...tor/jdbc/src/main/java/com/taosdata/jdbc/utils/Utils.java
+52
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/InsertSpecialCharacterRestfulTest.java
...aosdata/jdbc/cases/InsertSpecialCharacterRestfulTest.java
+0
-1
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/TD4174Test.java
...dbc/src/test/java/com/taosdata/jdbc/cases/TD4174Test.java
+62
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/TwoTypeTimestampPercisionInRestfulTest.java
...ta/jdbc/cases/TwoTypeTimestampPercisionInRestfulTest.java
+4
-2
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/UnsignedNumberJniTest.java
...t/java/com/taosdata/jdbc/cases/UnsignedNumberJniTest.java
+38
-54
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/UnsignedNumberRestfulTest.java
...va/com/taosdata/jdbc/cases/UnsignedNumberRestfulTest.java
+52
-53
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulPreparedStatementTest.java
...va/com/taosdata/jdbc/rs/RestfulPreparedStatementTest.java
+0
-2
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulResultSetTest.java
.../test/java/com/taosdata/jdbc/rs/RestfulResultSetTest.java
+3
-3
src/kit/taosdemo/taosdemo.c
src/kit/taosdemo/taosdemo.c
+65
-67
src/mnode/src/mnodeProfile.c
src/mnode/src/mnodeProfile.c
+3
-2
src/mnode/src/mnodeShow.c
src/mnode/src/mnodeShow.c
+0
-4
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+2
-0
src/rpc/src/rpcMain.c
src/rpc/src/rpcMain.c
+1
-1
src/wal/src/walWrite.c
src/wal/src/walWrite.c
+2
-2
未找到文件。
src/client/src/tscProfile.c
浏览文件 @
1ea963b0
...
...
@@ -54,14 +54,14 @@ void tscAddIntoSqlList(SSqlObj *pSql) {
pSql
->
next
=
pObj
->
sqlList
;
if
(
pObj
->
sqlList
)
pObj
->
sqlList
->
prev
=
pSql
;
pObj
->
sqlList
=
pSql
;
pSql
->
queryId
=
queryId
++
;
pSql
->
queryId
=
atomic_fetch_add_32
(
&
queryId
,
1
)
;
pthread_mutex_unlock
(
&
pObj
->
mutex
);
pSql
->
stime
=
taosGetTimestampMs
();
pSql
->
listed
=
1
;
tscDebug
(
"0x%"
PRIx64
" added into sqlList
"
,
pSql
->
self
);
tscDebug
(
"0x%"
PRIx64
" added into sqlList
, queryId:%u"
,
pSql
->
self
,
pSql
->
queryId
);
}
void
tscSaveSlowQueryFpCb
(
void
*
param
,
TAOS_RES
*
result
,
int
code
)
{
...
...
src/client/src/tscUtil.c
浏览文件 @
1ea963b0
...
...
@@ -2859,16 +2859,21 @@ void tscDoQuery(SSqlObj* pSql) {
return
;
}
if
(
pCmd
->
command
==
TSDB_SQL_SELECT
)
{
tscAddIntoSqlList
(
pSql
);
}
if
(
pCmd
->
dataSourceType
==
DATA_FROM_DATA_FILE
)
{
tscImportDataFromFile
(
pSql
);
}
else
{
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfo
(
pCmd
,
pCmd
->
clauseIndex
);
uint16_t
type
=
pQueryInfo
->
type
;
if
((
pCmd
->
command
==
TSDB_SQL_SELECT
)
&&
(
!
TSDB_QUERY_HAS_TYPE
(
type
,
TSDB_QUERY_TYPE_SUBQUERY
))
&&
(
!
TSDB_QUERY_HAS_TYPE
(
type
,
TSDB_QUERY_TYPE_STABLE_SUBQUERY
)))
{
tscAddIntoSqlList
(
pSql
);
}
if
(
TSDB_QUERY_HAS_TYPE
(
type
,
TSDB_QUERY_TYPE_INSERT
))
{
// multi-vnodes insertion
tscHandleMultivnodeInsert
(
pSql
);
return
;
}
if
(
QUERY_IS_JOIN_QUERY
(
type
))
{
if
(
!
TSDB_QUERY_HAS_TYPE
(
type
,
TSDB_QUERY_TYPE_SUBQUERY
))
{
tscHandleMasterJoinQuery
(
pSql
);
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBConstants.java
浏览文件 @
1ea963b0
...
...
@@ -30,6 +30,7 @@ public abstract class TSDBConstants {
public
static
final
int
JNI_FETCH_END
=
-
6
;
public
static
final
int
JNI_OUT_OF_MEMORY
=
-
7
;
// TSDB Data Types
public
static
final
int
TSDB_DATA_TYPE_NULL
=
0
;
public
static
final
int
TSDB_DATA_TYPE_BOOL
=
1
;
public
static
final
int
TSDB_DATA_TYPE_TINYINT
=
2
;
public
static
final
int
TSDB_DATA_TYPE_SMALLINT
=
3
;
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulResultSet.java
浏览文件 @
1ea963b0
...
...
@@ -6,11 +6,13 @@ import com.google.common.primitives.Ints;
import
com.google.common.primitives.Longs
;
import
com.google.common.primitives.Shorts
;
import
com.taosdata.jdbc.*
;
import
com.taosdata.jdbc.utils.Utils
;
import
java.math.BigDecimal
;
import
java.sql.*
;
import
java.time.Instant
;
import
java.time.ZoneOffset
;
import
java.time.format.DateTimeParseException
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
...
...
@@ -18,14 +20,13 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
private
volatile
boolean
isClosed
;
private
int
pos
=
-
1
;
private
final
String
database
;
private
final
Statement
statement
;
// data
private
final
ArrayList
<
ArrayList
<
Object
>>
resultSet
;
private
final
ArrayList
<
ArrayList
<
Object
>>
resultSet
=
new
ArrayList
<>()
;
// meta
private
ArrayList
<
String
>
columnNames
;
private
ArrayList
<
Field
>
columns
;
private
ArrayList
<
String
>
columnNames
=
new
ArrayList
<>()
;
private
ArrayList
<
Field
>
columns
=
new
ArrayList
<>()
;
private
RestfulResultSetMetaData
metaData
;
/**
...
...
@@ -37,10 +38,46 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
this
.
database
=
database
;
this
.
statement
=
statement
;
// column metadata
//
get
column metadata
JSONArray
columnMeta
=
resultJson
.
getJSONArray
(
"column_meta"
);
columnNames
=
new
ArrayList
<>();
columns
=
new
ArrayList
<>();
// get row data
JSONArray
data
=
resultJson
.
getJSONArray
(
"data"
);
if
(
data
==
null
||
data
.
isEmpty
())
{
columnNames
.
clear
();
columns
.
clear
();
this
.
resultSet
.
clear
();
return
;
}
// get head
JSONArray
head
=
resultJson
.
getJSONArray
(
"head"
);
// get rows
Integer
rows
=
resultJson
.
getInteger
(
"rows"
);
// parse column_meta
if
(
columnMeta
!=
null
)
{
parseColumnMeta_new
(
columnMeta
);
}
else
{
parseColumnMeta_old
(
head
,
data
,
rows
);
}
this
.
metaData
=
new
RestfulResultSetMetaData
(
this
.
database
,
columns
,
this
);
// parse row data
resultSet
.
clear
();
for
(
int
rowIndex
=
0
;
rowIndex
<
data
.
size
();
rowIndex
++)
{
ArrayList
row
=
new
ArrayList
();
JSONArray
jsonRow
=
data
.
getJSONArray
(
rowIndex
);
for
(
int
colIndex
=
0
;
colIndex
<
this
.
metaData
.
getColumnCount
();
colIndex
++)
{
row
.
add
(
parseColumnData
(
jsonRow
,
colIndex
,
columns
.
get
(
colIndex
).
taos_type
));
}
resultSet
.
add
(
row
);
}
}
/***
* use this method after TDengine-2.0.18.0 to parse column meta, restful add column_meta in resultSet
* @Param columnMeta
*/
private
void
parseColumnMeta_new
(
JSONArray
columnMeta
)
throws
SQLException
{
columnNames
.
clear
();
columns
.
clear
();
for
(
int
colIndex
=
0
;
colIndex
<
columnMeta
.
size
();
colIndex
++)
{
JSONArray
col
=
columnMeta
.
getJSONArray
(
colIndex
);
String
col_name
=
col
.
getString
(
0
);
...
...
@@ -50,23 +87,55 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
columnNames
.
add
(
col_name
);
columns
.
add
(
new
Field
(
col_name
,
col_type
,
col_length
,
""
,
taos_type
));
}
this
.
metaData
=
new
RestfulResultSetMetaData
(
this
.
database
,
columns
,
this
);
}
// row data
JSONArray
data
=
resultJson
.
getJSONArray
(
"data"
);
resultSet
=
new
ArrayList
<>();
for
(
int
rowIndex
=
0
;
rowIndex
<
data
.
size
();
rowIndex
++)
{
ArrayList
row
=
new
ArrayList
();
JSONArray
jsonRow
=
data
.
getJSONArray
(
rowIndex
);
for
(
int
colIndex
=
0
;
colIndex
<
jsonRow
.
size
();
colIndex
++)
{
row
.
add
(
parseColumnData
(
jsonRow
,
colIndex
,
columns
.
get
(
colIndex
).
taos_type
));
/**
* use this method before TDengine-2.0.18.0 to parse column meta
*/
private
void
parseColumnMeta_old
(
JSONArray
head
,
JSONArray
data
,
int
rows
)
{
columnNames
.
clear
();
columns
.
clear
();
for
(
int
colIndex
=
0
;
colIndex
<
head
.
size
();
colIndex
++)
{
String
col_name
=
head
.
getString
(
colIndex
);
columnNames
.
add
(
col_name
);
int
col_type
=
Types
.
NULL
;
int
col_length
=
0
;
int
taos_type
=
TSDBConstants
.
TSDB_DATA_TYPE_NULL
;
JSONArray
row0Json
=
data
.
getJSONArray
(
0
);
if
(
colIndex
<
row0Json
.
size
())
{
Object
value
=
row0Json
.
get
(
colIndex
);
if
(
value
instanceof
Boolean
)
{
col_type
=
Types
.
BOOLEAN
;
col_length
=
1
;
taos_type
=
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
;
}
if
(
value
instanceof
Byte
||
value
instanceof
Short
||
value
instanceof
Integer
||
value
instanceof
Long
)
{
col_type
=
Types
.
BIGINT
;
col_length
=
8
;
taos_type
=
TSDBConstants
.
TSDB_DATA_TYPE_BIGINT
;
}
if
(
value
instanceof
Float
||
value
instanceof
Double
||
value
instanceof
BigDecimal
)
{
col_type
=
Types
.
DOUBLE
;
col_length
=
8
;
taos_type
=
TSDBConstants
.
TSDB_DATA_TYPE_DOUBLE
;
}
if
(
value
instanceof
String
)
{
col_type
=
Types
.
NCHAR
;
col_length
=
((
String
)
value
).
length
();
taos_type
=
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
;
}
}
resultSet
.
add
(
row
);
columns
.
add
(
new
Field
(
col_name
,
col_type
,
col_length
,
""
,
taos_type
)
);
}
}
private
Object
parseColumnData
(
JSONArray
row
,
int
colIndex
,
int
taosType
)
throws
SQLException
{
switch
(
taosType
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_NULL
:
return
null
;
case
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
:
return
row
.
getBoolean
(
colIndex
);
case
TSDBConstants
.
TSDB_DATA_TYPE_TINYINT
:
...
...
@@ -290,8 +359,10 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
return
0
;
}
wasNull
=
false
;
if
(
value
instanceof
Float
||
value
instanceof
Double
)
if
(
value
instanceof
Float
)
return
(
float
)
value
;
if
(
value
instanceof
Double
)
return
new
Float
((
Double
)
value
);
return
Float
.
parseFloat
(
value
.
toString
());
}
...
...
@@ -329,6 +400,9 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
return
Shorts
.
toByteArray
((
short
)
value
);
if
(
value
instanceof
Byte
)
return
new
byte
[]{(
byte
)
value
};
if
(
value
instanceof
Timestamp
)
{
return
Utils
.
formatTimestamp
((
Timestamp
)
value
).
getBytes
();
}
return
value
.
toString
().
getBytes
();
}
...
...
@@ -342,7 +416,9 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
return
null
;
if
(
value
instanceof
Timestamp
)
return
new
Date
(((
Timestamp
)
value
).
getTime
());
return
Date
.
valueOf
(
value
.
toString
());
Date
date
=
null
;
date
=
Utils
.
parseDate
(
value
.
toString
());
return
date
;
}
@Override
...
...
@@ -354,7 +430,13 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
return
null
;
if
(
value
instanceof
Timestamp
)
return
new
Time
(((
Timestamp
)
value
).
getTime
());
return
Time
.
valueOf
(
value
.
toString
());
Time
time
=
null
;
try
{
time
=
Utils
.
parseTime
(
value
.
toString
());
}
catch
(
DateTimeParseException
e
)
{
time
=
null
;
}
return
time
;
}
@Override
...
...
@@ -366,14 +448,20 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
return
null
;
if
(
value
instanceof
Timestamp
)
return
(
Timestamp
)
value
;
// if (value instanceof Long) {
// if (1_0000_0000_0000_0L > (long) value)
// return Timestamp.from(Instant.ofEpochMilli((long) value));
// long epochSec = (long) value / 1000_000L;
// long nanoAdjustment = (long) ((long) value % 1000_000L * 1000);
// return Timestamp.from(Instant.ofEpochSecond(epochSec, nanoAdjustment));
// }
return
Timestamp
.
valueOf
(
value
.
toString
());
if
(
value
instanceof
Long
)
{
if
(
1_0000_0000_0000_0L
>
(
long
)
value
)
return
Timestamp
.
from
(
Instant
.
ofEpochMilli
((
long
)
value
));
long
epochSec
=
(
long
)
value
/
1000_000L
;
long
nanoAdjustment
=
(
long
)
value
%
1000_000L
*
1000
;
return
Timestamp
.
from
(
Instant
.
ofEpochSecond
(
epochSec
,
nanoAdjustment
));
}
Timestamp
ret
;
try
{
ret
=
Utils
.
parseTimestamp
(
value
.
toString
());
}
catch
(
Exception
e
)
{
ret
=
null
;
}
return
ret
;
}
@Override
...
...
@@ -415,7 +503,13 @@ public class RestfulResultSet extends AbstractResultSet implements ResultSet {
return
new
BigDecimal
(
Double
.
valueOf
(
value
.
toString
()));
if
(
value
instanceof
Timestamp
)
return
new
BigDecimal
(((
Timestamp
)
value
).
getTime
());
return
new
BigDecimal
(
value
.
toString
());
BigDecimal
ret
;
try
{
ret
=
new
BigDecimal
(
value
.
toString
());
}
catch
(
Exception
e
)
{
ret
=
null
;
}
return
ret
;
}
@Override
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/UtcTimestampUtil.java
已删除
100644 → 0
浏览文件 @
d9cfdcd1
package
com.taosdata.jdbc.utils
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatterBuilder
;
public
class
UtcTimestampUtil
{
public
static
final
DateTimeFormatter
formatter
=
new
DateTimeFormatterBuilder
()
.
appendPattern
(
"yyyy-MM-ddTHH:mm:ss.SSS+"
)
// .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true)
.
toFormatter
();
}
src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/Utils.java
浏览文件 @
1ea963b0
...
...
@@ -5,7 +5,15 @@ import com.google.common.collect.RangeSet;
import
com.google.common.collect.TreeRangeSet
;
import
java.nio.charset.Charset
;
import
java.sql.Date
;
import
java.sql.Time
;
import
java.sql.Timestamp
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatterBuilder
;
import
java.time.format.DateTimeParseException
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.regex.Matcher
;
...
...
@@ -17,6 +25,41 @@ public class Utils {
private
static
Pattern
ptn
=
Pattern
.
compile
(
".*?'"
);
private
static
final
DateTimeFormatter
formatter
=
new
DateTimeFormatterBuilder
()
.
appendPattern
(
"yyyy-MM-dd HH:mm:ss.SSS"
).
toFormatter
();
private
static
final
DateTimeFormatter
formatter2
=
new
DateTimeFormatterBuilder
()
.
appendPattern
(
"yyyy-MM-dd HH:mm:ss.SSSSSS"
).
toFormatter
();
public
static
Time
parseTime
(
String
timestampStr
)
throws
DateTimeParseException
{
LocalTime
time
;
try
{
time
=
LocalTime
.
parse
(
timestampStr
,
formatter
);
}
catch
(
DateTimeParseException
e
)
{
time
=
LocalTime
.
parse
(
timestampStr
,
formatter2
);
}
return
Time
.
valueOf
(
time
);
}
public
static
Date
parseDate
(
String
timestampStr
)
throws
DateTimeParseException
{
LocalDate
date
;
try
{
date
=
LocalDate
.
parse
(
timestampStr
,
formatter
);
}
catch
(
DateTimeParseException
e
)
{
date
=
LocalDate
.
parse
(
timestampStr
,
formatter2
);
}
return
Date
.
valueOf
(
date
);
}
public
static
Timestamp
parseTimestamp
(
String
timeStampStr
)
{
LocalDateTime
dateTime
;
try
{
dateTime
=
LocalDateTime
.
parse
(
timeStampStr
,
formatter
);
}
catch
(
DateTimeParseException
e
)
{
dateTime
=
LocalDateTime
.
parse
(
timeStampStr
,
formatter2
);
}
return
Timestamp
.
valueOf
(
dateTime
);
}
public
static
String
escapeSingleQuota
(
String
origin
)
{
Matcher
m
=
ptn
.
matcher
(
origin
);
StringBuffer
sb
=
new
StringBuffer
();
...
...
@@ -133,4 +176,13 @@ public class Utils {
}).
collect
(
Collectors
.
joining
());
}
public
static
String
formatTimestamp
(
Timestamp
timestamp
)
{
int
nanos
=
timestamp
.
getNanos
();
if
(
nanos
%
1000000
l
!=
0
)
return
timestamp
.
toLocalDateTime
().
format
(
formatter2
);
return
timestamp
.
toLocalDateTime
().
format
(
formatter
);
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/InsertSpecialCharacterRestfulTest.java
浏览文件 @
1ea963b0
...
...
@@ -7,7 +7,6 @@ import java.sql.*;
public
class
InsertSpecialCharacterRestfulTest
{
private
static
final
String
host
=
"127.0.0.1"
;
// private static final String host = "master";
private
static
Connection
conn
;
private
static
String
dbName
=
"spec_char_test"
;
private
static
String
tbname1
=
"test"
;
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/TD4174Test.java
0 → 100644
浏览文件 @
1ea963b0
package
com.taosdata.jdbc.cases
;
import
com.alibaba.fastjson.JSONObject
;
import
com.taosdata.jdbc.TSDBDriver
;
import
org.junit.*
;
import
java.sql.*
;
import
java.util.Properties
;
public
class
TD4174Test
{
private
Connection
conn
;
private
static
final
String
host
=
"127.0.0.1"
;
@Test
public
void
test
()
{
long
ts
=
System
.
currentTimeMillis
();
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
"insert into weather values("
+
ts
+
", ?)"
))
{
JSONObject
value
=
new
JSONObject
();
value
.
put
(
"name"
,
"John Smith"
);
value
.
put
(
"age"
,
20
);
Assert
.
assertEquals
(
"{\"name\":\"John Smith\",\"age\":20}"
,
value
.
toJSONString
());
pstmt
.
setString
(
1
,
value
.
toJSONString
());
int
ret
=
pstmt
.
executeUpdate
();
Assert
.
assertEquals
(
1
,
ret
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
public
static
void
main
(
String
[]
args
)
{
JSONObject
value
=
new
JSONObject
();
value
.
put
(
"name"
,
"John Smith"
);
value
.
put
(
"age"
,
20
);
System
.
out
.
println
(
value
.
toJSONString
());
}
@Before
public
void
before
()
throws
SQLException
{
String
url
=
"jdbc:TAOS://"
+
host
+
":6030/?user=root&password=taosdata"
;
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
conn
=
DriverManager
.
getConnection
(
url
,
properties
);
try
(
Statement
stmt
=
conn
.
createStatement
())
{
stmt
.
execute
(
"drop database if exists td4174"
);
stmt
.
execute
(
"create database if not exists td4174"
);
stmt
.
execute
(
"use td4174"
);
stmt
.
execute
(
"create table weather(ts timestamp, text binary(64))"
);
}
}
@After
public
void
after
()
throws
SQLException
{
if
(
conn
!=
null
)
conn
.
close
();
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/TwoTypeTimestampPercisionInRestfulTest.java
浏览文件 @
1ea963b0
...
...
@@ -13,6 +13,7 @@ import java.util.Properties;
public
class
TwoTypeTimestampPercisionInRestfulTest
{
private
static
final
String
host
=
"127.0.0.1"
;
private
static
final
String
ms_timestamp_db
=
"ms_precision_test"
;
private
static
final
String
us_timestamp_db
=
"us_precision_test"
;
private
static
final
long
timestamp1
=
System
.
currentTimeMillis
();
...
...
@@ -94,7 +95,8 @@ public class TwoTypeTimestampPercisionInRestfulTest {
try
(
Statement
stmt
=
conn3
.
createStatement
())
{
ResultSet
rs
=
stmt
.
executeQuery
(
"select last_row(ts) from "
+
ms_timestamp_db
+
".weather"
);
rs
.
next
();
long
ts
=
rs
.
getTimestamp
(
1
).
getTime
();
Timestamp
actual
=
rs
.
getTimestamp
(
1
);
long
ts
=
actual
==
null
?
0
:
actual
.
getTime
();
Assert
.
assertEquals
(
timestamp1
,
ts
);
ts
=
rs
.
getLong
(
1
);
Assert
.
assertEquals
(
timestamp1
,
ts
);
...
...
@@ -110,7 +112,7 @@ public class TwoTypeTimestampPercisionInRestfulTest {
rs
.
next
();
Timestamp
timestamp
=
rs
.
getTimestamp
(
1
);
long
ts
=
timestamp
.
getTime
();
long
ts
=
timestamp
==
null
?
0
:
timestamp
.
getTime
();
Assert
.
assertEquals
(
timestamp1
,
ts
);
int
nanos
=
timestamp
.
getNanos
();
Assert
.
assertEquals
(
timestamp2
%
1000_000
l
*
1000
,
nanos
);
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/UnsignedNumberJniTest.java
浏览文件 @
1ea963b0
...
...
@@ -9,19 +9,19 @@ import java.util.Properties;
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
public
class
UnsignedNumberJniTest
{
private
static
final
String
host
=
"127.0.0.1"
;
private
static
Connection
conn
;
private
static
long
ts
;
@Test
public
void
testCase001
()
{
try
(
Statement
stmt
=
conn
.
createStatement
())
{
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table"
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
for
(
int
i
=
1
;
i
<=
meta
.
getColumnCount
();
i
++)
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
i
)
+
": "
+
rs
.
getString
(
i
)
+
"\t"
);
}
System
.
out
.
println
();
Assert
.
assertEquals
(
ts
,
rs
.
getTimestamp
(
1
).
getTime
());
Assert
.
assertEquals
(
"127"
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
"32767"
,
rs
.
getString
(
3
));
Assert
.
assertEquals
(
"2147483647"
,
rs
.
getString
(
4
));
...
...
@@ -37,13 +37,10 @@ public class UnsignedNumberJniTest {
try
(
Statement
stmt
=
conn
.
createStatement
())
{
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table"
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
();
Assert
.
assertEquals
(
ts
,
rs
.
getTimestamp
(
1
).
getTime
());
Assert
.
assertEquals
(
127
,
rs
.
getByte
(
2
));
Assert
.
assertEquals
(
32767
,
rs
.
getShort
(
3
));
Assert
.
assertEquals
(
2147483647
,
rs
.
getInt
(
4
));
...
...
@@ -61,16 +58,14 @@ public class UnsignedNumberJniTest {
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 127, 32767,2147483647, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
();
Assert
.
assertEquals
(
now
,
rs
.
getTimestamp
(
1
).
getTime
());
Assert
.
assertEquals
(
127
,
rs
.
getByte
(
2
));
Assert
.
assertEquals
(
32767
,
rs
.
getShort
(
3
));
Assert
.
assertEquals
(
2147483647
,
rs
.
getInt
(
4
));
Assert
.
assertEquals
(
"18446744073709551614"
,
rs
.
getString
(
5
));
rs
.
getLong
(
5
);
}
}
}
...
...
@@ -82,15 +77,15 @@ public class UnsignedNumberJniTest {
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 127, 32767,4294967294, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
();
Assert
.
assertEquals
(
now
,
rs
.
getTimestamp
(
1
).
getTime
());
Assert
.
assertEquals
(
127
,
rs
.
getByte
(
2
));
Assert
.
assertEquals
(
32767
,
rs
.
getShort
(
3
));
Assert
.
assertEquals
(
"4294967294"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"18446744073709551614"
,
rs
.
getString
(
5
));
rs
.
getInt
(
4
);
}
}
}
...
...
@@ -102,15 +97,15 @@ public class UnsignedNumberJniTest {
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 127, 65534,4294967294, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
Assert
.
assertEquals
(
now
,
rs
.
getTimestamp
(
1
).
getTime
());
Assert
.
assertEquals
(
127
,
rs
.
getByte
(
2
));
Assert
.
assertEquals
(
"65534"
,
rs
.
getString
(
3
));
Assert
.
assertEquals
(
"4294967294"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"18446744073709551614"
,
rs
.
getString
(
5
));
rs
.
getShort
(
3
);
}
}
}
...
...
@@ -122,37 +117,27 @@ public class UnsignedNumberJniTest {
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 254, 65534,4294967294, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
();
}
}
}
assertResultSetMetaData
(
meta
);
@Test
public
void
testCase007
()
throws
SQLException
{
try
(
Statement
stmt
=
conn
.
createStatement
())
{
long
now
=
System
.
currentTimeMillis
();
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 254, 65534,4294967294, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
while
(
rs
.
next
())
{
for
(
int
i
=
1
;
i
<=
meta
.
getColumnCount
();
i
++)
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
i
)
+
": "
+
rs
.
getString
(
i
)
+
"\t"
);
}
System
.
out
.
println
();
Assert
.
assertEquals
(
now
,
rs
.
getTimestamp
(
1
).
getTime
());
Assert
.
assertEquals
(
"254"
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
"65534"
,
rs
.
getString
(
3
));
Assert
.
assertEquals
(
"4294967294"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"18446744073709551614"
,
rs
.
getString
(
5
));
rs
.
getByte
(
2
);
}
}
}
private
void
assertResultSetMetaData
(
ResultSetMetaData
meta
)
throws
SQLException
{
Assert
.
assertEquals
(
5
,
meta
.
getColumnCount
());
Assert
.
assertEquals
(
"ts"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"f1"
,
meta
.
getColumnLabel
(
2
));
Assert
.
assertEquals
(
"f2"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"f3"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"f4"
,
meta
.
getColumnLabel
(
5
));
}
@BeforeClass
public
static
void
beforeClass
()
{
...
...
@@ -160,20 +145,19 @@ public class UnsignedNumberJniTest {
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
ts
=
System
.
currentTimeMillis
();
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
final
String
url
=
"jdbc:TAOS://"
+
host
+
":6030/?user=root&password=taosdata"
;
conn
=
DriverManager
.
getConnection
(
url
,
properties
);
Statement
stmt
=
conn
.
createStatement
();
stmt
.
execute
(
"drop database if exists unsign_jni"
);
stmt
.
execute
(
"create database if not exists unsign_jni"
);
stmt
.
execute
(
"use unsign_jni"
);
stmt
.
execute
(
"create table us_table(ts timestamp, f1 tinyint unsigned, f2 smallint unsigned, f3 int unsigned, f4 bigint unsigned)"
);
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values(
now
, 127, 32767,2147483647, 9223372036854775807)"
);
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values(
"
+
ts
+
"
, 127, 32767,2147483647, 9223372036854775807)"
);
stmt
.
close
();
}
catch
(
ClassNotFoundException
|
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/UnsignedNumberRestfulTest.java
浏览文件 @
1ea963b0
...
...
@@ -13,17 +13,20 @@ public class UnsignedNumberRestfulTest {
private
static
final
String
host
=
"127.0.0.1"
;
private
static
Connection
conn
;
private
static
long
ts
;
@Test
public
void
testCase001
()
{
try
(
Statement
stmt
=
conn
.
createStatement
())
{
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table"
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
for
(
int
i
=
1
;
i
<=
meta
.
getColumnCount
();
i
++)
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
i
)
+
": "
+
rs
.
getString
(
i
)
+
"\t"
);
}
System
.
out
.
println
();
Assert
.
assertEquals
(
ts
,
rs
.
getTimestamp
(
1
).
getTime
());
Assert
.
assertEquals
(
"127"
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
"32767"
,
rs
.
getString
(
3
));
Assert
.
assertEquals
(
"2147483647"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"9223372036854775807"
,
rs
.
getString
(
5
));
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
...
...
@@ -35,13 +38,14 @@ public class UnsignedNumberRestfulTest {
try
(
Statement
stmt
=
conn
.
createStatement
())
{
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table"
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
();
Assert
.
assertEquals
(
ts
,
rs
.
getTimestamp
(
1
).
getTime
());
Assert
.
assertEquals
(
127
,
rs
.
getByte
(
2
));
Assert
.
assertEquals
(
32767
,
rs
.
getShort
(
3
));
Assert
.
assertEquals
(
2147483647
,
rs
.
getInt
(
4
));
Assert
.
assertEquals
(
9223372036854775807
l
,
rs
.
getLong
(
5
));
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
...
...
@@ -55,13 +59,14 @@ public class UnsignedNumberRestfulTest {
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 127, 32767,2147483647, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
(
);
Assert
.
assertEquals
(
now
,
rs
.
getTimestamp
(
1
).
getTime
()
);
Assert
.
assertEquals
(
127
,
rs
.
getByte
(
2
)
);
Assert
.
assertEquals
(
32767
,
rs
.
getShort
(
3
)
);
Assert
.
assertEquals
(
2147483647
,
rs
.
getInt
(
4
)
);
Assert
.
assertEquals
(
"18446744073709551614"
,
rs
.
getString
(
5
)
);
rs
.
getLong
(
5
);
}
}
}
...
...
@@ -73,13 +78,15 @@ public class UnsignedNumberRestfulTest {
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 127, 32767,4294967294, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
(
);
Assert
.
assertEquals
(
now
,
rs
.
getTimestamp
(
1
).
getTime
()
);
Assert
.
assertEquals
(
127
,
rs
.
getByte
(
2
)
);
Assert
.
assertEquals
(
32767
,
rs
.
getShort
(
3
)
);
Assert
.
assertEquals
(
"4294967294"
,
rs
.
getString
(
4
)
);
Assert
.
assertEquals
(
"18446744073709551614"
,
rs
.
getString
(
5
)
);
rs
.
getInt
(
4
);
}
}
}
...
...
@@ -91,13 +98,15 @@ public class UnsignedNumberRestfulTest {
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 127, 65534,4294967294, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
assertResultSetMetaData
(
meta
);
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
(
);
Assert
.
assertEquals
(
now
,
rs
.
getTimestamp
(
1
).
getTime
()
);
Assert
.
assertEquals
(
127
,
rs
.
getByte
(
2
)
);
Assert
.
assertEquals
(
"65534"
,
rs
.
getString
(
3
)
);
Assert
.
assertEquals
(
"4294967294"
,
rs
.
getString
(
4
)
);
Assert
.
assertEquals
(
"18446744073709551614"
,
rs
.
getString
(
5
)
);
rs
.
getShort
(
3
);
}
}
}
...
...
@@ -109,57 +118,47 @@ public class UnsignedNumberRestfulTest {
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 254, 65534,4294967294, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
while
(
rs
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
rs
.
getTimestamp
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
2
)
+
": "
+
rs
.
getByte
(
2
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
rs
.
getShort
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
rs
.
getInt
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
rs
.
getLong
(
5
)
+
"\t"
);
System
.
out
.
println
();
}
}
}
assertResultSetMetaData
(
meta
);
@Test
public
void
testCase007
()
throws
SQLException
{
try
(
Statement
stmt
=
conn
.
createStatement
())
{
long
now
=
System
.
currentTimeMillis
();
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values("
+
now
+
", 254, 65534,4294967294, 18446744073709551614)"
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select * from us_table where ts = "
+
now
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
while
(
rs
.
next
())
{
for
(
int
i
=
1
;
i
<=
meta
.
getColumnCount
();
i
++)
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
i
)
+
": "
+
rs
.
getString
(
i
)
+
"\t"
);
}
System
.
out
.
println
();
Assert
.
assertEquals
(
now
,
rs
.
getTimestamp
(
1
).
getTime
());
Assert
.
assertEquals
(
"254"
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
"65534"
,
rs
.
getString
(
3
));
Assert
.
assertEquals
(
"4294967294"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"18446744073709551614"
,
rs
.
getString
(
5
));
rs
.
getByte
(
2
);
}
}
}
private
void
assertResultSetMetaData
(
ResultSetMetaData
meta
)
throws
SQLException
{
Assert
.
assertEquals
(
5
,
meta
.
getColumnCount
());
Assert
.
assertEquals
(
"ts"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"f1"
,
meta
.
getColumnLabel
(
2
));
Assert
.
assertEquals
(
"f2"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"f3"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"f4"
,
meta
.
getColumnLabel
(
5
));
}
@BeforeClass
public
static
void
beforeClass
()
{
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
ts
=
System
.
currentTimeMillis
();
try
{
Class
.
forName
(
"com.taosdata.jdbc.rs.RestfulDriver"
);
final
String
url
=
"jdbc:TAOS-RS://"
+
host
+
":6041/?user=root&password=taosdata"
;
conn
=
DriverManager
.
getConnection
(
url
,
properties
);
Statement
stmt
=
conn
.
createStatement
();
stmt
.
execute
(
"drop database if exists unsign_restful"
);
stmt
.
execute
(
"create database if not exists unsign_restful"
);
stmt
.
execute
(
"use unsign_restful"
);
stmt
.
execute
(
"create table us_table(ts timestamp, f1 tinyint unsigned, f2 smallint unsigned, f3 int unsigned, f4 bigint unsigned)"
);
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values(
now
, 127, 32767,2147483647, 9223372036854775807)"
);
stmt
.
executeUpdate
(
"insert into us_table(ts,f1,f2,f3,f4) values(
"
+
ts
+
"
, 127, 32767,2147483647, 9223372036854775807)"
);
stmt
.
close
();
}
catch
(
ClassNotFoundException
|
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulPreparedStatementTest.java
浏览文件 @
1ea963b0
...
...
@@ -10,7 +10,6 @@ import java.sql.*;
public
class
RestfulPreparedStatementTest
{
private
static
final
String
host
=
"127.0.0.1"
;
// private static final String host = "master";
private
static
Connection
conn
;
private
static
final
String
sql_insert
=
"insert into t1 values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
;
private
static
PreparedStatement
pstmt_insert
;
...
...
@@ -371,7 +370,6 @@ public class RestfulPreparedStatementTest {
pstmt_insert
.
setSQLXML
(
1
,
null
);
}
@BeforeClass
public
static
void
beforeClass
()
{
try
{
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulResultSetTest.java
浏览文件 @
1ea963b0
...
...
@@ -18,7 +18,6 @@ import java.text.SimpleDateFormat;
public
class
RestfulResultSetTest
{
private
static
final
String
host
=
"127.0.0.1"
;
private
static
Connection
conn
;
private
static
Statement
stmt
;
private
static
ResultSet
rs
;
...
...
@@ -95,7 +94,8 @@ public class RestfulResultSetTest {
@Test
public
void
getBigDecimal
()
throws
SQLException
{
BigDecimal
f1
=
rs
.
getBigDecimal
(
"f1"
);
Assert
.
assertEquals
(
1609430400000
l
,
f1
.
longValue
());
long
actual
=
(
f1
==
null
)
?
0
:
f1
.
longValue
();
Assert
.
assertEquals
(
1609430400000
l
,
actual
);
BigDecimal
f2
=
rs
.
getBigDecimal
(
"f2"
);
Assert
.
assertEquals
(
1
,
f2
.
intValue
());
...
...
@@ -119,7 +119,7 @@ public class RestfulResultSetTest {
@Test
public
void
getBytes
()
throws
SQLException
{
byte
[]
f1
=
rs
.
getBytes
(
"f1"
);
Assert
.
assertEquals
(
"2021-01-01 00:00:00.0"
,
new
String
(
f1
));
Assert
.
assertEquals
(
"2021-01-01 00:00:00.0
00
"
,
new
String
(
f1
));
byte
[]
f2
=
rs
.
getBytes
(
"f2"
);
Assert
.
assertEquals
(
1
,
Ints
.
fromByteArray
(
f2
));
...
...
src/kit/taosdemo/taosdemo.c
浏览文件 @
1ea963b0
...
...
@@ -212,8 +212,8 @@ typedef struct SArguments_S {
uint64_t
interlace_rows
;
uint64_t
num_of_RPR
;
// num_of_records_per_req
uint64_t
max_sql_len
;
uint64_t
num_of_tables
;
uint64_t
num_of_DPT
;
int64_t
num_of_tables
;
int64_t
num_of_DPT
;
int
abort
;
int
disorderRatio
;
// 0: no disorder, >0: x%
int
disorderRange
;
// ms or us by database precision
...
...
@@ -240,7 +240,7 @@ typedef struct SSuperTable_S {
char
dataSource
[
MAX_TB_NAME_SIZE
+
1
];
// rand_gen or sample
char
insertMode
[
MAX_TB_NAME_SIZE
];
// taosc, rest
int64_t
childTblLimit
;
uint64_t
childTblOffset
;
uint64_t
childTblOffset
;
// int multiThreadWriteOneTbl; // 0: no, 1: yes
uint64_t
interlaceRows
;
//
...
...
@@ -249,7 +249,7 @@ typedef struct SSuperTable_S {
uint64_t
maxSqlLen
;
//
uint64_t
insertInterval
;
// insert interval, will override global insert interval
uint64_t
insertRows
;
int64_t
insertRows
;
int64_t
timeStampStep
;
char
startTimestamp
[
MAX_TB_NAME_SIZE
];
char
sampleFormat
[
MAX_TB_NAME_SIZE
];
// csv, json
...
...
@@ -258,7 +258,7 @@ typedef struct SSuperTable_S {
uint32_t
columnCount
;
StrColumn
columns
[
MAX_COLUMN_COUNT
];
uint32_t
tagCount
;
uint32_t
tagCount
;
StrColumn
tags
[
MAX_TAG_COUNT
];
char
*
childTblName
;
...
...
@@ -283,7 +283,7 @@ typedef struct SSuperTable_S {
typedef
struct
{
char
name
[
TSDB_DB_NAME_LEN
+
1
];
char
create_time
[
32
];
int
32
_t
ntables
;
int
64
_t
ntables
;
int32_t
vgroups
;
int16_t
replica
;
int16_t
quorum
;
...
...
@@ -377,7 +377,7 @@ typedef struct SuperQueryInfo_S {
int
subscribeRestart
;
int
subscribeKeepProgress
;
uint64_t
queryTimes
;
uint64_t
childTblCount
;
int64_t
childTblCount
;
char
childTblPrefix
[
MAX_TB_NAME_SIZE
];
uint64_t
sqlCount
;
char
sql
[
MAX_QUERY_SQL_COUNT
][
MAX_QUERY_SQL_LENGTH
+
1
];
...
...
@@ -412,7 +412,7 @@ typedef struct SThreadInfo_S {
char
tb_prefix
[
MAX_TB_NAME_SIZE
];
uint64_t
start_table_from
;
uint64_t
end_table_to
;
uint64_t
ntables
;
int64_t
ntables
;
uint64_t
data_of_rate
;
int64_t
start_time
;
char
*
cols
;
...
...
@@ -581,7 +581,7 @@ SArguments g_args = {
static
SDbs
g_Dbs
;
static
int
g_totalChildTables
=
0
;
static
int
64_t
g_totalChildTables
=
0
;
static
SQueryMetaInfo
g_queryInfo
;
static
FILE
*
g_fpOfInsertResult
=
NULL
;
...
...
@@ -1015,9 +1015,9 @@ static void parse_args(int argc, char *argv[], SArguments *arguments) {
arguments
->
max_sql_len
);
printf
(
"# Length of Binary: %d
\n
"
,
arguments
->
len_of_binary
);
printf
(
"# Number of Threads: %d
\n
"
,
arguments
->
num_of_threads
);
printf
(
"# Number of Tables: %"
PRI
u
64
"
\n
"
,
printf
(
"# Number of Tables: %"
PRI
d
64
"
\n
"
,
arguments
->
num_of_tables
);
printf
(
"# Number of Data per Table: %"
PRI
u
64
"
\n
"
,
printf
(
"# Number of Data per Table: %"
PRI
d
64
"
\n
"
,
arguments
->
num_of_DPT
);
printf
(
"# Database name: %s
\n
"
,
arguments
->
database
);
printf
(
"# Table prefix: %s
\n
"
,
arguments
->
tb_prefix
);
...
...
@@ -1388,7 +1388,7 @@ static int printfInsertMeta() {
printf
(
" childTblExists:
\033
[33m%s
\033
[0m
\n
"
,
"error"
);
}
printf
(
" childTblCount:
\033
[33m%"
PRI
u
64
"
\033
[0m
\n
"
,
printf
(
" childTblCount:
\033
[33m%"
PRI
d
64
"
\033
[0m
\n
"
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblCount
);
printf
(
" childTblPrefix:
\033
[33m%s
\033
[0m
\n
"
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblPrefix
);
...
...
@@ -1404,7 +1404,7 @@ static int printfInsertMeta() {
printf
(
" childTblOffset:
\033
[33m%"
PRIu64
"
\033
[0m
\n
"
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblOffset
);
}
printf
(
" insertRows:
\033
[33m%"
PRI
u
64
"
\033
[0m
\n
"
,
printf
(
" insertRows:
\033
[33m%"
PRI
d
64
"
\033
[0m
\n
"
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
insertRows
);
/*
if (0 == g_Dbs.db[i].superTbls[j].multiThreadWriteOneTbl) {
...
...
@@ -1571,7 +1571,7 @@ static void printfInsertMetaToFile(FILE* fp) {
fprintf
(
fp
,
" childTblExists: %s
\n
"
,
"error"
);
}
fprintf
(
fp
,
" childTblCount: %"
PRI
u
64
"
\n
"
,
fprintf
(
fp
,
" childTblCount: %"
PRI
d
64
"
\n
"
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblCount
);
fprintf
(
fp
,
" childTblPrefix: %s
\n
"
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblPrefix
);
...
...
@@ -1579,7 +1579,7 @@ static void printfInsertMetaToFile(FILE* fp) {
g_Dbs
.
db
[
i
].
superTbls
[
j
].
dataSource
);
fprintf
(
fp
,
" insertMode: %s
\n
"
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
insertMode
);
fprintf
(
fp
,
" insertRows: %"
PRI
u
64
"
\n
"
,
fprintf
(
fp
,
" insertRows: %"
PRI
d
64
"
\n
"
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
insertRows
);
fprintf
(
fp
,
" interlace rows: %"
PRIu64
"
\n
"
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
interlaceRows
);
...
...
@@ -1697,7 +1697,7 @@ static void printfQueryMeta() {
g_queryInfo
.
superQueryInfo
.
queryInterval
);
printf
(
"threadCnt:
\033
[33m%d
\033
[0m
\n
"
,
g_queryInfo
.
superQueryInfo
.
threadCnt
);
printf
(
"childTblCount:
\033
[33m%"
PRI
u
64
"
\033
[0m
\n
"
,
printf
(
"childTblCount:
\033
[33m%"
PRI
d
64
"
\033
[0m
\n
"
,
g_queryInfo
.
superQueryInfo
.
childTblCount
);
printf
(
"stable name:
\033
[33m%s
\033
[0m
\n
"
,
g_queryInfo
.
superQueryInfo
.
sTblName
);
...
...
@@ -1879,7 +1879,7 @@ static int getDbFromServer(TAOS * taos, SDbInfo** dbInfos) {
formatTimestamp
(
dbInfos
[
count
]
->
create_time
,
*
(
int64_t
*
)
row
[
TSDB_SHOW_DB_CREATED_TIME_INDEX
],
TSDB_TIME_PRECISION_MILLI
);
dbInfos
[
count
]
->
ntables
=
*
((
int
32
_t
*
)
row
[
TSDB_SHOW_DB_NTABLES_INDEX
]);
dbInfos
[
count
]
->
ntables
=
*
((
int
64
_t
*
)
row
[
TSDB_SHOW_DB_NTABLES_INDEX
]);
dbInfos
[
count
]
->
vgroups
=
*
((
int32_t
*
)
row
[
TSDB_SHOW_DB_VGROUPS_INDEX
]);
dbInfos
[
count
]
->
replica
=
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_REPLICA_INDEX
]);
dbInfos
[
count
]
->
quorum
=
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_QUORUM_INDEX
]);
...
...
@@ -1930,7 +1930,7 @@ static void printfDbInfoForQueryToFile(
fprintf
(
fp
,
"================ database[%d] ================
\n
"
,
index
);
fprintf
(
fp
,
"name: %s
\n
"
,
dbInfos
->
name
);
fprintf
(
fp
,
"created_time: %s
\n
"
,
dbInfos
->
create_time
);
fprintf
(
fp
,
"ntables: %
d
\n
"
,
dbInfos
->
ntables
);
fprintf
(
fp
,
"ntables: %
"
PRId64
"
\n
"
,
dbInfos
->
ntables
);
fprintf
(
fp
,
"vgroups: %d
\n
"
,
dbInfos
->
vgroups
);
fprintf
(
fp
,
"replica: %d
\n
"
,
dbInfos
->
replica
);
fprintf
(
fp
,
"quorum: %d
\n
"
,
dbInfos
->
quorum
);
...
...
@@ -2327,7 +2327,7 @@ static int calcRowLen(SSuperTable* superTbls) {
static
int
getChildNameOfSuperTableWithLimitAndOffset
(
TAOS
*
taos
,
char
*
dbName
,
char
*
sTblName
,
char
**
childTblNameOfSuperTbl
,
u
int64_t
*
childTblCountOfSuperTbl
,
int64_t
limit
,
uint64_t
offset
)
{
int64_t
*
childTblCountOfSuperTbl
,
int64_t
limit
,
uint64_t
offset
)
{
char
command
[
BUFFER_SIZE
]
=
"
\0
"
;
char
limitBuf
[
100
]
=
"
\0
"
;
...
...
@@ -2356,8 +2356,8 @@ static int getChildNameOfSuperTableWithLimitAndOffset(TAOS * taos,
exit
(
-
1
);
}
int
childTblCount
=
(
limit
<
0
)
?
10000
:
limit
;
int
count
=
0
;
int
64_t
childTblCount
=
(
limit
<
0
)
?
10000
:
limit
;
int
64_t
count
=
0
;
if
(
childTblName
==
NULL
)
{
childTblName
=
(
char
*
)
calloc
(
1
,
childTblCount
*
TSDB_TABLE_NAME_LEN
);
if
(
NULL
==
childTblName
)
{
...
...
@@ -2404,7 +2404,7 @@ static int getChildNameOfSuperTableWithLimitAndOffset(TAOS * taos,
static
int
getAllChildNameOfSuperTable
(
TAOS
*
taos
,
char
*
dbName
,
char
*
sTblName
,
char
**
childTblNameOfSuperTbl
,
u
int64_t
*
childTblCountOfSuperTbl
)
{
int64_t
*
childTblCountOfSuperTbl
)
{
return
getChildNameOfSuperTableWithLimitAndOffset
(
taos
,
dbName
,
sTblName
,
childTblNameOfSuperTbl
,
childTblCountOfSuperTbl
,
...
...
@@ -2884,7 +2884,7 @@ static void* createTable(void *sarg)
}
static
int
startMultiThreadCreateChildTable
(
char
*
cols
,
int
threads
,
uint64_t
startFrom
,
u
int64_t
ntables
,
char
*
cols
,
int
threads
,
uint64_t
startFrom
,
int64_t
ntables
,
char
*
db_name
,
SSuperTable
*
superTblInfo
)
{
pthread_t
*
pids
=
malloc
(
threads
*
sizeof
(
pthread_t
));
...
...
@@ -2899,13 +2899,13 @@ static int startMultiThreadCreateChildTable(
threads
=
1
;
}
u
int64_t
a
=
ntables
/
threads
;
int64_t
a
=
ntables
/
threads
;
if
(
a
<
1
)
{
threads
=
ntables
;
a
=
1
;
}
u
int64_t
b
=
0
;
int64_t
b
=
0
;
b
=
ntables
%
threads
;
for
(
int64_t
i
=
0
;
i
<
threads
;
i
++
)
{
...
...
@@ -2969,10 +2969,10 @@ static void createChildTables() {
verbosePrint
(
"%s() LN%d: %s
\n
"
,
__func__
,
__LINE__
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
colsOfCreateChildTable
);
in
t
startFrom
=
0
;
uint64_
t
startFrom
=
0
;
g_totalChildTables
+=
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblCount
;
verbosePrint
(
"%s() LN%d: create %
d child tables from %d
\n
"
,
verbosePrint
(
"%s() LN%d: create %
"
PRId64
" child tables from %"
PRIu64
"
\n
"
,
__func__
,
__LINE__
,
g_totalChildTables
,
startFrom
);
startMultiThreadCreateChildTable
(
g_Dbs
.
db
[
i
].
superTbls
[
j
].
colsOfCreateChildTable
,
...
...
@@ -3000,7 +3000,7 @@ static void createChildTables() {
snprintf
(
tblColsBuf
+
len
,
MAX_SQL_SIZE
-
len
,
")"
);
verbosePrint
(
"%s() LN%d: dbName: %s num of tb: %"
PRI
u
64
" schema: %s
\n
"
,
verbosePrint
(
"%s() LN%d: dbName: %s num of tb: %"
PRI
d
64
" schema: %s
\n
"
,
__func__
,
__LINE__
,
g_Dbs
.
db
[
i
].
dbName
,
g_args
.
num_of_tables
,
tblColsBuf
);
startMultiThreadCreateChildTable
(
...
...
@@ -4756,7 +4756,7 @@ static void getTableName(char *pTblName, threadInfo* pThreadInfo, uint64_t table
(
tableSeq
-
superTblInfo
->
childTblOffset
)
*
TSDB_TABLE_NAME_LEN
);
}
else
{
verbosePrint
(
"[%d] %s() LN%d: from=%"
PRIu64
" count=%"
PRI
u
64
" seq=%"
PRIu64
"
\n
"
,
verbosePrint
(
"[%d] %s() LN%d: from=%"
PRIu64
" count=%"
PRI
d
64
" seq=%"
PRIu64
"
\n
"
,
pThreadInfo
->
threadID
,
__func__
,
__LINE__
,
pThreadInfo
->
start_table_from
,
pThreadInfo
->
ntables
,
tableSeq
);
...
...
@@ -4772,7 +4772,7 @@ static void getTableName(char *pTblName, threadInfo* pThreadInfo, uint64_t table
static
int64_t
generateDataTail
(
SSuperTable
*
superTblInfo
,
uint64_t
batch
,
char
*
buffer
,
int64_t
remainderBufLen
,
int64_t
insertRows
,
int64_t
startFrom
,
int64_t
startTime
,
int64_t
*
pSamplePos
,
int64_t
*
dataLen
)
{
u
int64_t
startFrom
,
int64_t
startTime
,
int64_t
*
pSamplePos
,
int64_t
*
dataLen
)
{
uint64_t
len
=
0
;
uint32_t
ncols_per_record
=
1
;
// count first col ts
...
...
@@ -4948,7 +4948,7 @@ static int64_t generateInterlaceDataBuffer(
char
*
tableName
,
uint64_t
batchPerTbl
,
uint64_t
i
,
uint64_t
batchPerTblTimes
,
uint64_t
tableSeq
,
threadInfo
*
pThreadInfo
,
char
*
buffer
,
u
int64_t
insertRows
,
int64_t
insertRows
,
int64_t
startTime
,
uint64_t
*
pRemainderBufLen
)
{
...
...
@@ -5008,7 +5008,7 @@ static int64_t generateProgressiveDataBuffer(
int64_t
tableSeq
,
threadInfo
*
pThreadInfo
,
char
*
buffer
,
int64_t
insertRows
,
int64_t
startFrom
,
int64_t
startTime
,
int64_t
*
pSamplePos
,
u
int64_t
startFrom
,
int64_t
startTime
,
int64_t
*
pSamplePos
,
int64_t
*
pRemainderBufLen
)
{
SSuperTable
*
superTblInfo
=
pThreadInfo
->
superTblInfo
;
...
...
@@ -5061,7 +5061,7 @@ static void* syncWriteInterlace(threadInfo *pThreadInfo) {
debugPrint
(
"[%d] %s() LN%d: ### interlace write
\n
"
,
pThreadInfo
->
threadID
,
__func__
,
__LINE__
);
u
int64_t
insertRows
;
int64_t
insertRows
;
uint64_t
interlaceRows
;
SSuperTable
*
superTblInfo
=
pThreadInfo
->
superTblInfo
;
...
...
@@ -5123,14 +5123,12 @@ static void* syncWriteInterlace(threadInfo *pThreadInfo) {
uint64_t
tableSeq
=
pThreadInfo
->
start_table_from
;
debugPrint
(
"[%d] %s() LN%d: start_table_from=%"
PRIu64
" ntables=%"
PRI
u
64
" insertRows=%"
PRIu64
"
\n
"
,
debugPrint
(
"[%d] %s() LN%d: start_table_from=%"
PRIu64
" ntables=%"
PRI
d
64
" insertRows=%"
PRIu64
"
\n
"
,
pThreadInfo
->
threadID
,
__func__
,
__LINE__
,
pThreadInfo
->
start_table_from
,
pThreadInfo
->
ntables
,
insertRows
);
int64_t
startTime
=
pThreadInfo
->
start_time
;
assert
(
pThreadInfo
->
ntables
>
0
);
uint64_t
batchPerTbl
=
interlaceRows
;
uint64_t
batchPerTblTimes
;
...
...
@@ -5343,7 +5341,7 @@ static void* syncWriteProgressive(threadInfo *pThreadInfo) {
tableSeq
++
)
{
int64_t
start_time
=
pThreadInfo
->
start_time
;
u
int64_t
insertRows
=
(
superTblInfo
)
?
superTblInfo
->
insertRows
:
g_args
.
num_of_DPT
;
int64_t
insertRows
=
(
superTblInfo
)
?
superTblInfo
->
insertRows
:
g_args
.
num_of_DPT
;
verbosePrint
(
"%s() LN%d insertRows=%"
PRId64
"
\n
"
,
__func__
,
__LINE__
,
insertRows
);
for
(
uint64_t
i
=
0
;
i
<
insertRows
;)
{
...
...
@@ -5659,8 +5657,8 @@ static void startMultiThreadInsertData(int threads, char* db_name,
exit
(
-
1
);
}
int
ntables
=
0
;
in
t
startFrom
;
int
64_t
ntables
=
0
;
uint64_
t
startFrom
;
if
(
superTblInfo
)
{
int64_t
limit
;
...
...
@@ -5716,7 +5714,7 @@ static void startMultiThreadInsertData(int threads, char* db_name,
exit
(
-
1
);
}
u
int64_t
childTblCount
;
int64_t
childTblCount
;
getChildNameOfSuperTableWithLimitAndOffset
(
taos
,
db_name
,
superTblInfo
->
sTblName
,
...
...
@@ -5730,13 +5728,13 @@ static void startMultiThreadInsertData(int threads, char* db_name,
taos_close
(
taos
);
u
int64_t
a
=
ntables
/
threads
;
int64_t
a
=
ntables
/
threads
;
if
(
a
<
1
)
{
threads
=
ntables
;
a
=
1
;
}
u
int64_t
b
=
0
;
int64_t
b
=
0
;
if
(
threads
!=
0
)
{
b
=
ntables
%
threads
;
}
...
...
@@ -5892,7 +5890,7 @@ static void *readTable(void *sarg) {
return
NULL
;
}
in
t
num_of_DPT
;
int64_
t
num_of_DPT
;
/* if (rinfo->superTblInfo) {
num_of_DPT = rinfo->superTblInfo->insertRows; // nrecords_per_table;
} else {
...
...
@@ -5900,22 +5898,22 @@ static void *readTable(void *sarg) {
num_of_DPT
=
g_args
.
num_of_DPT
;
// }
int
num_of_tables
=
rinfo
->
ntables
;
// rinfo->end_table_to - rinfo->start_table_from + 1;
int
totalData
=
num_of_DPT
*
num_of_tables
;
int
64_t
num_of_tables
=
rinfo
->
ntables
;
// rinfo->end_table_to - rinfo->start_table_from + 1;
int
64_t
totalData
=
num_of_DPT
*
num_of_tables
;
bool
do_aggreFunc
=
g_Dbs
.
do_aggreFunc
;
int
n
=
do_aggreFunc
?
(
sizeof
(
aggreFunc
)
/
sizeof
(
aggreFunc
[
0
]))
:
2
;
if
(
!
do_aggreFunc
)
{
printf
(
"
\n
The first field is either Binary or Bool. Aggregation functions are not supported.
\n
"
);
}
printf
(
"%
d
records:
\n
"
,
totalData
);
printf
(
"%
"
PRId64
"
records:
\n
"
,
totalData
);
fprintf
(
fp
,
"| QFunctions | QRecords | QSpeed(R/s) | QLatency(ms) |
\n
"
);
for
(
uint64_
t
j
=
0
;
j
<
n
;
j
++
)
{
for
(
in
t
j
=
0
;
j
<
n
;
j
++
)
{
double
totalT
=
0
;
uint64_t
count
=
0
;
for
(
u
int64_t
i
=
0
;
i
<
num_of_tables
;
i
++
)
{
sprintf
(
command
,
"select %s from %s%"
PRI
u
64
" where ts>= %"
PRIu64
,
for
(
int64_t
i
=
0
;
i
<
num_of_tables
;
i
++
)
{
sprintf
(
command
,
"select %s from %s%"
PRI
d
64
" where ts>= %"
PRIu64
,
aggreFunc
[
j
],
tb_prefix
,
i
,
sTime
);
double
t
=
taosGetTimestampMs
();
...
...
@@ -5940,7 +5938,7 @@ static void *readTable(void *sarg) {
taos_free_result
(
pSql
);
}
fprintf
(
fp
,
"|%10s | %
10d
| %12.2f | %10.2f |
\n
"
,
fprintf
(
fp
,
"|%10s | %
"
PRId64
"
| %12.2f | %10.2f |
\n
"
,
aggreFunc
[
j
][
0
]
==
'*'
?
" * "
:
aggreFunc
[
j
],
totalData
,
(
double
)(
num_of_tables
*
num_of_DPT
)
/
totalT
,
totalT
*
1000
);
printf
(
"select %10s took %.6f second(s)
\n
"
,
aggreFunc
[
j
],
totalT
*
1000
);
...
...
@@ -5962,29 +5960,29 @@ static void *readMetric(void *sarg) {
return
NULL
;
}
int
num_of_DPT
=
rinfo
->
superTblInfo
->
insertRows
;
int
num_of_tables
=
rinfo
->
ntables
;
// rinfo->end_table_to - rinfo->start_table_from + 1;
int
totalData
=
num_of_DPT
*
num_of_tables
;
int
64_t
num_of_DPT
=
rinfo
->
superTblInfo
->
insertRows
;
int
64_t
num_of_tables
=
rinfo
->
ntables
;
// rinfo->end_table_to - rinfo->start_table_from + 1;
int
64_t
totalData
=
num_of_DPT
*
num_of_tables
;
bool
do_aggreFunc
=
g_Dbs
.
do_aggreFunc
;
int
n
=
do_aggreFunc
?
(
sizeof
(
aggreFunc
)
/
sizeof
(
aggreFunc
[
0
]))
:
2
;
if
(
!
do_aggreFunc
)
{
printf
(
"
\n
The first field is either Binary or Bool. Aggregation functions are not supported.
\n
"
);
}
printf
(
"%
d
records:
\n
"
,
totalData
);
fprintf
(
fp
,
"Querying On %
d
records:
\n
"
,
totalData
);
printf
(
"%
"
PRId64
"
records:
\n
"
,
totalData
);
fprintf
(
fp
,
"Querying On %
"
PRId64
"
records:
\n
"
,
totalData
);
for
(
int
j
=
0
;
j
<
n
;
j
++
)
{
char
condition
[
COND_BUF_LEN
]
=
"
\0
"
;
char
tempS
[
64
]
=
"
\0
"
;
int
m
=
10
<
num_of_tables
?
10
:
num_of_tables
;
int
64_t
m
=
10
<
num_of_tables
?
10
:
num_of_tables
;
for
(
int
i
=
1
;
i
<=
m
;
i
++
)
{
for
(
int
64_t
i
=
1
;
i
<=
m
;
i
++
)
{
if
(
i
==
1
)
{
sprintf
(
tempS
,
"t1 = %
d
"
,
i
);
sprintf
(
tempS
,
"t1 = %
"
PRId64
"
"
,
i
);
}
else
{
sprintf
(
tempS
,
" or t1 = %
d
"
,
i
);
sprintf
(
tempS
,
" or t1 = %
"
PRId64
"
"
,
i
);
}
strncat
(
condition
,
tempS
,
COND_BUF_LEN
-
1
);
...
...
@@ -6070,11 +6068,11 @@ static int insertTestProcess() {
end
=
taosGetTimestampMs
();
if
(
g_totalChildTables
>
0
)
{
fprintf
(
stderr
,
"Spent %.4f seconds to create %
d
tables with %d thread(s)
\n\n
"
,
fprintf
(
stderr
,
"Spent %.4f seconds to create %
"
PRId64
"
tables with %d thread(s)
\n\n
"
,
(
end
-
start
)
/
1000
.
0
,
g_totalChildTables
,
g_Dbs
.
threadCountByCreateTbl
);
if
(
g_fpOfInsertResult
)
{
fprintf
(
g_fpOfInsertResult
,
"Spent %.4f seconds to create %
d
tables with %d thread(s)
\n\n
"
,
"Spent %.4f seconds to create %
"
PRId64
"
tables with %d thread(s)
\n\n
"
,
(
end
-
start
)
/
1000
.
0
,
g_totalChildTables
,
g_Dbs
.
threadCountByCreateTbl
);
}
}
...
...
@@ -6400,16 +6398,16 @@ static int queryTestProcess() {
ERROR_EXIT
(
"memory allocation failed for create threads
\n
"
);
}
u
int64_t
ntables
=
g_queryInfo
.
superQueryInfo
.
childTblCount
;
int64_t
ntables
=
g_queryInfo
.
superQueryInfo
.
childTblCount
;
int
threads
=
g_queryInfo
.
superQueryInfo
.
threadCnt
;
u
int64_t
a
=
ntables
/
threads
;
int64_t
a
=
ntables
/
threads
;
if
(
a
<
1
)
{
threads
=
ntables
;
a
=
1
;
}
u
int64_t
b
=
0
;
int64_t
b
=
0
;
if
(
threads
!=
0
)
{
b
=
ntables
%
threads
;
}
...
...
@@ -6748,16 +6746,16 @@ static int subscribeTestProcess() {
exit
(
-
1
);
}
u
int64_t
ntables
=
g_queryInfo
.
superQueryInfo
.
childTblCount
;
int64_t
ntables
=
g_queryInfo
.
superQueryInfo
.
childTblCount
;
int
threads
=
g_queryInfo
.
superQueryInfo
.
threadCnt
;
u
int64_t
a
=
ntables
/
threads
;
int64_t
a
=
ntables
/
threads
;
if
(
a
<
1
)
{
threads
=
ntables
;
a
=
1
;
}
u
int64_t
b
=
0
;
int64_t
b
=
0
;
if
(
threads
!=
0
)
{
b
=
ntables
%
threads
;
}
...
...
src/mnode/src/mnodeProfile.c
浏览文件 @
1ea963b0
...
...
@@ -123,8 +123,9 @@ SConnObj *mnodeAccquireConn(int32_t connId, char *user, uint32_t ip, uint16_t po
if
(
/* pConn->ip != ip || */
pConn
->
port
!=
port
/* || strcmp(pConn->user, user) != 0 */
)
{
mDebug
(
"connId:%d, incoming conn user:%s ip:%s:%u, not match exist conn user:%s ip:%s:%u"
,
connId
,
user
,
taosIpStr
(
ip
),
port
,
pConn
->
user
,
taosIpStr
(
pConn
->
ip
),
pConn
->
port
);
taosCacheRelease
(
tsMnodeConnCache
,
(
void
**
)
&
pConn
,
false
);
return
NULL
;
pConn
->
port
=
port
;
//taosCacheRelease(tsMnodeConnCache, (void **)&pConn, false);
//return NULL;
}
// mDebug("connId:%d, is incoming, user:%s ip:%s:%u", connId, pConn->user, taosIpStr(pConn->ip), pConn->port);
...
...
src/mnode/src/mnodeShow.c
浏览文件 @
1ea963b0
...
...
@@ -253,10 +253,6 @@ static int32_t mnodeProcessHeartBeatMsg(SMnodeMsg *pMsg) {
int32_t
connId
=
htonl
(
pHBMsg
->
connId
);
SConnObj
*
pConn
=
mnodeAccquireConn
(
connId
,
connInfo
.
user
,
connInfo
.
clientIp
,
connInfo
.
clientPort
);
if
(
pConn
==
NULL
)
{
pHBMsg
->
pid
=
htonl
(
pHBMsg
->
pid
);
pConn
=
mnodeCreateConn
(
connInfo
.
user
,
connInfo
.
clientIp
,
connInfo
.
clientPort
,
pHBMsg
->
pid
,
pHBMsg
->
appName
);
}
if
(
pConn
==
NULL
)
{
// do not close existing links, otherwise
...
...
src/query/src/qExecutor.c
浏览文件 @
1ea963b0
...
...
@@ -115,6 +115,8 @@ int64_t genQueryId(void) {
uid
|=
sid
;
qDebug
(
"gen qid:0x%"
PRIx64
,
uid
);
return
uid
;
}
...
...
src/rpc/src/rpcMain.c
浏览文件 @
1ea963b0
...
...
@@ -1471,7 +1471,7 @@ static int32_t rpcCompressRpcMsg(char* pCont, int32_t contLen) {
* only the compressed size is less than the value of contLen - overhead, the compression is applied
* The first four bytes is set to 0, the second four bytes are utilized to keep the original length of message
*/
if
(
compLen
<
contLen
-
overhead
)
{
if
(
compLen
>
0
&&
compLen
<
contLen
-
overhead
)
{
SRpcComp
*
pComp
=
(
SRpcComp
*
)
pCont
;
pComp
->
reserved
=
0
;
pComp
->
contLen
=
htonl
(
contLen
);
...
...
src/wal/src/walWrite.c
浏览文件 @
1ea963b0
...
...
@@ -426,8 +426,8 @@ static int32_t walRestoreWalFile(SWal *pWal, void *pVnode, FWalWrite writeFp, ch
#endif
offset
=
offset
+
sizeof
(
SWalHead
)
+
pHead
->
len
;
wTrace
(
"vgId:%d, restore wal, fileId:%"
PRId64
" hver:%"
PRIu64
" wver:%"
PRIu64
" len:%d
"
,
pWal
->
vgId
,
fileId
,
pHead
->
version
,
pWal
->
version
,
pHead
->
len
);
wTrace
(
"vgId:%d, restore wal, fileId:%"
PRId64
" hver:%"
PRIu64
" wver:%"
PRIu64
" len:%d
offset:%"
PRId64
,
pWal
->
vgId
,
fileId
,
pHead
->
version
,
pWal
->
version
,
pHead
->
len
,
offset
);
pWal
->
version
=
pHead
->
version
;
(
*
writeFp
)(
pVnode
,
pHead
,
TAOS_QTYPE_WAL
,
NULL
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录