Mercurial > hg > monetdb-java
view src/main/java/nl/cwi/monetdb/mcl/connection/embedded/JDBCEmbeddedConnection.java @ 81:a3c686217ca1 embedded
Made many fixes for the embedded connection
author | Pedro Ferreira <pedro.ferreira@monetdbsolutions.com> |
---|---|
date | Fri, 16 Dec 2016 18:41:09 +0100 (2016-12-16) |
parents | 0ae34196c54e |
children | 4231a7f5cdc3 |
line wrap: on
line source
package nl.cwi.monetdb.mcl.connection.embedded; import nl.cwi.monetdb.embedded.env.MonetDBEmbeddedConnection; import nl.cwi.monetdb.mcl.protocol.ServerResponses; import nl.cwi.monetdb.mcl.protocol.StarterHeaders; import nl.cwi.monetdb.mcl.protocol.TableResultHeaders; import nl.cwi.monetdb.mcl.responses.IResponse; /** * Created by ferreira on 12/1/16. */ public class JDBCEmbeddedConnection extends MonetDBEmbeddedConnection { private int maxRows = Integer.MAX_VALUE; private long lastResultSetPointer; private final ServerResponses[] lineResponse = new ServerResponses[4]; private int currentLineResponseState; private StarterHeaders serverHeaderResponse; private final int[] lastServerResponseParameters = new int[4]; //for ResultSetResponse and DataBlockResponse private IResponse lastServerResponse; //for Update and Autocommit private String lastError; protected JDBCEmbeddedConnection(long connectionPointer) { super(connectionPointer); } void setMaxRows(int maxRows) { this.maxRows = maxRows; } public ServerResponses getNextServerResponse() { return lineResponse[currentLineResponseState++]; } public StarterHeaders getServerHeaderResponse() { return serverHeaderResponse; } public int[] getLastServerResponseParameters() { return lastServerResponseParameters; } public IResponse getLastServerResponse() { return lastServerResponse; } public TableResultHeaders fillTableHeaders(String[] columnNames, int[] columnLengths, String[] types, String[] tableNames) { this.getNextTableHeaderInternal(this.connectionPointer, this.lastResultSetPointer, columnNames, columnLengths, types, tableNames); return TableResultHeaders.ALL; } public int parseTupleLines(int[] typesMap, Object[] values, boolean[][] nulls) { return this.parseTupleLinesInternal(this.connectionPointer, this.lastResultSetPointer, typesMap, values, nulls); } public String getLastError() { return lastError; } public void processNextQuery(String query) { if (!query.endsWith(";")) { query += ";"; } this.currentLineResponseState = 0; this.sendQueryInternal(this.connectionPointer, query, true); } void sendAutocommitCommand(int flag) { //1 or 0 this.sendAutocommitCommandInternal(this.connectionPointer, flag); } void sendReleaseCommand(int commandId) { this.sendReleaseCommandInternal(this.connectionPointer, commandId); } void sendCloseCommand(int commandId) { this.sendCloseCommandInternal(this.connectionPointer, commandId); } private native void getNextTableHeaderInternal(long connectionPointer, long resultSetPointer, String[] columnNames, int[] columnLengths, String[] types, String[] tableNames); private native int parseTupleLinesInternal(long connectionPointer, long resultSetPointer, int[] typesMap, Object[] values, boolean[][] nulls); private native void sendQueryInternal(long connectionPointer, String query, boolean execute); private native void sendAutocommitCommandInternal(long connectionPointer, int flag); private native void sendReleaseCommandInternal(long connectionPointer, int commandId); private native void sendCloseCommandInternal(long connectionPointer, int commandId); }