enh: java connector support get table vgid (#18981)
* java connector support get table vgid * add export to com_taosdata_jdbc_TSDBJNIConnector.h
This commit is contained in:
parent
c0d837a5e8
commit
d39268ee8a
|
@ -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,
|
JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_schemalessInsertImp(JNIEnv *, jobject, jobjectArray,
|
||||||
jlong, jint, jint);
|
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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -488,7 +488,8 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_fetchRowImp(JNIEn
|
||||||
numOfFields);
|
numOfFields);
|
||||||
return JNI_FETCH_END;
|
return JNI_FETCH_END;
|
||||||
} else {
|
} 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;
|
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);
|
jniDebug("jobj:%p, conn:%p, resultset:%p, no data to retrieve", jobj, tscon, (void *)res);
|
||||||
return JNI_FETCH_END;
|
return JNI_FETCH_END;
|
||||||
} else {
|
} 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;
|
return JNI_RESULT_SET_NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1028,3 +1030,62 @@ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_schemalessInsert
|
||||||
}
|
}
|
||||||
return (jlong)tres;
|
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