提交 b215b2c7 编写于 作者: B bluestreak02

PG: parsing all commands jdbc driver sends when executing queries.

上级 cd002e8b
......@@ -28,10 +28,14 @@ import com.questdb.log.LogFactory;
import com.questdb.network.*;
import com.questdb.std.*;
import com.questdb.std.str.DirectByteCharSequence;
import com.questdb.std.str.StdoutSink;
import java.io.IOException;
public class HttpConnectionContext implements IOContext, Locality, Mutable {
// todo: remove or comment out eventually
public static final StdoutSink stdOutSink = new StdoutSink();
private static final Log LOG = LogFactory.getLog(HttpConnectionContext.class);
private final HttpHeaderParser headerParser;
private final long recvBuffer;
private final int recvBufferSize;
......@@ -62,10 +66,15 @@ public class HttpConnectionContext implements IOContext, Locality, Mutable {
LOG.debug().$("new").$();
}
// todo: remove or comment out eventually
public static void dump(long recvBuffer, int read) {
for (int i = 0; i < read; i++) {
System.out.print((char) Unsafe.getUnsafe().getByte(recvBuffer + i));
Numbers.appendHex(stdOutSink, Unsafe.getUnsafe().getByte(recvBuffer + i) & 0xff);
}
stdOutSink.put('\n');
try {
stdOutSink.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
......
......@@ -26,6 +26,7 @@ package com.questdb.cutlass.http;
import com.questdb.log.Log;
import com.questdb.log.LogFactory;
import com.questdb.network.NetworkFacade;
import com.questdb.network.NoSpaceLeftInResponseBufferException;
import com.questdb.network.PeerDisconnectedException;
import com.questdb.network.PeerIsSlowToReadException;
import com.questdb.std.*;
......
......@@ -29,16 +29,16 @@ import com.questdb.cairo.CairoException;
import com.questdb.cairo.ColumnType;
import com.questdb.cairo.sql.Record;
import com.questdb.cairo.sql.RecordCursorFactory;
import com.questdb.cutlass.http.*;
import com.questdb.cutlass.http.HttpChunkedResponseSocket;
import com.questdb.cutlass.http.HttpConnectionContext;
import com.questdb.cutlass.http.HttpRequestHeader;
import com.questdb.cutlass.http.HttpRequestProcessor;
import com.questdb.griffin.SqlCompiler;
import com.questdb.griffin.SqlException;
import com.questdb.log.Log;
import com.questdb.log.LogFactory;
import com.questdb.log.LogRecord;
import com.questdb.network.IODispatcher;
import com.questdb.network.IOOperation;
import com.questdb.network.PeerDisconnectedException;
import com.questdb.network.PeerIsSlowToReadException;
import com.questdb.network.*;
import com.questdb.std.*;
import com.questdb.std.str.CharSink;
......
......@@ -32,10 +32,7 @@ import com.questdb.cutlass.text.Atomicity;
import com.questdb.cutlass.text.TextLoader;
import com.questdb.log.Log;
import com.questdb.log.LogFactory;
import com.questdb.network.IODispatcher;
import com.questdb.network.IOOperation;
import com.questdb.network.PeerDisconnectedException;
import com.questdb.network.PeerIsSlowToReadException;
import com.questdb.network.*;
import com.questdb.std.*;
import com.questdb.std.str.CharSink;
......
......@@ -31,4 +31,6 @@ public interface WireParserConfiguration {
int getRecvBufferSize();
int getSendBufferSize();
int getIdleSendCountBeforeGivingUp();
}
......@@ -21,7 +21,9 @@
*
******************************************************************************/
package com.questdb.cutlass.http;
package com.questdb.network;
import com.questdb.cutlass.http.HttpException;
public class NoSpaceLeftInResponseBufferException extends HttpException {
public final static NoSpaceLeftInResponseBufferException INSTANCE = new NoSpaceLeftInResponseBufferException();
......
......@@ -697,47 +697,7 @@ public final class Numbers {
int c = sequence.charAt(i);
int n = val << 4;
switch (c) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
r = n + (c - '0');
break;
case 'A':
case 'a':
r = n + 0xA;
break;
case 'B':
case 'b':
r = n + 0xB;
break;
case 'C':
case 'c':
r = n + 0xC;
break;
case 'D':
case 'd':
r = n + 0xD;
break;
case 'E':
case 'e':
r = n + 0xE;
break;
case 'F':
case 'f':
r = n + 0xF;
break;
default:
// malformed
throw NumericException.INSTANCE;
}
r = n + hexToDecimal(c);
if (r < val) {
// overflow
......@@ -749,6 +709,52 @@ public final class Numbers {
return val;
}
public static int hexToDecimal(int c) throws NumericException {
int r;
switch (c) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
r = (c - '0');
break;
case 'A':
case 'a':
r = 0xA;
break;
case 'B':
case 'b':
r = 0xB;
break;
case 'C':
case 'c':
r = 0xC;
break;
case 'D':
case 'd':
r = 0xD;
break;
case 'E':
case 'e':
r = 0xE;
break;
case 'F':
case 'f':
r = 0xF;
break;
default:
// malformed
throw NumericException.INSTANCE;
}
return r;
}
public static int parseInt(CharSequence sequence) throws NumericException {
if (sequence == null) {
throw NumericException.INSTANCE;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册