Expected `out` to be identical to `data.frame(a = c(1, 2, 4), b = 2, g = 1:3)`.
Differences:
  `attr(actual, 'row.names')`: NA -3  
`attr(expected, 'row.names')`:  1  2 3

relational distinct(g, .keep_all = TRUE) order-preserving

relational union_all(data.frame(a = 1L, b = 3, g = 2L)) %>% distinct(g) order-enforcing

relational union_all(data.frame(a = 1L, b = 4, g = 2L)) %>% distinct(g) order-enforcing

relational union_all(data.frame(a = 1L, b = 5, g = 2L)) %>% distinct(g) order-enforcing

relational union_all(data.frame(a = 1L, b = 6, g = 2L)) %>% distinct(g) order-enforcing

relational union_all(data.frame(a = 1L, b = 7, g = 2L)) %>% distinct(g) order-enforcing

relational distinct(g, .keep_all = TRUE) order-enforcing

Expected `out` to be identical to `data.frame(a = 1, b = 2, g = 1L)`.
Differences:
  `attr(actual, 'row.names')`: NA -1
`attr(expected, 'row.names')`:  1

relational filter(a == 1) order-preserving

Expected `out` to be identical to `data.frame(a = c(2, 3), b = 2, g = 2L)`.
Differences:
  `attr(actual, 'row.names')`: NA -2
`attr(expected, 'row.names')`:  1  2

relational filter(a %in% 2:3, g == 2) order-preserving

relational filter(a %in% 2:3 & g == 2) order-preserving

Expected `out` to be identical to `data.frame(...)`.
Differences:
  `attr(actual, 'row.names')`: NA -5      
`attr(expected, 'row.names')`:  1  2 3 4 5

relational filter(a != 2 | g != 2) order-preserving

relational filter(a == 1) order-enforcing

relational filter(a %in% 2:3, g == 2) order-enforcing

relational filter(a %in% 2:3 & g == 2) order-enforcing

relational filter(a != 2 | g != 2) order-enforcing

Expected `out` to be identical to `data.frame(a = 2:4, b.x = 2, b.y = 2)`.
Differences:
  `attr(actual, 'row.names')`: NA -3  
`attr(expected, 'row.names')`:  1  2 3

Expected `out` to be identical to `data.frame(a = 2:4, b = 2)`.
Differences:
  `attr(actual, 'row.names')`: NA -3  
`attr(expected, 'row.names')`:  1  2 3

Expected `out` to be identical to `data.frame(a = 1:4, b.x = 2, b.y = c(NA, 2, 2, 2))`.
Differences:
  `attr(actual, 'row.names')`: NA -4    
`attr(expected, 'row.names')`:  1  2 3 4