Skip to content

Commit aa9734d

Browse files
authored
Feat(generator)!: improve pretty-formatting of IN (...) (#4920)
1 parent d386f37 commit aa9734d

File tree

3 files changed

+480
-14
lines changed

3 files changed

+480
-14
lines changed

sqlglot/generator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3058,7 +3058,7 @@ def in_sql(self, expression: exp.In) -> str:
30583058
elif field:
30593059
in_sql = self.sql(field)
30603060
else:
3061-
in_sql = f"({self.expressions(expression, flat=True)})"
3061+
in_sql = f"({self.expressions(expression, dynamic=True, new_line=True, skip_first=True, skip_last=True)})"
30623062

30633063
return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}"
30643064

tests/fixtures/optimizer/optimizer.sql

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,10 @@ SELECT
760760
`_q_0`.`first_half_sales` AS `first_half_sales`,
761761
`_q_0`.`second_half_sales` AS `second_half_sales`
762762
FROM `produce` AS `produce`
763-
UNPIVOT((`first_half_sales`, `second_half_sales`) FOR `semesters` IN ((`produce`.`q1`, `produce`.`q2`) AS 'semester_1', (`produce`.`q3`, `produce`.`q4`) AS 'semester_2')) AS `_q_0`;
763+
UNPIVOT((`first_half_sales`, `second_half_sales`) FOR `semesters` IN (
764+
(`produce`.`q1`, `produce`.`q2`) AS 'semester_1',
765+
(`produce`.`q3`, `produce`.`q4`) AS 'semester_2'
766+
)) AS `_q_0`;
764767

765768
# title: quoting is preserved
766769
# dialect: snowflake
@@ -1382,7 +1385,13 @@ LEFT JOIN `_u_3` AS `_u_3`
13821385
ON `_u_3`.`_u_4` = `cs1`.`cs_order_number`
13831386
JOIN `call_center` AS `call_center`
13841387
ON `call_center`.`cc_call_center_sk` = `cs1`.`cs_call_center_sk`
1385-
AND `call_center`.`cc_county` IN ('Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County')
1388+
AND `call_center`.`cc_county` IN (
1389+
'Williamson County',
1390+
'Williamson County',
1391+
'Williamson County',
1392+
'Williamson County',
1393+
'Williamson County'
1394+
)
13861395
JOIN `customer_address` AS `customer_address`
13871396
ON `cs1`.`cs_ship_addr_sk` = `customer_address`.`ca_address_sk`
13881397
AND `customer_address`.`ca_state` = 'GA'

0 commit comments

Comments
 (0)