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

Reply via email to