Changeset: c6abd650aeb4 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=c6abd650aeb4
Modified Files:
        src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java
        src/main/java/nl/cwi/monetdb/mcl/parser/MCLParser.java
Branch: default
Log Message:

Reduce memory consumption in TupleLineParser which is a subclass of MCLParser.
The intValues[] is only used and needed in the HeaderLineParser, hence moved it 
from superclass MCLParser to subclass HeaderLineParser.


diffs (109 lines):

diff --git a/src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java 
b/src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java
--- a/src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java
+++ b/src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java
@@ -17,12 +17,14 @@ package nl.cwi.monetdb.mcl.parser;
  * @author Fabian Groffen
  */
 public class HeaderLineParser extends MCLParser {
-       private int type;
+       /* types of meta data supported by MCL protocol */
+       public final static int NAME   = 1;     // name of column
+       public final static int LENGTH = 2;
+       public final static int TABLE  = 3;     // may include the schema name
+       public final static int TYPE   = 4;
 
-       public final static int NAME   = 1;
-       public final static int LENGTH = 2;
-       public final static int TABLE  = 3;
-       public final static int TYPE   = 4;
+        /** The int values found while parsing.  Public, you may touch it. */
+       public final int intValues[];
 
        /**
         * Constructs a HeaderLineParser which expects columncount columns.
@@ -31,6 +33,7 @@ public class HeaderLineParser extends MC
         */
        public HeaderLineParser(int columncount) {
                super(columncount);
+               intValues = new int[columncount];
        }
 
        /**
@@ -53,6 +56,7 @@ public class HeaderLineParser extends MC
                int pos = 0;
                boolean foundChar = false;
                boolean nameFound = false;
+
                // find header name searching from the end of the line
                for (int i = len - 1; i >= 0; i--) {
                        switch (chrLine[i]) {
@@ -83,6 +87,7 @@ public class HeaderLineParser extends MC
                        throw new MCLParseException("invalid header, no header 
name found", pos);
 
                // depending on the name of the header, we continue
+               int type = 0;
                switch (chrLine[pos]) {
                        case 'n':
                                if (len - pos == 4 && source.regionMatches(pos 
+ 1, "name", 1, 3)) {
diff --git a/src/main/java/nl/cwi/monetdb/mcl/parser/MCLParser.java 
b/src/main/java/nl/cwi/monetdb/mcl/parser/MCLParser.java
--- a/src/main/java/nl/cwi/monetdb/mcl/parser/MCLParser.java
+++ b/src/main/java/nl/cwi/monetdb/mcl/parser/MCLParser.java
@@ -26,9 +26,7 @@ package nl.cwi.monetdb.mcl.parser;
 public abstract class MCLParser {
        /** The String values found while parsing.  Public, you may touch it. */
        public final String values[];
-       /** The int values found while parsing.  Public, you may touch it. */
-       public final int intValues[];
-       private int colnr;
+       protected int colnr;
 
        /**
         * Creates an MCLParser targetted at a given number of field values.
@@ -39,7 +37,6 @@ public abstract class MCLParser {
         */
        protected MCLParser(int capacity) {
                values = new String[capacity];
-               intValues = new int[capacity];
        }
 
        /**
@@ -51,7 +48,6 @@ public abstract class MCLParser {
         * @throws MCLParseException if source cannot be (fully) parsed by
         * this parser
         * @see #next()
-        * @see #nextInt()
         * @see #hasNext()
         */
        abstract public int parse(String source) throws MCLParseException;
@@ -70,7 +66,6 @@ public abstract class MCLParser {
         * @return true if the next call to next() or nextInt() is bound to
         * succeed
         * @see #next()
-        * @see #nextInt()
         */
        final public boolean hasNext() {
                return colnr < values.length;
@@ -83,23 +78,9 @@ public abstract class MCLParser {
         * determine if the call to next() will succeed.
         *
         * @return the current field value
-        * @see #nextInt()
         * @see #hasNext()
         */
        final public String next() {
                return values[colnr++];
        }
-
-       /**
-        * Returns the current field value as integer, and advances the
-        * field counter to the next value.  This method has the same
-        * characteristics as the next() method, apart from returning the
-        * field value as an integer.
-        *
-        * @return the current field value as integer
-        * @see #next()
-        */
-       final public int nextInt() {
-               return intValues[colnr++];
-       }
 }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to