Good afternoon,

I am receiving the following error when using the flatten function to query a 
MongoDB collection:
Error: SYSTEM ERROR: IllegalArgumentException: You tried to write a VarChar 
type when you are using a ValueWriter of type NullableFloat8WriterImpl.

The collection contains a number documents, where each document consists of 
some key-value pairs and a single array which itself contains exactly 2 
key-value pairs per element.

Here is an example document in the collection:
{

    "_id" : ObjectId("1234567890abcdef12345678"),
    "TradeId" : NumberInt(12345),
    "DateValueCollection" : [
        {
            "ScenarioDate" : ISODate("2011-05-20T00:00:00.000+0000"),
            "Pnl" : 22.0
        },
        {
            "ScenarioDate" : ISODate("2011-05-23T00:00:00.000+0000"),
            "Pnl" : -30.0
        },
        {
            "ScenarioDate" : ISODate("2011-05-24T00:00:00.000+0000"),
            "Pnl" : 15.0
        },
        {
            "ScenarioDate" : ISODate("2011-05-25T00:00:00.000+0000"),
            "Pnl" : 9.0
        }
    ]
}


Within the array, I have checked that every ScenarioDate value is of MongoDB 
type Date and that every PnL value is of MongoDB type double.  There are no 
null values.

Each document contains this same array structure with approx. 1k such elements.

When I copy a small set of these documents into a new collection, the flatten 
functions works correctly.  But in the full collection, the flatten function 
fails with the error above.

I have tried toggling the store.mongo.read_numbers_as_double and 
store.mongo.all_text_mode flags with no luck.



Command used (via shell or web client) and verbose error output for reference:

0: jdbc:drill:zk=local> SELECT flatten(`x`.`DateValueCollection`) FROM 
`mongo`.`db_name`.`some.random.collection.name` AS `x` limit 10;

Error: SYSTEM ERROR: IllegalArgumentException: You tried to write a VarChar 
type when you are using a ValueWriter of type NullableFloat8WriterImpl.

Fragment 0:0

[Error Id: a43e57f6-f8ce-4850-8040-65858828056f on SYM156.options-it.com:31010] 
(state=,code=0)
java.sql.SQLException: SYSTEM ERROR: IllegalArgumentException: You tried to 
write a VarChar type when you are using a ValueWriter of type 
NullableFloat8WriterImpl.

Fragment 0:0

[Error Id: a43e57f6-f8ce-4850-8040-65858828056f on somehostname:31010]
        at 
org.apache.drill.jdbc.impl.DrillCursor.nextRowInternally(DrillCursor.java:247)
        at 
org.apache.drill.jdbc.impl.DrillCursor.loadInitialSchema(DrillCursor.java:290)
        at 
org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.java:1923)
        at 
org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.java:73)
        at 
net.hydromatic.avatica.AvaticaConnection.executeQueryInternal(AvaticaConnection.java:404)
        at 
net.hydromatic.avatica.AvaticaStatement.executeQueryInternal(AvaticaStatement.java:355)
        at 
net.hydromatic.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:338)
        at 
net.hydromatic.avatica.AvaticaStatement.execute(AvaticaStatement.java:69)
        at 
org.apache.drill.jdbc.impl.DrillStatementImpl.execute(DrillStatementImpl.java:101)
        at sqlline.Commands.execute(Commands.java:841)
        at sqlline.Commands.sql(Commands.java:751)
        at sqlline.SqlLine.dispatch(SqlLine.java:746)
        at sqlline.SqlLine.begin(SqlLine.java:621)
        at sqlline.SqlLine.start(SqlLine.java:375)
        at sqlline.SqlLine.main(SqlLine.java:268)
Caused by: org.apache.drill.common.exceptions.UserRemoteException: SYSTEM 
ERROR: IllegalArgumentException: You tried to write a VarChar type when you are 
using a ValueWriter of type NullableFloat8WriterImpl.

Fragment 0:0

[Error Id: a43e57f6-f8ce-4850-8040-65858828056f on somehostname:31010]
        at 
org.apache.drill.exec.rpc.user.QueryResultHandler.resultArrived(QueryResultHandler.java:119)
        at 
org.apache.drill.exec.rpc.user.UserClient.handleReponse(UserClient.java:113)
        at 
org.apache.drill.exec.rpc.BasicClientWithConnection.handle(BasicClientWithConnection.java:46)
        at 
org.apache.drill.exec.rpc.BasicClientWithConnection.handle(BasicClientWithConnection.java:31)
        at org.apache.drill.exec.rpc.RpcBus.handle(RpcBus.java:67)
        at org.apache.drill.exec.rpc.RpcBus$RequestEvent.run(RpcBus.java:374)
        at 
org.apache.drill.common.SerializedExecutor$RunnableProcessor.run(SerializedExecutor.java:89)
        at 
org.apache.drill.exec.rpc.RpcBus$SameExecutor.execute(RpcBus.java:252)
        at 
org.apache.drill.common.SerializedExecutor.execute(SerializedExecutor.java:123)
        at 
org.apache.drill.exec.rpc.RpcBus$InboundHandler.decode(RpcBus.java:285)
        at 
org.apache.drill.exec.rpc.RpcBus$InboundHandler.decode(RpcBus.java:257)
        at 
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
        at 
io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:254)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
        at 
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
        at 
io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)
        at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:847)
        at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
        at java.lang.Thread.run(Unknown Source)
0: jdbc:drill:zk=local>


Thanks for your help.

Kind regards,
Arman

This message (and any attached documents) contains confidential information and 
is intended only for the named recipient and may contain confidential, 
proprietary or legally privileged information. If you are not the named 
addressee you should not disseminate, distribute or copy this e-mail or its 
attachments. Please notify the sender immediately by e-mail if you have 
received this e-mail by mistake and delete this e-mail and any attachments from 
your system. Any views or opinions presented are solely those of the author and 
do not necessarily represent those of Symmetry Investments UK LLP or any of its 
affiliates.

This message has been issued by Symmetry Investments, or on behalf of one of 
its affiliates.

E-mail transmission cannot be guaranteed to be secure or error-free as 
information could be intercepted, corrupted, lost, destroyed, arrive late or 
incomplete, or contain viruses. The sender therefore does not accept liability 
for any errors or omissions in the contents of this message which arise as a 
result of e-mail transmission. If verification is required please request a 
hard-copy version. This message is provided for informational purposes and 
should not be construed as a solicitation or offer to buy or sell any 
securities or related financial instruments.

We do not warrant that this e-mail is virus free. You must therefore take full 
responsibility for virus checking.

Symmetry Investments UK LLP is incorporated in England & Wales, registration 
number OC386690 and whose registered office is at 2nd Floor, 15 Sackville 
Street, London, W1S 3DJ, United Kingdom.

Symmetry Investments UK LLP is authorised and regulated in the United Kingdom 
by the Financial Conduct Authority.

Reply via email to