Hi There,
Getting the below error when I try and access JSON source data via Dremio (Loaded directly from JSON via NAS mount) - Able to access CSV file type data via ODBC with no issues. Can someone advise - looks like a bug in the ODBC driver???
Using latest version of the Windows 64 Bit ODBC driver published on the site as of today.
DataSource.Error: ODBC: ERROR [HY000] [Dremio][Connector] (1040) Dremio failed to execute the query: select “currency”,
“interestRate”,
“isAccountNotFound”,
“addAccountDate”,
“isHostAccount”,
“id”,
“accountId”,
“fiLoginStatus”,
“yodleeAccountNumberLast4”,
“fiLastUpdated”,
“accountName”,
“lastUpdatedInString”,
“fiLoginDisplayName”,
“lastUpdated”,
“isClosed”,
“value”,
“accountType”,
“fiLoginUIStatus”,
“isError”,
“isActive”,
“name”,
“accountTypeInt”,
“fiName”,
“accountSystemStatus”,
“klass”,
“currentBalance”
from “Test Files”.“HistoryTest2”
[30038]Query execution error. Details:[
SYSTEM ERROR: CompileException: Line 151, Column 30: No applicable constructor/method found for actual parameters “org.apache.arrow.vector.holders.UnionHolder”; candidates are: “public void com.dremio.exec.vector.complex.fn.JsonWriter.write(org.apache.arrow.vector.complex.reader.FieldReader) throws com.fasterxml.jackson.core.JsonGenerationException, java.io.IOException”
SqlOperatorImpl COMPLEX_TO_JSON
Location 0:0:1
SqlOperatorImpl COMPLEX_TO_JSON
Location 0:0:1
Fragment 0:0
[Error Id: 621cecb8-5338-41e4-aea4-99650bb5d0f7 on d595ca45e1df:31010]
(com.google.common.util.concurrent.UncheckedExecutionException) com.dremio.exec.exception.ClassTransformationException: Failure generating transformation classes for value:
package com.dremio.s;
import com.dremio.exec.exception.SchemaChangeException;
import com.dremio.exec.expr.VectorResolver;
import com.dremio.exec.expr.fn.FunctionErrorContext;
import com.dremio.exec.record.VectorAccessible;
import com.dremio.sabot.exec.context.FunctionContext;
import com.dremio.sabot.op.project.ProjectorTemplate;
import io.netty.buffer.ArrowBuf;
import org.apache.arrow.vector.VarCharVector;
import org.apache.arrow.vector.complex.UnionVector;
import org.apache.arrow.vector.holders.NullableBigIntHolder;
import org.apache.arrow.vector.holders.NullableVarBinaryHolder;
import org.apache.arrow.vector.holders.NullableVarCharHolder;
import org.apache.arrow.vector.holders.UnionHolder;
public class ProjectorGen11
extends ProjectorTemplate
{
FunctionErrorContext work0;
ArrowBuf work1;
FunctionErrorContext work2;
UnionVector vv3;
NullableBigIntHolder constant7;
VarCharVector vv9;
FunctionErrorContext work10;
ArrowBuf work11;
FunctionErrorContext work12;
UnionVector vv13;
VarCharVector vv17;
FunctionErrorContext work18;
ArrowBuf work19;
FunctionErrorContext work20;
UnionVector vv21;
VarCharVector vv25;
public ProjectorGen11() {
__INIT__();
}
public void doSetup(FunctionContext context, VectorAccessible incoming, VectorAccessible outgoing, com.dremio.sabot.op.project.Projector.ComplexWriterCreator writerCreator)
throws SchemaChangeException
{
{
work0 = (context).getFunctionErrorContext(0);
work1 = (context).getManagedBuffer();
work2 = (context).getFunctionErrorContext(1);
vv3 = ((UnionVector) VectorResolver.simple((incoming), UnionVector.class, 1));
/** start SETUP for function convert_toJSON **/
{
ArrowBuf buffer = work1;
FunctionErrorContext errCtx = work2;
{}
work1 = buffer;
work2 = errCtx;
}
/** end SETUP for function convert_toJSON **/
NullableBigIntHolder out6 = new NullableBigIntHolder();
out6 .value = 65536L;
out6 .isSet = 1;
constant7 = out6;
/** start SETUP for function castVARCHAR **/
{
NullableBigIntHolder length = constant7;
FunctionErrorContext errCtx = work0;
{}
work0 = errCtx;
}
/** end SETUP for function castVARCHAR **/
vv9 = ((VarCharVector) VectorResolver.simple((outgoing), VarCharVector.class, 0));
work10 = (context).getFunctionErrorContext(2);
work11 = (context).getManagedBuffer();
work12 = (context).getFunctionErrorContext(3);
vv13 = ((UnionVector) VectorResolver.simple((incoming), UnionVector.class, 15));
/** start SETUP for function convert_toJSON **/
{
ArrowBuf buffer = work11;
FunctionErrorContext errCtx = work12;
{}
work11 = buffer;
work12 = errCtx;
}
/** end SETUP for function convert_toJSON **/
/** start SETUP for function castVARCHAR **/
{
NullableBigIntHolder length = constant7;
FunctionErrorContext errCtx = work10;
{}
work10 = errCtx;
}
/** end SETUP for function castVARCHAR **/
vv17 = ((VarCharVector) VectorResolver.simple((outgoing), VarCharVector.class, 1));
work18 = (context).getFunctionErrorContext(4);
work19 = (context).getManagedBuffer();
work20 = (context).getFunctionErrorContext(5);
vv21 = ((UnionVector) VectorResolver.simple((incoming), UnionVector.class, 27));
/** start SETUP for function convert_toJSON **/
{
ArrowBuf buffer = work19;
FunctionErrorContext errCtx = work20;
{}
work19 = buffer;
work20 = errCtx;
}
/** end SETUP for function convert_toJSON **/
/** start SETUP for function castVARCHAR **/
{
NullableBigIntHolder length = constant7;
FunctionErrorContext errCtx = work18;
{}
work18 = errCtx;
}
/** end SETUP for function castVARCHAR **/
vv25 = ((VarCharVector) VectorResolver.simple((outgoing), VarCharVector.class, 2));
}
}
public void doEval(int inIndex, int outIndex)
throws SchemaChangeException
{
{
UnionHolder out4 = new UnionHolder();
{
out4 .isSet = vv3 .isSet((inIndex));
if (out4 .isSet == 1) {
vv3 .get((inIndex), out4);
}
}
//---- start of eval portion of convert_toJSON function. ----//
NullableVarBinaryHolder out5 = new NullableVarBinaryHolder();
{
if (out4 .isSet == 0) {
out5 .isSet = 0;
} else {
final NullableVarBinaryHolder out = new NullableVarBinaryHolder();
UnionHolder input = out4;
ArrowBuf buffer = work1;
FunctionErrorContext errCtx = work2;
JsonConvertTo$ConvertToJson_eval: {
if (input.isSet()) {
out.start = 0;
java.io.ByteArrayOutputStream stream = new java.io.ByteArrayOutputStream();
try {
com.dremio.exec.vector.complex.fn.JsonWriter jsonWriter = new com.dremio.exec.vector.complex.fn.JsonWriter(stream, true, false);
jsonWriter.write(input);
} catch (Exception e) {
throw errCtx.error().message("%s", e).build();
}
byte[] bytea = stream.toByteArray();
out.buffer = buffer = buffer.reallocIfNeeded(bytea.length);
out.buffer.setBytes(0, bytea);
out.end = bytea.length;
}
}
work1 = buffer;
work2 = errCtx;
out.isSet = 1;
out5 = out;
}
}
//---- end of eval portion of convert_toJSON function. ----//
//---- start of eval portion of castVARCHAR function. ----//
NullableVarCharHolder out8 = new NullableVarCharHolder();
{
if ((out5 .isSet*constant7 .isSet) == 0) {
out8 .isSet = 0;
} else {
final NullableVarCharHolder out = new NullableVarCharHolder();
NullableVarBinaryHolder in = out5;
NullableBigIntHolder length = constant7;
FunctionErrorContext errCtx = work0;
CastVarBinaryVarChar_eval: {
int charCount = com.dremio.exec.expr.fn.impl.StringFunctionUtil.getUTF8CharLength(in.buffer.asNettyBuffer(), in.start, in.end, errCtx);
out.buffer = in.buffer;
out.start = in.start;
if (charCount <= length.value || length.value == 0) {
out.end = in.end;
} else
{
out.end = com.dremio.exec.expr.fn.impl.StringFunctionUtil.getUTF8CharPosition(
in.buffer.asNettyBuffer(),
in.start,
in.end,
(int) length.value,
errCtx
);
}
}
work0 = errCtx;
out.isSet = 1;
out8 = out;
}
}
//---- end of eval portion of castVARCHAR function. ----//
if (!(out8 .isSet == 0)) {
vv9 .setSafe((outIndex), out8 .isSet, out8 .start, out8 .end, out8 .buffer);
}
UnionHolder out14 = new UnionHolder();
{
out14 .isSet = vv13 .isSet((inIndex));
if (out14 .isSet == 1) {
vv13 .get((inIndex), out14);
}
}
//---- start of eval portion of convert_toJSON function. ----//
NullableVarBinaryHolder out15 = new NullableVarBinaryHolder();
{
if (out14 .isSet == 0) {
out15 .isSet = 0;
} else {
final NullableVarBinaryHolder out = new NullableVarBinaryHolder();
UnionHolder input = out14;
ArrowBuf buffer = work11;
FunctionErrorContext errCtx = work12;
JsonConvertTo$ConvertToJson_eval: {
if (input.isSet()) {
out.start = 0;
java.io.ByteArrayOutputStream stream = new java.io.ByteArrayOutputStream();
try {
com.dremio.exec.vector.complex.fn.JsonWriter jsonWriter = new com.dremio.exec.vector.complex.fn.JsonWriter(stream, true, false);
jsonWriter.write(input);
} catch (Exception e) {
throw errCtx.error().message("%s", e).build();
}
byte[] bytea = stream.toByteArray();
out.buffer = buffer = buffer.reallocIfNeeded(bytea.length);
out.buffer.setBytes(0, bytea);
out.end = bytea.length;
}
}
work11 = buffer;
work12 = errCtx;
out.isSet = 1;
out15 = out;
}
}�pDz
Details:
DataSourceKind=Odbc
DataSourcePath=dsn=Dremio
OdbcErrors=[Table]