Changeset: b66003555560 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/b66003555560
Added Files:
        src/main/java/nl/cwi/monetdb/mcl/io/AbstractMCLReader.java
        src/main/java/nl/cwi/monetdb/mcl/io/AbstractMCLWriter.java
        src/main/java/nl/cwi/monetdb/mcl/io/BufferedMCLReader.java
        src/main/java/nl/cwi/monetdb/mcl/io/BufferedMCLWriter.java
        src/main/java/nl/cwi/monetdb/mcl/io/EmbeddedMCLReader.java
        src/main/java/nl/cwi/monetdb/mcl/io/EmbeddedMCLWriter.java
        src/main/java/nl/cwi/monetdb/mcl/net/AbstractMCLConnection.java
        src/main/java/nl/cwi/monetdb/mcl/net/EmbeddedMonetDB.java
        
src/main/java/nl/cwi/monetdb/mcl/parser/embedded/EmbeddedHeaderLineParser.java
        
src/main/java/nl/cwi/monetdb/mcl/parser/embedded/EmbeddedStartOfHeaderParser.java
        
src/main/java/nl/cwi/monetdb/mcl/parser/embedded/EmbeddedTupleLineParser.java
        
src/main/java/nl/cwi/monetdb/mcl/parser/socket/SocketHeaderLineParser.java
        
src/main/java/nl/cwi/monetdb/mcl/parser/socket/SocketStartOfHeaderParser.java
        
src/main/java/nl/cwi/monetdb/mcl/parser/socket/SocketTupleLineParser.java
Removed Files:
        src/main/java/nl/cwi/monetdb/mcl/connection/AbstractBufferedReader.java
        src/main/java/nl/cwi/monetdb/mcl/connection/AbstractBufferedWriter.java
        
src/main/java/nl/cwi/monetdb/mcl/connection/AbstractMonetDBConnection.java
        src/main/java/nl/cwi/monetdb/mcl/embedded/EmbeddedConnection.java
        src/main/java/nl/cwi/monetdb/mcl/embedded/EmbeddedReader.java
        src/main/java/nl/cwi/monetdb/mcl/embedded/EmbeddedWriter.java
        src/main/java/nl/cwi/monetdb/mcl/net/BufferedMCLReader.java
        src/main/java/nl/cwi/monetdb/mcl/net/BufferedMCLWriter.java
Modified Files:
        example/SQLcopyinto.java
        src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java
        src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
        src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
        src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
        src/main/java/nl/cwi/monetdb/mcl/net/MapiSocket.java
        src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java
        src/main/java/nl/cwi/monetdb/mcl/parser/MCLParser.java
        src/main/java/nl/cwi/monetdb/mcl/parser/StartOfHeaderParser.java
        src/main/java/nl/cwi/monetdb/mcl/parser/TupleLineParser.java
        src/main/java/nl/cwi/monetdb/merovingian/Control.java
        src/main/java/nl/cwi/monetdb/util/SQLRestore.java
Branch: embedded
Log Message:

Split parsers and cleaned the MCL layer.


diffs (truncated from 1864 to 300 lines):

diff --git a/example/SQLcopyinto.java b/example/SQLcopyinto.java
--- a/example/SQLcopyinto.java
+++ b/example/SQLcopyinto.java
@@ -10,8 +10,8 @@ import java.sql.*;
 import java.io.*;
 import java.util.*;
 
-import nl.cwi.monetdb.mcl.connection.AbstractBufferedReader;
-import nl.cwi.monetdb.mcl.connection.AbstractBufferedWriter;
+import nl.cwi.monetdb.mcl.io.AbstractMCLReader;
+import nl.cwi.monetdb.mcl.io.AbstractMCLWriter;
 import nl.cwi.monetdb.mcl.net.*;
 
 /**
@@ -61,8 +61,8 @@ public class SQLcopyinto {
                                }
                        }
 
-                       AbstractBufferedReader in = server.getReader();
-                       AbstractBufferedWriter out = server.getWriter();
+                       AbstractMCLReader in = server.getReader();
+                       AbstractMCLWriter out = server.getWriter();
 
                        String error = in.waitForPrompt();
                        if (error != null)
diff --git 
a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java 
b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java
--- a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedDatabase.java
@@ -8,7 +8,7 @@
 
 package nl.cwi.monetdb.embedded.env;
 
-import nl.cwi.monetdb.mcl.embedded.EmbeddedConnection;
+import nl.cwi.monetdb.mcl.net.EmbeddedMonetDB;
 
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -172,7 +172,7 @@ public class MonetDBEmbeddedDatabase {
         return CompletableFuture.supplyAsync(() -> 
this.createConnectionInternal());
     }*/
 
