Skip to content

dbplyr

A 'dplyr' Back End for Databases

v2.5.2 · Feb 12, 2026 · MIT + file LICENSE

Description

A 'dplyr' back end for databases that allows you to work with remote database tables as if they are in-memory data frames. Basic features works with any database that has a 'DBI' back end; more advanced features require 'SQL' translation to be provided by the package author.

Downloads

540K

Last 30 days

121st

1.2M

Last 90 days

1.2M

Last year

Trend: -12.8% (30d vs prior 30d)

CRAN Check Status

3 ERROR
11 OK
Show all 14 flavors
Flavor Status
r-devel-linux-x86_64-debian-clang OK
r-devel-linux-x86_64-debian-gcc OK
r-devel-linux-x86_64-fedora-clang OK
r-devel-linux-x86_64-fedora-gcc OK
r-devel-macos-arm64 OK
r-devel-windows-x86_64 OK
r-oldrel-macos-arm64 ERROR
r-oldrel-macos-x86_64 ERROR
r-oldrel-windows-x86_64 OK
r-patched-linux-x86_64 OK
r-release-linux-x86_64 OK
r-release-macos-arm64 OK
r-release-macos-x86_64 OK
r-release-windows-x86_64 ERROR
Check details (14 non-OK)
OK r-devel-linux-x86_64-debian-clang

*


            
OK r-devel-linux-x86_64-debian-gcc

*


            
OK r-devel-linux-x86_64-fedora-clang

*


            
OK r-devel-linux-x86_64-fedora-gcc

*


            
OK r-devel-macos-arm64

*


            
OK r-devel-windows-x86_64

*


            
ERROR r-oldrel-macos-arm64

