Changeset: c592d8a72627 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/c592d8a72627
Modified Files:
src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java
src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java
src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java
src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java
src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java
src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java
src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSet.java
src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultSetColumn.java
src/main/java/nl/cwi/monetdb/embedded/resultset/UpdateResultSet.java
src/main/java/nl/cwi/monetdb/embedded/tables/IMonetDBTableBaseIterator.java
src/main/java/nl/cwi/monetdb/embedded/tables/IMonetDBTableUpdater.java
src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java
src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTableColumn.java
src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java
src/main/java/nl/cwi/monetdb/embedded/tables/RowRemover.java
src/main/java/nl/cwi/monetdb/embedded/tables/RowUpdater.java
Branch: embedded
Log Message:
More defensive approach for tables. Only the table name and schema are cached.
diffs (truncated from 1273 to 300 lines):
diff --git
a/src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java
b/src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java
--- a/src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java
@@ -22,9 +22,7 @@ public abstract class AbstractConnection
*/
private final MonetDBEmbeddedConnection connection;
- protected AbstractConnectionResult(MonetDBEmbeddedConnection connection) {
- this.connection = connection;
- }
+ protected AbstractConnectionResult(MonetDBEmbeddedConnection connection) {
this.connection = connection; }
/**
* Get the corresponding connection to this statement result.
@@ -33,8 +31,10 @@ public abstract class AbstractConnection
*/
public MonetDBEmbeddedConnection getConnection() { return connection; }
+ protected long getConnectionPointer() { return
connection.connectionPointer; }
+
/**
- * To be called by the connection when is closing, to avoid concurrency
problems on the iteration.
+ * To be called by the connection when is closing.
*/
protected abstract void closeImplementation();
diff --git
a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
--- a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
@@ -27,7 +27,7 @@ public class MonetDBEmbeddedConnection {
private final MonetDBEmbeddedDatabase database;
- private final long connectionPointer;
+ protected final long connectionPointer;
private final Set<AbstractConnectionResult> results = new HashSet<>();
@@ -44,7 +44,7 @@ public class MonetDBEmbeddedConnection {
*/
public String getCurrentSchema() throws MonetDBEmbeddedException {
QueryResultSet eqr = this.sendQuery("SELECT current_schema FROM
sys.var();");
- QueryResultSetColumn<String> col = eqr.getColumn(0);
+ QueryResultSetColumn<String> col = eqr.getColumnByIndex(0);
String res = col.fetchFirstNColumnValues(1)[0];
eqr.close();
return res;
diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java
b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java
--- a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractColumn.java
@@ -11,59 +11,17 @@ package nl.cwi.monetdb.embedded.mapping;
/**
* A single Java representation of a MonetDB column.
*
- * @param <T> A Java class mapped to a MonetDB data type
* @author <a href="mailto:[email protected]">Pedro
Ferreira</a>
*/
-public abstract class AbstractColumn<T> {
-
- /**
- * The column index on the result set.
- */
- protected final int resultSetIndex;
-
- /**
- * The name of the columns in the query result.
- */
- protected final String columnName;
+public abstract class AbstractColumn {
/**
* The Mapping between MonetDB type and the Java Class.
*/
protected final MonetDBToJavaMapping mapping;
- /**
- * The number of digits (radix 2) for numeric types or max length for
character/binary strings.
- */
- protected final int columnDigits;
-
- /**
- * The precision after decimal point. Only applicable for decimal/numeric
types.
- */
- protected final int columnScale;
-
- protected AbstractColumn(int resultSetIndex, String columnName, String
columnType, int columnDigits,
- int columnScale) {
- this.resultSetIndex = resultSetIndex;
- this.columnName = columnName;
+ protected AbstractColumn(String columnType) {
this.mapping =
MonetDBToJavaMapping.GetJavaMappingFromMonetDBString(columnType);
- this.columnDigits = columnDigits;
- this.columnScale = columnScale;
- }
-
- /**
- * Gets the result set index of the column.
- *
- * @return The index number
- */
- public int getResultSetIndex() { return resultSetIndex; }
-
- /**
- * Gets the name of the column.
- *
- * @return The column name
- */
- public String getColumnName() {
- return columnName;
}
/**
@@ -71,7 +29,7 @@ public abstract class AbstractColumn<T>
*
* @return The Column type
*/
- public String getColumnType() { return mapping.toString(); }
+ public String getColumnInternalTypeName() { return mapping.toString(); }
/**
* Gets the Java mapping of the column.
@@ -81,16 +39,23 @@ public abstract class AbstractColumn<T>
public MonetDBToJavaMapping getMapping() { return mapping; }
/**
+ * Gets the name of the column.
+ *
+ * @return The column name
+ */
+ public abstract String getColumnName();
+
+ /**
* Gets the number digits of the column.
*
* @return The number of digits
*/
- public int getColumnDigits() { return columnDigits; }
+ public abstract int getColumnDigits();
/**
* Gets the scale of the column.
*
* @return The scale
*/
- public int getColumnScale() { return columnScale; }
+ public abstract int getColumnScale();
}
diff --git
a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java
b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java
--- a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java
@@ -13,13 +13,6 @@ public abstract class AbstractResultTabl
public AbstractResultTable(MonetDBEmbeddedConnection connection) {
super(connection); }
/**
- * Returns an array of columns in the result set.
- *
- * @return An array of columns in the result set
- */
- protected abstract AbstractColumn<?>[] getColumns();
-
- /**
* Returns the number of columns in the result set.
*
* @return Number of columns
@@ -38,68 +31,33 @@ public abstract class AbstractResultTabl
*
* @return The columns names array
*/
- public String[] getColumnNames() {
- int i = 0;
- String[] result = new String[this.getNumberOfColumns()];
- for(AbstractColumn col : this.getColumns()) {
- result[i] = col.getColumnName();
- }
- return result;
- }
+ public abstract String[] getColumnNames();
/**
* Gets the columns types as a string array.
*
* @return The columns types array
*/
- public String[] getColumnTypes() {
- int i = 0;
- String[] result = new String[this.getNumberOfColumns()];
- for(AbstractColumn col : this.getColumns()) {
- result[i] = col.getColumnType();
- }
- return result;
- }
+ public abstract String[] getColumnTypes();
/**
* Gets the Java mappings as a MonetDBToJavaMapping array.
*
* @return The columns MonetDBToJavaMapping array
*/
- public MonetDBToJavaMapping[] getMappings() {
- int i = 0;
- MonetDBToJavaMapping[] result = new
MonetDBToJavaMapping[this.getNumberOfColumns()];
- for(AbstractColumn col : this.getColumns()) {
- result[i] = col.getMapping();
- }
- return result;
- }
+ public abstract MonetDBToJavaMapping[] getMappings();
/**
* Gets the columns digits as an integer array.
*
* @return The columns digits array
*/
- public int[] getColumnDigits() {
- int i = 0;
- int[] result = new int[this.getNumberOfColumns()];
- for(AbstractColumn col : this.getColumns()) {
- result[i] = col.getColumnDigits();
- }
- return result;
- }
+ public abstract int[] getColumnDigits();
/**
* Gets the columns scales as an integer array.
*
* @return The columns scales array
*/
- public int[] getColumnScales() {
- int i = 0;
- int[] result = new int[this.getNumberOfColumns()];
- for(AbstractColumn col :this.getColumns()) {
- result[i] = col.getColumnScale();
- }
- return result;
- }
+ public abstract int[] getColumnScales();
}
diff --git
a/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java
b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java
--- a/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBEmbeddedBlob.java
@@ -22,7 +22,7 @@ public class MonetDBEmbeddedBlob impleme
*
* @return A Java byte array containing the BLOB itself
*/
- public byte[] getBlob() { return blob; }
+ public byte[] getBlob() { return this.blob; }
/**
* Overriding the equals method for the byte array.
diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java
b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java
--- a/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBRow.java
@@ -65,7 +65,7 @@ public class MonetDBRow implements Itera
* @param javaClass The Java class
* @return The column value as a Java class
*/
- public <T> T getColumn(int index, Class<T> javaClass) { return
javaClass.cast(columns[index]); }
+ public <T> T getColumnByIndex(int index, Class<T> javaClass) { return
javaClass.cast(columns[index]); }
/**
* Gets a column value as a Java class using the default mapping.
@@ -74,7 +74,7 @@ public class MonetDBRow implements Itera
* @param index The index of the column
* @return The column value as a Java class
*/
- public <T> T getColumn(int index) {
+ public <T> T getColumnByIndex(int index) {
Class<T> javaClass = this.originalSet.mappings[index].getJavaClass();
return javaClass.cast(columns[index]);
}
@@ -86,7 +86,7 @@ public class MonetDBRow implements Itera
* @param index The index of the column
* @param value The value to set
*/
- public <T> void setColumn(int index, T value) {
+ public <T> void setColumnByIndex(int index, T value) {
this.columns[index] =
this.originalSet.mappings[index].getJavaClass().cast(value);
}
@@ -98,7 +98,7 @@ public class MonetDBRow implements Itera
* @param javaClass The Java class
* @param value The value to set
*/
- public <T> void setColumn(int index, Class<T> javaClass, T value) {
+ public <T> void setColumnByIndex(int index, Class<T> javaClass, T value) {
this.columns[index] = javaClass.cast(value);
}
diff --git
a/src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java
b/src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java
--- a/src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/resultset/QueryResultRowSet.java
@@ -71,8 +71,8 @@ public class QueryResultRowSet extends A
* @param javaClass The Java class to map
* @return The value mapped to a instance of the provided class
*/
- public <T> T getSingleValue(int row, int column, Class<T> javaClass) {
- return javaClass.cast(this.rows[row].getColumn(column));
+ public <T> T getSingleValueByIndex(int row, int column, Class<T>
javaClass) {
+ return javaClass.cast(this.rows[row].getColumnByIndex(column));
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list