-    public static void AddJDBCEmbeddedConnection(EmbeddedConnection con) 
throws MonetDBEmbeddedException {
+    public static void AddJDBCEmbeddedConnection(EmbeddedMonetDB con) throws 
MonetDBEmbeddedException {
         if(MonetDBEmbeddedDatabase == null) {
             throw new MonetDBEmbeddedException("The database is not running!");
         } else {
@@ -208,5 +208,5 @@ public class MonetDBEmbeddedDatabase {
     /**
      * Internal implementation to create a JDBC embeddded connection on this 
database.
      */
-    private native void createJDBCConnectionInternal(EmbeddedConnection emc) 
throws MonetDBEmbeddedException;
+    private native void createJDBCConnectionInternal(EmbeddedMonetDB emc) 
throws MonetDBEmbeddedException;
 }
diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java 
b/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
@@ -44,14 +44,14 @@ import java.util.concurrent.locks.Reentr
 import nl.cwi.monetdb.jdbc.types.INET;
 import nl.cwi.monetdb.jdbc.types.URL;
 import nl.cwi.monetdb.mcl.MCLException;
-import nl.cwi.monetdb.mcl.connection.AbstractBufferedReader;
-import nl.cwi.monetdb.mcl.connection.AbstractBufferedWriter;
-import nl.cwi.monetdb.mcl.embedded.EmbeddedConnection;
+import nl.cwi.monetdb.mcl.io.AbstractMCLReader;
+import nl.cwi.monetdb.mcl.io.AbstractMCLWriter;
+import nl.cwi.monetdb.mcl.net.EmbeddedMonetDB;
 import nl.cwi.monetdb.mcl.net.MapiSocket;
-import nl.cwi.monetdb.mcl.connection.AbstractMonetDBConnection;
+import nl.cwi.monetdb.mcl.net.AbstractMCLConnection;
 import nl.cwi.monetdb.mcl.parser.HeaderLineParser;
+import nl.cwi.monetdb.mcl.parser.StartOfHeaderParser;
 import nl.cwi.monetdb.mcl.parser.MCLParseException;
-import nl.cwi.monetdb.mcl.parser.StartOfHeaderParser;
 
 /**
  * A {@link Connection} suitable for the MonetDB database.
@@ -81,14 +81,13 @@ import nl.cwi.monetdb.mcl.parser.StartOf
 public class MonetConnection extends MonetWrapper implements Connection {
 
        /** A connection to mserver5 either through MAPI with TCP or embedded */
-       private final AbstractMonetDBConnection server;
+       private final AbstractMCLConnection server;
        /** The Reader from the server */
-       private final AbstractBufferedReader in;
+       private final AbstractMCLReader in;
        /** The Writer to the server */
-       private final AbstractBufferedWriter out;
-
-       /** A StartOfHeaderParser  declared for reuse. */
-       private StartOfHeaderParser sohp = new StartOfHeaderParser();
+       private final AbstractMCLWriter out;
+       /** A StartOfHeaderParser declared for reuse. */
+       private final StartOfHeaderParser sohp;
 
        /** Whether this Connection is closed (and cannot be used anymore) */
        private boolean closed;
@@ -150,7 +149,7 @@ public class MonetConnection extends Mon
                        if (directory == null || directory.trim().isEmpty())
                                throw new IllegalArgumentException("directory 
should not be null or empty");
 
-                       server = new EmbeddedConnection("localhost", -1, 
database, username, debug, "sql", null, directory);
+                       server = new EmbeddedMonetDB("localhost", -1, database, 
username, debug, "sql", null, directory);
                } else {
                        String hostname = props.getProperty("host");
                        String hash = props.getProperty("hash");
@@ -220,9 +219,11 @@ public class MonetConnection extends Mon
 
                        in = server.getReader();
                        out = server.getWriter();
-                       String error = in.waitForPrompt(); //TODO CHECK THIS
+                       String error = in.waitForPrompt();
                        if (error != null)
                                throw new SQLException(error.substring(6), 
"08001");
+
+                       sohp = server.getStartOfHeaderParser();
                } catch (IOException e) {
                        throw new SQLException("Unable to connect (" + 
server.getHostname() + ":" + server.getPort() + "): " + e.getMessage(), 
"08006");
                } catch (MCLParseException e) {
@@ -238,7 +239,7 @@ public class MonetConnection extends Mon
 
                // the following initialisers are only valid when the language
                // is SQL...
-               if (server.getLang() == AbstractMonetDBConnection.LANG_SQL) {
+               if (server.getLang() == AbstractMCLConnection.LANG_SQL) {
                        // enable auto commit
                        setAutoCommit(true);
                        // set our time zone on the server
@@ -253,7 +254,7 @@ public class MonetConnection extends Mon
                }
        }
 
-       protected AbstractMonetDBConnection getServer() {
+       protected AbstractMCLConnection getServer() {
                return server;
        }
 
@@ -626,7 +627,7 @@ public class MonetConnection extends Mon
         */
        @Override
        public DatabaseMetaData getMetaData() throws SQLException {
-               if (server.getLang() != AbstractMonetDBConnection.LANG_SQL)
+               if (server.getLang() != AbstractMCLConnection.LANG_SQL)
                        throw new SQLException("This method is only supported 
in SQL mode", "M0M04");
 
                return new MonetDatabaseMetaData(this);
@@ -1634,7 +1635,7 @@ public class MonetConnection extends Mon
                        this.resultBlocks =
                                new DataBlockResponse[(tuplecount / cacheSize) 
+ 1];
 
-                       hlp = new HeaderLineParser(columncount);
+                       hlp = server.getHeaderLineParser(columncount);
 
                        resultBlocks[0] = new DataBlockResponse(
                                rowcount,
@@ -1658,7 +1659,7 @@ public class MonetConnection extends Mon
                                return resultBlocks[0].addLine(tmpLine, 
linetype);
                        }
 
-                       if (linetype != AbstractBufferedReader.HEADER)
+                       if (linetype != AbstractMCLReader.HEADER)
                                return "header expected, got: " + tmpLine;
 
                        // depending on the name of the header, we continue
@@ -1992,7 +1993,7 @@ public class MonetConnection extends Mon
                 */
                @Override
                public String addLine(String line, int linetype) {
-                       if (linetype != AbstractBufferedReader.RESULT)
+                       if (linetype != AbstractMCLReader.RESULT)
                                return "protocol violation: unexpected line in 
data block: " + line;
                        // add to the backing array
                        data[++pos] = line;
@@ -2321,7 +2322,7 @@ public class MonetConnection extends Mon
                                        int size = cachesize == 0 ? 
DEF_FETCHSIZE : cachesize;
                                        size = maxrows != 0 ? Math.min(maxrows, 
size) : size;
                                        // don't do work if it's not needed
-                                       if (server.getLang() == 
AbstractMonetDBConnection.LANG_SQL && size != curReplySize && templ != 
server.getCommandHeaderTemplates()) {
+                                       if (server.getLang() == 
AbstractMCLConnection.LANG_SQL && size != curReplySize && templ != 
server.getCommandHeaderTemplates()) {
                                                sendControlCommand("reply_size 
" + size);
 
                                                // store the reply size after a 
successful change
@@ -2354,11 +2355,11 @@ public class MonetConnection extends Mon
                                        String tmpLine = in.readLine();
                                        int linetype = in.getLineType();
                                        Response res = null;
-                                       while (linetype != 
AbstractBufferedReader.PROMPT) {
+                                       while (linetype != 
AbstractMCLReader.PROMPT) {
                                                // each response should start 
with a start of header
                                                // (or error)
                                                switch (linetype) {
-                                                       case 
AbstractBufferedReader.SOHEADER:
+                                                       case 
AbstractMCLReader.SOHEADER:
                                                                // make the 
response object, and fill it
                                                                try {
                                                                        switch 
(sohp.parse(tmpLine)) {
@@ -2487,7 +2488,7 @@ public class MonetConnection extends Mon
                                                                tmpLine = 
in.readLine();
                                                                linetype = 
in.getLineType();
                                                        break;
-                                                       case 
AbstractBufferedReader.INFO:
+                                                       case 
AbstractMCLReader.INFO:
                                                                
addWarning(tmpLine.substring(1), "01000");
 
                                                                // read the 
next line (can be prompt, new
@@ -2502,7 +2503,7 @@ public class MonetConnection extends Mon
                                                                // message
                                                                tmpLine = 
"!M0M10!protocol violation, unexpected line: " + tmpLine;
                                                                // don't break; 
fall through...
-                                                       case 
AbstractBufferedReader.ERROR:
+                                                       case 
AbstractMCLReader.ERROR:
                                                                // read 
everything till the prompt (should be
                                                                // error) we 
don't know if we ignore some
                                                                // garbage 
here... but the log should reveal
@@ -2579,7 +2580,7 @@ public class MonetConnection extends Mon
 
                private String[] templ;
                private String query;
-               private AbstractBufferedWriter out;
+               private AbstractMCLWriter out;
                private String error;
                private int state = WAIT;
                
@@ -2593,7 +2594,7 @@ public class MonetConnection extends Mon
                 *
                 * @param out the socket to write to
                 */
-               public SendThread(AbstractBufferedWriter out) {
+               public SendThread(AbstractMCLWriter out) {
                        super("SendThread");
                        setDaemon(true);
                        this.out = out;
diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java 
b/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
@@ -10,6 +10,7 @@ package nl.cwi.monetdb.jdbc;
 
 import nl.cwi.monetdb.mcl.parser.MCLParseException;
 import nl.cwi.monetdb.mcl.parser.TupleLineParser;
+
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.io.Reader;
@@ -134,7 +135,7 @@ public class MonetResultSet extends Mone
                tupleCount = header.tuplecount;
 
                // create result array
-               tlp = new TupleLineParser(columns.length);
+               tlp = 
((MonetConnection)statement.getConnection()).getServer().getTupleLineParser(columns.length);
 
                JdbcSQLTypes = new int[types.length];
                populateJdbcSQLtypesArray();
@@ -178,7 +179,11 @@ public class MonetResultSet extends Mone
                this.types = types;
                this.tupleCount = results;
 
-               this.tlp = new TupleLineParser(columns.length);
+               try {
+                       this.tlp = 
((MonetConnection)statement.getConnection()).getServer().getTupleLineParser(columns.length);
+               } catch (SQLException e) {
+                       throw new IllegalArgumentException(e);
+               }
 
                JdbcSQLTypes = new int[types.length];
                populateJdbcSQLtypesArray();
diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java 
b/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
@@ -8,7 +8,7 @@
 
 package nl.cwi.monetdb.jdbc;
 
-import nl.cwi.monetdb.mcl.connection.AbstractMonetDBConnection;
+import nl.cwi.monetdb.mcl.net.AbstractMCLConnection;
 import java.sql.BatchUpdateException;
 import java.sql.Connection;
 import java.sql.Statement;
@@ -202,7 +202,7 @@ public class MonetStatement extends Mone
                        boolean first = true;
                        boolean error = false;
 
-                       AbstractMonetDBConnection server = 
connection.getServer();
+                       AbstractMCLConnection server = connection.getServer();
 
                        BatchUpdateException e = new 
BatchUpdateException("Error(s) occurred while executing the batch, see next 
SQLExceptions for details", "22000", counts);
                        StringBuilder tmpBatch = new 
StringBuilder(server.getBlockSize());
diff --git 
a/src/main/java/nl/cwi/monetdb/mcl/connection/AbstractBufferedReader.java 
b/src/main/java/nl/cwi/monetdb/mcl/io/AbstractMCLReader.java
rename from 
src/main/java/nl/cwi/monetdb/mcl/connection/AbstractBufferedReader.java
rename to src/main/java/nl/cwi/monetdb/mcl/io/AbstractMCLReader.java
--- a/src/main/java/nl/cwi/monetdb/mcl/connection/AbstractBufferedReader.java
+++ b/src/main/java/nl/cwi/monetdb/mcl/io/AbstractMCLReader.java
@@ -1,4 +1,4 @@
-package nl.cwi.monetdb.mcl.connection;
+package nl.cwi.monetdb.mcl.io;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -7,7 +7,7 @@ import java.io.Reader;
 /**
  * Created by ferreira on 11/24/16.
  */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to