Skip to content

[wip] Fix empty join conditions query failure #25713

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

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

SemionPar
Copy link
Contributor

@SemionPar SemionPar commented Apr 30, 2025

Description

Reproduce "joinConditions is empty" error

Additional context and related issues

Bisected to 91a29a7

SELECT a.c_num FROM left a LEFT JOIN right b ON DATE '2025-03-19' = b.c_date;

Query of this shape results in

Caused by: com.google.common.base.VerifyException: joinConditions is empty
	at com.google.common.base.Verify.verify(Verify.java:126)
	at io.trino.plugin.jdbc.DefaultQueryBuilder.prepareJoinQuery(DefaultQueryBuilder.java:126)
	at io.trino.plugin.jdbc.BaseJdbcClient.implementJoin(BaseJdbcClient.java:537)
	at io.trino.plugin.postgresql.PostgreSqlClient.lambda$implementJoin$13(PostgreSqlClient.java:1074)
	at io.trino.plugin.jdbc.JdbcJoinPushdownUtil.implementJoinCostAware(JdbcJoinPushdownUtil.java:46)
	at io.trino.plugin.postgresql.PostgreSqlClient.implementJoin(PostgreSqlClient.java:1068)
	at io.trino.plugin.jdbc.ForwardingJdbcClient.implementJoin(ForwardingJdbcClient.java:220)
	at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.lambda$implementJoin$20(StatisticsAwareJdbcClient.java:239)
	at io.trino.plugin.jdbc.jmx.JdbcApiStats.wrap(JdbcApiStats.java:34)
	at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.implementJoin(StatisticsAwareJdbcClient.java:239)
	at io.trino.plugin.jdbc.CachingJdbcClient.implementJoin(CachingJdbcClient.java:293)
	at io.trino.plugin.jdbc.CachingJdbcClient.implementJoin(CachingJdbcClient.java:293)
	at io.trino.plugin.jdbc.DefaultJdbcMetadata.applyJoin(DefaultJdbcMetadata.java:497)
	at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.applyJoin(ClassLoaderSafeConnectorMetadata.java:1042)
	at io.trino.tracing.TracingConnectorMetadata.applyJoin(TracingConnectorMetadata.java:1206)
	at io.trino.metadata.MetadataManager.applyJoin(MetadataManager.java:1957)
	at io.trino.tracing.TracingMetadata.applyJoin(TracingMetadata.java:988)
	at io.trino.sql.planner.iterative.rule.PushJoinIntoTableScan.apply(PushJoinIntoTableScan.java:149)
	at io.trino.sql.planner.iterative.rule.PushJoinIntoTableScan.apply(PushJoinIntoTableScan.java:68)
	at io.trino.sql.planner.iterative.IterativeOptimizer.transform(IterativeOptimizer.java:209)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreNode(IterativeOptimizer.java:176)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:139)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreChildren(IterativeOptimizer.java:259)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:141)
	at io.trino.sql.planner.iterative.IterativeOptimizer.optimize(IterativeOptimizer.java:123)
	at io.trino.sql.planner.LogicalPlanner.runOptimizer(LogicalPlanner.java:309)
	at io.trino.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:270)
	at io.trino.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:239)
	at io.trino.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:234)
	at io.trino.execution.SqlQueryExecution.doPlanQuery(SqlQueryExecution.java:486)
	at io.trino.execution.SqlQueryExecution.planQuery(SqlQueryExecution.java:466)
	at io.trino.execution.SqlQueryExecution.start(SqlQueryExecution.java:404)
	at io.trino.execution.SqlQueryManager.createQuery(SqlQueryManager.java:264)
	at io.trino.dispatcher.LocalDispatchQuery.startExecution(LocalDispatchQuery.java:145)
	at io.trino.dispatcher.LocalDispatchQuery.lambda$waitForMinimumWorkers$2(LocalDispatchQuery.java:129)
	at io.airlift.concurrent.MoreFutures.lambda$addSuccessCallback$12(MoreFutures.java:568)
	at io.airlift.concurrent.MoreFutures$3.onSuccess(MoreFutures.java:543)
	at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1133)
	at io.trino.$gen.Trino_testversion____20250430_152414_75.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)

Release notes

( ) This is not user-visible or is docs only, and no release notes are required.
( ) Release notes are required. Please propose a release note for me.
( ) Release notes are required, with the following suggested text:

## Section
* Fix some things. ({issue}`issuenumber`)

@cla-bot cla-bot bot added the cla-signed label Apr 30, 2025
@github-actions github-actions bot added the postgresql PostgreSQL connector label Apr 30, 2025
@SemionPar SemionPar force-pushed the semionpar/empty-join-condition branch from 7c045a9 to 3c044a2 Compare April 30, 2025 16:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla-signed postgresql PostgreSQL connector
Development

Successfully merging this pull request may close these issues.

1 participant