提交 4dff524a 编写于 作者: H Haojun Liao

[TD-225] refactor jdbc driver

上级 59c32df4
...@@ -16,10 +16,10 @@ package com.taosdata.jdbc; ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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;
}
return ((++this.rowIndex) < this.numOfRows);
} }
public void resetCursor() { public void reset() {
this.rowIndex = 0; this.rowIndex = 0;
} }
...@@ -172,10 +164,58 @@ public class TSDBResultSetBlockData { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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; ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册