### Describe the bug
When using an enum column as part of a join condition, Met…abase doesn't cast the non-enum side to the enum type, resulting in an error on PostgreSQL. When the same condition is used as a filter, a cast is emitted and no error occurs. In particular this produces if one side of the condition is a custom expression of just a string, i.e., checking for a particular enum value.
### To Reproduce
There's no enums in Sample Database.
Run the following in PostgreSQL to set up the test:
```
create table students (child_name text, birthday date);
insert into students values ('Tom', '1/1/2000'),('Bill', '2/1/2000'),('Claire','3/1/2000');
create type fruit as enum ('apple','orange','pear');
create table favorite_fruits (child_name text, favorite fruit);
insert into favorite_fruits values ('Tom', 'apple'),('Bill','apple'),('Claire','pear');
grant select on students to public;
grant select on favorite_fruits to public;
```
Sync the database in Metabase, then create a join in the notebook editor like so (note that one side of the "favorite" join condition is a custom expression "apple"):
<img width="843" height="398" alt="Image" src="https://github.com/user-attachments/assets/56e9828a-a66f-4998-af73-69ac4d45bf1b" />
Run the query and you will get the error
```
ERROR: operator does not exist: character varying = fruit
Hint: No operator matches the given name and argument types. You might need to add explicit type casts.
Position: 708
```
Remove the fruit join condition and add it as a filter instead. Run the query and it will succeed.
### Expected behavior
The join should succeed.
### Logs
```
Sep 23 09:53:20 carver metabase[76492]: 2025-09-23 09:53:20,067 ERROR middleware.catch-exceptions :: Error processing query: ERROR: operator does not exist: character varying = fruit
Sep 23 09:53:20 carver metabase[76492]: Hint: No operator matches the given name and argument types. You might need to add explicit type casts.
Sep 23 09:53:20 carver metabase[76492]: Position: 708
Sep 23 09:53:20 carver metabase[76492]: {:database_id 5,
Sep 23 09:53:20 carver metabase[76492]: :parameterized false,
Sep 23 09:53:20 carver metabase[76492]: :started_at #t "2025-09-23T09:53:19.962528505-07:00[America/Los_Angeles]",
Sep 23 09:53:20 carver metabase[76492]: :via
Sep 23 09:53:20 carver metabase[76492]: [{:status :failed,
Sep 23 09:53:20 carver metabase[76492]: :class clojure.lang.ExceptionInfo,
Sep 23 09:53:20 carver metabase[76492]: :error
Sep 23 09:53:20 carver metabase[76492]: "Error executing query: ERROR: operator does not exist: character varying = fruit\n Hint: No operator matches the given name and argument types. You might need to add explicit type casts.\n Position: 708",
Sep 23 09:53:20 carver metabase[76492]: :stacktrace
Sep 23 09:53:20 carver metabase[76492]: ["--> driver.sql_jdbc.execute$execute_reducible_query$fn__96103$fn__96104.invoke(execute.clj:782)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$execute_reducible_query$fn__96103.invoke(execute.clj:779)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$fn__95895$fn__95896.invoke(execute.clj:430)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$do_with_resolved_connection.invokeStatic(execute.clj:355)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$do_with_resolved_connection.invoke(execute.clj:335)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$fn__95895.invokeStatic(execute.clj:424)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$fn__95895.invoke(execute.clj:422)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:772)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:761)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc$fn__98000.invokeStatic(sql_jdbc.clj:81)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc$fn__98000.invoke(sql_jdbc.clj:79)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.pipeline$_STAR_execute_STAR_.invokeStatic(pipeline.clj:58)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.pipeline$_STAR_execute_STAR_.invoke(pipeline.clj:43)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.pipeline$_STAR_run_STAR_.invokeStatic(pipeline.clj:116)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.pipeline$_STAR_run_STAR_.invoke(pipeline.clj:105)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$run.invokeStatic(execute.clj:64)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$run.invoke(execute.clj:58)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$swap_destination_db_middleware$fn__68889.invoke(enterprise.clj:73)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$apply_impersonation_postprocessing_middleware$fn__68872.invoke(enterprise.clj:48)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.update_used_cards$update_used_cards_BANG_$fn__69088.invoke(update_used_cards.clj:67)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$add_native_form_to_result_metadata$fn__69177.invoke(execute.clj:25)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$add_preprocessed_query_to_result_metadata_for_userland_query$fn__69183.invoke(execute.clj:36)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___69030.invoke(cache.clj:241)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.permissions$check_query_permissions$fn__68771.invoke(permissions.clj:163)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$check_download_permissions_middleware$fn__68899.invoke(enterprise.clj:90)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$maybe_apply_column_level_perms_check_middleware$fn__68909.invoke(enterprise.clj:103)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$execute$fn__69211.invoke(execute.clj:96)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_qp_setup.invokeStatic(setup.clj:225)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_qp_setup.invoke(setup.clj:216)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$execute.invokeStatic(execute.clj:95)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$execute.invoke(execute.clj:91)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor$process_query_STAR__STAR_.invokeStatic(query_processor.clj:50)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor$process_query_STAR__STAR_.invoke(query_processor.clj:45)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$fn__68926$handle_audit_app_internal_queries__68927$fn__68929.invoke(enterprise.clj:135)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$handle_audit_app_internal_queries_middleware$fn__68937.invoke(enterprise.clj:142)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.process_userland_query$process_userland_query_middleware$fn__80738.invoke(process_userland_query.clj:179)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.catch_exceptions$catch_exceptions$fn__80798.invoke(catch_exceptions.clj:137)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor$process_query$fn__80863.invoke(query_processor.clj:81)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_canceled_chan$fn__69161.invoke(setup.clj:187)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_database_local_settings$fn__69155.invoke(setup.clj:181)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_driver$fn__69149$fn__69150.invoke(setup.clj:166)"
Sep 23 09:53:20 carver metabase[76492]: "driver$do_with_driver.invokeStatic(driver.clj:49)"
Sep 23 09:53:20 carver metabase[76492]: "driver$do_with_driver.invoke(driver.clj:44)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_driver$fn__69149.invoke(setup.clj:165)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_metadata_provider$fn__69141$fn__69144.invoke(setup.clj:151)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.store$do_with_metadata_provider.invokeStatic(store.clj:185)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.store$do_with_metadata_provider.invoke(store.clj:171)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.store$do_with_metadata_provider.invokeStatic(store.clj:178)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.store$do_with_metadata_provider.invoke(store.clj:171)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_metadata_provider$fn__69141.invoke(setup.clj:150)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_resolved_database$fn__69133.invoke(setup.clj:128)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_qp_setup.invokeStatic(setup.clj:232)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_qp_setup.invoke(setup.clj:216)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor$process_query.invokeStatic(query_processor.clj:79)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor$process_query.invoke(query_processor.clj:72)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.api$run_streaming_query$fn__88727.invoke(api.clj:87)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.streaming$_streaming_response$fn__86172$fn__86173$fn__86174.invoke(streaming.clj:224)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.streaming$_streaming_response$fn__86172$fn__86173.invoke(streaming.clj:222)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.streaming$do_with_streaming_rff.invokeStatic(streaming.clj:213)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.streaming$do_with_streaming_rff.invoke(streaming.clj:200)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.streaming$_streaming_response$fn__86172.invoke(streaming.clj:219)"
Sep 23 09:53:20 carver metabase[76492]: "server.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:79)"
Sep 23 09:53:20 carver metabase[76492]: "server.streaming_response$do_f_STAR_.invoke(streaming_response.clj:77)"
Sep 23 09:53:20 carver metabase[76492]: "server.streaming_response$do_f_async$task__83955.invoke(streaming_response.clj:94)"],
Sep 23 09:53:20 carver metabase[76492]: :error_type :invalid-query,
Sep 23 09:53:20 carver metabase[76492]: :ex-data
Sep 23 09:53:20 carver metabase[76492]: {:driver :postgres,
Sep 23 09:53:20 carver metabase[76492]: :sql
Sep 23 09:53:20 carver metabase[76492]: ["-- Metabase:: userID: 1 queryType: MBQL queryHash: cf82bbccb68cecee43c5e42e8e6b91c959d258e9b804cb1c5540c9d1d2b53500"
Sep 23 09:53:20 carver metabase[76492]: "SELECT"
Sep 23 09:53:20 carver metabase[76492]: " \"public\".\"students\".\"child_name\" AS \"child_name\","
Sep 23 09:53:20 carver metabase[76492]: " \"public\".\"students\".\"birthday\" AS \"birthday\","
Sep 23 09:53:20 carver metabase[76492]: " \"favorite_fruits - child_name\".\"child_name\" AS \"favorite_fruits - child_name__child_name\","
Sep 23 09:53:20 carver metabase[76492]: " \"favorite_fruits - child_name\".\"favorite\" AS \"favorite_fruits - child_name__favorite\""
Sep 23 09:53:20 carver metabase[76492]: "FROM"
Sep 23 09:53:20 carver metabase[76492]: " \"public\".\"students\""
Sep 23 09:53:20 carver metabase[76492]: " LEFT JOIN ("
Sep 23 09:53:20 carver metabase[76492]: " SELECT"
Sep 23 09:53:20 carver metabase[76492]: " \"public\".\"favorite_fruits\".\"child_name\" AS \"child_name\","
Sep 23 09:53:20 carver metabase[76492]: " \"public\".\"favorite_fruits\".\"favorite\" AS \"favorite\""
Sep 23 09:53:20 carver metabase[76492]: " FROM"
Sep 23 09:53:20 carver metabase[76492]: " \"public\".\"favorite_fruits\""
Sep 23 09:53:20 carver metabase[76492]: " ) AS \"favorite_fruits - child_name\" ON ("
Sep 23 09:53:20 carver metabase[76492]: " \"public\".\"students\".\"child_name\" = \"favorite_fruits - child_name\".\"child_name\""
Sep 23 09:53:20 carver metabase[76492]: " )"
Sep 23 09:53:20 carver metabase[76492]: " AND (? = \"favorite_fruits - child_name\".\"favorite\")"
Sep 23 09:53:20 carver metabase[76492]: "LIMIT"
Sep 23 09:53:20 carver metabase[76492]: " 2000"],
Sep 23 09:53:20 carver metabase[76492]: :params ("apple"),
Sep 23 09:53:20 carver metabase[76492]: :type :invalid-query}}],
Sep 23 09:53:20 carver metabase[76492]: :action_id nil,
Sep 23 09:53:20 carver metabase[76492]: :state "42883",
Sep 23 09:53:20 carver metabase[76492]: :error_type :invalid-query,
Sep 23 09:53:20 carver metabase[76492]: :json_query
Sep 23 09:53:20 carver metabase[76492]: {:database 5,
Sep 23 09:53:20 carver metabase[76492]: :type "query",
Sep 23 09:53:20 carver metabase[76492]: :query
Sep 23 09:53:20 carver metabase[76492]: {:source-table 424,
Sep 23 09:53:20 carver metabase[76492]: :joins
Sep 23 09:53:20 carver metabase[76492]: [{:fields "all",
Sep 23 09:53:20 carver metabase[76492]: :strategy "left-join",
Sep 23 09:53:20 carver metabase[76492]: :alias "favorite_fruits - child_name",
Sep 23 09:53:20 carver metabase[76492]: :condition
Sep 23 09:53:20 carver metabase[76492]: ["and"
Sep 23 09:53:20 carver metabase[76492]: ["="
Sep 23 09:53:20 carver metabase[76492]: ["field" 4105 {:base-type "type/Text"}]
Sep 23 09:53:20 carver metabase[76492]: ["field" 4103 {:base-type "type/Text", :join-alias "favorite_fruits - child_name"}]]
Sep 23 09:53:20 carver metabase[76492]: ["="
Sep 23 09:53:20 carver metabase[76492]: ["value" "apple" {:base_type "type/Text"}]
Sep 23 09:53:20 carver metabase[76492]: ["field" 4102 {:base-type "type/PostgresEnum", :join-alias "favorite_fruits - child_name"}]]],
Sep 23 09:53:20 carver metabase[76492]: :source-table 423}]},
Sep 23 09:53:20 carver metabase[76492]: :parameters [],
Sep 23 09:53:20 carver metabase[76492]: :middleware {:js-int-to-string? true, :userland-query? true, :add-default-userland-constraints? true}},
Sep 23 09:53:20 carver metabase[76492]: :native
Sep 23 09:53:20 carver metabase[76492]: {:query
Sep 23 09:53:20 carver metabase[76492]: "SELECT \"public\".\"students\".\"child_name\" AS \"child_name\", \"public\".\"students\".\"birthday\" AS \"birthday\", \"favorite_fruits - child_name\".\"child_name\" AS \"favorite_fruits - child_name__child_name\", \"favorite_fruits - child_name\".\"favorite\" AS \"favorite_fruits - child_name__favorite\" FROM \"public\".\"students\" LEFT JOIN (SELECT \"public\".\"favorite_fruits\".\"child_name\" AS \"child_name\", \"public\".\"favorite_fruits\".\"favorite\" AS \"favorite\" FROM \"public\".\"favorite_fruits\") AS \"favorite_fruits - child_name\" ON (\"public\".\"students\".\"child_name\" = \"favorite_fruits - child_name\".\"child_name\") AND (? = \"favorite_fruits - child_name\".\"favorite\") LIMIT 2000",
Sep 23 09:53:20 carver metabase[76492]: :params ("apple")},
Sep 23 09:53:20 carver metabase[76492]: :status :failed,
Sep 23 09:53:20 carver metabase[76492]: :class org.postgresql.util.PSQLException,
Sep 23 09:53:20 carver metabase[76492]: :stacktrace
Sep 23 09:53:20 carver metabase[76492]: ["org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2734)"
Sep 23 09:53:20 carver metabase[76492]: "org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2421)"
Sep 23 09:53:20 carver metabase[76492]: "org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372)"
Sep 23 09:53:20 carver metabase[76492]: "org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:518)"
Sep 23 09:53:20 carver metabase[76492]: "org.postgresql.jdbc.PgStatement.execute(PgStatement.java:435)"
Sep 23 09:53:20 carver metabase[76492]: "org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:196)"
Sep 23 09:53:20 carver metabase[76492]: "org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:139)"
Sep 23 09:53:20 carver metabase[76492]: "com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:743)"
Sep 23 09:53:20 carver metabase[76492]: "--> driver.sql_jdbc.execute$fn__96010.invokeStatic(execute.clj:591)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$fn__96010.invoke(execute.clj:589)"
Sep 23 09:53:20 carver metabase[76492]: "driver.postgres$fn__98488.invokeStatic(postgres.clj:1022)"
Sep 23 09:53:20 carver metabase[76492]: "driver.postgres$fn__98488.invoke(postgres.clj:1018)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$execute_statement_or_prepared_statement_BANG_.invokeStatic(execute.clj:604)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$execute_statement_or_prepared_statement_BANG_.invoke(execute.clj:600)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$execute_reducible_query$fn__96103$fn__96104.invoke(execute.clj:780)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$execute_reducible_query$fn__96103.invoke(execute.clj:779)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$fn__95895$fn__95896.invoke(execute.clj:430)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$do_with_resolved_connection.invokeStatic(execute.clj:355)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$do_with_resolved_connection.invoke(execute.clj:335)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$fn__95895.invokeStatic(execute.clj:424)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$fn__95895.invoke(execute.clj:422)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:772)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:761)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc$fn__98000.invokeStatic(sql_jdbc.clj:81)"
Sep 23 09:53:20 carver metabase[76492]: "driver.sql_jdbc$fn__98000.invoke(sql_jdbc.clj:79)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.pipeline$_STAR_execute_STAR_.invokeStatic(pipeline.clj:58)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.pipeline$_STAR_execute_STAR_.invoke(pipeline.clj:43)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.pipeline$_STAR_run_STAR_.invokeStatic(pipeline.clj:116)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.pipeline$_STAR_run_STAR_.invoke(pipeline.clj:105)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$run.invokeStatic(execute.clj:64)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$run.invoke(execute.clj:58)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$swap_destination_db_middleware$fn__68889.invoke(enterprise.clj:73)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$apply_impersonation_postprocessing_middleware$fn__68872.invoke(enterprise.clj:48)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$add_native_form_to_result_metadata$fn__69177.invoke(execute.clj:25)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$add_preprocessed_query_to_result_metadata_for_userland_query$fn__69183.invoke(execute.clj:36)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___69030.invoke(cache.clj:241)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$check_download_permissions_middleware$fn__68899.invoke(enterprise.clj:90)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$maybe_apply_column_level_perms_check_middleware$fn__68909.invoke(enterprise.clj:103)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$execute$fn__69211.invoke(execute.clj:96)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_qp_setup.invokeStatic(setup.clj:225)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$execute.invokeStatic(execute.clj:95)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.execute$execute.invoke(execute.clj:91)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor$process_query_STAR__STAR_.invoke(query_processor.clj:45)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.enterprise$fn__68926$handle_audit_app_internal_queries__68927$fn__68929.invoke(enterprise.clj:135)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.process_userland_query$process_userland_query_middleware$fn__80738.invoke(process_userland_query.clj:179)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.middleware.catch_exceptions$catch_exceptions$fn__80798.invoke(catch_exceptions.clj:137)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor$process_query$fn__80863.invoke(query_processor.clj:81)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_database_local_settings$fn__69155.invoke(setup.clj:181)"
Sep 23 09:53:20 carver metabase[76492]: "driver$do_with_driver.invokeStatic(driver.clj:49)"
Sep 23 09:53:20 carver metabase[76492]: "driver$do_with_driver.invoke(driver.clj:44)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_driver$fn__69149.invoke(setup.clj:165)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.store$do_with_metadata_provider.invokeStatic(store.clj:185)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.store$do_with_metadata_provider.invoke(store.clj:171)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.store$do_with_metadata_provider.invokeStatic(store.clj:178)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_metadata_provider$fn__69141.invoke(setup.clj:150)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_resolved_database$fn__69133.invoke(setup.clj:128)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.setup$do_with_qp_setup.invoke(setup.clj:216)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor$process_query.invokeStatic(query_processor.clj:79)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.api$run_streaming_query$fn__88727.invoke(api.clj:87)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.streaming$_streaming_response$fn__86172$fn__86173$fn__86174.invoke(streaming.clj:224)"
Sep 23 09:53:20 carver metabase[76492]: "query_processor.streaming$_streaming_response$fn__86172.invoke(streaming.clj:219)"
Sep 23 09:53:20 carver metabase[76492]: "server.streaming_response$do_f_STAR_.invoke(streaming_response.clj:77)"
Sep 23 09:53:20 carver metabase[76492]: "server.streaming_response$do_f_async$task__83955.invoke(streaming_response.clj:94)"],
Sep 23 09:53:20 carver metabase[76492]: :context :ad-hoc,
Sep 23 09:53:20 carver metabase[76492]: :error
Sep 23 09:53:20 carver metabase[76492]: :row_count 0,
Sep 23 09:53:20 carver metabase[76492]: :running_time 0,
Sep 23 09:53:20 carver metabase[76492]: {:database 5,
Sep 23 09:53:20 carver metabase[76492]: :middleware {:js-int-to-string? true, :userland-query? true, :add-default-userland-constraints? true},
Sep 23 09:53:20 carver metabase[76492]: :info {:executed-by 1, :context :ad-hoc},
Sep 23 09:53:20 carver metabase[76492]: :type :query,
Sep 23 09:53:20 carver metabase[76492]: {:source-table 424,
Sep 23 09:53:20 carver metabase[76492]: :joins
Sep 23 09:53:20 carver metabase[76492]: :strategy :left-join,
Sep 23 09:53:20 carver metabase[76492]: :fields
Sep 23 09:53:20 carver metabase[76492]: [:field 4102 {:join-alias "favorite_fruits - child_name"}]],
Sep 23 09:53:20 carver metabase[76492]: :condition
Sep 23 09:53:20 carver metabase[76492]: [:and
Sep 23 09:53:20 carver metabase[76492]: [:field 4105 {:base-type :type/Text}]
Sep 23 09:53:20 carver metabase[76492]: [:field 4103 {:base-type :type/Text, :join-alias "favorite_fruits - child_name"}]]
Sep 23 09:53:20 carver metabase[76492]: [:=
Sep 23 09:53:20 carver metabase[76492]: [:field 4102 {:base-type :type/PostgresEnum, :join-alias "favorite_fruits - child_name"}]]],
Sep 23 09:53:20 carver metabase[76492]: :source-metadata
Sep 23 09:53:20 carver metabase[76492]: [{:database_type "text",
Sep 23 09:53:20 carver metabase[76492]: :table_id 423,
Sep 23 09:53:20 carver metabase[76492]: :lib/deduplicated-name "child_name",
Sep 23 09:53:20 carver metabase[76492]: :name "child_name",
Sep 23 09:53:20 carver metabase[76492]: :lib/source :source/table-defaults,
Sep 23 09:53:20 carver metabase[76492]: :lib/original-display-name "child_name",
Sep 23 09:53:20 carver metabase[76492]: :field_ref [:field 4103 nil],
Sep 23 09:53:20 carver metabase[76492]: :effective_type :type/Text,
Sep 23 09:53:20 carver metabase[76492]: :id 4103,
Sep 23 09:53:20 carver metabase[76492]: :lib/desired-column-alias "child_name",
Sep 23 09:53:20 carver metabase[76492]: :position 0,
Sep 23 09:53:20 carver metabase[76492]: :display_name "child_name",
Sep 23 09:53:20 carver metabase[76492]: {:global {:distinct-count 3, :nil% 0.0},
Sep 23 09:53:20 carver metabase[76492]: {:type/Text
Sep 23 09:53:20 carver metabase[76492]: {:percent-json 0.0,
Sep 23 09:53:20 carver metabase[76492]: :percent-email 0.0,
Sep 23 09:53:20 carver metabase[76492]: :average-length 4.333333333333333}}},
Sep 23 09:53:20 carver metabase[76492]: {:database_type "fruit",
Sep 23 09:53:20 carver metabase[76492]: :semantic_type :type/Category,
Sep 23 09:53:20 carver metabase[76492]: :lib/deduplicated-name "favorite",
Sep 23 09:53:20 carver metabase[76492]: :name "favorite",
Sep 23 09:53:20 carver metabase[76492]: :lib/source :source/table-defaults,
Sep 23 09:53:20 carver metabase[76492]: :lib/original-display-name "favorite",
Sep 23 09:53:20 carver metabase[76492]: :source :fields,
Sep 23 09:53:20 carver metabase[76492]: :effective_type :type/PostgresEnum,
Sep 23 09:53:20 carver metabase[76492]: :id 4102,
Sep 23 09:53:20 carver metabase[76492]: :metabase.lib.query/transformation-added-base-type true,
Sep 23 09:53:20 carver metabase[76492]: :position 1,
Sep 23 09:53:20 carver metabase[76492]: :visibility_type :normal,
Sep 23 09:53:20 carver metabase[76492]: :fingerprint {:global {:distinct-count 2, :nil% 0.0}},
Sep 23 09:53:20 carver metabase[76492]: :source-query
Sep 23 09:53:20 carver metabase[76492]: {:source-table 423,
Sep 23 09:53:20 carver metabase[76492]: :fields [[:field 4103 nil] [:field 4102 nil]]}}],
Sep 23 09:53:20 carver metabase[76492]: :fields
Sep 23 09:53:20 carver metabase[76492]: [:field 4104 nil]
Sep 23 09:53:20 carver metabase[76492]: [:field 4102 {:join-alias "favorite_fruits - child_name", :qp/ignore-coercion true}]],
Sep 23 09:53:20 carver metabase[76492]: :limit 2000,
Sep 23 09:53:20 carver metabase[76492]: :data {:rows [], :cols []}}
Sep 23 09:53:20 carver metabase[76492]:
```
### Information about your Metabase installation
```JSON
{
"browser-info": {
"language": "en-US",
"platform": "MacIntel",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:143.0) Gecko/20100101 Firefox/143.0",
"vendor": ""
},
"metabase-info": {
"databases": [
"postgres",
"oracle",
"h2"
],
"run-mode": "prod",
"plan-alias": "",
"version": {
"date": "2025-09-19",
"tag": "v0.56.6.3",
"hash": "fd8e475"
},
"settings": {
"report-timezone": null
},
"hosting-env": "unknown",
"application-database": "postgres",
"application-database-details": {
"database": {
"name": "PostgreSQL",
"version": "17.6"
},
"jdbc-driver": {
"name": "PostgreSQL JDBC Driver",
"version": "42.7.7"
}
}
},
"system-info": {
"file.encoding": "UTF-8",
"java.runtime.name": "OpenJDK Runtime Environment",
"java.runtime.version": "21.0.8+9-1",
"java.vendor": "OpenJDK BSD Porting Team",
"java.vendor.url": "https://github.com/battleblow/jdk21u/",
"java.version": "21.0.8",
"java.vm.name": "OpenJDK 64-Bit Server VM",
"java.vm.version": "21.0.8+9-1",
"os.name": "FreeBSD",
"os.version": "14.3-RELEASE-p2",
"user.language": "en",
"user.timezone": "America/Los_Angeles"
}
}
```
### Severity
annoying, workaround-able
### Additional context
The generated SQL for the first case, with the 2 join conditions:
```
SELECT
"public"."students"."child_name" AS "child_name",
"public"."students"."birthday" AS "birthday",
"favorite_fruits - child_name"."child_name" AS "favorite_fruits - child_name__child_name",
"favorite_fruits - child_name"."favorite" AS "favorite_fruits - child_name__favorite"
FROM
"public"."students"
LEFT JOIN (
SELECT
"public"."favorite_fruits"."child_name" AS "child_name",
"public"."favorite_fruits"."favorite" AS "favorite"
FROM
"public"."favorite_fruits"
) AS "favorite_fruits - child_name" ON (
"public"."students"."child_name" = "favorite_fruits - child_name"."child_name"
)
AND (
'apple' = "favorite_fruits - child_name"."favorite"
)
LIMIT
1048575
```
In the second case, with the secondary join condition as a filter:
```
SELECT
"public"."students"."child_name" AS "child_name",
"public"."students"."birthday" AS "birthday",
"favorite_fruits - child_name"."child_name" AS "favorite_fruits - child_name__child_name",
"favorite_fruits - child_name"."favorite" AS "favorite_fruits - child_name__favorite"
FROM
"public"."students"
LEFT JOIN (
SELECT
"public"."favorite_fruits"."child_name" AS "child_name",
"public"."favorite_fruits"."favorite" AS "favorite"
FROM
"public"."favorite_fruits"
) AS "favorite_fruits - child_name" ON "public"."students"."child_name" = "favorite_fruits - child_name"."child_name"
WHERE
"favorite_fruits - child_name"."favorite" = CAST('apple' AS "fruit")
LIMIT
1048575
```