tests

  Running ‘testthat.R’ [38s/19s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
  > library(testthat)
  > library(dbplyr)
  > 
  > test_check("dbplyr")
  Starting 2 test processes.
  > test-tidyeval-across.R: Warning message:
  > test-tidyeval-across.R: call dbDisconnect() when finished working with a connection 
  > test-verb-joins.R: Joining with `by = join_by(x)`
  Saving _problems/test-verb-pivot-longer-64.R
  Saving _problems/test-verb-pivot-longer-104.R
  Saving _problems/test-verb-pivot-longer-120.R
  Saving _problems/test-verb-pivot-longer-174.R
  Saving _problems/test-verb-pivot-longer-189.R
  [ FAIL 5 | WARN 0 | SKIP 374 | PASS 1699 ]
  
  ══ Skipped tests (374) ═════════════════════════════════════════════════════════
  • Need at least two srcs to compare (5): 'test-verb-compute.R:34:3',
    'test-verb-copy-to.R:18:3', 'test-verb-copy-to.R:27:3',
    'test-verb-set-ops.R:49:3', 'test-verb-set-ops.R:93:3'
  • No MariaDB (5): 'test-backend-mysql.R:104:3', 'test-backend-mysql.R:109:3',
    'test-backend-mysql.R:114:3', 'test-backend-mysql.R:125:3',
    'test-backend-mysql.R:153:3'
  • No mssql (13): 'test-backend-mssql.R:411:3', 'test-backend-mssql.R:443:3',
    'test-backend-mssql.R:462:3', 'test-backend-mssql.R:478:3',
    'test-backend-mssql.R:504:3', 'test-backend-mssql.R:531:3',
    'test-backend-mssql.R:555:3', 'test-backend-mssql.R:580:3',
    'test-backend-mssql.R:606:3', 'test-backend-mssql.R:633:3',
    'test-backend-mssql.R:658:3', 'test-backend-mssql.R:685:3',
    'test-backend-mssql.R:710:3'
  • No postgres (9): 'test-backend-postgres.R:216:3',
    'test-backend-postgres.R:224:3', 'test-backend-postgres.R:231:3',
    'test-backend-postgres.R:245:3', 'test-backend-postgres.R:305:3',
    'test-backend-postgres.R:320:3', 'test-backend-postgres.R:375:3',
    'test-backend-postgres.R:434:3', 'test-verb-joins.R:103:3'
  • On CRAN (336): 'test-backend-access.R:1:1', 'test-backend-access.R:76:1',
    'test-backend-hana.R:1:1', 'test-backend-hana.R:12:1',
    'test-backend-hive.R:11:1', 'test-backend-impala.R:19:1',
    'test-backend-.R:11:1', 'test-backend-.R:68:1', 'test-backend-.R:81:1',
    'test-backend-.R:88:1', 'test-backend-.R:104:1', 'test-backend-.R:163:1',
    'test-backend-.R:179:1', 'test-backend-mysql.R:46:1',
    'test-backend-mysql.R:64:1', 'test-backend-oracle.R:20:1',
    'test-backend-oracle.R:29:1', 'test-backend-oracle.R:34:1',
    'test-backend-oracle.R:56:1', 'test-backend-oracle.R:71:1',
    'test-backend-oracle.R:96:1', 'test-backend-postgres.R:49:1',
    'test-backend-postgres.R:69:1', 'test-backend-postgres.R:94:1',
    'test-backend-postgres.R:119:1', 'test-backend-postgres.R:134:1',
    'test-backend-postgres.R:147:1', 'test-backend-postgres.R:156:1',
    'test-backend-postgres.R:190:1', 'test-backend-redshift.R:46:1',
    'test-backend-redshift.R:61:1', 'test-backend-redshift.R:86:1',
    'test-backend-mssql.R:60:1', 'test-backend-mssql.R:91:1',
    'test-backend-mssql.R:123:1', 'test-backend-mssql.R:144:1',
    'test-backend-mssql.R:169:1', 'test-backend-mssql.R:203:1',
    'test-backend-mssql.R:221:1', 'test-backend-mssql.R:227:1',
    'test-backend-mssql.R:233:1', 'test-backend-mssql.R:248:1',
    'test-backend-mssql.R:259:1', 'test-backend-mssql.R:276:1',
    'test-backend-mssql.R:298:1', 'test-backend-mssql.R:318:1',
    'test-backend-mssql.R:342:1', 'test-backend-mssql.R:361:1',
    'test-backend-mssql.R:382:1', 'test-backend-mssql.R:396:1',
    'test-backend-mssql.R:403:1', 'test-backend-mssql.R:428:1',
    'test-backend-spark-sql.R:1:1', 'test-backend-spark-sql.R:26:1',
    'test-backend-snowflake.R:9:1', 'test-backend-snowflake.R:169:1',
    'test-backend-snowflake.R:188:1', 'test-backend-sqlite.R:50:1',
    'test-backend-sqlite.R:59:1', 'test-backend-sqlite.R:106:1',
    'test-backend-teradata.R:53:1', 'test-backend-teradata.R:61:1',
    'test-backend-teradata.R:66:1', 'test-backend-teradata.R:76:1',
    'test-backend-teradata.R:84:1', 'test-backend-teradata.R:91:1',
    'test-build-sql.R:1:1', 'test-build-sql.R:55:1', 'test-build-sql.R:64:1',
    'test-db-io.R:1:1', 'test-db-io.R:19:1', 'test-db-io.R:44:1',
    'test-db-sql.R:1:1', 'test-db-sql.R:24:1', 'test-ident.R:13:1',
    'test-lazy-join-query.R:1:1', 'test-lazy-select-query.R:1:1',
    'test-escape.R:111:1', 'test-escape.R:116:1', 'test-pillar.R:1:1',
    'test-query-select.R:1:1', 'test-query-select.R:10:1',
    'test-query-select.R:19:1', 'test-query-join.R:1:1',
    'test-query-join.R:13:1', 'test-query-join.R:22:1', 'test-query-join.R:29:1',
    'test-query-join.R:36:1', 'test-query-semi-join.R:1:1',
    'test-query-semi-join.R:9:1', 'test-query-set-op.R:1:1',
    'test-query-set-op.R:8:1', 'test-schema.R:1:1', 'test-sql-build.R:1:1',
    'test-sql.R:7:1', 'test-table-name.R:1:1', 'test-table-name.R:12:1',
    'test-table-name.R:81:1', 'test-table-name.R:91:1', 'test-tbl-lazy.R:6:1',
    'test-tbl-lazy.R:10:1', 'test-tbl-lazy.R:21:1', 'test-tbl-lazy.R:44:1',
    'test-tbl-lazy.R:48:1', 'test-tbl-sql.R:29:1', 'test-tbl-sql.R:57:1',
    'test-tbl-sql.R:64:1', 'test-rows.R:4:1', 'test-rows.R:51:1',
    'test-rows.R:65:1', 'test-rows.R:120:1', 'test-rows.R:157:1',
    'test-rows.R:184:1', 'test-rows.R:220:1', 'test-rows.R:229:1',
    'test-rows.R:276:1', 'test-rows.R:308:1', 'test-rows.R:328:1',
    'test-rows.R:349:1', 'test-rows.R:435:1', 'test-rows.R:476:1',
    'test-rows.R:515:1', 'test-rows.R:541:1', 'test-rows.R:589:1',
    'test-rows.R:615:1', 'test-rows.R:656:1', 'test-rows.R:698:1',
    'test-rows.R:742:1', 'test-rows.R:780:1', 'test-rows.R:826:1',
    'test-rows.R:874:1', 'test-rows.R:915:1', 'test-rows.R:954:1',
    'test-rows.R:975:1', 'test-tidyeval.R:77:1', 'test-tidyeval-across.R:49:1',
    'test-tidyeval-across.R:99:1', 'test-tidyeval-across.R:220:1',
    'test-tidyeval-across.R:227:1', 'test-tidyeval-across.R:232:1',
    'test-tidyeval-across.R:368:1', 'test-tidyeval-across.R:377:1',
    'test-tidyeval-across.R:385:1', 'test-tidyeval-across.R:428:1',
    'test-tidyeval-across.R:444:1', 'test-tidyeval-across.R:460:1',
    'test-tidyeval-across.R:467:1', 'test-tidyeval-across.R:474:1',
    'test-tidyeval-across.R:508:1', 'test-tidyeval-across.R:538:1',
    'test-tidyeval-across.R:544:1', 'test-tidyeval-across.R:625:1',
    'test-tidyeval-across.R:633:1', 'test-tidyeval-across.R:639:1',
    'test-tidyeval-across.R:647:1', 'test-translate-sql-cut.R:89:1',
    'test-translate-sql-cut.R:144:1', 'test-translate-sql-conditional.R:1:1',
    'test-translate-sql-conditional.R:6:1',
    'test-translate-sql-conditional.R:13:1',
    'test-translate-sql-conditional.R:25:1',
    'test-translate-sql-conditional.R:60:1',
    'test-translate-sql-conditional.R:68:1',
    'test-translate-sql-conditional.R:163:1',
    'test-translate-sql-conditional.R:232:1',
    'test-translate-sql-conditional.R:249:1',
    'test-translate-sql-conditional.R:281:1',
    'test-translate-sql-conditional.R:288:1', 'test-translate-sql-helpers.R:2:3',
    'test-translate-sql-helpers.R:13:1', 'test-translate-sql-helpers.R:29:1',
    'test-translate-sql-helpers.R:45:1', 'test-translate-sql-helpers.R:50:1',
    'test-translate-sql-helpers.R:84:1', 'test-translate-sql-helpers.R:92:1',
    'test-translate-sql-quantile.R:1:1', 'test-translate-sql-string.R:1:1',
    'test-translate-sql-window.R:100:1', 'test-translate-sql-window.R:149:1',
    'test-translate-sql-window.R:156:1', 'test-translate-sql-window.R:206:1',
    'test-translate-sql-window.R:226:1', 'test-translate-sql.R:1:1',
    'test-translate-sql.R:12:1', 'test-verb-arrange.R:13:1',
    'test-verb-arrange.R:20:1', 'test-verb-arrange.R:44:1',
    'test-verb-arrange.R:63:1', 'test-verb-compute.R:56:1',
    'test-verb-compute.R:95:1', 'test-verb-compute.R:114:1',
    'test-verb-compute.R:122:1', 'test-verb-copy-to.R:52:1',
    'test-verb-copy-to.R:60:1', 'test-verb-copy-to.R:92:1',
    'test-verb-copy-to.R:100:1', 'test-verb-copy-to.R:125:1',
    'test-verb-count.R:1:1', 'test-verb-count.R:63:1',
    'test-verb-distinct.R:60:1', 'test-verb-distinct.R:182:1',
    'test-verb-distinct.R:198:1', 'test-verb-do.R:27:1', 'test-verb-do.R:64:1',
    'test-verb-fill.R:44:1', 'test-verb-fill.R:57:1', 'test-verb-fill.R:70:1',
    'test-verb-fill.R:83:1', 'test-verb-fill.R:97:1', 'test-verb-fill.R:103:1',
    'test-verb-expand.R:1:1', 'test-verb-expand.R:10:1',
    'test-verb-expand.R:22:1', 'test-verb-expand.R:28:1',
    'test-verb-expand.R:33:1', 'test-verb-expand.R:53:1',
    'test-verb-expand.R:57:1', 'test-verb-expand.R:62:1',
    'test-verb-expand.R:93:1', 'test-verb-expand.R:109:1',
    'test-verb-expand.R:115:1', 'test-verb-group_by.R:10:1',
    'test-verb-group_by.R:18:1', 'test-verb-group_by.R:25:1',
    'test-verb-group_by.R:31:1', 'test-verb-group_by.R:156:1',
    'test-verb-filter.R:11:1', 'test-verb-filter.R:54:1',
    'test-verb-filter.R:61:1', 'test-verb-filter.R:166:1',
    'test-verb-filter.R:184:1', 'test-verb-filter.R:212:1',
    'test-verb-filter.R:292:1', 'test-verb-filter.R:326:1',
    'test-verb-filter.R:336:1', 'test-verb-mutate.R:19:1',
    'test-verb-mutate.R:37:1', 'test-verb-mutate.R:48:1',
    'test-verb-mutate.R:60:1', 'test-verb-mutate.R:101:1',
    'test-verb-mutate.R:115:1', 'test-verb-mutate.R:132:1',
    'test-verb-mutate.R:166:1', 'test-verb-mutate.R:186:1',
    'test-verb-mutate.R:413:1', 'test-verb-mutate.R:420:1',
    'test-verb-mutate.R:470:1', 'test-verb-mutate.R:477:1',
    'test-verb-mutate.R:484:1', 'test-verb-pivot-longer.R:1:1',
    'test-verb-pivot-longer.R:19:1', 'test-verb-pivot-longer.R:34:1',
    'test-verb-pivot-longer.R:43:1', 'test-verb-pivot-longer.R:80:1',
    'test-verb-pivot-longer.R:87:1', 'test-verb-pivot-longer.R:139:1',
    'test-verb-pivot-longer.R:148:1', 'test-verb-pivot-longer.R:232:1',
    'test-verb-pivot-longer.R:250:1', 'test-verb-pivot-longer.R:258:1',
    'test-verb-joins.R:22:1', 'test-verb-joins.R:45:1', 'test-verb-joins.R:57:1',
    'test-verb-joins.R:167:1', 'test-verb-joins.R:280:1',
    'test-verb-joins.R:346:1', 'test-verb-joins.R:490:1',
    'test-verb-joins.R:531:1', 'test-verb-joins.R:568:1',
    'test-verb-joins.R:619:1', 'test-verb-joins.R:636:1',
    'test-verb-joins.R:656:1', 'test-verb-joins.R:683:1',
    'test-verb-joins.R:853:1', 'test-verb-joins.R:903:1',
    'test-verb-joins.R:972:1', 'test-verb-joins.R:981:1',
    'test-verb-joins.R:1001:1', 'test-verb-joins.R:1012:1',
    'test-verb-joins.R:1021:1', 'test-verb-joins.R:1062:1',
    'test-verb-joins.R:1108:1', 'test-verb-joins.R:1312:1',
    'test-verb-pull.R:44:1', 'test-verb-pivot-wider.R:9:1',
    'test-verb-pivot-wider.R:38:1', 'test-verb-pivot-wider.R:54:1',
    'test-verb-pivot-wider.R:233:1', 'test-verb-pivot-wider.R:242:1',
    'test-verb-pivot-wider.R:248:1', 'test-verb-pivot-wider.R:276:1',
    'test-verb-pivot-wider.R:325:1', 'test-verb-pivot-wider.R:335:1',
    'test-verb-pivot-wider.R:371:1', 'test-verb-pivot-wider.R:416:1',
    'test-verb-pivot-wider.R:474:1', 'test-verb-pivot-wider.R:479:1',
    'test-verb-pivot-wider.R:484:1', 'test-verb-pivot-wider.R:491:1',
    'test-verb-pivot-wider.R:498:1', 'test-verb-select.R:26:1',
    'test-verb-select.R:63:1', 'test-verb-select.R:120:1',
    'test-verb-select.R:179:1', 'test-verb-select.R:202:1',
    'test-verb-select.R:223:1', 'test-verb-select.R:278:1',
    'test-verb-select.R:305:1', 'test-verb-select.R:312:1',
    'test-verb-select.R:341:1', 'test-verb-select.R:349:1',
    'test-verb-select.R:356:1', 'test-verb-set-ops.R:58:1',
    'test-verb-slice.R:1:1', 'test-verb-slice.R:8:1', 'test-verb-slice.R:22:1',
    'test-verb-slice.R:31:1', 'test-verb-slice.R:42:1', 'test-verb-slice.R:61:1',
    'test-verb-slice.R:71:1', 'test-verb-slice.R:100:1',
    'test-verb-slice.R:115:1', 'test-verb-summarise.R:1:1',
    'test-verb-summarise.R:25:1', 'test-verb-summarise.R:41:1',
    'test-verb-summarise.R:69:1', 'test-verb-summarise.R:78:1',
    'test-verb-summarise.R:110:1', 'test-verb-summarise.R:123:1',
    'test-verb-summarise.R:131:1', 'test-verb-summarise.R:142:1',
    'test-verb-window.R:1:1', 'test-verb-window.R:8:1',
    'test-verb-window.R:18:1', 'test-verb-window.R:32:1',
    'test-verb-uncount.R:1:1'
  • `grouped_df()` needs a `name_repair` argument (1):
    'test-verb-pivot-wider.R:81:3'
  • empty test (1): 'test-verb-set-ops.R:110:1'
  • identical(Sys.getenv("GITHUB_POSTGRES"), "true") is not TRUE (1):
    'test-backend-postgres-old.R:2:3'
  • not clear whether test makes sense (2): 'test-verb-arrange.R:2:3',
    'test-verb-arrange.R:131:3'
  • not yet correctly supported (1): 'test-tidyeval-across.R:272:3'
  
  ══ Failed tests ════════════════════════════════════════════════════════════════
  ── Error ('test-verb-pivot-longer.R:59:3'): can handle missing combinations ────
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'promise'
  Backtrace:
      ▆
   1. ├─tidyr::pivot_longer(...) at test-verb-pivot-longer.R:59:3
   2. └─dbplyr:::pivot_longer.tbl_lazy(...)
   3.   └─tidyr::build_longer_spec(...)
   4.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   5.       └─tidyr:::str_split_fixed(...)
   6.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  ── Error ('test-verb-pivot-longer.R:97:3'): `values_transform` works with single functions (#1284) ──
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'promise'
  Backtrace:
      ▆
   1. ├─... %>% collect() at test-verb-pivot-longer.R:97:3
   2. ├─dplyr::collect(.)
   3. ├─tidyr::pivot_longer(...)
   4. └─dbplyr:::pivot_longer.tbl_lazy(...)
   5.   └─tidyr::build_longer_spec(...)
   6.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   7.       └─tidyr:::str_split_fixed(...)
   8.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  ── Error ('test-verb-pivot-longer.R:113:3'): `names_ptypes` and `names_transform` ──
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'promise'
  Backtrace:
      ▆
   1. ├─... %>% collect() at test-verb-pivot-longer.R:113:3
   2. ├─dplyr::collect(.)
   3. ├─tidyr::pivot_longer(...)
   4. └─dbplyr:::pivot_longer.tbl_lazy(...)
   5.   └─tidyr::build_longer_spec(...)
   6.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   7.       └─tidyr:::str_split_fixed(...)
   8.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  ── Error ('test-verb-pivot-longer.R:169:3'): original col order is preserved ───
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'promise'
  Backtrace:
       ▆
    1. ├─testthat::expect_equal(...) at test-verb-pivot-longer.R:169:3
    2. │ └─testthat::quasi_label(enquo(object), label)
    3. │   └─rlang::eval_bare(expr, quo_get_env(quo))
    4. ├─... %>% colnames()
    5. ├─base::colnames(.)
    6. │ └─base::is.data.frame(x)
    7. ├─tidyr::pivot_longer(., -id, names_to = c(".value", "n"), names_sep = "_")
    8. └─dbplyr:::pivot_longer.tbl_lazy(...)
    9.   └─tidyr::build_longer_spec(...)
   10.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   11.       └─tidyr:::str_split_fixed(...)
   12.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  ── Error ('test-verb-pivot-longer.R:186:3'): .value can be at any position in `names_to` ──
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'promise'
  Backtrace:
      ▆
   1. ├─tidyr::pivot_longer(...) at test-verb-pivot-longer.R:186:3
   2. └─dbplyr:::pivot_longer.tbl_lazy(...)
   3.   └─tidyr::build_longer_spec(...)
   4.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   5.       └─tidyr:::str_split_fixed(...)
   6.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  
  [ FAIL 5 | WARN 0 | SKIP 374 | PASS 1699 ]
  Error:
  ! Test failures.
  Execution halted
ERROR r-oldrel-macos-x86_64

tests

  Running ‘testthat.R’ [115s/90s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
  > library(testthat)
  > library(dbplyr)
  > 
  > test_check("dbplyr")
  Starting 2 test processes.
  > test-table-name.R: Warning message:
  > test-table-name.R: call dbDisconnect() when finished working with a connection 
  > test-verb-joins.R: Joining with `by = join_by(x)`
  Saving _problems/test-verb-pivot-longer-64.R
  Saving _problems/test-verb-pivot-longer-104.R
  Saving _problems/test-verb-pivot-longer-120.R
  Saving _problems/test-verb-pivot-longer-174.R
  Saving _problems/test-verb-pivot-longer-189.R
  [ FAIL 5 | WARN 0 | SKIP 374 | PASS 1699 ]
  
  ══ Skipped tests (374) ═════════════════════════════════════════════════════════
  • Need at least two srcs to compare (5): 'test-verb-compute.R:34:3',
    'test-verb-copy-to.R:18:3', 'test-verb-copy-to.R:27:3',
    'test-verb-set-ops.R:49:3', 'test-verb-set-ops.R:93:3'
  • No MariaDB (5): 'test-backend-mysql.R:104:3', 'test-backend-mysql.R:109:3',
    'test-backend-mysql.R:114:3', 'test-backend-mysql.R:125:3',
    'test-backend-mysql.R:153:3'
  • No mssql (13): 'test-backend-mssql.R:411:3', 'test-backend-mssql.R:443:3',
    'test-backend-mssql.R:462:3', 'test-backend-mssql.R:478:3',
    'test-backend-mssql.R:504:3', 'test-backend-mssql.R:531:3',
    'test-backend-mssql.R:555:3', 'test-backend-mssql.R:580:3',
    'test-backend-mssql.R:606:3', 'test-backend-mssql.R:633:3',
    'test-backend-mssql.R:658:3', 'test-backend-mssql.R:685:3',
    'test-backend-mssql.R:710:3'
  • No postgres (9): 'test-backend-postgres.R:216:3',
    'test-backend-postgres.R:224:3', 'test-backend-postgres.R:231:3',
    'test-backend-postgres.R:245:3', 'test-backend-postgres.R:305:3',
    'test-backend-postgres.R:320:3', 'test-backend-postgres.R:375:3',
    'test-backend-postgres.R:434:3', 'test-verb-joins.R:103:3'
  • On CRAN (336): 'test-backend-access.R:1:1', 'test-backend-access.R:76:1',
    'test-backend-hana.R:1:1', 'test-backend-hana.R:12:1',
    'test-backend-hive.R:11:1', 'test-backend-impala.R:19:1',
    'test-backend-.R:11:1', 'test-backend-.R:68:1', 'test-backend-.R:81:1',
    'test-backend-.R:88:1', 'test-backend-.R:104:1', 'test-backend-.R:163:1',
    'test-backend-.R:179:1', 'test-backend-mysql.R:46:1',
    'test-backend-mysql.R:64:1', 'test-backend-oracle.R:20:1',
    'test-backend-oracle.R:29:1', 'test-backend-oracle.R:34:1',
    'test-backend-oracle.R:56:1', 'test-backend-oracle.R:71:1',
    'test-backend-oracle.R:96:1', 'test-backend-postgres.R:49:1',
    'test-backend-postgres.R:69:1', 'test-backend-postgres.R:94:1',
    'test-backend-postgres.R:119:1', 'test-backend-postgres.R:134:1',
    'test-backend-postgres.R:147:1', 'test-backend-postgres.R:156:1',
    'test-backend-postgres.R:190:1', 'test-backend-redshift.R:46:1',
    'test-backend-redshift.R:61:1', 'test-backend-redshift.R:86:1',
    'test-backend-mssql.R:60:1', 'test-backend-mssql.R:91:1',
    'test-backend-mssql.R:123:1', 'test-backend-mssql.R:144:1',
    'test-backend-mssql.R:169:1', 'test-backend-mssql.R:203:1',
    'test-backend-mssql.R:221:1', 'test-backend-mssql.R:227:1',
    'test-backend-mssql.R:233:1', 'test-backend-mssql.R:248:1',
    'test-backend-mssql.R:259:1', 'test-backend-mssql.R:276:1',
    'test-backend-mssql.R:298:1', 'test-backend-mssql.R:318:1',
    'test-backend-mssql.R:342:1', 'test-backend-mssql.R:361:1',
    'test-backend-mssql.R:382:1', 'test-backend-mssql.R:396:1',
    'test-backend-mssql.R:403:1', 'test-backend-mssql.R:428:1',
    'test-backend-spark-sql.R:1:1', 'test-backend-spark-sql.R:26:1',
    'test-backend-snowflake.R:9:1', 'test-backend-snowflake.R:169:1',
    'test-backend-snowflake.R:188:1', 'test-backend-sqlite.R:50:1',
    'test-backend-sqlite.R:59:1', 'test-backend-sqlite.R:106:1',
    'test-backend-teradata.R:53:1', 'test-backend-teradata.R:61:1',
    'test-backend-teradata.R:66:1', 'test-backend-teradata.R:76:1',
    'test-backend-teradata.R:84:1', 'test-backend-teradata.R:91:1',
    'test-build-sql.R:1:1', 'test-build-sql.R:55:1', 'test-build-sql.R:64:1',
    'test-db-sql.R:1:1', 'test-db-sql.R:24:1', 'test-db-io.R:1:1',
    'test-db-io.R:19:1', 'test-db-io.R:44:1', 'test-ident.R:13:1',
    'test-lazy-join-query.R:1:1', 'test-lazy-select-query.R:1:1',
    'test-escape.R:111:1', 'test-escape.R:116:1', 'test-pillar.R:1:1',
    'test-query-select.R:1:1', 'test-query-select.R:10:1',
    'test-query-select.R:19:1', 'test-query-semi-join.R:1:1',
    'test-query-semi-join.R:9:1', 'test-query-join.R:1:1',
    'test-query-join.R:13:1', 'test-query-join.R:22:1', 'test-query-join.R:29:1',
    'test-query-join.R:36:1', 'test-query-set-op.R:1:1',
    'test-query-set-op.R:8:1', 'test-schema.R:1:1', 'test-sql-build.R:1:1',
    'test-sql.R:7:1', 'test-table-name.R:1:1', 'test-table-name.R:12:1',
    'test-table-name.R:81:1', 'test-table-name.R:91:1', 'test-tbl-lazy.R:6:1',
    'test-tbl-lazy.R:10:1', 'test-tbl-lazy.R:21:1', 'test-tbl-lazy.R:44:1',
    'test-tbl-lazy.R:48:1', 'test-tbl-sql.R:29:1', 'test-tbl-sql.R:57:1',
    'test-tbl-sql.R:64:1', 'test-rows.R:4:1', 'test-rows.R:51:1',
    'test-rows.R:65:1', 'test-rows.R:120:1', 'test-rows.R:157:1',
    'test-rows.R:184:1', 'test-rows.R:220:1', 'test-rows.R:229:1',
    'test-rows.R:276:1', 'test-rows.R:308:1', 'test-rows.R:328:1',
    'test-rows.R:349:1', 'test-rows.R:435:1', 'test-rows.R:476:1',
    'test-rows.R:515:1', 'test-rows.R:541:1', 'test-rows.R:589:1',
    'test-rows.R:615:1', 'test-rows.R:656:1', 'test-rows.R:698:1',
    'test-rows.R:742:1', 'test-rows.R:780:1', 'test-rows.R:826:1',
    'test-rows.R:874:1', 'test-rows.R:915:1', 'test-rows.R:954:1',
    'test-rows.R:975:1', 'test-tidyeval.R:77:1', 'test-tidyeval-across.R:49:1',
    'test-tidyeval-across.R:99:1', 'test-tidyeval-across.R:220:1',
    'test-tidyeval-across.R:227:1', 'test-tidyeval-across.R:232:1',
    'test-tidyeval-across.R:368:1', 'test-tidyeval-across.R:377:1',
    'test-tidyeval-across.R:385:1', 'test-tidyeval-across.R:428:1',
    'test-tidyeval-across.R:444:1', 'test-tidyeval-across.R:460:1',
    'test-tidyeval-across.R:467:1', 'test-tidyeval-across.R:474:1',
    'test-tidyeval-across.R:508:1', 'test-tidyeval-across.R:538:1',
    'test-tidyeval-across.R:544:1', 'test-tidyeval-across.R:625:1',
    'test-tidyeval-across.R:633:1', 'test-tidyeval-across.R:639:1',
    'test-tidyeval-across.R:647:1', 'test-translate-sql-cut.R:89:1',
    'test-translate-sql-cut.R:144:1', 'test-translate-sql-helpers.R:2:3',
    'test-translate-sql-helpers.R:13:1', 'test-translate-sql-helpers.R:29:1',
    'test-translate-sql-helpers.R:45:1', 'test-translate-sql-helpers.R:50:1',
    'test-translate-sql-helpers.R:84:1', 'test-translate-sql-helpers.R:92:1',
    'test-translate-sql-conditional.R:1:1',
    'test-translate-sql-conditional.R:6:1',
    'test-translate-sql-conditional.R:13:1',
    'test-translate-sql-conditional.R:25:1',
    'test-translate-sql-conditional.R:60:1',
    'test-translate-sql-conditional.R:68:1',
    'test-translate-sql-conditional.R:163:1',
    'test-translate-sql-conditional.R:232:1',
    'test-translate-sql-conditional.R:249:1',
    'test-translate-sql-conditional.R:281:1',
    'test-translate-sql-conditional.R:288:1',
    'test-translate-sql-quantile.R:1:1', 'test-translate-sql-string.R:1:1',
    'test-translate-sql.R:1:1', 'test-translate-sql.R:12:1',
    'test-translate-sql-window.R:100:1', 'test-translate-sql-window.R:149:1',
    'test-translate-sql-window.R:156:1', 'test-translate-sql-window.R:206:1',
    'test-translate-sql-window.R:226:1', 'test-verb-arrange.R:13:1',
    'test-verb-arrange.R:20:1', 'test-verb-arrange.R:44:1',
    'test-verb-arrange.R:63:1', 'test-verb-compute.R:56:1',
    'test-verb-compute.R:95:1', 'test-verb-compute.R:114:1',
    'test-verb-compute.R:122:1', 'test-verb-copy-to.R:52:1',
    'test-verb-copy-to.R:60:1', 'test-verb-copy-to.R:92:1',
    'test-verb-copy-to.R:100:1', 'test-verb-copy-to.R:125:1',
    'test-verb-count.R:1:1', 'test-verb-count.R:63:1', 'test-verb-do.R:27:1',
    'test-verb-do.R:64:1', 'test-verb-distinct.R:60:1',
    'test-verb-distinct.R:182:1', 'test-verb-distinct.R:198:1',
    'test-verb-fill.R:44:1', 'test-verb-fill.R:57:1', 'test-verb-fill.R:70:1',
    'test-verb-fill.R:83:1', 'test-verb-fill.R:97:1', 'test-verb-fill.R:103:1',
    'test-verb-expand.R:1:1', 'test-verb-expand.R:10:1',
    'test-verb-expand.R:22:1', 'test-verb-expand.R:28:1',
    'test-verb-expand.R:33:1', 'test-verb-expand.R:53:1',
    'test-verb-expand.R:57:1', 'test-verb-expand.R:62:1',
    'test-verb-expand.R:93:1', 'test-verb-expand.R:109:1',
    'test-verb-expand.R:115:1', 'test-verb-group_by.R:10:1',
    'test-verb-group_by.R:18:1', 'test-verb-group_by.R:25:1',
    'test-verb-group_by.R:31:1', 'test-verb-group_by.R:156:1',
    'test-verb-filter.R:11:1', 'test-verb-filter.R:54:1',
    'test-verb-filter.R:61:1', 'test-verb-filter.R:166:1',
    'test-verb-filter.R:184:1', 'test-verb-filter.R:212:1',
    'test-verb-filter.R:292:1', 'test-verb-filter.R:326:1',
    'test-verb-filter.R:336:1', 'test-verb-mutate.R:19:1',
    'test-verb-mutate.R:37:1', 'test-verb-mutate.R:48:1',
    'test-verb-mutate.R:60:1', 'test-verb-mutate.R:101:1',
    'test-verb-mutate.R:115:1', 'test-verb-mutate.R:132:1',
    'test-verb-mutate.R:166:1', 'test-verb-mutate.R:186:1',
    'test-verb-mutate.R:413:1', 'test-verb-mutate.R:420:1',
    'test-verb-mutate.R:470:1', 'test-verb-mutate.R:477:1',
    'test-verb-mutate.R:484:1', 'test-verb-pivot-longer.R:1:1',
    'test-verb-pivot-longer.R:19:1', 'test-verb-pivot-longer.R:34:1',
    'test-verb-pivot-longer.R:43:1', 'test-verb-pivot-longer.R:80:1',
    'test-verb-pivot-longer.R:87:1', 'test-verb-pivot-longer.R:139:1',
    'test-verb-pivot-longer.R:148:1', 'test-verb-pivot-longer.R:232:1',
    'test-verb-pivot-longer.R:250:1', 'test-verb-pivot-longer.R:258:1',
    'test-verb-joins.R:22:1', 'test-verb-joins.R:45:1', 'test-verb-joins.R:57:1',
    'test-verb-joins.R:167:1', 'test-verb-joins.R:280:1',
    'test-verb-joins.R:346:1', 'test-verb-joins.R:490:1',
    'test-verb-joins.R:531:1', 'test-verb-joins.R:568:1',
    'test-verb-joins.R:619:1', 'test-verb-joins.R:636:1',
    'test-verb-joins.R:656:1', 'test-verb-joins.R:683:1',
    'test-verb-joins.R:853:1', 'test-verb-joins.R:903:1',
    'test-verb-joins.R:972:1', 'test-verb-joins.R:981:1',
    'test-verb-joins.R:1001:1', 'test-verb-joins.R:1012:1',
    'test-verb-joins.R:1021:1', 'test-verb-joins.R:1062:1',
    'test-verb-joins.R:1108:1', 'test-verb-joins.R:1312:1',
    'test-verb-pull.R:44:1', 'test-verb-select.R:26:1',
    'test-verb-select.R:63:1', 'test-verb-select.R:120:1',
    'test-verb-select.R:179:1', 'test-verb-select.R:202:1',
    'test-verb-select.R:223:1', 'test-verb-select.R:278:1',
    'test-verb-select.R:305:1', 'test-verb-select.R:312:1',
    'test-verb-select.R:341:1', 'test-verb-select.R:349:1',
    'test-verb-select.R:356:1', 'test-verb-set-ops.R:58:1',
    'test-verb-pivot-wider.R:9:1', 'test-verb-pivot-wider.R:38:1',
    'test-verb-pivot-wider.R:54:1', 'test-verb-pivot-wider.R:233:1',
    'test-verb-pivot-wider.R:242:1', 'test-verb-pivot-wider.R:248:1',
    'test-verb-pivot-wider.R:276:1', 'test-verb-pivot-wider.R:325:1',
    'test-verb-pivot-wider.R:335:1', 'test-verb-pivot-wider.R:371:1',
    'test-verb-pivot-wider.R:416:1', 'test-verb-pivot-wider.R:474:1',
    'test-verb-pivot-wider.R:479:1', 'test-verb-pivot-wider.R:484:1',
    'test-verb-pivot-wider.R:491:1', 'test-verb-pivot-wider.R:498:1',
    'test-verb-summarise.R:1:1', 'test-verb-summarise.R:25:1',
    'test-verb-summarise.R:41:1', 'test-verb-summarise.R:69:1',
    'test-verb-summarise.R:78:1', 'test-verb-summarise.R:110:1',
    'test-verb-summarise.R:123:1', 'test-verb-summarise.R:131:1',
    'test-verb-summarise.R:142:1', 'test-verb-slice.R:1:1',
    'test-verb-slice.R:8:1', 'test-verb-slice.R:22:1', 'test-verb-slice.R:31:1',
    'test-verb-slice.R:42:1', 'test-verb-slice.R:61:1', 'test-verb-slice.R:71:1',
    'test-verb-slice.R:100:1', 'test-verb-slice.R:115:1',
    'test-verb-window.R:1:1', 'test-verb-window.R:8:1',
    'test-verb-window.R:18:1', 'test-verb-window.R:32:1',
    'test-verb-uncount.R:1:1'
  • `grouped_df()` needs a `name_repair` argument (1):
    'test-verb-pivot-wider.R:81:3'
  • empty test (1): 'test-verb-set-ops.R:110:1'
  • identical(Sys.getenv("GITHUB_POSTGRES"), "true") is not TRUE (1):
    'test-backend-postgres-old.R:2:3'
  • not clear whether test makes sense (2): 'test-verb-arrange.R:2:3',
    'test-verb-arrange.R:131:3'
  • not yet correctly supported (1): 'test-tidyeval-across.R:272:3'
  
  ══ Failed tests ════════════════════════════════════════════════════════════════
  ── Error ('test-verb-pivot-longer.R:59:3'): can handle missing combinations ────
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'environment'
  Backtrace:
      ▆
   1. ├─tidyr::pivot_longer(...) at test-verb-pivot-longer.R:59:3
   2. └─dbplyr:::pivot_longer.tbl_lazy(...)
   3.   └─tidyr::build_longer_spec(...)
   4.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   5.       └─tidyr:::str_split_fixed(...)
   6.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  ── Error ('test-verb-pivot-longer.R:97:3'): `values_transform` works with single functions (#1284) ──
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'environment'
  Backtrace:
      ▆
   1. ├─... %>% collect() at test-verb-pivot-longer.R:97:3
   2. ├─dplyr::collect(.)
   3. ├─tidyr::pivot_longer(...)
   4. └─dbplyr:::pivot_longer.tbl_lazy(...)
   5.   └─tidyr::build_longer_spec(...)
   6.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   7.       └─tidyr:::str_split_fixed(...)
   8.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  ── Error ('test-verb-pivot-longer.R:113:3'): `names_ptypes` and `names_transform` ──
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'environment'
  Backtrace:
      ▆
   1. ├─... %>% collect() at test-verb-pivot-longer.R:113:3
   2. ├─dplyr::collect(.)
   3. ├─tidyr::pivot_longer(...)
   4. └─dbplyr:::pivot_longer.tbl_lazy(...)
   5.   └─tidyr::build_longer_spec(...)
   6.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   7.       └─tidyr:::str_split_fixed(...)
   8.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  ── Error ('test-verb-pivot-longer.R:169:3'): original col order is preserved ───
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'environment'
  Backtrace:
       ▆
    1. ├─testthat::expect_equal(...) at test-verb-pivot-longer.R:169:3
    2. │ └─testthat::quasi_label(enquo(object), label)
    3. │   └─rlang::eval_bare(expr, quo_get_env(quo))
    4. ├─... %>% colnames()
    5. ├─base::colnames(.)
    6. │ └─base::is.data.frame(x)
    7. ├─tidyr::pivot_longer(., -id, names_to = c(".value", "n"), names_sep = "_")
    8. └─dbplyr:::pivot_longer.tbl_lazy(...)
    9.   └─tidyr::build_longer_spec(...)
   10.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   11.       └─tidyr:::str_split_fixed(...)
   12.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  ── Error ('test-verb-pivot-longer.R:186:3'): .value can be at any position in `names_to` ──
  Error in `simplifyPieces(pieces, n, fill == "left")`: SET_VECTOR_ELT() can only be applied to a 'list', not a 'environment'
  Backtrace:
      ▆
   1. ├─tidyr::pivot_longer(...) at test-verb-pivot-longer.R:186:3
   2. └─dbplyr:::pivot_longer.tbl_lazy(...)
   3.   └─tidyr::build_longer_spec(...)
   4.     └─tidyr:::str_separate(names, names_to, sep = names_sep, error_call = error_call)
   5.       └─tidyr:::str_split_fixed(...)
   6.         └─tidyr:::simplifyPieces(pieces, n, fill == "left")
  
  [ FAIL 5 | WARN 0 | SKIP 374 | PASS 1699 ]
  Error:
  ! Test failures.
  Execution halted
OK r-oldrel-windows-x86_64

*


            
OK r-patched-linux-x86_64

*


            
OK r-release-linux-x86_64

*


            
OK r-release-macos-arm64

*


            
OK r-release-macos-x86_64

*


            
ERROR r-release-windows-x86_64

tests

  Running 'testthat.R' [15s]
Running the tests in 'tests/testthat.R' failed.
Complete output:
  > library(testthat)
  > library(dbplyr)
  > 
  > test_check("dbplyr")
  Starting 2 test processes.
  > test-db-sql.R: 
  
  Error:
  ! testthat subprocess exited in file 'test-db-sql.R'.
  Caused by error:
  ! R session crashed with exit code -1073741819
  Backtrace:
       ▆
    1. └─testthat::test_check("dbplyr")
    2.   └─testthat::test_dir(...)
    3.     └─testthat:::test_files(...)
    4.       └─testthat:::test_files_parallel(...)
    5.         ├─withr::with_dir(...)
    6.         │ └─base::force(code)
    7.         ├─testthat::with_reporter(...)
    8.         │ └─base::tryCatch(...)
    9.         │   └─base (local) tryCatchList(expr, classes, parentenv, handlers)
   10.         │     └─base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]])
   11.         │       └─base (local) doTryCatch(return(expr), name, parentenv, handler)
   12.         └─testthat:::parallel_event_loop_chunky(queue, reporters, ".")
   13.           └─queue$poll(Inf)
   14.             └─base::lapply(...)
   15.               └─testthat (local) FUN(X[[i]], ...)
   16.                 └─private$handle_error(msg, i)
   17.                   └─cli::cli_abort(...)
   18.                     └─rlang::abort(...)
  Execution halted

Check History

ERROR 11 OK · 0 NOTE · 0 WARNING · 3 ERROR · 0 FAILURE Mar 9, 2026
ERROR r-release-windows-x86_64

tests

  Running 'testthat.R' [15s]
Running the tests in 'tests/testthat.R' failed.
Complete output:
  > library(testthat)
  > library(dbplyr)
  > 
  > test_check("dbplyr")
  Starting 2 test processes.
  > test-db-sql.R: 
  
  Error:
  ! testthat subprocess exited in file 'test-db-sql.R'.
  Caused by error:
  ! R session crashed with exit code -1073741819
  Backtrace:
       ▆
    1. └─testthat::test_check("dbplyr")
    2.   └─testthat::test_dir(...)
    3.     └─testthat:::test_files(...)
    4.      
ERROR r-oldrel-macos-arm64

tests

  Running ‘testthat.R’ [38s/19s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
  > library(testthat)
  > library(dbplyr)
  > 
  > test_check("dbplyr")
  Starting 2 test processes.
  > test-tidyeval-across.R: Warning message:
  > test-tidyeval-across.R: call dbDisconnect() when finished working with a connection 
  > test-verb-joins.R: Joining with `by = join_by(x)`
  Saving _problems/test-verb-pivot-longer-64.R
  Saving _problems/test-verb-pivot-longer-104.R
  Saving _problems
ERROR r-oldrel-macos-x86_64

tests

  Running ‘testthat.R’ [115s/90s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
  > library(testthat)
  > library(dbplyr)
  > 
  > test_check("dbplyr")
  Starting 2 test processes.
  > test-table-name.R: Warning message:
  > test-table-name.R: call dbDisconnect() when finished working with a connection 
  > test-verb-joins.R: Joining with `by = join_by(x)`
  Saving _problems/test-verb-pivot-longer-64.R
  Saving _problems/test-verb-pivot-longer-104.R
  Saving _problems/test-ver

Reverse Dependencies (128)

Dependency Network

Dependencies Reverse dependencies blob cli DBI dplyr (>= 1.1.2) glue lifecycle magrittr pillar purrr R6 rlang tibble tidyr tidyselect vctrs +1 more dependencies Andromeda CDMConnector DatabaseConnector ECOTOXr OmopOnSpark RClickhouse RPresto ResultModelManager ReviewR SCDB TreatmentPatterns activAnalyzer allofus apache.sedona basedosdados +113 more reverse deps dbplyr

Version History

new 2.5.2 Mar 9, 2026