Merge pull request #19034 from taosdata/enh/sunpeng/TD-21188-java-connector-supports-vgid
enh: java connector support get table vgid (#18981)
This commit is contained in:
commit
3b45973ac7
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue