Mercurial > hg > monetdb-java
view src/main/java/nl/cwi/monetdb/embedded/env/JDBCEmbeddedConnection.java @ 84:d82bf33bf8a6 embedded
Why I have to deal with Ant now :( No one uses it anymore :(
author | Pedro Ferreira <pedro.ferreira@monetdbsolutions.com> |
---|---|
date | Thu, 29 Dec 2016 17:35:23 +0000 (2016-12-29) |
parents | src/main/java/nl/cwi/monetdb/mcl/connection/embedded/JDBCEmbeddedConnection.java@724a0061db63 |
children |
line wrap: on
line source
package nl.cwi.monetdb.embedded.env; 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 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); } 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.lastResultSetPointer, columnNames, columnLengths, types, tableNames); return TableResultHeaders.ALL; } public int parseTupleLines(int[] typesMap, Object[] values, boolean[][] nulls) { return this.parseTupleLinesInternal(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); } public void sendAutocommitCommand(int flag) { //1 or 0 this.sendAutocommitCommandInternal(this.connectionPointer, flag); } public void sendReleaseCommand(int commandId) { this.sendReleaseCommandInternal(this.connectionPointer, commandId); } public void sendCloseCommand(int commandId) { this.sendCloseCommandInternal(this.connectionPointer, commandId); } public void sendReplySizeCommand(int size) { this.sendReplySizeCommandInternal(this.connectionPointer, size); } private native void getNextTableHeaderInternal(long resultSetPointer, String[] columnNames, int[] columnLengths, String[] types, String[] tableNames); private native int parseTupleLinesInternal(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); private native void sendReplySizeCommandInternal(long connectionPointer, int size); }