# UnsupportedOperationException: Gandiva code generation is handled during build

**URL:** <https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777>\
**Category:** Uncategorized\
**Created:** [May 1, 2024, 2:57pm UTC](https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777 "2024-05-01T14:57:25Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ken](https://sea2.discourse-cdn.com/flex020/user_avatar/community.dremio.com/ken/32/5784_2.png) [@Ken](https://community.dremio.com/u/Ken)\
**Post date:** [May 1, 2024, 2:57pm UTC](https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777/1 "2024-05-01T14:57:25Z")

</div>

I am new to Dremio and I have some files stored in Minio in the Iceberg format.

I have a table which captures the Market Capitalisation of some stocks.

I have a column called `adj_market_capitalisation`, which is essentially market capitalisation in HKD.

 ![image](https://us1.discourse-cdn.com/flex020/uploads/dremio/original/2X/7/7cee6dd3cd57d11dcdc1a4b26689c48978ee0c88.png)

I want to create a dimension column which classifies market capitalisation size of a stock with a case-logic.

It worked previously in postgresql, but in dremio, I have getting the error

```auto
UnsupportedOperationException: Gandiva code generation is handled during build.

```

I read other posts that it might be due to mixed type.

but my adj\_market\_capitalisation has the type of DECIMAL.

========

Query Profile:  
[ed4aecf3-90d5-4d46-bb3b-0646a4ebe1ac.zip](https://community.dremio.com/uploads/short-url/yuAktD5YKldbWGsanR2c6iWQL7H.zip) (28.7 KB)

---

<div class="post-metadata">

**Author:** ![Ken](https://sea2.discourse-cdn.com/flex020/user_avatar/community.dremio.com/ken/32/5784_2.png) [@Ken](https://community.dremio.com/u/Ken)\
**Post date:** [May 1, 2024, 2:58pm UTC](https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777/2 "2024-05-01T14:58:09Z")

</div>

Screenshot with error message.

 ![image](https://us1.discourse-cdn.com/flex020/uploads/dremio/original/2X/3/32b38453431d05b48100aa82da5c999071ea0dec.png)

---

<div class="post-metadata">

**Author:** ![Ken](https://sea2.discourse-cdn.com/flex020/user_avatar/community.dremio.com/ken/32/5784_2.png) [@Ken](https://community.dremio.com/u/Ken)\
**Post date:** [May 1, 2024, 3:05pm UTC](https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777/3 "2024-05-01T15:05:34Z")

</div>

Here are the logs from the kubernetes pod running the Dremio Executor.

```auto
   at com.dremio.sabot.driver.SmartOp$SmartSingleInput.setup(SmartOp.java:317)
    at com.dremio.sabot.driver.Pipe$SetupVisitor.visitSingleInput(Pipe.java:83)
    at com.dremio.sabot.driver.Pipe$SetupVisitor.visitSingleInput(Pipe.java:70)
    at com.dremio.sabot.driver.SmartOp$SmartSingleInput.accept(SmartOp.java:258)
    at com.dremio.sabot.driver.StraightPipe.setup(StraightPipe.java:101)
    at com.dremio.sabot.driver.StraightPipe.setup(StraightPipe.java:100)
    at com.dremio.sabot.driver.StraightPipe.setup(StraightPipe.java:100)
    at com.dremio.sabot.driver.StraightPipe.setup(StraightPipe.java:100)
    at com.dremio.sabot.driver.Pipeline.setup(Pipeline.java:79)
    at com.dremio.sabot.exec.fragment.FragmentExecutor.setupExecution(FragmentExecutor.java:723)
    at com.dremio.sabot.exec.fragment.FragmentExecutor.run(FragmentExecutor.java:510)
    at com.dremio.sabot.exec.fragment.FragmentExecutor$AsyncTaskImpl.run(FragmentExecutor.java:1213)
    at com.dremio.sabot.task.AsyncTaskWrapper.run(AsyncTaskWrapper.java:130)
    at com.dremio.sabot.task.slicing.SlicingThread.mainExecutionLoop(SlicingThread.java:278)
    at com.dremio.sabot.task.slicing.SlicingThread.run(SlicingThread.java:185)
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.UnsupportedOperationException: Gandiva code generation is handled during build.
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2087)
    at com.google.common.cache.LocalCache.get(LocalCache.java:4036)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4059)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5041)
    at com.dremio.exec.compile.CodeCompiler.getImplementationClassFromExpToCompiledClazzCache(CodeCompiler.java:102)
    at com.dremio.exec.compile.CodeCompiler.getImplementationClass(CodeCompiler.java:80)
    at com.dremio.exec.compile.CodeCompiler.getImplementationClass(CodeCompiler.java:69)
    at com.dremio.exec.expr.CodeGenerator.getImplementationClass(CodeGenerator.java:165)
    at com.dremio.exec.expr.SplitStageExecutor.setupFinish(SplitStageExecutor.java:204)
    at com.dremio.exec.expr.SplitStageExecutor.setupProjector(SplitStageExecutor.java:240)
    at com.dremio.exec.expr.ExpressionSplitter.projectorSetup(ExpressionSplitter.java:408)
    at com.dremio.exec.expr.ExpressionSplitter.setupProjector(ExpressionSplitter.java:690)
    at com.dremio.sabot.op.project.ProjectOperator.setup(ProjectOperator.java:164)
    at com.dremio.sabot.driver.SmartOp$SmartSingleInput.setup(SmartOp.java:313)
    ... 14 common frames omitted
Caused by: java.lang.UnsupportedOperationException: Gandiva code generation is handled during build.
    at com.dremio.exec.expr.fn.GandivaFunctionHolder.renderStart(GandivaFunctionHolder.java:52)
    at com.dremio.exec.expr.EvaluationVisitor$EvalVisitor.visitFunctionHolderExpression(EvaluationVisitor.java:248)
    at com.dremio.exec.expr.EvaluationVisitor$InnerMethodNester.visitFunctionHolderExpression(EvaluationVisitor.java:1409)
    at com.dremio.exec.expr.EvaluationVisitor$CSEFilter.visitFunctionHolderExpression(EvaluationVisitor.java:1153)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.lambda$visitFunctionHolderExpression$0(EvaluationVisitor.java:1583)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.preProcessIfConstant(EvaluationVisitor.java:1567)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitFunctionHolderExpression(EvaluationVisitor.java:1582)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitFunctionHolderExpression(EvaluationVisitor.java:1527)
    at com.dremio.common.expression.FunctionHolderExpression.accept(FunctionHolderExpression.java:53)
    at com.dremio.exec.expr.EvaluationVisitor$EvalVisitor.visitFunctionHolderExpression(EvaluationVisitor.java:256)
    at com.dremio.exec.expr.EvaluationVisitor$InnerMethodNester.visitFunctionHolderExpression(EvaluationVisitor.java:1409)
    at com.dremio.exec.expr.EvaluationVisitor$CSEFilter.visitFunctionHolderExpression(EvaluationVisitor.java:1153)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.lambda$visitFunctionHolderExpression$0(EvaluationVisitor.java:1583)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.preProcessIfConstant(EvaluationVisitor.java:1567)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitFunctionHolderExpression(EvaluationVisitor.java:1582)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitFunctionHolderExpression(EvaluationVisitor.java:1527)
    at com.dremio.common.expression.FunctionHolderExpression.accept(FunctionHolderExpression.java:53)
    at com.dremio.exec.expr.EvaluationVisitor$EvalVisitor.visitIfExpression(EvaluationVisitor.java:276)
    at com.dremio.exec.expr.EvaluationVisitor$InnerMethodNester.visitIfExpression(EvaluationVisitor.java:1434)
    at com.dremio.exec.expr.EvaluationVisitor$CSEFilter.visitIfExpression(EvaluationVisitor.java:1164)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.lambda$visitIfExpression$3(EvaluationVisitor.java:1613)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.preProcessIfConstant(EvaluationVisitor.java:1567)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitIfExpression(EvaluationVisitor.java:1613)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitIfExpression(EvaluationVisitor.java:1527)
    at com.dremio.common.expression.IfExpression.accept(IfExpression.java:50)
    at com.dremio.exec.expr.EvaluationVisitor$EvalVisitor.visitIfExpression(EvaluationVisitor.java:348)
    at com.dremio.exec.expr.EvaluationVisitor$InnerMethodNester.visitIfExpression(EvaluationVisitor.java:1434)
    at com.dremio.exec.expr.EvaluationVisitor$CSEFilter.visitIfExpression(EvaluationVisitor.java:1164)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.lambda$visitIfExpression$3(EvaluationVisitor.java:1613)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.preProcessIfConstant(EvaluationVisitor.java:1567)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitIfExpression(EvaluationVisitor.java:1613)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitIfExpression(EvaluationVisitor.java:1527)
    at com.dremio.common.expression.IfExpression.accept(IfExpression.java:50)
    at com.dremio.exec.expr.EvaluationVisitor$EvalVisitor.visitFunctionHolderExpression(EvaluationVisitor.java:256)
    at com.dremio.exec.expr.EvaluationVisitor$InnerMethodNester.visitFunctionHolderExpression(EvaluationVisitor.java:1409)
    at com.dremio.exec.expr.EvaluationVisitor$CSEFilter.visitFunctionHolderExpression(EvaluationVisitor.java:1153)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.lambda$visitFunctionHolderExpression$0(EvaluationVisitor.java:1583)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.preProcessIfConstant(EvaluationVisitor.java:1567)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitFunctionHolderExpression(EvaluationVisitor.java:1582)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitFunctionHolderExpression(EvaluationVisitor.java:1527)
    at com.dremio.common.expression.FunctionHolderExpression.accept(FunctionHolderExpression.java:53)
    at com.dremio.exec.expr.EvaluationVisitor$EvalVisitor.visitCaseExpression(EvaluationVisitor.java:439)
    at com.dremio.exec.expr.EvaluationVisitor$InnerMethodNester.visitCaseExpression(EvaluationVisitor.java:1459)
    at com.dremio.exec.expr.EvaluationVisitor$CSEFilter.visitCaseExpression(EvaluationVisitor.java:1176)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.lambda$visitCaseExpression$4(EvaluationVisitor.java:1620)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.preProcessIfConstant(EvaluationVisitor.java:1567)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitCaseExpression(EvaluationVisitor.java:1619)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitCaseExpression(EvaluationVisitor.java:1527)
    at com.dremio.common.expression.CaseExpression.accept(CaseExpression.java:48)
    at com.dremio.exec.expr.EvaluationVisitor$EvalVisitor.visitValueVectorWriteExpression(EvaluationVisitor.java:706)
    at com.dremio.exec.expr.EvaluationVisitor$EvalVisitor.visitUnknown(EvaluationVisitor.java:625)
    at com.dremio.exec.expr.EvaluationVisitor$InnerMethodNester.visitUnknown(EvaluationVisitor.java:1494)
    at com.dremio.exec.expr.EvaluationVisitor$CSEFilter.visitUnknown(EvaluationVisitor.java:1316)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.lambda$visitUnknown$16(EvaluationVisitor.java:1704)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.preProcessIfConstant(EvaluationVisitor.java:1567)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitUnknown(EvaluationVisitor.java:1704)
    at com.dremio.exec.expr.EvaluationVisitor$ConstantFilter.visitUnknown(EvaluationVisitor.java:1527)
    at com.dremio.exec.expr.ValueVectorWriteExpression.accept(ValueVectorWriteExpression.java:63)
    at com.dremio.exec.expr.EvaluationVisitor.addExpr(EvaluationVisitor.java:125)
    at com.dremio.exec.expr.ClassGenerator.addExpr(ClassGenerator.java:394)
    at com.dremio.exec.expr.ClassGenerator.evaluateAllLazyExps(ClassGenerator.java:449)
    at com.dremio.exec.compile.CodeCompiler$ExpressionsToCompiledClazzCacheLoader.load(CodeCompiler.java:151)
    at com.dremio.exec.compile.CodeCompiler$ExpressionsToCompiledClazzCacheLoader.load(CodeCompiler.java:139)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3589)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2328)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2187)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2081)
    ... 27 common frames omitted

```

---

<div class="post-metadata">

**Author:** ![Ken](https://sea2.discourse-cdn.com/flex020/user_avatar/community.dremio.com/ken/32/5784_2.png) [@Ken](https://community.dremio.com/u/Ken)\
**Post date:** [May 1, 2024, 3:10pm UTC](https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777/4 "2024-05-01T15:10:15Z")

</div>

The screenshot below shows that the field `adj_market_capitalisation` is a decimal field.

 ![image](https://us1.discourse-cdn.com/flex020/uploads/dremio/original/2X/3/369a6265703f148e909dc1a3e78d0809fc9c1c7d.png)

---

<div class="post-metadata">

**Author:** ![Simon\_Ashley](https://sea2.discourse-cdn.com/flex020/user_avatar/community.dremio.com/simon_ashley/32/4699_2.png) [@Simon\_Ashley](https://community.dremio.com/u/Simon_Ashley)\
**Post date:** [May 2, 2024, 2:14pm UTC](https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777/5 "2024-05-02T14:14:47Z")

</div>

Thanks for sharing the profile.

Does the query work if you run the following in the same session

ALTER SESSION SET “exec.preferred.codegenerator” = ‘java’;  
SELECT \* FROM common.l1.“etnet\_detail\_quote”

---

<div class="post-metadata">

**Author:** ![Ken](https://sea2.discourse-cdn.com/flex020/user_avatar/community.dremio.com/ken/32/5784_2.png) [@Ken](https://community.dremio.com/u/Ken)\
**Post date:** [May 3, 2024, 12:02pm UTC](https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777/6 "2024-05-03T12:02:05Z")

</div>

Hi @Simon_Ashley

 ![image](https://us1.discourse-cdn.com/flex020/uploads/dremio/original/2X/0/058f67ad6d634a303ade7bb09fa0e7db4e09ce82.png)

Thanks for your advise, but it still does not work.

=======

However, I have a workaround which avoids multi-case statements.

I put my critera in a separate table (via dbt seed).

Then I left join that table with some conditions, and it works perfectly.

Below is my code.

```auto
with clean_data as (

....

) select ...
     q."size" as market_capitalisation_size

     from clean_data p
     left outer join {{ ref('market_capitalisation_size')}} q
     on p.adj_market_capitalisation >= q.minimum_hkd
     and (
             (q.maximum_hkd is not null and p.adj_market_capitalisation < q.maximum_hkd) or
             (q.maximum_hkd is null)
         )

```

My seed file `market_capitalisation_size` looks like this

```auto
size,minimum_hkd,maximum_hkd
MEGA_CAP,200000000000,
LARGE_CAP,10000000000,200000000000
MID_CAP,2000000000,10000000000
SMALL_CAP,250000000,2000000000
MICRO_CAP,0,250000000

```

It works perfectly now

---

<div class="post-metadata">

**Author:** ![balaji.ramaswamy](https://sea2.discourse-cdn.com/flex020/user_avatar/community.dremio.com/balaji.ramaswamy/32/843_2.png) [@balaji.ramaswamy](https://community.dremio.com/u/balaji.ramaswamy)\
**Post date:** [May 5, 2024, 4:42pm UTC](https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777/7 "2024-05-05T16:42:09Z")

</div>

@Ken Looks like there was an issue fixed recently when Nested CASE WHEN with CAST was used. Let me check if you have the fix

---

<div class="post-metadata">

**Author:** ![balaji.ramaswamy](https://sea2.discourse-cdn.com/flex020/user_avatar/community.dremio.com/balaji.ramaswamy/32/843_2.png) [@balaji.ramaswamy](https://community.dremio.com/u/balaji.ramaswamy)\
**Post date:** [May 5, 2024, 5:39pm UTC](https://community.dremio.com/t/unsupportedoperationexception-gandiva-code-generation-is-handled-during-build/11777/8 "2024-05-05T17:39:49Z")

</div>

@Ken Seems like a different issue, we have an internal ticket with a repro to investigate
