# print method doesn't change unexpectedly Code sql_build(union(lf1, lf2) %>% union_all(lf3)) Output From: [1] `lf1` Select: `lf1`.*, NULL UNION From: [1] `lf2` Select: `x`, NULL, `z` UNION ALL From: [1] `lf3` Select: `x`, NULL, `z` # generated sql doesn't change unexpectedly Code union(lf, lf) Output SELECT * FROM `df` UNION SELECT * FROM `df` --- Code setdiff(lf, lf) Output ( SELECT * FROM `df` ) EXCEPT ( SELECT * FROM `df` ) --- Code intersect(lf, lf) Output ( SELECT * FROM `df` ) INTERSECT ( SELECT * FROM `df` ) --- Code union(lf, lf, all = TRUE) Output SELECT * FROM `df` UNION ALL SELECT * FROM `df` --- Code setdiff(lf, lf, all = TRUE) Output ( SELECT * FROM `df` ) EXCEPT ALL ( SELECT * FROM `df` ) --- Code intersect(lf, lf, all = TRUE) Output ( SELECT * FROM `df` ) INTERSECT ALL ( SELECT * FROM `df` )