Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
~笨蛋陪你哭
TDengine
提交
72ca4518
T
TDengine
项目概览
~笨蛋陪你哭
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
72ca4518
编写于
6月 09, 2021
作者:
S
Shengliang Guan
提交者:
GitHub
6月 09, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #6424 from taosdata/fix/jdbc
sync jdbc driver from develop to master
上级
dc3de5da
1beac7b6
变更
21
展开全部
隐藏空白更改
内联
并排
Showing
21 changed file
with
2402 addition
and
2332 deletion
+2402
-2332
src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractDatabaseMetaData.java
...main/java/com/taosdata/jdbc/AbstractDatabaseMetaData.java
+476
-448
src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractParameterMetaData.java
...ain/java/com/taosdata/jdbc/AbstractParameterMetaData.java
+23
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractResultSet.java
...bc/src/main/java/com/taosdata/jdbc/AbstractResultSet.java
+8
-2
src/connector/jdbc/src/main/java/com/taosdata/jdbc/DatabaseMetaDataResultSet.java
...ain/java/com/taosdata/jdbc/DatabaseMetaDataResultSet.java
+53
-879
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBConstants.java
...r/jdbc/src/main/java/com/taosdata/jdbc/TSDBConstants.java
+53
-12
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java
...dbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java
+59
-48
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java
...rc/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java
+440
-446
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSet.java
...r/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSet.java
+55
-54
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetMetaData.java
...rc/main/java/com/taosdata/jdbc/TSDBResultSetMetaData.java
+1
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetRowData.java
...src/main/java/com/taosdata/jdbc/TSDBResultSetRowData.java
+187
-75
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBStatement.java
...r/jdbc/src/main/java/com/taosdata/jdbc/TSDBStatement.java
+6
-5
src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/Utils.java
...tor/jdbc/src/main/java/com/taosdata/jdbc/utils/Utils.java
+1
-10
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBConnectionTest.java
...c/src/test/java/com/taosdata/jdbc/TSDBConnectionTest.java
+22
-8
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBDatabaseMetaDataTest.java
...test/java/com/taosdata/jdbc/TSDBDatabaseMetaDataTest.java
+186
-57
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBJNIConnectorTest.java
...src/test/java/com/taosdata/jdbc/TSDBJNIConnectorTest.java
+3
-3
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBParameterMetaDataTest.java
...est/java/com/taosdata/jdbc/TSDBParameterMetaDataTest.java
+25
-19
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBPreparedStatementTest.java
...est/java/com/taosdata/jdbc/TSDBPreparedStatementTest.java
+604
-194
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBResultSetTest.java
...bc/src/test/java/com/taosdata/jdbc/TSDBResultSetTest.java
+3
-4
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBStatementTest.java
...bc/src/test/java/com/taosdata/jdbc/TSDBStatementTest.java
+0
-3
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulDatabaseMetaDataTest.java
...ava/com/taosdata/jdbc/rs/RestfulDatabaseMetaDataTest.java
+183
-52
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulParameterMetaDataTest.java
...va/com/taosdata/jdbc/rs/RestfulParameterMetaDataTest.java
+14
-13
未找到文件。
src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractDatabaseMetaData.java
浏览文件 @
72ca4518
此差异已折叠。
点击以展开。
src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractParameterMetaData.java
浏览文件 @
72ca4518
package
com.taosdata.jdbc
;
import
com.sun.org.apache.xpath.internal.operations.Bool
;
import
java.sql.ParameterMetaData
;
import
java.sql.SQLException
;
import
java.sql.Timestamp
;
...
...
@@ -49,6 +51,22 @@ public abstract class AbstractParameterMetaData extends WrapperImpl implements P
if
(
param
<
1
&&
param
>=
parameters
.
length
)
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_PARAMETER_INDEX_OUT_RANGE
);
if
(
parameters
[
param
-
1
]
instanceof
Boolean
)
return
TSDBConstants
.
BOOLEAN_PRECISION
;
if
(
parameters
[
param
-
1
]
instanceof
Byte
)
return
TSDBConstants
.
TINYINT_PRECISION
;
if
(
parameters
[
param
-
1
]
instanceof
Short
)
return
TSDBConstants
.
SMALLINT_PRECISION
;
if
(
parameters
[
param
-
1
]
instanceof
Integer
)
return
TSDBConstants
.
INT_PRECISION
;
if
(
parameters
[
param
-
1
]
instanceof
Long
)
return
TSDBConstants
.
BIGINT_PRECISION
;
if
(
parameters
[
param
-
1
]
instanceof
Timestamp
)
return
TSDBConstants
.
TIMESTAMP_MS_PRECISION
;
if
(
parameters
[
param
-
1
]
instanceof
Float
)
return
TSDBConstants
.
FLOAT_PRECISION
;
if
(
parameters
[
param
-
1
]
instanceof
Double
)
return
TSDBConstants
.
DOUBLE_PRECISION
;
if
(
parameters
[
param
-
1
]
instanceof
String
)
return
((
String
)
parameters
[
param
-
1
]).
length
();
if
(
parameters
[
param
-
1
]
instanceof
byte
[])
...
...
@@ -60,6 +78,11 @@ public abstract class AbstractParameterMetaData extends WrapperImpl implements P
public
int
getScale
(
int
param
)
throws
SQLException
{
if
(
param
<
1
&&
param
>=
parameters
.
length
)
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_PARAMETER_INDEX_OUT_RANGE
);
if
(
parameters
[
param
-
1
]
instanceof
Float
)
return
TSDBConstants
.
FLOAT_SCALE
;
if
(
parameters
[
param
-
1
]
instanceof
Double
)
return
TSDBConstants
.
DOUBLE_SCALE
;
return
0
;
}
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractResultSet.java
浏览文件 @
72ca4518
...
...
@@ -66,10 +66,16 @@ public abstract class AbstractResultSet extends WrapperImpl implements ResultSet
public
abstract
byte
[]
getBytes
(
int
columnIndex
)
throws
SQLException
;
@Override
public
abstract
Date
getDate
(
int
columnIndex
)
throws
SQLException
;
public
Date
getDate
(
int
columnIndex
)
throws
SQLException
{
Timestamp
timestamp
=
getTimestamp
(
columnIndex
);
return
timestamp
==
null
?
null
:
new
Date
(
timestamp
.
getTime
());
}
@Override
public
abstract
Time
getTime
(
int
columnIndex
)
throws
SQLException
;
public
Time
getTime
(
int
columnIndex
)
throws
SQLException
{
Timestamp
timestamp
=
getTimestamp
(
columnIndex
);
return
timestamp
==
null
?
null
:
new
Time
(
timestamp
.
getTime
());
}
@Override
public
abstract
Timestamp
getTimestamp
(
int
columnIndex
)
throws
SQLException
;
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/DatabaseMetaDataResultSet.java
浏览文件 @
72ca4518
此差异已折叠。
点击以展开。
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBConstants.java
浏览文件 @
72ca4518
...
...
@@ -41,15 +41,15 @@ public abstract class TSDBConstants {
public
static
final
int
TSDB_DATA_TYPE_BINARY
=
8
;
public
static
final
int
TSDB_DATA_TYPE_TIMESTAMP
=
9
;
public
static
final
int
TSDB_DATA_TYPE_NCHAR
=
10
;
/*
系统增加新的无符号数据类型,分别是:
unsigned tinyint, 数值范围:0-254, NULL 为255
unsigned smallint,数值范围: 0-65534, NULL 为65535
unsigned int,数值范围:0-4294967294,NULL 为4294967295u
unsigned bigint,数值范围:0-18446744073709551614u,NULL 为18446744073709551615u。
example:
create table tb(ts timestamp, a tinyint unsigned, b smallint unsigned, c int unsigned, d bigint unsigned);
*/
/*
*
*
系统增加新的无符号数据类型,分别是:
*
unsigned tinyint, 数值范围:0-254, NULL 为255
*
unsigned smallint,数值范围: 0-65534, NULL 为65535
*
unsigned int,数值范围:0-4294967294,NULL 为4294967295u
*
unsigned bigint,数值范围:0-18446744073709551614u,NULL 为18446744073709551615u。
*
example:
*
create table tb(ts timestamp, a tinyint unsigned, b smallint unsigned, c int unsigned, d bigint unsigned);
*/
public
static
final
int
TSDB_DATA_TYPE_UTINYINT
=
11
;
//unsigned tinyint
public
static
final
int
TSDB_DATA_TYPE_USMALLINT
=
12
;
//unsigned smallint
public
static
final
int
TSDB_DATA_TYPE_UINT
=
13
;
//unsigned int
...
...
@@ -57,6 +57,47 @@ public abstract class TSDBConstants {
// nchar column max length
public
static
final
int
maxFieldSize
=
16
*
1024
;
// precision for data types
public
static
final
int
BOOLEAN_PRECISION
=
1
;
public
static
final
int
TINYINT_PRECISION
=
4
;
public
static
final
int
SMALLINT_PRECISION
=
6
;
public
static
final
int
INT_PRECISION
=
11
;
public
static
final
int
BIGINT_PRECISION
=
20
;
public
static
final
int
FLOAT_PRECISION
=
12
;
public
static
final
int
DOUBLE_PRECISION
=
22
;
public
static
final
int
TIMESTAMP_MS_PRECISION
=
23
;
public
static
final
int
TIMESTAMP_US_PRECISION
=
26
;
// scale for data types
public
static
final
int
FLOAT_SCALE
=
31
;
public
static
final
int
DOUBLE_SCALE
=
31
;
public
static
int
typeName2JdbcType
(
String
type
)
{
switch
(
type
.
toUpperCase
())
{
case
"TIMESTAMP"
:
return
Types
.
TIMESTAMP
;
case
"INT"
:
return
Types
.
INTEGER
;
case
"BIGINT"
:
return
Types
.
BIGINT
;
case
"FLOAT"
:
return
Types
.
FLOAT
;
case
"DOUBLE"
:
return
Types
.
DOUBLE
;
case
"BINARY"
:
return
Types
.
BINARY
;
case
"SMALLINT"
:
return
Types
.
SMALLINT
;
case
"TINYINT"
:
return
Types
.
TINYINT
;
case
"BOOL"
:
return
Types
.
BOOLEAN
;
case
"NCHAR"
:
return
Types
.
NCHAR
;
default
:
return
Types
.
NULL
;
}
}
public
static
int
taosType2JdbcType
(
int
taosType
)
throws
SQLException
{
switch
(
taosType
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
:
...
...
@@ -88,7 +129,7 @@ public abstract class TSDBConstants {
}
public
static
String
taosType2JdbcTypeName
(
int
taosType
)
throws
SQLException
{
switch
(
taosType
){
switch
(
taosType
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
:
return
"BOOL"
;
case
TSDBConstants
.
TSDB_DATA_TYPE_UTINYINT
:
...
...
@@ -119,7 +160,7 @@ public abstract class TSDBConstants {
}
public
static
int
jdbcType2TaosType
(
int
jdbcType
)
throws
SQLException
{
switch
(
jdbcType
){
switch
(
jdbcType
)
{
case
Types
.
BOOLEAN
:
return
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
;
case
Types
.
TINYINT
:
...
...
@@ -145,7 +186,7 @@ public abstract class TSDBConstants {
}
public
static
String
jdbcType2TaosTypeName
(
int
jdbcType
)
throws
SQLException
{
switch
(
jdbcType
){
switch
(
jdbcType
)
{
case
Types
.
BOOLEAN
:
return
"BOOL"
;
case
Types
.
TINYINT
:
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java
浏览文件 @
72ca4518
...
...
@@ -16,13 +16,13 @@
*/
package
com.taosdata.jdbc
;
import
com.taosdata.jdbc.utils.TaosInfo
;
import
java.nio.ByteBuffer
;
import
java.sql.SQLException
;
import
java.sql.SQLWarning
;
import
java.util.List
;
import
com.taosdata.jdbc.utils.TaosInfo
;
/**
* JNI connector
*/
...
...
@@ -30,10 +30,10 @@ public class TSDBJNIConnector {
private
static
volatile
Boolean
isInitialized
=
false
;
private
TaosInfo
taosInfo
=
TaosInfo
.
getInstance
();
// Connection pointer used in C
private
long
taos
=
TSDBConstants
.
JNI_NULL_POINTER
;
// result set status in current connection
private
boolean
isResultsetClosed
;
...
...
@@ -194,7 +194,9 @@ public class TSDBJNIConnector {
* Get schema metadata
*/
public
int
getSchemaMetaData
(
long
resultSet
,
List
<
ColumnMetaData
>
columnMetaData
)
{
return
this
.
getSchemaMetaDataImp
(
this
.
taos
,
resultSet
,
columnMetaData
);
int
ret
=
this
.
getSchemaMetaDataImp
(
this
.
taos
,
resultSet
,
columnMetaData
);
columnMetaData
.
stream
().
forEach
(
column
->
column
.
setColIndex
(
column
.
getColIndex
()
+
1
));
return
ret
;
}
private
native
int
getSchemaMetaDataImp
(
long
connection
,
long
resultSet
,
List
<
ColumnMetaData
>
columnMetaData
);
...
...
@@ -221,7 +223,7 @@ public class TSDBJNIConnector {
*/
public
void
closeConnection
()
throws
SQLException
{
int
code
=
this
.
closeConnectionImp
(
this
.
taos
);
if
(
code
<
0
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_JNI_CONNECTION_NULL
);
}
else
if
(
code
==
0
)
{
...
...
@@ -229,7 +231,7 @@ public class TSDBJNIConnector {
}
else
{
throw
new
SQLException
(
"Undefined error code returned by TDengine when closing a connection"
);
}
// invoke closeConnectionImpl only here
taosInfo
.
connect_close_increment
();
}
...
...
@@ -274,67 +276,76 @@ public class TSDBJNIConnector {
}
private
native
int
validateCreateTableSqlImp
(
long
connection
,
byte
[]
sqlBytes
);
public
long
prepareStmt
(
String
sql
)
throws
SQLException
{
Long
stmt
=
prepareStmtImp
(
sql
.
getBytes
(),
this
.
taos
);
if
(
stmt
==
TSDBConstants
.
JNI_TDENGINE_ERROR
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_INVALID_SQL
);
}
else
if
(
stmt
==
TSDBConstants
.
JNI_CONNECTION_NULL
)
{
public
long
prepareStmt
(
String
sql
)
throws
SQLException
{
Long
stmt
;
try
{
stmt
=
prepareStmtImp
(
sql
.
getBytes
(),
this
.
taos
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_UNSUPPORTED_ENCODING
);
}
if
(
stmt
==
TSDBConstants
.
JNI_CONNECTION_NULL
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_JNI_CONNECTION_NULL
);
}
else
if
(
stmt
==
TSDBConstants
.
JNI_SQL_NULL
)
{
}
if
(
stmt
==
TSDBConstants
.
JNI_SQL_NULL
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_JNI_SQL_NULL
);
}
else
if
(
stmt
==
TSDBConstants
.
JNI_OUT_OF_MEMORY
)
{
}
if
(
stmt
==
TSDBConstants
.
JNI_OUT_OF_MEMORY
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_JNI_OUT_OF_MEMORY
);
}
return
stmt
;
return
stmt
;
}
private
native
long
prepareStmtImp
(
byte
[]
sql
,
long
con
);
public
void
setBindTableName
(
long
stmt
,
String
tableName
)
throws
SQLException
{
int
code
=
setBindTableNameImp
(
stmt
,
tableName
,
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
int
code
=
setBindTableNameImp
(
stmt
,
tableName
,
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_UNKNOWN
,
"failed to set table name"
);
}
}
}
}
private
native
int
setBindTableNameImp
(
long
stmt
,
String
name
,
long
conn
);
public
void
setBindTableNameAndTags
(
long
stmt
,
String
tableName
,
int
numOfTags
,
ByteBuffer
tags
,
ByteBuffer
typeList
,
ByteBuffer
lengthList
,
ByteBuffer
nullList
)
throws
SQLException
{
int
code
=
setTableNameTagsImp
(
stmt
,
tableName
,
numOfTags
,
tags
.
array
(),
typeList
.
array
(),
lengthList
.
array
(),
nullList
.
array
(),
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_UNKNOWN
,
"failed to bind table name and corresponding tags"
);
}
int
code
=
setTableNameTagsImp
(
stmt
,
tableName
,
numOfTags
,
tags
.
array
(),
typeList
.
array
(),
lengthList
.
array
(),
nullList
.
array
(),
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_UNKNOWN
,
"failed to bind table name and corresponding tags"
);
}
}
private
native
int
setTableNameTagsImp
(
long
stmt
,
String
name
,
int
numOfTags
,
byte
[]
tags
,
byte
[]
typeList
,
byte
[]
lengthList
,
byte
[]
nullList
,
long
conn
);
public
void
bindColumnDataArray
(
long
stmt
,
ByteBuffer
colDataList
,
ByteBuffer
lengthList
,
ByteBuffer
isNullList
,
int
type
,
int
bytes
,
int
numOfRows
,
int
columnIndex
)
throws
SQLException
{
int
code
=
bindColDataImp
(
stmt
,
colDataList
.
array
(),
lengthList
.
array
(),
isNullList
.
array
(),
type
,
bytes
,
numOfRows
,
columnIndex
,
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
public
void
bindColumnDataArray
(
long
stmt
,
ByteBuffer
colDataList
,
ByteBuffer
lengthList
,
ByteBuffer
isNullList
,
int
type
,
int
bytes
,
int
numOfRows
,
int
columnIndex
)
throws
SQLException
{
int
code
=
bindColDataImp
(
stmt
,
colDataList
.
array
(),
lengthList
.
array
(),
isNullList
.
array
(),
type
,
bytes
,
numOfRows
,
columnIndex
,
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_UNKNOWN
,
"failed to bind column data"
);
}
}
}
}
private
native
int
bindColDataImp
(
long
stmt
,
byte
[]
colDataList
,
byte
[]
lengthList
,
byte
[]
isNullList
,
int
type
,
int
bytes
,
int
numOfRows
,
int
columnIndex
,
long
conn
);
public
void
executeBatch
(
long
stmt
)
throws
SQLException
{
int
code
=
executeBatchImp
(
stmt
,
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
int
code
=
executeBatchImp
(
stmt
,
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_UNKNOWN
,
"failed to execute batch bind"
);
}
}
}
private
native
int
executeBatchImp
(
long
stmt
,
long
con
);
public
void
closeBatch
(
long
stmt
)
throws
SQLException
{
int
code
=
closeStmt
(
stmt
,
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
int
code
=
closeStmt
(
stmt
,
this
.
taos
);
if
(
code
!=
TSDBConstants
.
JNI_SUCCESS
)
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_UNKNOWN
,
"failed to close batch bind"
);
}
}
}
private
native
int
closeStmt
(
long
stmt
,
long
con
);
}
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java
浏览文件 @
72ca4518
此差异已折叠。
点击以展开。
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSet.java
浏览文件 @
72ca4518
...
...
@@ -133,9 +133,10 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
this
.
blockData
.
getString
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
res
=
this
.
rowData
.
getString
(
columnIndex
-
1
,
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
());
int
nativeType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
res
=
this
.
rowData
.
getString
(
columnIndex
,
nativeType
);
}
return
res
;
}
...
...
@@ -147,9 +148,10 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
this
.
blockData
.
getBoolean
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
res
=
this
.
rowData
.
getBoolean
(
columnIndex
-
1
,
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
());
int
nativeType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
res
=
this
.
rowData
.
getBoolean
(
columnIndex
,
nativeType
);
}
return
res
;
}
...
...
@@ -161,9 +163,10 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
(
byte
)
this
.
blockData
.
getInt
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
res
=
(
byte
)
this
.
rowData
.
getInt
(
columnIndex
-
1
,
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
());
int
nativeType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
res
=
(
byte
)
this
.
rowData
.
getInt
(
columnIndex
,
nativeType
);
}
return
res
;
}
...
...
@@ -175,9 +178,10 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
(
short
)
this
.
blockData
.
getInt
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
res
=
(
short
)
this
.
rowData
.
getInt
(
columnIndex
-
1
,
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
());
int
nativeType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
res
=
(
short
)
this
.
rowData
.
getInt
(
columnIndex
,
nativeType
);
}
return
res
;
}
...
...
@@ -189,9 +193,11 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
this
.
blockData
.
getInt
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
res
=
this
.
rowData
.
getInt
(
columnIndex
-
1
,
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
());
int
nativeType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
res
=
this
.
rowData
.
getInt
(
columnIndex
,
nativeType
);
}
return
res
;
}
...
...
@@ -203,13 +209,15 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
this
.
blockData
.
getLong
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
Object
value
=
this
.
rowData
.
get
(
columnIndex
-
1
);
if
(
value
instanceof
Timestamp
)
Object
value
=
this
.
rowData
.
get
Object
(
columnIndex
);
if
(
value
instanceof
Timestamp
)
{
res
=
((
Timestamp
)
value
).
getTime
();
else
res
=
this
.
rowData
.
getLong
(
columnIndex
-
1
,
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
());
}
else
{
int
nativeType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
res
=
this
.
rowData
.
getLong
(
columnIndex
,
nativeType
);
}
}
return
res
;
}
...
...
@@ -221,9 +229,11 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
(
float
)
this
.
blockData
.
getDouble
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
if
(!
lastWasNull
)
res
=
this
.
rowData
.
getFloat
(
columnIndex
-
1
,
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
());
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
int
nativeType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
res
=
this
.
rowData
.
getFloat
(
columnIndex
,
nativeType
);
}
return
res
;
}
...
...
@@ -235,9 +245,10 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
this
.
blockData
.
getDouble
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
res
=
this
.
rowData
.
getDouble
(
columnIndex
-
1
,
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
());
int
nativeType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
res
=
this
.
rowData
.
getDouble
(
columnIndex
,
nativeType
);
}
return
res
;
}
...
...
@@ -245,34 +256,27 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
public
byte
[]
getBytes
(
int
columnIndex
)
throws
SQLException
{
checkAvailability
(
columnIndex
,
this
.
columnMetaDataList
.
size
());
Object
value
=
this
.
rowData
.
get
(
columnIndex
-
1
);
Object
value
=
this
.
rowData
.
get
Object
(
columnIndex
);
if
(
value
==
null
)
return
null
;
int
col
Type
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
switch
(
col
Type
)
{
int
native
Type
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
switch
(
native
Type
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BIGINT
:
return
Longs
.
toByteArray
((
L
ong
)
value
);
return
Longs
.
toByteArray
((
l
ong
)
value
);
case
TSDBConstants
.
TSDB_DATA_TYPE_INT
:
return
Ints
.
toByteArray
((
int
)
value
);
case
TSDBConstants
.
TSDB_DATA_TYPE_SMALLINT
:
return
Shorts
.
toByteArray
((
S
hort
)
value
);
return
Shorts
.
toByteArray
((
s
hort
)
value
);
case
TSDBConstants
.
TSDB_DATA_TYPE_TINYINT
:
return
new
byte
[]{(
byte
)
value
};
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
return
(
byte
[])
value
;
case
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
:
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
default
:
return
value
.
toString
().
getBytes
();
}
return
value
.
toString
().
getBytes
();
}
@Override
public
Date
getDate
(
int
columnIndex
)
throws
SQLException
{
Timestamp
timestamp
=
getTimestamp
(
columnIndex
);
return
timestamp
==
null
?
null
:
new
Date
(
timestamp
.
getTime
());
}
@Override
public
Time
getTime
(
int
columnIndex
)
throws
SQLException
{
Timestamp
timestamp
=
getTimestamp
(
columnIndex
);
return
timestamp
==
null
?
null
:
new
Time
(
timestamp
.
getTime
());
}
public
Timestamp
getTimestamp
(
int
columnIndex
)
throws
SQLException
{
...
...
@@ -282,9 +286,10 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
this
.
blockData
.
getTimestamp
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
res
=
this
.
rowData
.
getTimestamp
(
columnIndex
-
1
);
int
nativeType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
res
=
this
.
rowData
.
getTimestamp
(
columnIndex
,
nativeType
);
}
return
res
;
}
...
...
@@ -304,13 +309,9 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
this
.
blockData
.
get
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
if
(!
lastWasNull
)
{
int
colType
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
if
(
colType
==
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
)
res
=
((
String
)
this
.
rowData
.
get
(
columnIndex
-
1
)).
getBytes
();
else
res
=
this
.
rowData
.
get
(
columnIndex
-
1
);
res
=
this
.
rowData
.
getObject
(
columnIndex
);
}
return
res
;
}
...
...
@@ -318,7 +319,7 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
public
int
findColumn
(
String
columnLabel
)
throws
SQLException
{
for
(
ColumnMetaData
colMetaData
:
this
.
columnMetaDataList
)
{
if
(
colMetaData
.
getColName
()
!=
null
&&
colMetaData
.
getColName
().
equalsIgnoreCase
(
columnLabel
))
{
return
colMetaData
.
getColIndex
()
+
1
;
return
colMetaData
.
getColIndex
();
}
}
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_INVALID_VARIABLE
);
...
...
@@ -329,25 +330,25 @@ public class TSDBResultSet extends AbstractResultSet implements ResultSet {
if
(
this
.
getBatchFetch
())
return
new
BigDecimal
(
this
.
blockData
.
getLong
(
columnIndex
-
1
));
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
-
1
);
this
.
lastWasNull
=
this
.
rowData
.
wasNull
(
columnIndex
);
BigDecimal
res
=
null
;
if
(!
lastWasNull
)
{
int
col
Type
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
switch
(
col
Type
)
{
int
native
Type
=
this
.
columnMetaDataList
.
get
(
columnIndex
-
1
).
getColType
();
switch
(
native
Type
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_TINYINT
:
case
TSDBConstants
.
TSDB_DATA_TYPE_SMALLINT
:
case
TSDBConstants
.
TSDB_DATA_TYPE_INT
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BIGINT
:
res
=
new
BigDecimal
(
Long
.
valueOf
(
this
.
rowData
.
get
(
columnIndex
-
1
).
toString
()));
res
=
new
BigDecimal
(
Long
.
valueOf
(
this
.
rowData
.
get
Object
(
columnIndex
).
toString
()));
break
;
case
TSDBConstants
.
TSDB_DATA_TYPE_FLOAT
:
case
TSDBConstants
.
TSDB_DATA_TYPE_DOUBLE
:
res
=
new
BigDecimal
(
Double
.
valueOf
(
this
.
rowData
.
get
(
columnIndex
-
1
).
toString
()));
res
=
new
BigDecimal
(
Double
.
valueOf
(
this
.
rowData
.
get
Object
(
columnIndex
).
toString
()));
break
;
case
TSDBConstants
.
TSDB_DATA_TYPE_TIMESTAMP
:
return
new
BigDecimal
(((
Timestamp
)
this
.
rowData
.
get
(
columnIndex
-
1
)).
getTime
());
return
new
BigDecimal
(((
Timestamp
)
this
.
rowData
.
get
Object
(
columnIndex
)).
getTime
());
default
:
res
=
new
BigDecimal
(
this
.
rowData
.
get
(
columnIndex
-
1
).
toString
());
res
=
new
BigDecimal
(
this
.
rowData
.
get
Object
(
columnIndex
).
toString
());
}
}
return
res
;
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetMetaData.java
浏览文件 @
72ca4518
...
...
@@ -113,6 +113,7 @@ public class TSDBResultSetMetaData extends WrapperImpl implements ResultSetMetaD
ColumnMetaData
columnMetaData
=
this
.
colMetaDataList
.
get
(
column
-
1
);
switch
(
columnMetaData
.
getColType
())
{
case
TSDBConstants
.
TSDB_DATA_TYPE_FLOAT
:
return
5
;
case
TSDBConstants
.
TSDB_DATA_TYPE_DOUBLE
:
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBResultSetRowData.java
浏览文件 @
72ca4518
...
...
@@ -14,6 +14,8 @@
*****************************************************************************/
package
com.taosdata.jdbc
;
import
com.taosdata.jdbc.utils.NullType
;
import
java.math.BigDecimal
;
import
java.sql.SQLException
;
import
java.sql.Timestamp
;
...
...
@@ -22,11 +24,13 @@ import java.util.ArrayList;
import
java.util.Collections
;
public
class
TSDBResultSetRowData
{
private
ArrayList
<
Object
>
data
;
private
int
colSize
=
0
;
private
int
colSize
;
public
TSDBResultSetRowData
(
int
colSize
)
{
this
.
setColSize
(
colSize
);
this
.
colSize
=
colSize
;
this
.
clear
();
}
public
void
clear
()
{
...
...
@@ -41,68 +45,104 @@ public class TSDBResultSetRowData {
}
public
boolean
wasNull
(
int
col
)
{
return
data
.
get
(
col
)
==
null
;
return
data
.
get
(
col
-
1
)
==
null
;
}
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setBooleanValue
(
int
col
,
boolean
value
)
{
setBoolean
(
col
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setBoolean
(
int
col
,
boolean
value
)
{
data
.
set
(
col
,
value
);
}
public
boolean
getBoolean
(
int
col
,
int
src
Type
)
throws
SQLException
{
Object
obj
=
data
.
get
(
col
);
public
boolean
getBoolean
(
int
col
,
int
native
Type
)
throws
SQLException
{
Object
obj
=
data
.
get
(
col
-
1
);
switch
(
src
Type
)
{
switch
(
native
Type
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
:
return
(
Boolean
)
obj
;
case
TSDBConstants
.
TSDB_DATA_TYPE_FLOAT
:
return
((
Float
)
obj
)
==
1.0
?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
case
TSDBConstants
.
TSDB_DATA_TYPE_DOUBLE
:
return
((
Double
)
obj
)
==
1.0
?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
case
TSDBConstants
.
TSDB_DATA_TYPE_TINYINT
:
return
((
Byte
)
obj
)
==
1
?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
case
TSDBConstants
.
TSDB_DATA_TYPE_SMALLINT
:
return
((
Short
)
obj
)
==
1
?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
case
TSDBConstants
.
TSDB_DATA_TYPE_INT
:
return
((
Integer
)
obj
)
==
1
?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
case
TSDBConstants
.
TSDB_DATA_TYPE_TIMESTAMP
:
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_NCHAR
:
{
return
obj
.
toString
().
contains
(
"1"
);
}
default
:
return
false
;
}
}
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setByteValue
(
int
colIndex
,
byte
value
)
{
setByte
(
colIndex
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setByte
(
int
col
,
byte
value
)
{
data
.
set
(
col
,
value
);
}
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setShortValue
(
int
colIndex
,
short
value
)
{
setShort
(
colIndex
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setShort
(
int
col
,
short
value
)
{
data
.
set
(
col
,
value
);
}
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setIntValue
(
int
colIndex
,
int
value
)
{
setInt
(
colIndex
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setInt
(
int
col
,
int
value
)
{
data
.
set
(
col
,
value
);
}
@SuppressWarnings
(
"deprecation"
)
public
int
getInt
(
int
col
,
int
srcType
)
throws
SQLException
{
Object
obj
=
data
.
get
(
col
);
public
int
getInt
(
int
col
,
int
nativeType
)
throws
SQLException
{
Object
obj
=
data
.
get
(
col
-
1
);
if
(
obj
==
null
)
return
NullType
.
getIntNull
();
switch
(
src
Type
)
{
switch
(
native
Type
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
:
return
Boolean
.
TRUE
.
equals
(
obj
)
?
1
:
0
;
case
TSDBConstants
.
TSDB_DATA_TYPE_FLOAT
:
return
((
Float
)
obj
).
intValue
();
case
TSDBConstants
.
TSDB_DATA_TYPE_DOUBLE
:
return
((
Double
)
obj
).
intValue
();
case
TSDBConstants
.
TSDB_DATA_TYPE_TINYINT
:
return
(
Byte
)
obj
;
case
TSDBConstants
.
TSDB_DATA_TYPE_SMALLINT
:
return
(
Short
)
obj
;
case
TSDBConstants
.
TSDB_DATA_TYPE_INT
:
return
(
Integer
)
obj
;
case
TSDBConstants
.
TSDB_DATA_TYPE_TIMESTAMP
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BIGINT
:
case
TSDBConstants
.
TSDB_DATA_TYPE_TIMESTAMP
:
return
((
Long
)
obj
).
intValue
();
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
...
...
@@ -131,33 +171,46 @@ public class TSDBResultSetRowData {
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_NUMERIC_VALUE_OUT_OF_RANGE
);
return
Long
.
valueOf
(
value
).
intValue
();
}
case
TSDBConstants
.
TSDB_DATA_TYPE_FLOAT
:
return
((
Float
)
obj
).
intValue
();
case
TSDBConstants
.
TSDB_DATA_TYPE_DOUBLE
:
return
((
Double
)
obj
).
intValue
();
default
:
return
0
;
}
}
return
0
;
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setLongValue
(
int
colIndex
,
long
value
)
{
setLong
(
colIndex
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setLong
(
int
col
,
long
value
)
{
data
.
set
(
col
,
value
);
}
public
long
getLong
(
int
col
,
int
srcType
)
throws
SQLException
{
Object
obj
=
data
.
get
(
col
);
public
long
getLong
(
int
col
,
int
nativeType
)
throws
SQLException
{
Object
obj
=
data
.
get
(
col
-
1
);
if
(
obj
==
null
)
{
return
NullType
.
getBigIntNull
();
}
switch
(
src
Type
)
{
switch
(
native
Type
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
:
return
Boolean
.
TRUE
.
equals
(
obj
)
?
1
:
0
;
case
TSDBConstants
.
TSDB_DATA_TYPE_FLOAT
:
return
((
Float
)
obj
).
longValue
();
case
TSDBConstants
.
TSDB_DATA_TYPE_DOUBLE
:
return
((
Double
)
obj
).
longValue
();
case
TSDBConstants
.
TSDB_DATA_TYPE_TINYINT
:
return
(
Byte
)
obj
;
case
TSDBConstants
.
TSDB_DATA_TYPE_SMALLINT
:
return
(
Short
)
obj
;
case
TSDBConstants
.
TSDB_DATA_TYPE_INT
:
return
(
Integer
)
obj
;
case
TSDBConstants
.
TSDB_DATA_TYPE_TIMESTAMP
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BIGINT
:
case
TSDBConstants
.
TSDB_DATA_TYPE_TIMESTAMP
:
return
(
Long
)
obj
;
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
...
...
@@ -186,19 +239,35 @@ public class TSDBResultSetRowData {
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_NUMERIC_VALUE_OUT_OF_RANGE
);
return
value
;
}
case
TSDBConstants
.
TSDB_DATA_TYPE_FLOAT
:
return
((
Float
)
obj
).
longValue
();
case
TSDBConstants
.
TSDB_DATA_TYPE_DOUBLE
:
return
((
Double
)
obj
).
longValue
();
default
:
return
0
;
}
}
return
0
;
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setFloatValue
(
int
colIndex
,
float
value
)
{
setFloat
(
colIndex
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setFloat
(
int
col
,
float
value
)
{
data
.
set
(
col
,
value
);
}
public
float
getFloat
(
int
col
,
int
srcType
)
{
Object
obj
=
data
.
get
(
col
);
public
float
getFloat
(
int
col
,
int
nativeType
)
{
Object
obj
=
data
.
get
(
col
-
1
);
if
(
obj
==
null
)
return
NullType
.
getFloatNull
();
switch
(
src
Type
)
{
switch
(
native
Type
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
:
return
Boolean
.
TRUE
.
equals
(
obj
)
?
1
:
0
;
case
TSDBConstants
.
TSDB_DATA_TYPE_FLOAT
:
...
...
@@ -214,19 +283,31 @@ public class TSDBResultSetRowData {
case
TSDBConstants
.
TSDB_DATA_TYPE_TIMESTAMP
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BIGINT
:
return
(
Long
)
obj
;
default
:
return
NullType
.
getFloatNull
();
}
}
return
0
;
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setDoubleValue
(
int
colIndex
,
double
value
)
{
setDouble
(
colIndex
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setDouble
(
int
col
,
double
value
)
{
data
.
set
(
col
,
value
);
}
public
double
getDouble
(
int
col
,
int
srcType
)
{
Object
obj
=
data
.
get
(
col
);
public
double
getDouble
(
int
col
,
int
nativeType
)
{
Object
obj
=
data
.
get
(
col
-
1
);
if
(
obj
==
null
)
return
NullType
.
getDoubleNull
();
switch
(
src
Type
)
{
switch
(
native
Type
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BOOL
:
return
Boolean
.
TRUE
.
equals
(
obj
)
?
1
:
0
;
case
TSDBConstants
.
TSDB_DATA_TYPE_FLOAT
:
...
...
@@ -242,16 +323,46 @@ public class TSDBResultSetRowData {
case
TSDBConstants
.
TSDB_DATA_TYPE_TIMESTAMP
:
case
TSDBConstants
.
TSDB_DATA_TYPE_BIGINT
:
return
(
Long
)
obj
;
default
:
return
NullType
.
getDoubleNull
();
}
}
return
0
;
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setStringValue
(
int
colIndex
,
String
value
)
{
data
.
set
(
colIndex
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setString
(
int
col
,
String
value
)
{
data
.
set
(
col
,
value
);
// TODO:
// !!!NOTE!!!
// this is very confusing problem which related to JNI-method implementation,
// the JNI method return a String(encoded in UTF) for BINARY value, which means the JNI method will invoke
// this setString(int, String) to handle BINARY value, we need to build a byte[] with default charsetEncoding
data
.
set
(
col
,
value
==
null
?
null
:
value
.
getBytes
());
}
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setByteArrayValue
(
int
colIndex
,
byte
[]
value
)
{
setByteArray
(
colIndex
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setByteArray
(
int
col
,
byte
[]
value
)
{
// TODO:
// !!!NOTE!!!
// this is very confusing problem which related to JNI-method implementation,
// the JNI method return a byte[] for NCHAR value, which means the JNI method will invoke
// this setByteArr(int, byte[]) to handle NCHAR value, we need to build a String with charsetEncoding by TaosGlobalConfig
try
{
data
.
set
(
col
,
new
String
(
value
,
TaosGlobalConfig
.
getCharset
()));
}
catch
(
Exception
e
)
{
...
...
@@ -259,47 +370,56 @@ public class TSDBResultSetRowData {
}
}
/**
* The original type may not be a string type, but will be converted to by calling this method
*
* @param col column index
* @return
*/
public
String
getString
(
int
col
,
int
srcType
)
{
switch
(
srcType
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
return
(
String
)
data
.
get
(
col
);
public
String
getString
(
int
col
,
int
nativeType
)
{
Object
obj
=
data
.
get
(
col
-
1
);
if
(
obj
==
null
)
return
null
;
switch
(
nativeType
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_UTINYINT
:
{
Byte
value
=
new
Byte
(
String
.
valueOf
(
data
.
get
(
col
)
));
Byte
value
=
new
Byte
(
String
.
valueOf
(
obj
));
if
(
value
>=
0
)
return
value
.
toString
();
return
Integer
.
toString
(
value
&
0xff
);
}
case
TSDBConstants
.
TSDB_DATA_TYPE_USMALLINT
:
{
Short
value
=
new
Short
(
String
.
valueOf
(
data
.
get
(
col
)
));
Short
value
=
new
Short
(
String
.
valueOf
(
obj
));
if
(
value
>=
0
)
return
value
.
toString
();
return
Integer
.
toString
(
value
&
0xffff
);
}
case
TSDBConstants
.
TSDB_DATA_TYPE_UINT
:
{
Integer
value
=
new
Integer
(
String
.
valueOf
(
data
.
get
(
col
)
));
Integer
value
=
new
Integer
(
String
.
valueOf
(
obj
));
if
(
value
>=
0
)
return
value
.
toString
();
return
Long
.
toString
(
value
&
0xffffffff
l
);
}
case
TSDBConstants
.
TSDB_DATA_TYPE_UBIGINT
:
{
Long
value
=
new
Long
(
String
.
valueOf
(
data
.
get
(
col
)
));
Long
value
=
new
Long
(
String
.
valueOf
(
obj
));
if
(
value
>=
0
)
return
value
.
toString
();
long
lowValue
=
value
&
0x7fffffffffffffff
L
;
return
BigDecimal
.
valueOf
(
lowValue
).
add
(
BigDecimal
.
valueOf
(
Long
.
MAX_VALUE
)).
add
(
BigDecimal
.
valueOf
(
1
)).
toString
();
}
case
TSDBConstants
.
TSDB_DATA_TYPE_BINARY
:
return
new
String
((
byte
[])
obj
);
case
TSDBConstants
.
TSDB_DATA_TYPE_NCHAR
:
return
(
String
)
obj
;
default
:
return
String
.
valueOf
(
data
.
get
(
col
)
);
return
String
.
valueOf
(
obj
);
}
}
/**
* $$$ this method is invoked by databaseMetaDataResultSet and so on which use a index start from 1 in JDBC api
*/
public
void
setTimestampValue
(
int
colIndex
,
long
value
)
{
setTimestamp
(
colIndex
-
1
,
value
);
}
/**
* !!! this method is invoked by JNI method and the index start from 0 in C implementations
*/
public
void
setTimestamp
(
int
col
,
long
ts
)
{
//TODO: this implementation contains logical error
// when precision is us the (long ts) is 16 digital number
...
...
@@ -316,28 +436,20 @@ public class TSDBResultSetRowData {
}
}
public
Timestamp
getTimestamp
(
int
col
)
{
return
(
Timestamp
)
data
.
get
(
col
);
}
public
Object
get
(
int
col
)
{
return
data
.
get
(
col
);
}
public
int
getColSize
()
{
return
colSize
;
}
private
void
setColSize
(
int
colSize
)
{
this
.
colSize
=
colSize
;
this
.
clear
();
public
Timestamp
getTimestamp
(
int
col
,
int
nativeType
)
{
Object
obj
=
data
.
get
(
col
-
1
);
if
(
obj
==
null
)
return
null
;
switch
(
nativeType
)
{
case
TSDBConstants
.
TSDB_DATA_TYPE_BIGINT
:
return
new
Timestamp
((
Long
)
obj
);
default
:
return
(
Timestamp
)
obj
;
}
}
public
ArrayList
<
Object
>
getData
(
)
{
return
data
;
public
Object
getObject
(
int
col
)
{
return
data
.
get
(
col
-
1
)
;
}
public
void
setData
(
ArrayList
<
Object
>
data
)
{
this
.
data
=
(
ArrayList
<
Object
>)
data
.
clone
();
}
}
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBStatement.java
浏览文件 @
72ca4518
...
...
@@ -32,14 +32,15 @@ public class TSDBStatement extends AbstractStatement {
}
public
ResultSet
executeQuery
(
String
sql
)
throws
SQLException
{
// check if closed
if
(
isClosed
())
{
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_STATEMENT_CLOSED
);
}
//TODO: 如果在executeQuery方法中执行insert语句,那么先执行了SQL,再通过pSql来检查是否为一个insert语句,但这个insert SQL已经执行成功了
// execute query
//TODO:
// this is an unreasonable implementation, if the paratemer is a insert statement,
// the JNI connector will execute the sql at first and return a pointer: pSql,
// we use this pSql and invoke the isUpdateQuery(long pSql) method to decide .
// but the insert sql is already executed in database.
//execute query
long
pSql
=
this
.
connection
.
getConnector
().
executeQuery
(
sql
);
// if pSql is create/insert/update/delete/alter SQL
if
(
this
.
connection
.
getConnector
().
isUpdateQuery
(
pSql
))
{
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/Utils.java
浏览文件 @
72ca4518
...
...
@@ -95,16 +95,7 @@ public class Utils {
public
static
String
getNativeSql
(
String
rawSql
,
Object
[]
parameters
)
{
// toLowerCase
String
preparedSql
=
rawSql
.
trim
().
toLowerCase
();
String
[]
clause
=
new
String
[
0
];
if
(
SqlSyntaxValidator
.
isInsertSql
(
preparedSql
))
{
// insert or import
clause
=
new
String
[]{
"values\\s*\\(.*?\\)"
,
"tags\\s*\\(.*?\\)"
};
}
if
(
SqlSyntaxValidator
.
isSelectSql
(
preparedSql
))
{
// select
clause
=
new
String
[]{
"where\\s*.*"
};
}
String
[]
clause
=
new
String
[]{
"values\\s*\\(.*?\\)"
,
"tags\\s*\\(.*?\\)"
,
"where\\s*.*"
};
Map
<
Integer
,
Integer
>
placeholderPositions
=
new
HashMap
<>();
RangeSet
<
Integer
>
clauseRangeSet
=
TreeRangeSet
.
create
();
findPlaceholderPosition
(
preparedSql
,
placeholderPositions
);
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBConnectionTest.java
浏览文件 @
72ca4518
...
...
@@ -32,20 +32,34 @@ public class TSDBConnectionTest {
}
@Test
public
void
s
ubscribe
()
{
public
void
runS
ubscribe
()
{
try
{
// given
TSDBConnection
unwrap
=
conn
.
unwrap
(
TSDBConnection
.
class
);
TSDBSubscribe
subscribe
=
unwrap
.
subscribe
(
"topic1"
,
"select * from log.log"
,
false
);
// when
TSDBResultSet
rs
=
subscribe
.
consume
();
ResultSetMetaData
metaData
=
rs
.
getMetaData
();
for
(
int
count
=
0
;
count
<
10
&&
rs
.
next
();
count
++)
{
for
(
int
i
=
1
;
i
<=
metaData
.
getColumnCount
();
i
++)
{
String
value
=
rs
.
getString
(
i
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
i
)
+
":"
+
value
+
"\t"
);
}
System
.
out
.
println
();
}
// then
Assert
.
assertNotNull
(
rs
);
Assert
.
assertEquals
(
4
,
metaData
.
getColumnCount
());
Assert
.
assertEquals
(
"ts"
,
metaData
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"level"
,
metaData
.
getColumnLabel
(
2
));
Assert
.
assertEquals
(
"content"
,
metaData
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"ipaddr"
,
metaData
.
getColumnLabel
(
4
));
rs
.
next
();
// row 1
{
Assert
.
assertNotNull
(
rs
.
getTimestamp
(
1
));
Assert
.
assertNotNull
(
rs
.
getTimestamp
(
"ts"
));
Assert
.
assertNotNull
(
rs
.
getByte
(
2
));
Assert
.
assertNotNull
(
rs
.
getByte
(
"level"
));
Assert
.
assertNotNull
(
rs
.
getString
(
3
));
Assert
.
assertNotNull
(
rs
.
getString
(
"content"
));
Assert
.
assertNotNull
(
rs
.
getString
(
4
));
Assert
.
assertNotNull
(
rs
.
getString
(
"ipaddr"
));
}
subscribe
.
close
(
false
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBDatabaseMetaDataTest.java
浏览文件 @
72ca4518
...
...
@@ -7,9 +7,11 @@ import java.util.Properties;
public
class
TSDBDatabaseMetaDataTest
{
private
static
final
String
host
=
"127.0.0.1"
;
private
static
final
String
url
=
"jdbc:TAOS://"
+
host
+
":6030/?user=root&password=taosdata"
;
private
static
Connection
connection
;
private
static
TSDBDatabaseMetaData
metaData
;
@Test
public
void
unwrap
()
throws
SQLException
{
TSDBDatabaseMetaData
unwrap
=
metaData
.
unwrap
(
TSDBDatabaseMetaData
.
class
);
...
...
@@ -33,7 +35,7 @@ public class TSDBDatabaseMetaDataTest {
@Test
public
void
getURL
()
throws
SQLException
{
Assert
.
assertEquals
(
"jdbc:TAOS://"
+
host
+
":6030/?user=root&password=taosdata"
,
metaData
.
getURL
());
Assert
.
assertEquals
(
url
,
metaData
.
getURL
());
}
@Test
...
...
@@ -627,17 +629,32 @@ public class TSDBDatabaseMetaDataTest {
@Test
public
void
getTables
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
tables
=
metaData
.
getTables
(
"log"
,
""
,
null
,
null
);
ResultSetMetaData
metaData
=
tables
.
getMetaData
();
while
(
tables
.
next
())
{
System
.
out
.
print
(
metaData
.
getColumnLabel
(
1
)
+
":"
+
tables
.
getString
(
1
)
+
"\t"
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
3
)
+
":"
+
tables
.
getString
(
3
)
+
"\t"
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
4
)
+
":"
+
tables
.
getString
(
4
)
+
"\t"
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
5
)
+
":"
+
tables
.
getString
(
5
)
+
"\n"
);
ResultSet
rs
=
metaData
.
getTables
(
"log"
,
""
,
null
,
null
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
Assert
.
assertNotNull
(
rs
);
rs
.
next
();
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
"TABLE_CAT"
));
// TABLE_SCHEM
Assert
.
assertEquals
(
"TABLE_SCHEM"
,
meta
.
getColumnLabel
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
"TABLE_SCHEM"
));
// TABLE_NAME
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertNotNull
(
rs
.
getString
(
3
));
Assert
.
assertNotNull
(
rs
.
getString
(
"TABLE_NAME"
));
// TABLE_TYPE
Assert
.
assertEquals
(
"TABLE_TYPE"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"TABLE"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"TABLE"
,
rs
.
getString
(
"TABLE_TYPE"
));
// REMARKS
Assert
.
assertEquals
(
"REMARKS"
,
meta
.
getColumnLabel
(
5
));
Assert
.
assertEquals
(
""
,
rs
.
getString
(
5
));
Assert
.
assertEquals
(
""
,
rs
.
getString
(
"REMARKS"
));
}
System
.
out
.
println
();
Assert
.
assertNotNull
(
tables
);
}
@Test
...
...
@@ -647,46 +664,130 @@ public class TSDBDatabaseMetaDataTest {
@Test
public
void
getCatalogs
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
catalogs
=
metaData
.
getCatalogs
();
ResultSetMetaData
meta
=
catalogs
.
getMetaData
();
while
(
catalogs
.
next
())
{
for
(
int
i
=
1
;
i
<=
meta
.
getColumnCount
();
i
++)
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
i
)
+
": "
+
catalogs
.
getString
(
i
));
}
System
.
out
.
println
();
ResultSet
rs
=
metaData
.
getCatalogs
();
ResultSetMetaData
meta
=
rs
.
getMetaData
();
rs
.
next
();
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertNotNull
(
rs
.
getString
(
1
));
Assert
.
assertNotNull
(
rs
.
getString
(
"TABLE_CAT"
));
}
}
@Test
public
void
getTableTypes
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
tableTypes
=
metaData
.
getTableTypes
();
while
(
tableTypes
.
next
())
{
System
.
out
.
println
(
tableTypes
.
getString
(
"TABLE_TYPE"
));
tableTypes
.
next
();
// tableTypes: table
{
Assert
.
assertEquals
(
"TABLE"
,
tableTypes
.
getString
(
1
));
Assert
.
assertEquals
(
"TABLE"
,
tableTypes
.
getString
(
"TABLE_TYPE"
));
}
tableTypes
.
next
();
// tableTypes: stable
{
Assert
.
assertEquals
(
"STABLE"
,
tableTypes
.
getString
(
1
));
Assert
.
assertEquals
(
"STABLE"
,
tableTypes
.
getString
(
"TABLE_TYPE"
));
}
Assert
.
assertNotNull
(
metaData
.
getTableTypes
());
}
@Test
public
void
getColumns
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
// when
ResultSet
columns
=
metaData
.
getColumns
(
"log"
,
""
,
"dn"
,
""
);
// then
ResultSetMetaData
meta
=
columns
.
getMetaData
();
while
(
columns
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
columns
.
getString
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
columns
.
getString
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
columns
.
getString
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
columns
.
getString
(
5
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
6
)
+
": "
+
columns
.
getString
(
6
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
7
)
+
": "
+
columns
.
getString
(
7
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
9
)
+
": "
+
columns
.
getString
(
9
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
10
)
+
": "
+
columns
.
getString
(
10
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
11
)
+
": "
+
columns
.
getString
(
11
)
+
"\n"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
12
)
+
": "
+
columns
.
getString
(
12
)
+
"\n"
);
columns
.
next
();
// column: 1
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
columns
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
columns
.
getString
(
"TABLE_CAT"
));
// TABLE_NAME
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"dn"
,
columns
.
getString
(
3
));
Assert
.
assertEquals
(
"dn"
,
columns
.
getString
(
"TABLE_NAME"
));
// COLUMN_NAME
Assert
.
assertEquals
(
"COLUMN_NAME"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"ts"
,
columns
.
getString
(
4
));
Assert
.
assertEquals
(
"ts"
,
columns
.
getString
(
"COLUMN_NAME"
));
// DATA_TYPE
Assert
.
assertEquals
(
"DATA_TYPE"
,
meta
.
getColumnLabel
(
5
));
Assert
.
assertEquals
(
Types
.
TIMESTAMP
,
columns
.
getInt
(
5
));
Assert
.
assertEquals
(
Types
.
TIMESTAMP
,
columns
.
getInt
(
"DATA_TYPE"
));
// TYPE_NAME
Assert
.
assertEquals
(
"TYPE_NAME"
,
meta
.
getColumnLabel
(
6
));
Assert
.
assertEquals
(
"TIMESTAMP"
,
columns
.
getString
(
6
));
Assert
.
assertEquals
(
"TIMESTAMP"
,
columns
.
getString
(
"TYPE_NAME"
));
// COLUMN_SIZE
Assert
.
assertEquals
(
"COLUMN_SIZE"
,
meta
.
getColumnLabel
(
7
));
Assert
.
assertEquals
(
26
,
columns
.
getInt
(
7
));
Assert
.
assertEquals
(
26
,
columns
.
getInt
(
"COLUMN_SIZE"
));
// DECIMAL_DIGITS
Assert
.
assertEquals
(
"DECIMAL_DIGITS"
,
meta
.
getColumnLabel
(
9
));
Assert
.
assertEquals
(
Integer
.
MIN_VALUE
,
columns
.
getInt
(
9
));
Assert
.
assertEquals
(
Integer
.
MIN_VALUE
,
columns
.
getInt
(
"DECIMAL_DIGITS"
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
9
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
"DECIMAL_DIGITS"
));
// NUM_PREC_RADIX
Assert
.
assertEquals
(
"NUM_PREC_RADIX"
,
meta
.
getColumnLabel
(
10
));
Assert
.
assertEquals
(
10
,
columns
.
getInt
(
10
));
Assert
.
assertEquals
(
10
,
columns
.
getInt
(
"NUM_PREC_RADIX"
));
// NULLABLE
Assert
.
assertEquals
(
"NULLABLE"
,
meta
.
getColumnLabel
(
11
));
Assert
.
assertEquals
(
DatabaseMetaData
.
columnNoNulls
,
columns
.
getInt
(
11
));
Assert
.
assertEquals
(
DatabaseMetaData
.
columnNoNulls
,
columns
.
getInt
(
"NULLABLE"
));
// REMARKS
Assert
.
assertEquals
(
"REMARKS"
,
meta
.
getColumnLabel
(
12
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
12
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
"REMARKS"
));
}
columns
.
next
();
// column: 2
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
columns
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
columns
.
getString
(
"TABLE_CAT"
));
// TABLE_NAME
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"dn"
,
columns
.
getString
(
3
));
Assert
.
assertEquals
(
"dn"
,
columns
.
getString
(
"TABLE_NAME"
));
// COLUMN_NAME
Assert
.
assertEquals
(
"COLUMN_NAME"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"cpu_taosd"
,
columns
.
getString
(
4
));
Assert
.
assertEquals
(
"cpu_taosd"
,
columns
.
getString
(
"COLUMN_NAME"
));
// DATA_TYPE
Assert
.
assertEquals
(
"DATA_TYPE"
,
meta
.
getColumnLabel
(
5
));
Assert
.
assertEquals
(
Types
.
FLOAT
,
columns
.
getInt
(
5
));
Assert
.
assertEquals
(
Types
.
FLOAT
,
columns
.
getInt
(
"DATA_TYPE"
));
// TYPE_NAME
Assert
.
assertEquals
(
"TYPE_NAME"
,
meta
.
getColumnLabel
(
6
));
Assert
.
assertEquals
(
"FLOAT"
,
columns
.
getString
(
6
));
Assert
.
assertEquals
(
"FLOAT"
,
columns
.
getString
(
"TYPE_NAME"
));
// COLUMN_SIZE
Assert
.
assertEquals
(
"COLUMN_SIZE"
,
meta
.
getColumnLabel
(
7
));
Assert
.
assertEquals
(
12
,
columns
.
getInt
(
7
));
Assert
.
assertEquals
(
12
,
columns
.
getInt
(
"COLUMN_SIZE"
));
// DECIMAL_DIGITS
Assert
.
assertEquals
(
"DECIMAL_DIGITS"
,
meta
.
getColumnLabel
(
9
));
Assert
.
assertEquals
(
Integer
.
MIN_VALUE
,
columns
.
getInt
(
9
));
Assert
.
assertEquals
(
Integer
.
MIN_VALUE
,
columns
.
getInt
(
"DECIMAL_DIGITS"
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
9
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
"DECIMAL_DIGITS"
));
// NUM_PREC_RADIX
Assert
.
assertEquals
(
"NUM_PREC_RADIX"
,
meta
.
getColumnLabel
(
10
));
Assert
.
assertEquals
(
10
,
columns
.
getInt
(
10
));
Assert
.
assertEquals
(
10
,
columns
.
getInt
(
"NUM_PREC_RADIX"
));
// NULLABLE
Assert
.
assertEquals
(
"NULLABLE"
,
meta
.
getColumnLabel
(
11
));
Assert
.
assertEquals
(
DatabaseMetaData
.
columnNullable
,
columns
.
getInt
(
11
));
Assert
.
assertEquals
(
DatabaseMetaData
.
columnNullable
,
columns
.
getInt
(
"NULLABLE"
));
// REMARKS
Assert
.
assertEquals
(
"REMARKS"
,
meta
.
getColumnLabel
(
12
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
12
));
}
}
...
...
@@ -712,17 +813,35 @@ public class TSDBDatabaseMetaDataTest {
@Test
public
void
getPrimaryKeys
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
rs
=
metaData
.
getPrimaryKeys
(
"log"
,
""
,
"dn1"
);
while
(
rs
.
next
())
{
System
.
out
.
println
(
"TABLE_NAME: "
+
rs
.
getString
(
"TABLE_NAME"
));
System
.
out
.
println
(
"COLUMN_NAME: "
+
rs
.
getString
(
"COLUMN_NAME"
));
System
.
out
.
println
(
"KEY_SEQ: "
+
rs
.
getString
(
"KEY_SEQ"
));
System
.
out
.
println
(
"PK_NAME: "
+
rs
.
getString
(
"PK_NAME"
));
ResultSetMetaData
meta
=
rs
.
getMetaData
();
rs
.
next
();
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
"TABLE_CAT"
));
// TABLE_SCHEM
Assert
.
assertEquals
(
"TABLE_SCHEM"
,
meta
.
getColumnLabel
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
"TABLE_SCHEM"
));
// TABLE_NAME
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"dn1"
,
rs
.
getString
(
3
));
Assert
.
assertEquals
(
"dn1"
,
rs
.
getString
(
"TABLE_NAME"
));
// COLUMN_NAME
Assert
.
assertEquals
(
"COLUMN_NAME"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"ts"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"ts"
,
rs
.
getString
(
"COLUMN_NAME"
));
// KEY_SEQ
Assert
.
assertEquals
(
"KEY_SEQ"
,
meta
.
getColumnLabel
(
5
));
Assert
.
assertEquals
(
1
,
rs
.
getShort
(
5
));
Assert
.
assertEquals
(
1
,
rs
.
getShort
(
"KEY_SEQ"
));
// DATA_TYPE
Assert
.
assertEquals
(
"PK_NAME"
,
meta
.
getColumnLabel
(
6
));
Assert
.
assertEquals
(
"ts"
,
rs
.
getString
(
6
));
Assert
.
assertEquals
(
"ts"
,
rs
.
getString
(
"PK_NAME"
));
}
Assert
.
assertNotNull
(
rs
);
}
@Test
...
...
@@ -847,14 +966,27 @@ public class TSDBDatabaseMetaDataTest {
@Test
public
void
getSuperTables
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
rs
=
metaData
.
getSuperTables
(
"log"
,
""
,
"dn1"
);
while
(
rs
.
next
())
{
System
.
out
.
println
(
"TABLE_NAME: "
+
rs
.
getString
(
"TABLE_NAME"
));
System
.
out
.
println
(
"SUPERTABLE_NAME: "
+
rs
.
getString
(
"SUPERTABLE_NAME"
));
ResultSetMetaData
meta
=
rs
.
getMetaData
();
rs
.
next
();
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
"TABLE_CAT"
));
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_SCHEM"
,
meta
.
getColumnLabel
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
"TABLE_SCHEM"
));
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"dn1"
,
rs
.
getString
(
3
));
Assert
.
assertEquals
(
"dn1"
,
rs
.
getString
(
"TABLE_NAME"
));
// TABLE_CAT
Assert
.
assertEquals
(
"SUPERTABLE_NAME"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"dn"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"dn"
,
rs
.
getString
(
"SUPERTABLE_NAME"
));
}
Assert
.
assertNotNull
(
rs
);
}
@Test
...
...
@@ -951,15 +1083,12 @@ public class TSDBDatabaseMetaDataTest {
@BeforeClass
public
static
void
beforeClass
()
{
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
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"
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":6030/?user=root&password=taosdata"
,
properties
);
connection
=
DriverManager
.
getConnection
(
url
,
properties
);
metaData
=
connection
.
getMetaData
().
unwrap
(
TSDBDatabaseMetaData
.
class
);
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBJNIConnectorTest.java
浏览文件 @
72ca4518
...
...
@@ -45,9 +45,9 @@ public class TSDBJNIConnectorTest {
rowData
=
new
TSDBResultSetRowData
(
columnSize
);
// iterate resultSet
for
(
int
i
=
0
;
next
(
connector
,
pSql
);
i
++)
{
System
.
out
.
println
(
"col["
+
i
+
"] size: "
+
rowData
.
getColSize
());
rowData
.
getData
().
stream
().
forEach
(
col
->
System
.
out
.
print
(
col
+
"\t"
));
System
.
out
.
println
();
//
System.out.println("col[" + i + "] size: " + rowData.getColSize());
//
rowData.getData().stream().forEach(col -> System.out.print(col + "\t"));
//
System.out.println();
}
// close resultSet
code
=
connector
.
freeResultSet
(
pSql
);
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBParameterMetaDataTest.java
浏览文件 @
72ca4518
...
...
@@ -54,16 +54,17 @@ public class TSDBParameterMetaDataTest {
@Test
public
void
getPrecision
()
throws
SQLException
{
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getPrecision
(
1
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getPrecision
(
2
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getPrecision
(
3
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getPrecision
(
4
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getPrecision
(
5
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getPrecision
(
6
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getPrecision
(
7
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getPrecision
(
8
));
Assert
.
assertEquals
(
5
,
parameterMetaData_insert
.
getPrecision
(
9
));
Assert
.
assertEquals
(
5
,
parameterMetaData_insert
.
getPrecision
(
10
));
//create table weather(ts timestamp, f1 int, f2 bigint, f3 float, f4 double, f5 smallint, f6 tinyint, f7 bool, f8 binary(64), f9 nchar(64))
Assert
.
assertEquals
(
TSDBConstants
.
TIMESTAMP_MS_PRECISION
,
parameterMetaData_insert
.
getPrecision
(
1
));
Assert
.
assertEquals
(
TSDBConstants
.
INT_PRECISION
,
parameterMetaData_insert
.
getPrecision
(
2
));
Assert
.
assertEquals
(
TSDBConstants
.
BIGINT_PRECISION
,
parameterMetaData_insert
.
getPrecision
(
3
));
Assert
.
assertEquals
(
TSDBConstants
.
FLOAT_PRECISION
,
parameterMetaData_insert
.
getPrecision
(
4
));
Assert
.
assertEquals
(
TSDBConstants
.
DOUBLE_PRECISION
,
parameterMetaData_insert
.
getPrecision
(
5
));
Assert
.
assertEquals
(
TSDBConstants
.
SMALLINT_PRECISION
,
parameterMetaData_insert
.
getPrecision
(
6
));
Assert
.
assertEquals
(
TSDBConstants
.
TINYINT_PRECISION
,
parameterMetaData_insert
.
getPrecision
(
7
));
Assert
.
assertEquals
(
TSDBConstants
.
BOOLEAN_PRECISION
,
parameterMetaData_insert
.
getPrecision
(
8
));
Assert
.
assertEquals
(
"hello"
.
getBytes
().
length
,
parameterMetaData_insert
.
getPrecision
(
9
));
Assert
.
assertEquals
(
"涛思数据"
.
length
(),
parameterMetaData_insert
.
getPrecision
(
10
));
}
@Test
...
...
@@ -71,8 +72,8 @@ public class TSDBParameterMetaDataTest {
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getScale
(
1
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getScale
(
2
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getScale
(
3
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getScale
(
4
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getScale
(
5
));
Assert
.
assertEquals
(
31
,
parameterMetaData_insert
.
getScale
(
4
));
Assert
.
assertEquals
(
31
,
parameterMetaData_insert
.
getScale
(
5
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getScale
(
6
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getScale
(
7
));
Assert
.
assertEquals
(
0
,
parameterMetaData_insert
.
getScale
(
8
));
...
...
@@ -124,10 +125,16 @@ public class TSDBParameterMetaDataTest {
@Test
public
void
getParameterMode
()
throws
SQLException
{
for
(
int
i
=
1
;
i
<=
parameterMetaData_insert
.
getParameterCount
();
i
++)
{
int
parameterMode
=
parameterMetaData_insert
.
getParameterMode
(
i
);
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMode
);
}
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
1
));
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
2
));
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
3
));
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
4
));
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
5
));
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
6
));
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
7
));
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
8
));
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
9
));
Assert
.
assertEquals
(
ParameterMetaData
.
parameterModeUnknown
,
parameterMetaData_insert
.
getParameterMode
(
10
));
}
@Test
...
...
@@ -144,7 +151,6 @@ public class TSDBParameterMetaDataTest {
@BeforeClass
public
static
void
beforeClass
()
{
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
conn
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":6030/?user=root&password=taosdata"
);
try
(
Statement
stmt
=
conn
.
createStatement
())
{
stmt
.
execute
(
"drop database if exists test_pstmt"
);
...
...
@@ -164,7 +170,7 @@ public class TSDBParameterMetaDataTest {
pstmt_insert
.
setObject
(
7
,
Byte
.
MAX_VALUE
);
pstmt_insert
.
setObject
(
8
,
true
);
pstmt_insert
.
setObject
(
9
,
"hello"
.
getBytes
());
pstmt_insert
.
setObject
(
10
,
"
Hello
"
);
pstmt_insert
.
setObject
(
10
,
"
涛思数据
"
);
parameterMetaData_insert
=
pstmt_insert
.
getParameterMetaData
();
pstmt_select
=
conn
.
prepareStatement
(
sql_select
);
...
...
@@ -173,7 +179,7 @@ public class TSDBParameterMetaDataTest {
pstmt_select
.
setInt
(
3
,
0
);
parameterMetaData_select
=
pstmt_select
.
getParameterMetaData
();
}
catch
(
ClassNotFoundException
|
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBPreparedStatementTest.java
浏览文件 @
72ca4518
此差异已折叠。
点击以展开。
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBResultSetTest.java
浏览文件 @
72ca4518
...
...
@@ -14,6 +14,7 @@ import java.math.BigDecimal;
import
java.sql.*
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Arrays
;
public
class
TSDBResultSetTest
{
...
...
@@ -133,7 +134,7 @@ public class TSDBResultSetTest {
Assert
.
assertEquals
(
3.1415926
,
Double
.
valueOf
(
new
String
(
f5
)),
0.000000f
);
byte
[]
f6
=
rs
.
getBytes
(
"f6"
);
Assert
.
assert
Equals
(
"abc"
,
new
String
(
f6
));
Assert
.
assert
True
(
Arrays
.
equals
(
"abc"
.
getBytes
(),
f6
));
byte
[]
f7
=
rs
.
getBytes
(
"f7"
);
Assert
.
assertEquals
((
short
)
10
,
Shorts
.
fromByteArray
(
f7
));
...
...
@@ -646,7 +647,6 @@ public class TSDBResultSetTest {
@BeforeClass
public
static
void
beforeClass
()
{
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
conn
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":6030/?user=root&password=taosdata"
);
stmt
=
conn
.
createStatement
();
stmt
.
execute
(
"create database if not exists restful_test"
);
...
...
@@ -656,10 +656,9 @@ public class TSDBResultSetTest {
stmt
.
execute
(
"insert into restful_test.weather values('2021-01-01 00:00:00.000', 1, 100, 3.1415, 3.1415926, 'abc', 10, 10, true, '涛思数据')"
);
rs
=
stmt
.
executeQuery
(
"select * from restful_test.weather"
);
rs
.
next
();
}
catch
(
ClassNotFoundException
|
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
@AfterClass
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/TSDBStatementTest.java
浏览文件 @
72ca4518
...
...
@@ -387,15 +387,12 @@ public class TSDBStatementTest {
@BeforeClass
public
static
void
beforeClass
()
{
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
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
(
"jdbc:TAOS://"
+
host
+
":6030/?user=root&password=taosdata"
,
properties
);
stmt
=
conn
.
createStatement
();
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulDatabaseMetaDataTest.java
浏览文件 @
72ca4518
...
...
@@ -10,6 +10,7 @@ import java.sql.*;
import
java.util.Properties
;
public
class
RestfulDatabaseMetaDataTest
{
private
static
final
String
host
=
"127.0.0.1"
;
private
static
final
String
url
=
"jdbc:TAOS-RS://"
+
host
+
":6041/?user=root&password=taosdata"
;
private
static
Connection
connection
;
...
...
@@ -632,17 +633,32 @@ public class RestfulDatabaseMetaDataTest {
@Test
public
void
getTables
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
tables
=
metaData
.
getTables
(
"log"
,
""
,
null
,
null
);
ResultSetMetaData
metaData
=
tables
.
getMetaData
();
while
(
tables
.
next
())
{
System
.
out
.
print
(
metaData
.
getColumnLabel
(
1
)
+
":"
+
tables
.
getString
(
1
)
+
"\t"
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
3
)
+
":"
+
tables
.
getString
(
3
)
+
"\t"
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
4
)
+
":"
+
tables
.
getString
(
4
)
+
"\t"
);
System
.
out
.
print
(
metaData
.
getColumnLabel
(
5
)
+
":"
+
tables
.
getString
(
5
)
+
"\n"
);
ResultSet
rs
=
metaData
.
getTables
(
"log"
,
""
,
null
,
null
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
Assert
.
assertNotNull
(
rs
);
rs
.
next
();
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
"TABLE_CAT"
));
// TABLE_SCHEM
Assert
.
assertEquals
(
"TABLE_SCHEM"
,
meta
.
getColumnLabel
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
"TABLE_SCHEM"
));
// TABLE_NAME
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertNotNull
(
rs
.
getString
(
3
));
Assert
.
assertNotNull
(
rs
.
getString
(
"TABLE_NAME"
));
// TABLE_TYPE
Assert
.
assertEquals
(
"TABLE_TYPE"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"TABLE"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"TABLE"
,
rs
.
getString
(
"TABLE_TYPE"
));
// REMARKS
Assert
.
assertEquals
(
"REMARKS"
,
meta
.
getColumnLabel
(
5
));
Assert
.
assertEquals
(
""
,
rs
.
getString
(
5
));
Assert
.
assertEquals
(
""
,
rs
.
getString
(
"REMARKS"
));
}
System
.
out
.
println
();
Assert
.
assertNotNull
(
tables
);
}
@Test
...
...
@@ -652,46 +668,130 @@ public class RestfulDatabaseMetaDataTest {
@Test
public
void
getCatalogs
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
catalogs
=
metaData
.
getCatalogs
();
ResultSetMetaData
meta
=
catalogs
.
getMetaData
();
while
(
catalogs
.
next
())
{
for
(
int
i
=
1
;
i
<=
meta
.
getColumnCount
();
i
++)
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
i
)
+
": "
+
catalogs
.
getString
(
i
));
}
System
.
out
.
println
();
ResultSet
rs
=
metaData
.
getCatalogs
();
ResultSetMetaData
meta
=
rs
.
getMetaData
();
rs
.
next
();
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertNotNull
(
rs
.
getString
(
1
));
Assert
.
assertNotNull
(
rs
.
getString
(
"TABLE_CAT"
));
}
}
@Test
public
void
getTableTypes
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
tableTypes
=
metaData
.
getTableTypes
();
while
(
tableTypes
.
next
())
{
System
.
out
.
println
(
tableTypes
.
getString
(
"TABLE_TYPE"
));
tableTypes
.
next
();
// tableTypes: table
{
Assert
.
assertEquals
(
"TABLE"
,
tableTypes
.
getString
(
1
));
Assert
.
assertEquals
(
"TABLE"
,
tableTypes
.
getString
(
"TABLE_TYPE"
));
}
tableTypes
.
next
();
// tableTypes: stable
{
Assert
.
assertEquals
(
"STABLE"
,
tableTypes
.
getString
(
1
));
Assert
.
assertEquals
(
"STABLE"
,
tableTypes
.
getString
(
"TABLE_TYPE"
));
}
Assert
.
assertNotNull
(
metaData
.
getTableTypes
());
}
@Test
public
void
getColumns
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
// when
ResultSet
columns
=
metaData
.
getColumns
(
"log"
,
""
,
"dn"
,
""
);
// then
ResultSetMetaData
meta
=
columns
.
getMetaData
();
while
(
columns
.
next
())
{
System
.
out
.
print
(
meta
.
getColumnLabel
(
1
)
+
": "
+
columns
.
getString
(
1
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
3
)
+
": "
+
columns
.
getString
(
3
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
4
)
+
": "
+
columns
.
getString
(
4
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
5
)
+
": "
+
columns
.
getString
(
5
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
6
)
+
": "
+
columns
.
getString
(
6
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
7
)
+
": "
+
columns
.
getString
(
7
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
9
)
+
": "
+
columns
.
getString
(
9
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
10
)
+
": "
+
columns
.
getString
(
10
)
+
"\t"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
11
)
+
": "
+
columns
.
getString
(
11
)
+
"\n"
);
System
.
out
.
print
(
meta
.
getColumnLabel
(
12
)
+
": "
+
columns
.
getString
(
12
)
+
"\n"
);
columns
.
next
();
// column: 1
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
columns
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
columns
.
getString
(
"TABLE_CAT"
));
// TABLE_NAME
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"dn"
,
columns
.
getString
(
3
));
Assert
.
assertEquals
(
"dn"
,
columns
.
getString
(
"TABLE_NAME"
));
// COLUMN_NAME
Assert
.
assertEquals
(
"COLUMN_NAME"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"ts"
,
columns
.
getString
(
4
));
Assert
.
assertEquals
(
"ts"
,
columns
.
getString
(
"COLUMN_NAME"
));
// DATA_TYPE
Assert
.
assertEquals
(
"DATA_TYPE"
,
meta
.
getColumnLabel
(
5
));
Assert
.
assertEquals
(
Types
.
TIMESTAMP
,
columns
.
getInt
(
5
));
Assert
.
assertEquals
(
Types
.
TIMESTAMP
,
columns
.
getInt
(
"DATA_TYPE"
));
// TYPE_NAME
Assert
.
assertEquals
(
"TYPE_NAME"
,
meta
.
getColumnLabel
(
6
));
Assert
.
assertEquals
(
"TIMESTAMP"
,
columns
.
getString
(
6
));
Assert
.
assertEquals
(
"TIMESTAMP"
,
columns
.
getString
(
"TYPE_NAME"
));
// COLUMN_SIZE
Assert
.
assertEquals
(
"COLUMN_SIZE"
,
meta
.
getColumnLabel
(
7
));
Assert
.
assertEquals
(
26
,
columns
.
getInt
(
7
));
Assert
.
assertEquals
(
26
,
columns
.
getInt
(
"COLUMN_SIZE"
));
// DECIMAL_DIGITS
Assert
.
assertEquals
(
"DECIMAL_DIGITS"
,
meta
.
getColumnLabel
(
9
));
Assert
.
assertEquals
(
Integer
.
MIN_VALUE
,
columns
.
getInt
(
9
));
Assert
.
assertEquals
(
Integer
.
MIN_VALUE
,
columns
.
getInt
(
"DECIMAL_DIGITS"
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
9
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
"DECIMAL_DIGITS"
));
// NUM_PREC_RADIX
Assert
.
assertEquals
(
"NUM_PREC_RADIX"
,
meta
.
getColumnLabel
(
10
));
Assert
.
assertEquals
(
10
,
columns
.
getInt
(
10
));
Assert
.
assertEquals
(
10
,
columns
.
getInt
(
"NUM_PREC_RADIX"
));
// NULLABLE
Assert
.
assertEquals
(
"NULLABLE"
,
meta
.
getColumnLabel
(
11
));
Assert
.
assertEquals
(
DatabaseMetaData
.
columnNoNulls
,
columns
.
getInt
(
11
));
Assert
.
assertEquals
(
DatabaseMetaData
.
columnNoNulls
,
columns
.
getInt
(
"NULLABLE"
));
// REMARKS
Assert
.
assertEquals
(
"REMARKS"
,
meta
.
getColumnLabel
(
12
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
12
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
"REMARKS"
));
}
columns
.
next
();
// column: 2
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
columns
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
columns
.
getString
(
"TABLE_CAT"
));
// TABLE_NAME
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"dn"
,
columns
.
getString
(
3
));
Assert
.
assertEquals
(
"dn"
,
columns
.
getString
(
"TABLE_NAME"
));
// COLUMN_NAME
Assert
.
assertEquals
(
"COLUMN_NAME"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"cpu_taosd"
,
columns
.
getString
(
4
));
Assert
.
assertEquals
(
"cpu_taosd"
,
columns
.
getString
(
"COLUMN_NAME"
));
// DATA_TYPE
Assert
.
assertEquals
(
"DATA_TYPE"
,
meta
.
getColumnLabel
(
5
));
Assert
.
assertEquals
(
Types
.
FLOAT
,
columns
.
getInt
(
5
));
Assert
.
assertEquals
(
Types
.
FLOAT
,
columns
.
getInt
(
"DATA_TYPE"
));
// TYPE_NAME
Assert
.
assertEquals
(
"TYPE_NAME"
,
meta
.
getColumnLabel
(
6
));
Assert
.
assertEquals
(
"FLOAT"
,
columns
.
getString
(
6
));
Assert
.
assertEquals
(
"FLOAT"
,
columns
.
getString
(
"TYPE_NAME"
));
// COLUMN_SIZE
Assert
.
assertEquals
(
"COLUMN_SIZE"
,
meta
.
getColumnLabel
(
7
));
Assert
.
assertEquals
(
12
,
columns
.
getInt
(
7
));
Assert
.
assertEquals
(
12
,
columns
.
getInt
(
"COLUMN_SIZE"
));
// DECIMAL_DIGITS
Assert
.
assertEquals
(
"DECIMAL_DIGITS"
,
meta
.
getColumnLabel
(
9
));
Assert
.
assertEquals
(
Integer
.
MIN_VALUE
,
columns
.
getInt
(
9
));
Assert
.
assertEquals
(
Integer
.
MIN_VALUE
,
columns
.
getInt
(
"DECIMAL_DIGITS"
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
9
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
"DECIMAL_DIGITS"
));
// NUM_PREC_RADIX
Assert
.
assertEquals
(
"NUM_PREC_RADIX"
,
meta
.
getColumnLabel
(
10
));
Assert
.
assertEquals
(
10
,
columns
.
getInt
(
10
));
Assert
.
assertEquals
(
10
,
columns
.
getInt
(
"NUM_PREC_RADIX"
));
// NULLABLE
Assert
.
assertEquals
(
"NULLABLE"
,
meta
.
getColumnLabel
(
11
));
Assert
.
assertEquals
(
DatabaseMetaData
.
columnNullable
,
columns
.
getInt
(
11
));
Assert
.
assertEquals
(
DatabaseMetaData
.
columnNullable
,
columns
.
getInt
(
"NULLABLE"
));
// REMARKS
Assert
.
assertEquals
(
"REMARKS"
,
meta
.
getColumnLabel
(
12
));
Assert
.
assertEquals
(
null
,
columns
.
getString
(
12
));
}
}
...
...
@@ -717,17 +817,35 @@ public class RestfulDatabaseMetaDataTest {
@Test
public
void
getPrimaryKeys
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
rs
=
metaData
.
getPrimaryKeys
(
"log"
,
""
,
"dn1"
);
while
(
rs
.
next
())
{
System
.
out
.
println
(
"TABLE_NAME: "
+
rs
.
getString
(
"TABLE_NAME"
));
System
.
out
.
println
(
"COLUMN_NAME: "
+
rs
.
getString
(
"COLUMN_NAME"
));
System
.
out
.
println
(
"KEY_SEQ: "
+
rs
.
getString
(
"KEY_SEQ"
));
System
.
out
.
println
(
"PK_NAME: "
+
rs
.
getString
(
"PK_NAME"
));
ResultSetMetaData
meta
=
rs
.
getMetaData
();
rs
.
next
();
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
"TABLE_CAT"
));
// TABLE_SCHEM
Assert
.
assertEquals
(
"TABLE_SCHEM"
,
meta
.
getColumnLabel
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
"TABLE_SCHEM"
));
// TABLE_NAME
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"dn1"
,
rs
.
getString
(
3
));
Assert
.
assertEquals
(
"dn1"
,
rs
.
getString
(
"TABLE_NAME"
));
// COLUMN_NAME
Assert
.
assertEquals
(
"COLUMN_NAME"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"ts"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"ts"
,
rs
.
getString
(
"COLUMN_NAME"
));
// KEY_SEQ
Assert
.
assertEquals
(
"KEY_SEQ"
,
meta
.
getColumnLabel
(
5
));
Assert
.
assertEquals
(
1
,
rs
.
getShort
(
5
));
Assert
.
assertEquals
(
1
,
rs
.
getShort
(
"KEY_SEQ"
));
// DATA_TYPE
Assert
.
assertEquals
(
"PK_NAME"
,
meta
.
getColumnLabel
(
6
));
Assert
.
assertEquals
(
"ts"
,
rs
.
getString
(
6
));
Assert
.
assertEquals
(
"ts"
,
rs
.
getString
(
"PK_NAME"
));
}
Assert
.
assertNotNull
(
rs
);
}
@Test
...
...
@@ -852,14 +970,27 @@ public class RestfulDatabaseMetaDataTest {
@Test
public
void
getSuperTables
()
throws
SQLException
{
System
.
out
.
println
(
"****************************************************"
);
ResultSet
rs
=
metaData
.
getSuperTables
(
"log"
,
""
,
"dn1"
);
while
(
rs
.
next
())
{
System
.
out
.
println
(
"TABLE_NAME: "
+
rs
.
getString
(
"TABLE_NAME"
));
System
.
out
.
println
(
"SUPERTABLE_NAME: "
+
rs
.
getString
(
"SUPERTABLE_NAME"
));
ResultSetMetaData
meta
=
rs
.
getMetaData
();
rs
.
next
();
{
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_CAT"
,
meta
.
getColumnLabel
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
1
));
Assert
.
assertEquals
(
"log"
,
rs
.
getString
(
"TABLE_CAT"
));
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_SCHEM"
,
meta
.
getColumnLabel
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
2
));
Assert
.
assertEquals
(
null
,
rs
.
getString
(
"TABLE_SCHEM"
));
// TABLE_CAT
Assert
.
assertEquals
(
"TABLE_NAME"
,
meta
.
getColumnLabel
(
3
));
Assert
.
assertEquals
(
"dn1"
,
rs
.
getString
(
3
));
Assert
.
assertEquals
(
"dn1"
,
rs
.
getString
(
"TABLE_NAME"
));
// TABLE_CAT
Assert
.
assertEquals
(
"SUPERTABLE_NAME"
,
meta
.
getColumnLabel
(
4
));
Assert
.
assertEquals
(
"dn"
,
rs
.
getString
(
4
));
Assert
.
assertEquals
(
"dn"
,
rs
.
getString
(
"SUPERTABLE_NAME"
));
}
Assert
.
assertNotNull
(
rs
);
}
@Test
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/rs/RestfulParameterMetaDataTest.java
浏览文件 @
72ca4518
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录