[TD-225] refactor jdbc driver
This commit is contained in:
parent
59c32df42e
commit
4dff524a5b
|
@ -16,10 +16,10 @@ package com.taosdata.jdbc;
|
||||||
|
|
||||||
public class ColumnMetaData {
|
public class ColumnMetaData {
|
||||||
|
|
||||||
int colType = 0;
|
private int colType = 0;
|
||||||
String colName = null;
|
private String colName = null;
|
||||||
int colSize = -1;
|
private int colSize = -1;
|
||||||
int colIndex = 0;
|
private int colIndex = 0;
|
||||||
|
|
||||||
public int getColSize() {
|
public int getColSize() {
|
||||||
return colSize;
|
return colSize;
|
||||||
|
|
|
@ -86,6 +86,11 @@ public class TSDBDriver extends AbstractTaosDriver {
|
||||||
*/
|
*/
|
||||||
public static final String PROPERTY_KEY_CHARSET = "charset";
|
public static final String PROPERTY_KEY_CHARSET = "charset";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fetch data from native function in a batch model
|
||||||
|
*/
|
||||||
|
public static final String PROPERTY_KEY_BATCH_LOAD = "batch";
|
||||||
|
|
||||||
private TSDBDatabaseMetaData dbMetaData = null;
|
private TSDBDatabaseMetaData dbMetaData = null;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
@ -172,26 +177,21 @@ public class TSDBDriver extends AbstractTaosDriver {
|
||||||
url = url.substring(0, index);
|
url = url.substring(0, index);
|
||||||
StringTokenizer queryParams = new StringTokenizer(paramString, "&");
|
StringTokenizer queryParams = new StringTokenizer(paramString, "&");
|
||||||
while (queryParams.hasMoreElements()) {
|
while (queryParams.hasMoreElements()) {
|
||||||
String parameterValuePair = queryParams.nextToken();
|
String oneToken = queryParams.nextToken();
|
||||||
int indexOfEqual = parameterValuePair.indexOf("=");
|
String[] pair = oneToken.split("=");
|
||||||
String parameter = null;
|
|
||||||
String value = null;
|
if ((pair[0] != null && pair[0].trim().length() > 0) && (pair[1] != null && pair[1].trim().length() > 0)) {
|
||||||
if (indexOfEqual != -1) {
|
urlProps.setProperty(pair[0].trim(), pair[1].trim());
|
||||||
parameter = parameterValuePair.substring(0, indexOfEqual);
|
|
||||||
if (indexOfEqual + 1 < parameterValuePair.length()) {
|
|
||||||
value = parameterValuePair.substring(indexOfEqual + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((value != null && value.length() > 0) && (parameter != null && parameter.length() > 0)) {
|
|
||||||
urlProps.setProperty(parameter, value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse Product Name
|
// parse Product Name
|
||||||
String dbProductName = url.substring(0, beginningOfSlashes);
|
String dbProductName = url.substring(0, beginningOfSlashes);
|
||||||
dbProductName = dbProductName.substring(dbProductName.indexOf(":") + 1);
|
dbProductName = dbProductName.substring(dbProductName.indexOf(":") + 1);
|
||||||
dbProductName = dbProductName.substring(0, dbProductName.indexOf(":"));
|
dbProductName = dbProductName.substring(0, dbProductName.indexOf(":"));
|
||||||
// parse dbname
|
|
||||||
|
// parse database name
|
||||||
url = url.substring(beginningOfSlashes + 2);
|
url = url.substring(beginningOfSlashes + 2);
|
||||||
int indexOfSlash = url.indexOf("/");
|
int indexOfSlash = url.indexOf("/");
|
||||||
if (indexOfSlash != -1) {
|
if (indexOfSlash != -1) {
|
||||||
|
@ -200,6 +200,7 @@ public class TSDBDriver extends AbstractTaosDriver {
|
||||||
}
|
}
|
||||||
url = url.substring(0, indexOfSlash);
|
url = url.substring(0, indexOfSlash);
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse port
|
// parse port
|
||||||
int indexOfColon = url.indexOf(":");
|
int indexOfColon = url.indexOf(":");
|
||||||
if (indexOfColon != -1) {
|
if (indexOfColon != -1) {
|
||||||
|
@ -208,9 +209,11 @@ public class TSDBDriver extends AbstractTaosDriver {
|
||||||
}
|
}
|
||||||
url = url.substring(0, indexOfColon);
|
url = url.substring(0, indexOfColon);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (url != null && url.length() > 0 && url.trim().length() > 0) {
|
if (url != null && url.length() > 0 && url.trim().length() > 0) {
|
||||||
urlProps.setProperty(TSDBDriver.PROPERTY_KEY_HOST, url);
|
urlProps.setProperty(TSDBDriver.PROPERTY_KEY_HOST, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.dbMetaData = new TSDBDatabaseMetaData(dbProductName, urlForMeta, urlProps.getProperty(TSDBDriver.PROPERTY_KEY_USER));
|
this.dbMetaData = new TSDBDatabaseMetaData(dbProductName, urlForMeta, urlProps.getProperty(TSDBDriver.PROPERTY_KEY_USER));
|
||||||
return urlProps;
|
return urlProps;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
private TSDBResultSetRowData rowData;
|
private TSDBResultSetRowData rowData;
|
||||||
private TSDBResultSetBlockData blockData;
|
private TSDBResultSetBlockData blockData;
|
||||||
|
|
||||||
private boolean blockwiseFetch = false;
|
private boolean batchFetch = false;
|
||||||
private boolean lastWasNull = false;
|
private boolean lastWasNull = false;
|
||||||
private final int COLUMN_INDEX_START_VALUE = 1;
|
private final int COLUMN_INDEX_START_VALUE = 1;
|
||||||
|
|
||||||
|
@ -71,8 +71,12 @@ public class TSDBResultSet implements ResultSet {
|
||||||
this.resultSetPointer = resultSetPointer;
|
this.resultSetPointer = resultSetPointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBlockWiseFetch(boolean fetchBlock) {
|
public void setBatchFetch(boolean batchFetch) {
|
||||||
this.blockwiseFetch = fetchBlock;
|
this.batchFetch = batchFetch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getBatchFetch() {
|
||||||
|
return this.batchFetch;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ColumnMetaData> getColumnMetaDataList() {
|
public List<ColumnMetaData> getColumnMetaDataList() {
|
||||||
|
@ -102,8 +106,8 @@ public class TSDBResultSet implements ResultSet {
|
||||||
public TSDBResultSet() {
|
public TSDBResultSet() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public TSDBResultSet(TSDBJNIConnector connecter, long resultSetPointer) throws SQLException {
|
public TSDBResultSet(TSDBJNIConnector connector, long resultSetPointer) throws SQLException {
|
||||||
this.jniConnector = connecter;
|
this.jniConnector = connector;
|
||||||
this.resultSetPointer = resultSetPointer;
|
this.resultSetPointer = resultSetPointer;
|
||||||
int code = this.jniConnector.getSchemaMetaData(this.resultSetPointer, this.columnMetaDataList);
|
int code = this.jniConnector.getSchemaMetaData(this.resultSetPointer, this.columnMetaDataList);
|
||||||
if (code == TSDBConstants.JNI_CONNECTION_NULL) {
|
if (code == TSDBConstants.JNI_CONNECTION_NULL) {
|
||||||
|
@ -127,13 +131,13 @@ public class TSDBResultSet implements ResultSet {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean next() throws SQLException {
|
public boolean next() throws SQLException {
|
||||||
if (this.blockwiseFetch) {
|
if (this.getBatchFetch()) {
|
||||||
if (this.blockData.forward()) {
|
if (this.blockData.forward()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int code = this.jniConnector.fetchBlock(this.resultSetPointer, this.blockData);
|
int code = this.jniConnector.fetchBlock(this.resultSetPointer, this.blockData);
|
||||||
this.blockData.resetCursor();
|
this.blockData.reset();
|
||||||
|
|
||||||
if (code == TSDBConstants.JNI_CONNECTION_NULL) {
|
if (code == TSDBConstants.JNI_CONNECTION_NULL) {
|
||||||
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
||||||
|
@ -185,7 +189,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
String res = null;
|
String res = null;
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
if (!lastWasNull) {
|
if (!lastWasNull) {
|
||||||
res = this.rowData.getString(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
res = this.rowData.getString(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
||||||
|
@ -200,7 +204,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
boolean res = false;
|
boolean res = false;
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
if (!lastWasNull) {
|
if (!lastWasNull) {
|
||||||
res = this.rowData.getBoolean(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
res = this.rowData.getBoolean(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
||||||
|
@ -216,7 +220,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
byte res = 0;
|
byte res = 0;
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
if (!lastWasNull) {
|
if (!lastWasNull) {
|
||||||
res = (byte) this.rowData.getInt(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
res = (byte) this.rowData.getInt(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
||||||
|
@ -231,7 +235,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
short res = 0;
|
short res = 0;
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
if (!lastWasNull) {
|
if (!lastWasNull) {
|
||||||
res = (short) this.rowData.getInt(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
res = (short) this.rowData.getInt(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
||||||
|
@ -246,7 +250,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
int res = 0;
|
int res = 0;
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
if (!lastWasNull) {
|
if (!lastWasNull) {
|
||||||
res = this.rowData.getInt(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
res = this.rowData.getInt(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
||||||
|
@ -262,7 +266,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
long res = 0l;
|
long res = 0l;
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
if (!lastWasNull) {
|
if (!lastWasNull) {
|
||||||
res = this.rowData.getLong(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
res = this.rowData.getLong(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
||||||
|
@ -277,7 +281,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
float res = 0;
|
float res = 0;
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
if (!lastWasNull) {
|
if (!lastWasNull) {
|
||||||
res = this.rowData.getFloat(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
res = this.rowData.getFloat(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
||||||
|
@ -292,7 +296,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
double res = 0;
|
double res = 0;
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
if (!lastWasNull) {
|
if (!lastWasNull) {
|
||||||
res = this.rowData.getDouble(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
res = this.rowData.getDouble(colIndex, this.columnMetaDataList.get(colIndex).getColType());
|
||||||
|
@ -334,7 +338,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
Timestamp res = null;
|
Timestamp res = null;
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
if (!lastWasNull) {
|
if (!lastWasNull) {
|
||||||
res = this.rowData.getTimestamp(colIndex);
|
res = this.rowData.getTimestamp(colIndex);
|
||||||
|
@ -454,7 +458,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
public Object getObject(int columnIndex) throws SQLException {
|
public Object getObject(int columnIndex) throws SQLException {
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
return this.rowData.get(colIndex);
|
return this.rowData.get(colIndex);
|
||||||
} else {
|
} else {
|
||||||
|
@ -491,7 +495,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
|
public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
|
||||||
int colIndex = getTrueColumnIndex(columnIndex);
|
int colIndex = getTrueColumnIndex(columnIndex);
|
||||||
|
|
||||||
if (!this.blockwiseFetch) {
|
if (!this.getBatchFetch()) {
|
||||||
this.lastWasNull = this.rowData.wasNull(colIndex);
|
this.lastWasNull = this.rowData.wasNull(colIndex);
|
||||||
return new BigDecimal(this.rowData.getLong(colIndex, this.columnMetaDataList.get(colIndex).getColType()));
|
return new BigDecimal(this.rowData.getLong(colIndex, this.columnMetaDataList.get(colIndex).getColType()));
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -56,13 +56,6 @@ public class TSDBResultSetBlockData {
|
||||||
if (this.numOfCols == 0) {
|
if (this.numOfCols == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.colData = new ArrayList<Object>(numOfCols);
|
|
||||||
this.colData.addAll(Collections.nCopies(this.numOfCols, null));
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean wasNull(int col) {
|
|
||||||
return colData.get(col) == null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getNumOfRows() {
|
public int getNumOfRows() {
|
||||||
|
@ -82,20 +75,19 @@ public class TSDBResultSetBlockData {
|
||||||
this.clear();
|
this.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setColumnData(int col, byte val) {
|
|
||||||
this.colData.set(col, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasMore() {
|
public boolean hasMore() {
|
||||||
return this.rowIndex < this.numOfRows;
|
return this.rowIndex < this.numOfRows;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean forward() {
|
public boolean forward() {
|
||||||
this.rowIndex++;
|
if (this.rowIndex > this.numOfRows) {
|
||||||
return (this.rowIndex < this.numOfRows);
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resetCursor() {
|
return ((++this.rowIndex) < this.numOfRows);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reset() {
|
||||||
this.rowIndex = 0;
|
this.rowIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,10 +164,58 @@ public class TSDBResultSetBlockData {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class NullType {
|
private static class NullType {
|
||||||
|
private static final byte NULL_BOOL_VAL = 0x2;
|
||||||
|
private static final String NULL_STR = "null";
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new String("null");
|
return NullType.NULL_STR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isBooleanNull(byte val) {
|
||||||
|
return val == NullType.NULL_BOOL_VAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isTinyIntNull(byte val) {
|
||||||
|
return val == Byte.MIN_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isSmallIntNull(short val) {
|
||||||
|
return val == Short.MIN_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isIntNull(int val) {
|
||||||
|
return val == Integer.MIN_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isBigIntNull(long val) {
|
||||||
|
return val == Long.MIN_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isFloatNull(float val) {
|
||||||
|
return Float.isNaN(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isDoubleNull(double val) {
|
||||||
|
return Double.isNaN(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isBinaryNull(byte[] val, int length) {
|
||||||
|
if (length != Byte.BYTES) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return val[0] == 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isNcharNull(byte[] val, int length) {
|
||||||
|
if (length != Integer.BYTES) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (val[0] & val[1] & val[2] & val[3]) == 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -195,50 +235,6 @@ public class TSDBResultSetBlockData {
|
||||||
return obj.toString();
|
return obj.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isBooleanNull(byte val) {
|
|
||||||
return val == 0x2;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isTinyIntNull(byte val) {
|
|
||||||
return val == 0x80;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isSmallIntNull(short val) {
|
|
||||||
return val == 0x8000;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isIntNull(int val) {
|
|
||||||
return val == 0x80000000L;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isBigIntNull(long val) {
|
|
||||||
return val == 0x8000000000000000L;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isFloatNull(float val) {
|
|
||||||
return Float.isNaN(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isDoubleNull(double val) {
|
|
||||||
return Double.isNaN(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isBinaryNull(byte[] val, int length) {
|
|
||||||
if (length != 1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return val[0] == 0xFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isNcharNull(byte[] val, int length) {
|
|
||||||
if (length != 4) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (val[0] & val[1] & val[2] & val[3]) == 0xFF ;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getInt(int col) {
|
public int getInt(int col) {
|
||||||
Object obj = get(col);
|
Object obj = get(col);
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
|
@ -284,16 +280,16 @@ public class TSDBResultSetBlockData {
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_TINYINT:
|
case TSDBConstants.TSDB_DATA_TYPE_TINYINT:
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_SMALLINT:
|
case TSDBConstants.TSDB_DATA_TYPE_SMALLINT:
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_INT: {
|
case TSDBConstants.TSDB_DATA_TYPE_INT: {
|
||||||
return ((int) obj == 0L)? Boolean.FALSE:Boolean.TRUE;
|
return ((int) obj == 0L) ? Boolean.FALSE : Boolean.TRUE;
|
||||||
}
|
}
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_BIGINT:
|
case TSDBConstants.TSDB_DATA_TYPE_BIGINT:
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_TIMESTAMP: {
|
case TSDBConstants.TSDB_DATA_TYPE_TIMESTAMP: {
|
||||||
return (((Long) obj) == 0L)? Boolean.FALSE:Boolean.TRUE;
|
return (((Long) obj) == 0L) ? Boolean.FALSE : Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_FLOAT:
|
case TSDBConstants.TSDB_DATA_TYPE_FLOAT:
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_DOUBLE: {
|
case TSDBConstants.TSDB_DATA_TYPE_DOUBLE: {
|
||||||
return (((Double) obj) == 0)? Boolean.FALSE:Boolean.TRUE;
|
return (((Double) obj) == 0) ? Boolean.FALSE : Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_NCHAR:
|
case TSDBConstants.TSDB_DATA_TYPE_NCHAR:
|
||||||
|
@ -395,7 +391,7 @@ public class TSDBResultSetBlockData {
|
||||||
ByteBuffer bb = (ByteBuffer) this.colData.get(col);
|
ByteBuffer bb = (ByteBuffer) this.colData.get(col);
|
||||||
|
|
||||||
byte val = bb.get(this.rowIndex);
|
byte val = bb.get(this.rowIndex);
|
||||||
if (isBooleanNull(val)) {
|
if (NullType.isBooleanNull(val)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -406,7 +402,7 @@ public class TSDBResultSetBlockData {
|
||||||
ByteBuffer bb = (ByteBuffer) this.colData.get(col);
|
ByteBuffer bb = (ByteBuffer) this.colData.get(col);
|
||||||
|
|
||||||
byte val = bb.get(this.rowIndex);
|
byte val = bb.get(this.rowIndex);
|
||||||
if (isTinyIntNull(val)) {
|
if (NullType.isTinyIntNull(val)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,7 +412,7 @@ public class TSDBResultSetBlockData {
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_SMALLINT: {
|
case TSDBConstants.TSDB_DATA_TYPE_SMALLINT: {
|
||||||
ShortBuffer sb = (ShortBuffer) this.colData.get(col);
|
ShortBuffer sb = (ShortBuffer) this.colData.get(col);
|
||||||
short val = sb.get(this.rowIndex);
|
short val = sb.get(this.rowIndex);
|
||||||
if (isSmallIntNull(val)) {
|
if (NullType.isSmallIntNull(val)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,7 +422,7 @@ public class TSDBResultSetBlockData {
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_INT: {
|
case TSDBConstants.TSDB_DATA_TYPE_INT: {
|
||||||
IntBuffer ib = (IntBuffer) this.colData.get(col);
|
IntBuffer ib = (IntBuffer) this.colData.get(col);
|
||||||
int val = ib.get(this.rowIndex);
|
int val = ib.get(this.rowIndex);
|
||||||
if (isIntNull(val)) {
|
if (NullType.isIntNull(val)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -437,7 +433,7 @@ public class TSDBResultSetBlockData {
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_BIGINT: {
|
case TSDBConstants.TSDB_DATA_TYPE_BIGINT: {
|
||||||
LongBuffer lb = (LongBuffer) this.colData.get(col);
|
LongBuffer lb = (LongBuffer) this.colData.get(col);
|
||||||
long val = lb.get(this.rowIndex);
|
long val = lb.get(this.rowIndex);
|
||||||
if (isBigIntNull(val)) {
|
if (NullType.isBigIntNull(val)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -447,7 +443,7 @@ public class TSDBResultSetBlockData {
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_FLOAT: {
|
case TSDBConstants.TSDB_DATA_TYPE_FLOAT: {
|
||||||
FloatBuffer fb = (FloatBuffer) this.colData.get(col);
|
FloatBuffer fb = (FloatBuffer) this.colData.get(col);
|
||||||
float val = fb.get(this.rowIndex);
|
float val = fb.get(this.rowIndex);
|
||||||
if (isFloatNull(val)) {
|
if (NullType.isFloatNull(val)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,7 +453,7 @@ public class TSDBResultSetBlockData {
|
||||||
case TSDBConstants.TSDB_DATA_TYPE_DOUBLE: {
|
case TSDBConstants.TSDB_DATA_TYPE_DOUBLE: {
|
||||||
DoubleBuffer lb = (DoubleBuffer) this.colData.get(col);
|
DoubleBuffer lb = (DoubleBuffer) this.colData.get(col);
|
||||||
double val = lb.get(this.rowIndex);
|
double val = lb.get(this.rowIndex);
|
||||||
if (isDoubleNull(val)) {
|
if (NullType.isDoubleNull(val)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,7 +468,7 @@ public class TSDBResultSetBlockData {
|
||||||
|
|
||||||
byte[] dest = new byte[length];
|
byte[] dest = new byte[length];
|
||||||
bb.get(dest, 0, length);
|
bb.get(dest, 0, length);
|
||||||
if (isBinaryNull(dest, length)) {
|
if (NullType.isBinaryNull(dest, length)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,7 +483,7 @@ public class TSDBResultSetBlockData {
|
||||||
|
|
||||||
byte[] dest = new byte[length];
|
byte[] dest = new byte[length];
|
||||||
bb.get(dest, 0, length);
|
bb.get(dest, 0, length);
|
||||||
if (isNcharNull(dest, length)) {
|
if (NullType.isNcharNull(dest, length)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class TSDBStatement implements Statement {
|
public class TSDBStatement implements Statement {
|
||||||
private TSDBJNIConnector connecter = null;
|
private TSDBJNIConnector connector = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To store batched commands
|
* To store batched commands
|
||||||
|
@ -45,9 +45,9 @@ public class TSDBStatement implements Statement {
|
||||||
this.connection = connection;
|
this.connection = connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
TSDBStatement(TSDBConnection connection, TSDBJNIConnector connecter) {
|
TSDBStatement(TSDBConnection connection, TSDBJNIConnector connector) {
|
||||||
this.connection = connection;
|
this.connection = connection;
|
||||||
this.connecter = connecter;
|
this.connector = connector;
|
||||||
this.isClosed = false;
|
this.isClosed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,27 +65,27 @@ public class TSDBStatement implements Statement {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO make sure it is not a update query
|
// TODO make sure it is not a update query
|
||||||
pSql = this.connecter.executeQuery(sql);
|
pSql = this.connector.executeQuery(sql);
|
||||||
|
|
||||||
long resultSetPointer = this.connecter.getResultSet();
|
long resultSetPointer = this.connector.getResultSet();
|
||||||
|
|
||||||
if (resultSetPointer == TSDBConstants.JNI_CONNECTION_NULL) {
|
if (resultSetPointer == TSDBConstants.JNI_CONNECTION_NULL) {
|
||||||
this.connecter.freeResultSet(pSql);
|
this.connector.freeResultSet(pSql);
|
||||||
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
// create/insert/update/delete/alter
|
// create/insert/update/delete/alter
|
||||||
if (resultSetPointer == TSDBConstants.JNI_NULL_POINTER) {
|
if (resultSetPointer == TSDBConstants.JNI_NULL_POINTER) {
|
||||||
this.connecter.freeResultSet(pSql);
|
this.connector.freeResultSet(pSql);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.connecter.isUpdateQuery(pSql)) {
|
if (!this.connector.isUpdateQuery(pSql)) {
|
||||||
TSDBResultSet res = new TSDBResultSet(this.connecter, resultSetPointer);
|
TSDBResultSet res = new TSDBResultSet(this.connector, resultSetPointer);
|
||||||
res.setBlockWiseFetch(true);
|
res.setBatchFetch(this.connection.getBatchFetch());
|
||||||
return res;
|
return res;
|
||||||
} else {
|
} else {
|
||||||
this.connecter.freeResultSet(pSql);
|
this.connector.freeResultSet(pSql);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,28 +97,28 @@ public class TSDBStatement implements Statement {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO check if current query is update query
|
// TODO check if current query is update query
|
||||||
pSql = this.connecter.executeQuery(sql);
|
pSql = this.connector.executeQuery(sql);
|
||||||
long resultSetPointer = this.connecter.getResultSet();
|
long resultSetPointer = this.connector.getResultSet();
|
||||||
|
|
||||||
if (resultSetPointer == TSDBConstants.JNI_CONNECTION_NULL) {
|
if (resultSetPointer == TSDBConstants.JNI_CONNECTION_NULL) {
|
||||||
this.connecter.freeResultSet(pSql);
|
this.connector.freeResultSet(pSql);
|
||||||
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.affectedRows = this.connecter.getAffectedRows(pSql);
|
this.affectedRows = this.connector.getAffectedRows(pSql);
|
||||||
this.connecter.freeResultSet(pSql);
|
this.connector.freeResultSet(pSql);
|
||||||
|
|
||||||
return this.affectedRows;
|
return this.affectedRows;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getErrorMsg(long pSql) {
|
public String getErrorMsg(long pSql) {
|
||||||
return this.connecter.getErrMsg(pSql);
|
return this.connector.getErrMsg(pSql);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void close() throws SQLException {
|
public void close() throws SQLException {
|
||||||
if (!isClosed) {
|
if (!isClosed) {
|
||||||
if (!this.connecter.isResultsetClosed()) {
|
if (!this.connector.isResultsetClosed()) {
|
||||||
this.connecter.freeResultSet();
|
this.connector.freeResultSet();
|
||||||
}
|
}
|
||||||
isClosed = true;
|
isClosed = true;
|
||||||
}
|
}
|
||||||
|
@ -174,15 +174,15 @@ public class TSDBStatement implements Statement {
|
||||||
throw new SQLException("Invalid method call on a closed statement.");
|
throw new SQLException("Invalid method call on a closed statement.");
|
||||||
}
|
}
|
||||||
boolean res = true;
|
boolean res = true;
|
||||||
pSql = this.connecter.executeQuery(sql);
|
pSql = this.connector.executeQuery(sql);
|
||||||
long resultSetPointer = this.connecter.getResultSet();
|
long resultSetPointer = this.connector.getResultSet();
|
||||||
|
|
||||||
if (resultSetPointer == TSDBConstants.JNI_CONNECTION_NULL) {
|
if (resultSetPointer == TSDBConstants.JNI_CONNECTION_NULL) {
|
||||||
this.connecter.freeResultSet(pSql);
|
this.connector.freeResultSet(pSql);
|
||||||
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
||||||
} else if (resultSetPointer == TSDBConstants.JNI_NULL_POINTER) {
|
} else if (resultSetPointer == TSDBConstants.JNI_NULL_POINTER) {
|
||||||
// no result set is retrieved
|
// no result set is retrieved
|
||||||
this.connecter.freeResultSet(pSql);
|
this.connector.freeResultSet(pSql);
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,10 +193,10 @@ public class TSDBStatement implements Statement {
|
||||||
if (isClosed) {
|
if (isClosed) {
|
||||||
throw new SQLException("Invalid method call on a closed statement.");
|
throw new SQLException("Invalid method call on a closed statement.");
|
||||||
}
|
}
|
||||||
long resultSetPointer = connecter.getResultSet();
|
long resultSetPointer = connector.getResultSet();
|
||||||
TSDBResultSet resSet = null;
|
TSDBResultSet resSet = null;
|
||||||
if (resultSetPointer != TSDBConstants.JNI_NULL_POINTER) {
|
if (resultSetPointer != TSDBConstants.JNI_NULL_POINTER) {
|
||||||
resSet = new TSDBResultSet(connecter, resultSetPointer);
|
resSet = new TSDBResultSet(connector, resultSetPointer);
|
||||||
}
|
}
|
||||||
return resSet;
|
return resSet;
|
||||||
}
|
}
|
||||||
|
@ -269,7 +269,7 @@ public class TSDBStatement implements Statement {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Connection getConnection() throws SQLException {
|
public Connection getConnection() throws SQLException {
|
||||||
if (this.connecter != null)
|
if (this.connector != null)
|
||||||
return this.connection;
|
return this.connection;
|
||||||
throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG);
|
throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue