Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
3b45973a
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看板
未验证
提交
3b45973a
编写于
12月 20, 2022
作者:
S
Shengliang Guan
提交者:
GitHub
12月 20, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19034 from taosdata/enh/sunpeng/TD-21188-java-connector-supports-vgid
enh: java connector support get table vgid (#18981)
上级
f98a932c
0b727c8e
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
71 addition
and
2 deletion
+71
-2
source/client/jni/com_taosdata_jdbc_TSDBJNIConnector.h
source/client/jni/com_taosdata_jdbc_TSDBJNIConnector.h
+8
-0
source/client/src/clientJniConnector.c
source/client/src/clientJniConnector.c
+63
-2
未找到文件。
source/client/jni/com_taosdata_jdbc_TSDBJNIConnector.h
浏览文件 @
3b45973a
...
...
@@ -260,6 +260,14 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_insertLinesImp(JN
JNIEXPORT
jlong
JNICALL
Java_com_taosdata_jdbc_TSDBJNIConnector_schemalessInsertImp
(
JNIEnv
*
,
jobject
,
jobjectArray
,
jlong
,
jint
,
jint
);
/**
* Class: com_taosdata_jdbc_TSDBJNIConnector
* Method: getTableVgID
* Signature: (Ljava/lang/String;Ljava/lang/String)Lcom/taosdata/jdbc/VGroupIDResp
*/
JNIEXPORT
jobject
JNICALL
Java_com_taosdata_jdbc_TSDBJNIConnector_getTableVgID
(
JNIEnv
*
,
jobject
,
jlong
,
jstring
,
jstring
,
jobject
);
#ifdef __cplusplus
}
#endif
...
...
source/client/src/clientJniConnector.c
浏览文件 @
3b45973a
...
...
@@ -488,7 +488,8 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_fetchRowImp(JNIEn
numOfFields
);
return
JNI_FETCH_END
;
}
else
{
jniDebug
(
"jobj:%p, conn:%p, interrupted query. fetch row error code: %d, msg:%s"
,
jobj
,
tscon
,
code
,
taos_errstr
(
result
));
jniDebug
(
"jobj:%p, conn:%p, interrupted query. fetch row error code: %d, msg:%s"
,
jobj
,
tscon
,
code
,
taos_errstr
(
result
));
return
JNI_RESULT_SET_NULL
;
}
}
...
...
@@ -583,7 +584,8 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_fetchBlockImp(JNI
jniDebug
(
"jobj:%p, conn:%p, resultset:%p, no data to retrieve"
,
jobj
,
tscon
,
(
void
*
)
res
);
return
JNI_FETCH_END
;
}
else
{
jniError
(
"jobj:%p, conn:%p, query interrupted. fetch block error code:%d, msg:%s"
,
jobj
,
tscon
,
error_code
,
taos_errstr
(
tres
));
jniError
(
"jobj:%p, conn:%p, query interrupted. fetch block error code:%d, msg:%s"
,
jobj
,
tscon
,
error_code
,
taos_errstr
(
tres
));
return
JNI_RESULT_SET_NULL
;
}
}
...
...
@@ -1028,3 +1030,62 @@ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_schemalessInsert
}
return
(
jlong
)
tres
;
}
// TABLE_VG_ID_FID_CACHE cache resp object for getTableVgID
typedef
struct
TABLE_VG_ID_FIELD_CACHE
{
int
cached
;
jclass
clazz
;
jfieldID
codeField
;
jfieldID
vgIDField
;
}
TABLE_VG_ID_FIELD_CACHE
;
TABLE_VG_ID_FIELD_CACHE
tableVgIdFieldCache
;
void
cacheTableVgIDField
(
JNIEnv
*
env
,
jobject
jobj
)
{
if
(
tableVgIdFieldCache
.
cached
)
{
return
;
}
tableVgIdFieldCache
.
clazz
=
(
*
env
)
->
GetObjectClass
(
env
,
jobj
);
tableVgIdFieldCache
.
codeField
=
(
*
env
)
->
GetFieldID
(
env
,
tableVgIdFieldCache
.
clazz
,
"code"
,
"I"
);
tableVgIdFieldCache
.
vgIDField
=
(
*
env
)
->
GetFieldID
(
env
,
tableVgIdFieldCache
.
clazz
,
"vgID"
,
"I"
);
tableVgIdFieldCache
.
cached
=
1
;
}
JNIEXPORT
jobject
JNICALL
Java_com_taosdata_jdbc_TSDBJNIConnector_getTableVgID
(
JNIEnv
*
env
,
jobject
jobj
,
jlong
conn
,
jstring
jdb
,
jstring
jtable
,
jobject
resp
)
{
if
(
!
tableVgIdFieldCache
.
cached
)
{
cacheTableVgIDField
(
env
,
resp
);
}
TAOS
*
taos
=
(
TAOS
*
)
conn
;
if
(
taos
==
NULL
)
{
jniError
(
"jobj:%p, connection already closed"
,
jobj
);
(
*
env
)
->
SetIntField
(
env
,
resp
,
tableVgIdFieldCache
.
codeField
,
JNI_CONNECTION_NULL
);
return
resp
;
}
const
char
*
db
=
NULL
;
const
char
*
table
=
NULL
;
int
vgID
=
0
;
if
(
jdb
!=
NULL
)
{
db
=
(
*
env
)
->
GetStringUTFChars
(
env
,
jdb
,
NULL
);
}
if
(
jtable
!=
NULL
)
{
table
=
(
*
env
)
->
GetStringUTFChars
(
env
,
jtable
,
NULL
);
}
int
code
=
taos_get_table_vgId
(
taos
,
db
,
table
,
&
vgID
);
if
(
db
!=
NULL
)
{
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jdb
,
db
);
}
if
(
table
!=
NULL
)
{
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jtable
,
table
);
}
(
*
env
)
->
SetIntField
(
env
,
resp
,
tableVgIdFieldCache
.
codeField
,
code
);
(
*
env
)
->
SetIntField
(
env
,
resp
,
tableVgIdFieldCache
.
vgIDField
,
vgID
);
return
resp
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录