Я работаю над вилкой пакета RSQLServer
и пытаюсь реализовать объединения. С текущей версией пакета объединения для любой базы данных, основанной на DBI, реализуются с помощью sql_join.DBIConnection
. Однако эта реализация не очень хорошо работает для SQL-сервера. Например, он использует USING
, который не поддерживается сервером SQL.
У меня есть версия этой функции sql_join.SQLServerConnection
, работающая (хотя и не полная). Я как можно больше основывал свою функцию на sql_join.DBIConnection
. Один из вопросов, который у меня был, заключается в том, что sql_join.DBIConnection
вызывает несколько неэкспортируемых функций внутри dplyr
, таких как common_by
. На данный момент я работал над этим, используя dplyr:::common_by
, но я знаю, что это не идеальная практика.
Должен ли я:
- Попросите Хэдли Уикхема/Ромена Франсуа экспортировать соответствующие функции, чтобы облегчить жизнь людям, разрабатывающим пакеты, построенные на
dplyr
? - Скопировать внутренние функции в пакет, над которым я работаю?
- Продолжить использование оператора
:::
для вызова функций? - Что-то еще?
Ясно, что с опцией 3 существует вероятность того, что интерфейс изменится (поскольку они не экспортируются) и что пакет будет ломаться в долгосрочной перспективе.
Пример кода:
sql_join.SQLServerConnection <- function (con, x, y, type = "inner", by = NULL, ...) {
join <- switch(type, left = sql("LEFT"), inner = sql("INNER"),
right = sql("RIGHT"), full = sql("FULL"), stop("Unknown join type:",
type, call. = FALSE))
by <- dplyr:::common_by(by, x, y)
using <- FALSE # all(by$x == by$y)
x_names <- dplyr:::auto_names(x$select)
y_names <- dplyr:::auto_names(y$select)
# more code
}