When executing a query with a GROUP BY, I get a stacktrace. It seems to be related to decoding of the message, but I'm not sure. Please see logging below (enabled trace for the code in the com.github.mauricio.async.db.mysql package.
Switched to the vertx JDBC driver, which works fine. Also with this failing GROUP BY query.
15:51:16.978 [vert.x-eventloop-thread-0] DEBUG n.s.it.solutions.crm.DBVerticle.executeQuery(403) - Executing sql 'SELECT `status` as stat, count(*) AS myCount FROM `relation` GROUP BY `status`
15:51:16.979 [vert.x-eventloop-thread-4] TRACE c.g.m.a.d.m.c.MySQLOneToOneEncoder.encode(82) - Writing message com.github.mauricio.async.db.mysql.message.client.QueryMessage -
0: 4f 00 00 00 03 53 45 4c O . . . . S E L
1: 45 43 54 20 60 73 74 61 E C T . ` s t a
2: 74 75 73 60 20 61 73 20 t u s ` . a s .
3: 73 74 61 74 2c 20 63 6f s t a t , . c o
4: 75 6e 74 28 2a 29 20 41 u n t ( * ) . A
5: 53 20 6d 79 43 6f 75 6e S . m y C o u n
6: 74 20 46 52 4f 4d 20 60 t . F R O M . `
7: 72 65 6c 61 74 69 6f 6e r e l a t i o n
8: 60 20 47 52 4f 55 50 20 ` . G R O U P .
9: 42 59 20 60 73 74 61 74 B Y . ` s t a t
10: 75 73 60 u s `
Total 83 bytes read
15:51:16.980 [vert.x-eventloop-thread-4] TRACE [frame-decoder][mysql-connection-1].decode(84) - Reading message type 2 - (count=4,hasDoneHandshake=true,size=1,isInQuery=true,processingColumns=true,processingParams=false,processedColumns=0,processedParams=0)
0: 02 .
Total 1 bytes read
}
15:51:16.980 [vert.x-eventloop-thread-1] DEBUG n.s.i.s.crm.handler.StatsHandler.getStats(77) - handling get stats - DONE
15:51:16.980 [vert.x-eventloop-thread-4] TRACE [frame-decoder][mysql-connection-1].decode(84) - Reading message type 3 - (count=5,hasDoneHandshake=true,size=51,isInQuery=true,processingColumns=true,processingParams=false,processedColumns=0,processedParams=0)
0: 03 64 65 66 03 63 72 6d . d e f . c r m
1: 08 72 65 6c 61 74 69 6f . r e l a t i o
2: 6e 08 72 65 6c 61 74 69 n . r e l a t i
3: 6f 6e 04 73 74 61 74 06 o n . s t a t .
4: 73 74 61 74 75 73 0c 53 s t a t u s . S
5: 00 87 00 00 00 fd 09 50 . . . . . . . P
6: 00 00 00 . . .
Total 51 bytes read
}
15:51:16.980 [vert.x-eventloop-thread-4] TRACE [frame-decoder][mysql-connection-1].decode(84) - Reading message type 3 - (count=6,hasDoneHandshake=true,size=29,isInQuery=true,processingColumns=true,processingParams=false,processedColumns=1,processedParams=0)
0: 03 64 65 66 00 00 00 07 . d e f . . . .
1: 6d 79 43 6f 75 6e 74 00 m y C o u n t .
2: 0c 3f 00 15 00 00 00 08 . ? . . . . . .
3: 81 00 00 00 00 . . . . .
Total 29 bytes read
}
15:51:16.981 [vert.x-eventloop-thread-4] TRACE [frame-decoder][mysql-connection-1].decode(84) - Reading message type -2 - (count=7,hasDoneHandshake=true,size=5,isInQuery=true,processingColumns=true,processingParams=false,processedColumns=2,processedParams=0)
0: fe 00 00 02 00 . . . . .
Total 5 bytes read
}
15:51:16.981 [vert.x-eventloop-thread-4] TRACE [frame-decoder][mysql-connection-1].decode(84) - Reading message type 0 - (count=8,hasDoneHandshake=true,size=3,isInQuery=true,processingColumns=false,processingParams=false,processedColumns=2,processedParams=0)
0: 00 01 31 . . 1
Total 3 bytes read
}
15:51:16.983 [vert.x-eventloop-thread-4] ERROR c.g.m.async.db.mysql.MySQLConnection.exceptionCaught(119) - Transport failure
java.lang.IndexOutOfBoundsException: readerIndex(3) + length(2) exceeds writerIndex(3): UnpooledSlicedByteBuf(ridx: 3, widx: 3, cap: 3/3, unwrapped: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeNoCleanerDirectByteBuf(ridx: 109, widx: 164, cap: 512))
at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1403)
at io.netty.buffer.AbstractByteBuf.readShort(AbstractByteBuf.java:726)
at io.netty.buffer.SwappedByteBuf.readShort(SwappedByteBuf.java:541)
at com.github.mauricio.async.db.mysql.decoder.OkDecoder.decode(OkDecoder.scala:31)
at com.github.mauricio.async.db.mysql.codec.MySQLFrameDecoder.doDecoding(MySQLFrameDecoder.scala:172)
at com.github.mauricio.async.db.mysql.codec.MySQLFrameDecoder.handleCommonFlow(MySQLFrameDecoder.scala:157)
at com.github.mauricio.async.db.mysql.codec.MySQLFrameDecoder.decode(MySQLFrameDecoder.scala:90)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:489)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:428)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:265)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:935)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:141)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
When executing a query with a GROUP BY, I get a stacktrace. It seems to be related to decoding of the message, but I'm not sure. Please see logging below (enabled trace for the code in the com.github.mauricio.async.db.mysql package.
Switched to the vertx JDBC driver, which works fine. Also with this failing GROUP BY query.
Using
3.7.215.5.54SELECT status as stat, count(*) AS myCount FROM relation GROUP BY status