Cannot convert RexNode to equivalent Dremio expression. RexNode Class: org.apache.calcite.rex.RexDynamicParam, RexNode Digest: ?0

A simple query fails

SELECT CONVERT_FROM("metadata", 'JSON') FROM devdata.pinpoint.signal WHERE dir0=?

with

Cannot convert RexNode to equivalent Dremio expression. RexNode Class: org.apache.calcite.rex.RexDynamicParam, RexNode Digest: ?0

Attached is the query profile

a23174d3-2ea6-45f4-b60e-2d2b78a2b8bf.zip (5.4 KB)

If i try and re-run again i get:

SCHEMA_CHANGE ERROR: Schema changed for CONVERT_FROM(EXPR$0, ‘JSON’). Original schema struct<active::boolean, closed_issues::int64, new_issues::int64, open_issues::int64, starting_backlog::int64, avg_cycle_time::int64, issue_days::int64, issues_completed::int64, completed_issues::int64, days_open::int64, in_progress_duration::int64, issues_completed_excluding_epics::int64, release_duration::int64, time_to_start::int64, verification_duration::int64, code_changes::int64, commits::int64, percentile_rank::int64, closed_not_worked_issues::int64, defect_issues::int64, enhancement_issues::int64, new_feature_issues::int64, other_issues::int64, closed_defects::int64, codebase::int64, defects_by_priority::list<null>, invalid_defects::int64, open_defects::int64, total_defects::int64, defects_by_repo::list<null>, sloc_by_language::list<struct<Language::varchar, sloc::int64>>, sloc_by_repo::list<struct<repo_id::varchar, repo_name::varchar, sloc::int64>>, cost_percentile::int64, location_id::varchar, location_name::varchar, person_salary::int64, signals::list<struct<name::varchar, value::int64>>, team_count::int64, team_id::varchar, team_name::varchar, user_name::varchar, defects_closed::int64, total_closed::int64>, New schema struct<active::boolean, closed_issues::int64, new_issues::int64, open_issues::int64, starting_backlog::int64, avg_cycle_time::int64, issue_days::int64, issues_completed::int64, completed_issues::int64, days_open::int64, in_progress_duration::int64, issues_completed_excluding_epics::int64, release_duration::int64, time_to_start::int64, verification_duration::int64, code_changes::int64, commits::int64, percentile_rank::int64, closed_not_worked_issues::int64, defect_issues::int64, enhancement_issues::int64, new_feature_issues::int64, other_issues::int64, closed_defects::int64, codebase::int64, defects_by_priority::list<null>, invalid_defects::int64, open_defects::int64, total_defects::int64, defects_by_repo::list<null>, sloc_by_language::list<struct<Language::varchar, sloc::int64>>, sloc_by_repo::list<struct<repo_id::varchar, repo_name::varchar, sloc::int64>>, cost_percentile::int64, location_id::varchar, location_name::varchar, person_salary::int64, signals::list<struct<name::varchar, value::int64>>, team_count::int64, team_id::varchar, team_name::varchar, user_name::varchar, defects_closed::int64, total_closed::int64, committed_issues::int64, completed_sprints::int64, initial_issues::int64>. SqlOperatorImpl CONVERT_FROM_JSON Location 1:4:4 Fragment 1:4 [Error Id: 06ac62d5-55e0-4346-b0eb-4fa5307696fb on 8f598154f1a2:31010] (org.apache.arrow.vector.util.SchemaChangeRuntimeException) Schema change error com.dremio.common.exceptions.UserException.schemaChangeError():88 com.dremio.sabot.op.fromjson.ConvertFromJsonOperator$JsonConverter.convert():267 com.dremio.sabot.op.fromjson.ConvertFromJsonOperator.outputData():135 com.dremio.sabot.driver.SmartOp$SmartSingleInput.outputData():185 com.dremio.sabot.driver.StraightPipe.pump():56 com.dremio.sabot.driver.Pipeline.doPump():82 com.dremio.sabot.driver.Pipeline.pumpOnce():72 com.dremio.sabot.exec.fragment.FragmentExecutor$DoAsPumper.run():306 com.dremio.sabot.exec.fragment.FragmentExecutor$DoAsPumper.run():302 java.security.AccessController.doPrivileged():-2 javax.security.auth.Subject.doAs():422 org.apache.hadoop.security.UserGroupInformation.doAs():1836 com.dremio.sabot.exec.fragment.FragmentExecutor.run():259 com.dremio.sabot.exec.fragment.FragmentExecutor.access$800():91 com.dremio.sabot.exec.fragment.FragmentExecutor$AsyncTaskImpl.run():600 com.dremio.sabot.task.AsyncTaskWrapper.run():103 com.dremio.sabot.task.slicing.SlicingThread.run():110

this could be because my driver didn’t replace the placeholder (which i fixed). but a strange error

Hi @jhaynie

Is the column metadata a string but has nested nested structures inside? Also are there any reflections on top of this dataset?

Thanks
@balaji.ramaswamy

No reflections. This is a nested JSON structure

The original issue is indeed that Dremio does not support placeholders in prepared queries. I’ll open a internal request to make the error message more explicit.

1 Like

Hi, I ran into the same problem, may I ask whether Dremio support placeholder now? Thanks