R/dbListFields.R

#' List a table's columns
#'
#' @param conn A [TrinoConnection-class] object.
#' @param name Table name, required, in any form
#'   [dbExistsTable()][dbExistsTable,TrinoConnection,character-method] accepts:
#'   a string with one to three dot-separated parts, a [DBI::Id()] or a quoted
#'   identifier from [DBI::SQL()]. An unqualified name is resolved against the
#'   connection's catalog and schema.
#' @param ... Unused, for compatibility with the generic.
#' @return A character vector of column names.
#' @export
#' @examplesIf nzchar(Sys.getenv("RTRINO_TEST_URL"))
#' con <- DBI::dbConnect(RTrino::Trino(), host = Sys.getenv("RTRINO_TEST_URL"),
#'                       catalog = "tpch", schema = "tiny")
#' DBI::dbListFields(con, "nation")
#' DBI::dbListFields(con, DBI::Id(schema = "sf1", table = "region"))
#' DBI::dbDisconnect(con)
setMethod(
  "dbListFields", c("TrinoConnection", "character"),
  function(conn, name, ...) {
    trino_check_valid(conn)
    out <- dbGetQuery(
      conn,
      paste0("DESCRIBE ", trino_qualify(conn, name))
    )
    if (nrow(out) == 0L) {
      return(character())
    }
    # DESCRIBE returns Column/Type/Extra/Comment; take the first column by
    # position so a server that renames the header still works.
    column <- if ("Column" %in% names(out)) out[["Column"]] else out[[1L]]
    as.character(column)
  }
)

#' @rdname dbListFields-TrinoConnection-character-method
#' @export
setMethod(
  "dbListFields", c("TrinoConnection", "Id"),
  function(conn, name, ...) {
    dbListFields(conn, DBI::SQL(trino_qualify(conn, name)), ...)
  }
)

#' @rdname dbListFields-TrinoConnection-character-method
#' @export
setMethod(
  "dbListFields", c("TrinoConnection", "ANY"),
  function(conn, name, ...) trino_bad_table_name(name, "the table to describe")
)

Try the RTrino package in your browser

Any scripts or data that you put into this service are public.

RTrino documentation built on Oct. 15, 2026, 5:08 p.m.