ON Clause Breaking
Break JOIN ON conditions to their own indented line when the condition is long or complex.
Default: onClauseNewline=never — ON stays inline with JOIN (current behavior).
Always: onClauseNewline=always — ON always breaks to its own line.
Width-aware: onClauseNewline=width_aware — ON breaks when condition exceeds half of maxLineWidth.
Default: ON stays inline
select a from t1 inner join t2 on t1.id = t2.id
select a from t1 inner join t2 on t1.id = t2.id
Always: ON breaks to own line
select a from t1 inner join t2 on t1.id = t2.id
select a from t1 inner join t2 on t1.id = t2.id
Always: ON with AND condition
select a from t1 inner join t2 on t1.id = t2.id and t1.x = t2.x
select a from t1 inner join t2 on t1.id = t2.id and t1.x = t2.x
Always: multiple JOINs
select a from t1 inner join t2 on t1.id = t2.id left join t3 on t2.id = t3.id
select a
from t1
inner join t2 on t1.id = t2.id
left join t3 on t2.id = t3.id
Single JOIN
select a from t1 inner join t2 on t1.id = t2.id
select a from t1 inner join t2 on t1.id = t2.id
Width-aware: short ON stays inline
select a from t1 join t2 on t1.id = t2.id
select a from t1 join t2 on t1.id = t2.id
Width-aware: long ON breaks
select a from t1 join t2 on t1.customer_id = t2.customer_id and t1.order_date = t2.order_date and t1.region = t2.region
select a
from t1
join t2
on
t1.customer_id = t2.customer_id
and t1.order_date = t2.order_date
and t1.region = t2.region
USING stays inline regardless
select a from t1 join t2 using (id)
select a from t1 join t2 using(id)