Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

type_coercion internal error "cannot find compatible type" #3797

Open
andygrove opened this issue Oct 11, 2022 · 1 comment
Open

type_coercion internal error "cannot find compatible type" #3797

andygrove opened this issue Oct 11, 2022 · 1 comment
Labels
bug Something isn't working optimizer Optimizer rules

Comments

@andygrove
Copy link
Member

andygrove commented Oct 11, 2022

Describe the bug
A clear and concise description of what the bug is.

Internal error: Optimizer rule 'type_coercion' failed due to unexpected error: 
Error during planning: 
Can not find compatible types to compare Boolean 
with [Struct([Field { name: "foo", data_type: Boolean, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }]), Utf8]. This was likely caused by a bug in DataFusion's code and we would welcome that you file an bug report in our issue tracker', datafusion/core/src/physical_plan/planner.rs:1987:9

To Reproduce
in planner.rs stop skipping failing rules then run cargo test.

    fn make_session_state() -> SessionState {
        let runtime = Arc::new(RuntimeEnv::default());
        let config = SessionConfig::new();
        let config = config.set_bool(crate::config::OPT_OPTIMIZER_SKIP_FAILED_RULES, false);
        SessionState::with_config_rt(config, runtime)
    }

Expected behavior
A clear and concise description of what you expected to happen.

Additional context
Add any other context about the problem here.

@andygrove andygrove added bug Something isn't working optimizer Optimizer rules labels Oct 11, 2022
@comphead
Copy link
Contributor

@andygrove what is expected behavior?
I can see 1 test in_list_types() failed but this is because the test itself is wrong.

.project(vec![col("c12").lt_eq(lit(0.025)).in_list(list, false)])
lt_eq returns boolean and the projection == boolean in (string, boolean) and expectedly failed.

We can remove this piece of test, as it doesn't make much sense

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working optimizer Optimizer rules
Projects
None yet
Development

No branches or pull requests

2 participants